pySerial을 이용한 현미경 용 다 파장 LED 광원의 고속 파장 전환에 대해서

소개



왜 이 내용으로 쓰려고 했는가라고 하면, 프로그래밍 언어 Python(파이썬)으로의 화상 처리의 기사는 잘 보입니다만, 하드웨어의 제어에 대해서 쓰여진 기사는 거의 없었기 때문입니다. 파이썬에서도 하드웨어 제어를 할 수 있어요, 흠흠, 라고 느낄 수 있으면 다행입니다.

이 페이지에서는 Python을 사용하여 현미경 용 다 파장 LED 광원을 제어하는 ​​방법을 공유합니다.
현미경(특히 형광 현미경)을 사용하고 있는 바이오계의 연구자나 학생을 이미지하면서 기사를 쓰고 있습니다.
물론 전기계의 분야에서도 응용 가능합니다.
Python을 사용하면 각 제조업체의 표준 소프트웨어에서 지원되지 않는 제품을 동기화할 수 있습니다. 또한 이미지 획득에서 이미지 분석까지 자동화할 수 있습니다. 많은 양의 이미지를 수집하고 통계 분석하는 분야의 연구자들에게 특히 도움이 될 것입니다.
도움이되면 다행입니다.


개발 환경


  • Windows10 (x64)
  • Python3.6
  • Anaconda3
  • pySerial3.4

  • 현미경 용 다 파장 LED 광원의 고속 파장 전환





    바이오 과학 분야 및 의료 분야에서 세포를 관찰하기 위해 광학 현미경이 일반적으로 사용됩니다. 광학 현미경용 LED 광원은 기본적으로 부속의 표준 소프트웨어로 조작됩니다만, 안에는 자신 나름대로 커스터마이즈 하고 싶다고 하는 요망도 있을까 생각합니다. 그래서 이번에는 Python을 이용하여 LED의 파장을 고속(밀리초 정도)으로 전환하는 방법에 대해 씁니다.

    사용할 장비
  • 현미경 용 다 파장 LED 광원 : niji (Blue Box Optics)
  • 시그널 컨버터: 2 Channel USB Powered Relay Module(numato Lab)
  • PC

  • 시스템 구성
    현미경용 다파장 LED 광원에 TTL(Transistor-transistor-logic) 신호를 입력할 수 있으면 괜찮습니다. 즉 0V의 전압을 입력한 경우는 LED가 OFF, 5V의 전압을 입력한 경우는 LED가 ON이 됩니다. 이것을 고속으로 전환하여 파장을 전환합니다.
    시스템의 개요는 아래 그림을 참조하십시오.
    PC에서 Python을 사용하여 신호 변환기에 시리얼 신호를 보냅니다. 그 신호를 신호 컨버터에 의해 TTL 신호로 변환하여 현미경용 다파장 LED 광원으로 보내는 흐름입니다. 전기 배선은 생략합니다.


    실제 사진은 여기


    프로그램
    먼저 시리얼 통신용 라이브러리 "pySerial"을 설치합니다.
    다음 프로그램을 실행하십시오. LED가 깜박이면 성공입니다.
    함수 LED_ON()의 인수 gpio_number를 변경하여 빛나는 파장을 선택할 수 있습니다.

    LED.py
    
    
    import datetime
    import serial.tools.list_ports
    import time
    
    # COMポートに接続されている機器の情報を取得
    coms = serial.tools.list_ports.comports()
    
    # シグナルコンバーターの名前を設定
    signal_converter_name = 'Numato Lab 2 Channel USB Powered Relay Module'
    
    # シグナルコンバーターの名前を検索
    print('[{}] searching the COM list...'.format(datetime.datetime.now()))
    
    for com in coms:
        flag = signal_converter_name in com.description
    
        # 該当の名前が見つかったらCOMポートの番号を格納
        if flag is True:
            COM_PORT = com.device
            print('[', datetime.datetime.now(), ']', 'connected COM ports is: ', com.description)
        else:
            pass
    
    
    def led_on(gpio_number=0):
        """
        LED ON function.
        Serial command to TTL signal conversion. TTL ON.
    
        Parameters
        ----------
        gpio_number : GPIO port number. Default is 0.
    
        Returns
        -------
        HIGH(5V) signal output from GPIO pin.
    
        """
        # シグナルコンバーターからTTL信号を出力するピン番号の設定
        gpio_port = str(gpio_number).encode()
    
        # ONに設定
        gpio_command = b'set'  # 'set' means HIGH(5V)
    
        # Open port for communication
        serPort = serial.Serial(COM_PORT, 19200, timeout=1)
    
        # Send the serial command
        serPort.write(b'gpio' + b' ' + gpio_command + b' ' + gpio_port + b'\n\r')
        print('[', datetime.datetime.now(), ']', 'LED_on')
    
        # Close the port
        serPort.close()
    
    
    def led_off(gpio_number=0):
        """
        LED OFF function.
        Serial command to TTL signal conversion. TTL OFF.
    
        Parameters
        ----------
        gpio_number : GPIO port number. Default is 0.
    
        Returns
        -------
        LOW(0V) signal output from GPIO pin.
    
        """
        # シグナルコンバーターからTTL信号を出力するピン番号の設定
        gpio_port = str(gpio_number).encode()
    
        # OFFに設定
        gpio_command = b'clear'  # 'clear' means LOW(0V)
    
        # Open port for communication
        serPort = serial.Serial(COM_PORT, 19200, timeout=1)
    
        # Send the serial command
        serPort.write(b'gpio' + b' ' + gpio_command + b' ' + gpio_port + b'\n\r')
        print('[', datetime.datetime.now(), ']', 'LED_off')
    
        # Close the port
        serPort.close()
    
    
    if __name__ == '__main__':
    
        for i in range(20):
            # LED ON
            led_on(0)
    
            # wait 1sec
            time.sleep(1)
    
            # LED OFF
            led_off(0)
    
            # wait 1sec
            time.sleep(1)
    
            # LED ON
            led_on(1)
    
            # wait 1sec
            time.sleep(1)
    
            # LED OFF
            led_off(1)
    
            # wait 1sec
            time.sleep(1)
    

    동작 예 동영상
    다음 HP에 동영상이 있습니다. 참고하십시오.
    h tp // w w. 오, 그리고. 이. jp / ch 또는 l / ch 78. HTML

    참조
    pyserial 공식 HP
    htps : // py 텐호 s 테 d. rg / py seria l / py seria l. html #오오 rゔぃ에 w
    pyserial short introduction
    htps : // py seria l. Red d. cs. 이오 / 엔 / 아 st / 쇼 r t t. HTML

    다음 기사
    파이썬으로 카메라를 제어하는 ​​【연구용】

    자세한 내용은 아래 양식에서 부담없이 문의하십시오.

    좋은 웹페이지 즐겨찾기