원격제어(Remote control)를 위한 시스템 구성
인터넷 환경을 이용한 원격제어를 위한 시스템 구성
- 원격제어를 위한 시스템 구성
- Raspberry Pi를 이용한 Web Server
- 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)하는 설정을 용이하게 할 수 있다.
- 장치(Device)제어
- Microcontroller (Arduino or AVR Controller)를 이용한 제어.
- Raspberry Pi와 Microcontroller 사이의 통신
- UART: Universal Asynchronous Receiver / Transmitter
- I2C: Inter-Integrated Circuit
- SPI: Serial Peripheral Interface
- Input/Output Port를 이용한 제어
- ESP32/ESP8266 WiFi 모듈을 이용한 제어.
시스템 구성 예
이 블로그에서는 Raspberry Pi Board를 사용하여 원격제어에 사용할 Web server(Python과 Node.js를 이용)를 구축 한다.
Raspberry Pi에서 제공 되는 I/O Port 보다 더 많은 Port 가 필요 하거나 다양한(Timer, A/D, D/A 변환기 등) 형태의 제어가 필요한 경우 별도의 Microcontroller(Arduino Board, AVR Controller Bord 등을 사용)가 필요 하다.
Raspberry Pi에 내장된 I/O Port 만으로 제어가 가능한 경우 별도의 Microcontroller 없이 Raspberry Pi에 내장된 I/O Port를 사용 하여 장치를 제어 할 수 있다. 그러나 이 경우에도 제어 하고자 하는 장치와 Raspberry Pi I/O Port 사이에 전기적인 신호를 맞추어 주는 Interface 회로가 필요 할 수 있다.
ESP 모듈에는 WiFi 기능이 내장 되어 있기 때문에 WiFi Network에 연결하여 무선으로 장치를 제어하는(IoT) 장치의 개발에 적합하다.