이 블로그는 임베디드 컴퓨터를 이용한 장치(시스템) 개발과 원격제어에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Microchip 사의 ATmega128를 사용한 보드와 Arduino Mega 보드(ATmega2560), Raspberry Pi, Raspberry Pi Pico, WiFi 모듈을 사용 합니다.

node-serialport

Node Serialport
  Node Serialport



  • Node Serialport 개요
    • Node Serialport는 node.js 환경에서 시리얼 통신(Serial Communication)를 가능하게 하는 Library 이다.

      각종 센서, 모터 제어, 로봇, 조명 장치, 홈 오토메이션, 공장 자동화 등 우리가 일상 생활에서 사용 하는 장치들의 대부분은 시리얼 통신을 사용 하여 제어 한다.

      node.js 환경에서 Node Serialport를 사용 하면 제어대상(장치)의 위치나 거리에 상관 없이 인터넷을 사용 할 수 있는 환경만 구성 되면 각종 장치의 상태를 모니터 하고 제어 할 수 있다.

      Node Serialport 실험을 위한 시스템 구성


  • Node Serialport 설치 하기(Windows OS를 사용 하는 컴퓨터를 사용하는 경우의 예)
    • DOS Command 창에서 아래 명령으로 Node Serialport를 설치 한다.

    • npm install serialport --save
      • 주: --save 옵션은 package.json의 dependency 항목에 모듈을 추가한다는 의미이다. 그러나 npm5 부터는 --save 옵션을 기본 옵션으로 적용하기 때문에 --save를 사용하지 않아도 dependencies에 항목이 자동으로 추가된다.

        주: Node.js를 다시 설치하는 경우 Serialport를 다시 설치하여야 하는 경우가 발생할 수 있다. 이 경우 "npm uninstall serialport" 명령으로 삭제하고, "npm install serialport" 명령으로 다시 설치한다.

    • Node serialport를 설치한 package.json파일은 "Node serialport를 설치한 package.json파일 예"에서 확인 할 수 있다.
    • 참고자료: npm Node Serialport
    • 참고자료: Node SerialPort Docs
  • Serial port open(DOS Command Window) 하기
    • 위에 있는 Node Serialport 실험을 위한 시스템 구성에 맞게 PC(Web Server로 사용)와 Controller를 연결 한다.
    • 제어판 -> 하드웨어 및 소리 -> 장치관리자 -> 포트(COM & LPT) 에서 연결된 Controller의 Port 번호를 확인 한다. 아래 예에서는 Port 번호가 COM5 인 경우 임.
    • 이 예에서는 serialport Library가 D:\node_js 폴더에 설치되고, 필요한 js(JavaScript) 프로그램도 D:\node_js 폴더에 저장 하는 것으로 한다.
    • 아래의 프로그램을 복사하여 D:\node_js>serial_port_open.js에 저장 한다.
      • Serial port open 예
    • DOS Command Window를 열고 D:\node_js로 이동 한 다음, 아래와 같이 serial_port_open.js를 실행 한다.
      • node serial_port_open.js
      • Serial Port가 정상적으로 open 되면 DOS Command Window에 "Serial port opened" 메세지가 출력 되고,
      • Error 가 발생 하면 Error message 가 DOS Command Window에 출력 된다.
      • 아래 Serial port Read/Write 예에서, DOS Command Window 예을 참고 바람.
  • Serial port Read/Write 예
    • 이 예는 Node.js 환경에서 Node Serialport Library를 사용 하여 Server 측의 Serial Port를 Open 하고, Contorller(ATmega128 보오드 or Arduino MEGA Board)와 Serial 통신(Write: Server 측에서 Controller에 Data를 송신, Read: Controller로 부터 Data를 수신)을 실행하는 실험 이다.

    • Server 측 Program 예
      • 아래 프로그램을 복사 node serial_port_rw.js로 저장 한다.
    • Controller(ATmega128 Board를 사용 한 경우)측 Program 예
      • 이 프로그램은 Studio 7 환경에서 작성 되고 테스트 하였다.

      • ATmega128 Board를 위한 프로그램 Down Load 하기: node_js_rw_test_128.zip
      • Arduino MEGA Board를 위한 프로그램 Down Load 하기: node_js_rw_test_mega.zip
      • ATmega128 Board를 위한 C 프로그램(main 프로그램 만 표시 함. 전체 프로그램은 zip File을 참고 바람.) 보기: node_js_rw_test_128_main.txt
    • Serial port Read/Write 실험
      • Down Load한 Controller "node_js_rw_test_128.zip"(ATmega128 Board를 사용 한 경우)의 압축을 풀고 실행 파일을 ATmega128 Board에 설치한다.
      • 모니터(Console) 프로그램(예: OC-Console, Tera Term)을 실행하고 ATmega128 Board UART0 포트에 연결한다.
      • PORT0: Program download(AVR Studio에서 사용)와 Serial Port 통신 실험에서 모니터 프로그램이 사용 한다.

        PORT1: Server 측에서 사용 한다.

        제어판 -> 하드웨어 및 소리 -> 장치관리자 -> 포트(COM & LPT) 에서 연결된 Controller의 Port 번호를 확인하고 "serial_port_rw.js" 프로그램의 COM 포트 번호를 바르게 변경한다. 이 예에서는 Port 번호가 COM5 인 경우 임.

      • 아래 DOS 명령창에서 아래 명령(프로그램이 D:\node_js에 위치한 경우)으로 node serial_port_rw.js를 실행한다.
      • D:\node_js>node serial_port_rw.js

      • Controller 모니터(Console)에 "Serialport Testing: " 메세지가 출력된다.
      • Controller 모니터(Console)에서 'abc' Enter '123' Enter를 입력하면 DOS Command 창(Server 측: PORT1)에 아래 예와 같이 출력된다.
      • Controller 모니터(Console)에 'abc' Enter '123' Enter를 입력한 경우 Controller 모니터(Console)와 DOS Command Window 예

        모니터(Console) Window 예
        DOS Command Window 예
  • Serial Port Listing
    • Serialport Library를 사용 하면 아래와 같이 Port 정보에 쉽게 접근 할 수 있다.

    • Serial port list를 출력 하는 프로그램 예:
      • 아래 프로그램을 복사하여 port_list.js로 저장 한다.
      • 이 프로그램을 DOS 명령창에서 다음과 같은 명령(프로그램이 D:\node_js에 위치한 경우)으로 실행한다.
      • D:\node_js>node port_list.js

      • DOS Command Window에 출력된 Port list 예