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

raspberry-develop-evn

Raspberry Pi development environment
원격제어(Remote control)를 위한 시스템 구성


  • 인터넷 환경을 이용한 원격제어를 위한 시스템 구성
    • 원격제어를 위한 시스템 구성
    • 시스템 구성 예

      • Raspberry Pi를 이용한 Web Server
      • 이 블로그에서는 Raspberry Pi Board를 사용하여 원격제어에 사용할 Web server(Python과 Node.js를 이용)를 구축 한다.

        • Python(Program language)을 이용한 Web server.
          • Python은 Guido van Rossum이 1985-1990년 사이에 만든 객체 지향(Object-oriented), 인터랙티브(Interactive) 한 범용 인터프리터(General-purpose interpreted high-level programming language) 프로그래밍 언어 이다.
          • Python은 C++ 등으로 작성한 Low-level module을 Python Interpreter에 용이 하게 포함 할 수 있기 때문에 이용자가 자신의 Software Tool를 쉽게 사용 할 수 있게 한다.
          • Python은 수학(math) 모듈을 통해 많은 수학 함수(mathmatical funtions)들을 제공 한다.
          • Python은 중요 상용 데이터베이스에 대한 인터페이스를 제공한다.
          • Python은 표준 라이브러리를 사용 하여 용이 하게 웹 서버를 구축 할 수 있다.
        • node.js을 이용한 Web server.
          • Node.js는 JavaScript 기반으로 구성된 서버 사이드 서비스를 JavaScript로 구현할 수 있게 하는 런타임 환경(Runtime Environment: 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신 환경) 이다.
          • Node.js는 Server 측에서 JavaScript를 실행 할수 있게 한다.
          • Node Package Manager(npm)를 이용하여 다양한 node.js 기반의 모듈을 설치 할 수 있고 이를 이용하여 용이하게 Server Side program을 개발 할 수 있다.
      • Raspberry Pi를 이용한 MQTT Server
        • MQTT(Message Queuing Telemetry Transport)는 클라이언트에서 메시지를 발행(Publish)하고 수신(Subscribe) 할 수있는 시스템이다.
        • Low-bandwidth 장치를 위해 설계된 간단한 메시징 프로토콜이기 때문에 사물 인터넷(IoT) 애플리케이션에 적합하다.
        • MQTT를 사용하면 여러 장치 사이에 명령을 보내 출력을 제어하고 센서 노드에서 데이터를 읽고 게시(Publish)하는 설정을 용이하게 할 수 있다.
        • 참고자료: ESP8266/ESP32 MQTT - MicroPython

      • 장치(Device)제어
        • Microcontroller (Arduino or AVR Controller)를 이용한 제어.
        • Raspberry Pi에서 제공 되는 I/O Port 보다 더 많은 Port 가 필요 하거나 다양한(Timer, A/D, D/A 변환기 등) 형태의 제어가 필요한 경우 별도의 Microcontroller(Arduino Board, AVR Controller Bord 등을 사용)가 필요 하다.

          • Raspberry Pi와 Microcontroller 사이의 통신
            • UART: Universal Asynchronous Receiver / Transmitter
            • I2C: Inter-Integrated Circuit
            • SPI: Serial Peripheral Interface
        • Input/Output Port를 이용한 제어
        • Raspberry Pi에 내장된 I/O Port 만으로 제어가 가능한 경우 별도의 Microcontroller 없이 Raspberry Pi에 내장된 I/O Port를 사용 하여 장치를 제어 할 수 있다. 그러나 이 경우에도 제어 하고자 하는 장치와 Raspberry Pi I/O Port 사이에 전기적인 신호를 맞추어 주는 Interface 회로가 필요 할 수 있다.

        • ESP32/ESP8266 WiFi 모듈을 이용한 제어.
        • ESP 모듈에는 WiFi 기능이 내장 되어 있기 때문에 WiFi Network에 연결하여 무선으로 장치를 제어하는(IoT) 장치의 개발에 적합하다.

          참고자료: ESP8266/ESP32 Module을 이용한 원격제어(IoT)