이 블로그는 Web 환경을 이용한 원격 제어 기술에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Raspberry Pi와 Raspberry Pi Pico, ATmega128 보드, Arduino Mega 보드(ATmega2560), WiFi 모듈을 사용 합니다.

ras-web-zigbee-control

Zigbee remote control - Raspberry PI 3
Web 환경에서 Raspberry Pi와 Zigbee Module을 이용한 원격 제어Remote control)


  • 필요한 배경 지식
    • HTML: Web pages 작성에 필요한 Markup language
    • JavaScript(JavaScript, jOuery, AJAX): Web pages 작성에 필요한 Programming language와 Library
    • Linux OS: Raspberry Pi의 OS 가 Linux 이다.
    • Python: Programming language. or
    • Node.js : Chrome V8 Javascript 엔진으로 빌드된 Javascript runtime environment

    • Zigbee Module과 AT Comand
  • Web 환경에서 Zigbee을 사용한 원격 제어 실험을 위한 시스템 구성과 Web Page 예
    • Zigbee을 사용한 원격 제어 실험을 위한 시스템 구성 예
      • Raspberry Pi는 원격지에서 접속 가능한 Web server 기능과 ZigBee 코디네이터와 Serial 통신(UART)으로 연결되어 ZigBee Network를 제어 한다.
      • ZigBee Module 1은 코디네이터로 설정되어 ZigBee Module 2(End device)와 무선으로 통신 하며 ZigBee Module 2에 연결된 장치(이 예에서는 디지털 출력(LED), 디지털 입력(SW), 아나로그 입력)를 제어 한다.
    • 실험을 위한 회로 구성
      • Paspberry Pi 와 USB to Serial Converter 연결
      • USB to Serial Converter 와 ZigBee Module 1 연결
        • USB to Serial Converter TxD 와 ZigBee Module 1의 RxD를 연결 한다.
        • USB to Serial Converter RxD 와 ZigBee Module 1의 TxD를 연결 한다.
        • ZigBee Module의 Vcc에 전원을 연결 한다.
        • 주의: ZigBee Module의 Vcc는 3.3V 인 경우가 대부분이기 때문에 주의를 요함. USB to Serial Converter의 전압은 5V 인 경우가 많다.

      • ZigBee Module 1 와 ZigBee Module 2
        • ZigBee Module 1 와 ZigBee Module 2은 무선이기 때문에 별도의 연결이 필요 없다.
        • "AT Command를 이용한 ZigBee 설정과 제어"에서 설명한 설정이 바르게되고 전원이 정상적으로 공급되면 무선으로 ZigBee Network이 구성 된다.

      • ZigBee Module 2 와 Device(LED, Analog input, Switch) 연결
        • LED: 윗 회로을 참고하여 GPIO Port(이 예에서는 GPIO13을 사용)에 연결 한다. LED에 직렬로 연결하는 저항은 LED의 밝기을 결정하는 저항으로 보통 220옴에서 330옴 사이의 저항을 사용 한다.
        • Switch: 윗 회로을 참고하여 GPIO Port(이 예에서는 GPIO14을 사용)에 연결 한다. Switch에 직렬로 연결하는 저항은 4.7K를 사용 한다.
        • Analog input device: 5K에서 10K 사이의 가변저항을 사용하여 위 예와 같이 ADC Input(이 예에서는 ADC3(GPIO12)을 사용)에 연결 한다.

    • Zigbee을 사용한 원격 제어 실험을 위한 Web Page
      • Zigbee을 사용한 원격 제어 실험을 위한 Web Page 예
        • GPIO Port 디지털 출력 장치(LED) 제어하기
          • 이 예에서는 Checkbox(LED)를 사용하여 ZigBee Module 2(End device)에 연결된(GPIO13) LED를 On/Off 제어 한다.

          • "LED On/Off COntrol" Button을 사용하여 Checkbox(LED)의 상태를 End device에 전달하여 End device의 LED를 제어 한다.
          • "Get LED Status" Button을 클릭하면 End device의 LED 상태가 Checkbox(LED)에 표시 된다.
          • Select box는 GPIO Port를 선택하는데 사용 된다. 이 예는 GPIO13 번을 선택한 경우 이다.
        • GPIO Port 디지털 입력 장치(Switch)의 상태를 읽어 표시하기
          • 이 예에서는 ZigBee Module 2(End device)에 연결된 Switch(GPIO14)의 상태를 Checkbox(Switch)에 표시 한다.

          • "Get Switch Status" Button을 클릭하면 End device의 Switch(GPIO14)상태가 Checkbox(Switch)에 표시 된다.
          • Select box는 GPIO Port를 선택하는데 사용 된다. 이 예는 GPIO14 번을 선택한 경우 이다.
        • Analog Input 장치의 값을 읽어 표시 하기
          • 이 예에서는 ZigBee Module 2(End device)에 연결된 Analog Input의 상태를 읽어 Text box에 표시 한다.

          • "Get Analog Input Value" Button을 클릭하면 End device의 Analog Input(ADC3)상태가 Text box에 표시 된다.
          • Select box는 GPIO ADC를 선택하는데 사용 된다. 이 예는 ADC3 번을 선택한 경우 이다.
        • Paspberry Pi와 코디네이터 사이의 Serial 통신을 위한 Serial COM Port open 하기
          • "COM Port" Select box에서 COM Port를 선택하고,
          • "BuadRate" Select box에서 Buadrate를 선택한 다음,
          • "COM Port Open 하기" Button을 클릭하여 COM Port를 Open 한다.
          • COM Port의 사용이 종료 되면 "COM Port Close 하기" Button을 클릭하여 COM Port를 Close 한다.
        • Remote ZigBee Module(ZigBee Module 2)의 Address 설정하기
          • "Remote ZigBee Address" Text box에 Remote ZigBee Module(ZigBee Module 2)의 Address를 입력 한다. 이 값은 Remote ZigBee Module을 사용하는 명령을 실행하는 경우 Paspberry Pi Sewrver에 전달 된다.
        • GPIO Port 동작 모드 설정 하기
        • GPIO Port 동작 모드 설정 상태 보기
          • "Get GPIO Configuration Setting" Button을 클릭하면 GPIO Port의 동작 모드를 설정 상태가 Text box에 표시 된다.
          • "GPIO Port Number(0 - 16)" Lable은 GPIO Port의 번호(위치)를 보기 쉽게 하기 위한 것 이다. 오른쪽 부터 0번에서 16번 까지의 위치를 표시 한다.
    • Python을 이용한 Zigbee Module의 원격 제어(Server 측 프로그램)
    • Node.js을 이용한 Zigbee Module의 원격 제어(Server 측 프로그램)