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

web-control-develop-env

Web Remote Control Environment
  Web 환경에서 Remote Control을 위한 배경 지식
  • HTML(Hyper Text Markup Language)
    • 웹 페이지을 기술하기 위한 규약으로 프로그래밍 언어가 아니라 마크업 언어 이다.
    • 정적인 웹 페이지를(Static web page) 작성 하는데 유용 하다.
    • 참고자료: w3schools.com의 HTML5 Tutorial
  • JavaScript
    • JavaScript는 HTML 과 Web을 위한 Programming Language 이다.
    • Programming Language이기 때문에 Dynamic Web Page를 작성 하는데 유용 하다.
    • JavaScript Code를 HTML 내에 삽입(포함)하여(Programming 기능이 없는 HTML Page를 Programming 기능을 포함한 Web Page로 확장) Dynamic Web Page를 작성 할 수 있다.
    • JavaScript는 미리 작성된 다양한 Module를 사용 하여 용이하게 프로그램을 작성 할 수 있다.
    • JavaScript 참고자료: w3schools.com의 JS Tutorial
    • Web 환경에서 Remote Control을 위하여 사용 하는 JavaScript Library
  • Node.js
    • JavaScript 기반으로 구성된 서버 사이드 서비스를 JavaScript로 구현할 수 있게 하는 런타임 환경(Runtime Environment: 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신 환경) 이다.
    • Node.js는 Server 측에서 JavaScript를 실행 할수 있게 한다.
    • Node Package Manager(npm)를 이용하여 다양한 node.js 기반의 모듈을 설치 할 수 있고 이를 이용하여 용이하게 Server Side program을 개발 할 수 있다.
  • Microcontroller의 개발 Tool과 Program Language
  • Microcontroller에 대한 이해

Web 환경에서 Remote Control을 위한 개발 환경


  • Client Side
    • 개인용 컴퓨터(PC), Notebook, 휴대폰과 같이 Web Browser를 사용 할 수 있는 단말기를 사용하여 원격지에 있는 장치를 제어 한다.
    • Google Chrome, Microsoft Explorer과 같은 Browser를 사용하여 제어 장치의 상태를 모니터 하고 제어 한다.
  • Server Side Tool
    • Web server 용 컴퓨터
      • Node.js를 설치할 수 있는 컴퓨터를 Web server로 사용한다.
      • Web server로 사용할 수 있는 컴퓨터 예: PC, Raspberry Pi 등
    • Node.js
      • Node.js 기반의 모듈을 이용 하여 Web Server 기능을 제공 하고 Serial Port 제어를 가능 하게 한다.
    • Express web framework
      • Express는 웹 및 모바일 애플리케이션을 위한 기능을 제공하는 Node.js 웹 애플리케이션 프레임워크(web application framework) 이다.
    • jQuery
      • jQuery는 Web Page 작성 시 JavaScript를 쉽게 사용 할 수 있도록 하는 JavaScript Library 이다.
      • jQuery는 HTML/DOM manipulation, CSS manipulation, HTML event methods, Effects and animations, AJAX 관련 기능을 포함 하고 있다.
      • 이 과제에서는 AJAX 관련 기능을 사용 하여 Client측 Web Page의 명령을 Server 측에 전송 하고 그 결과를 Server 측으로 부터 전송 받아 Client측 Web Page에 표시 하기 위하여 사용 한다.
    • AJAX
      • Web Page가 Load된 후에 Web server로 부터 Data를 읽고, Web server로 Data를 보낼 수 있는 기능을 제공 하는 JavaScript Library 이다.
    • Node Serialport
      • Node.js 환경에서 JavaScript를 이용 하여 Microcontroller와 Serial Communication을 가능하게 하는 Library 이다.
  • Serial Communication Module
    • Web Server의 Serial Port와 Microcontroller의 Serial Port을 연결 하는데 사용 한다.
    • Server측의 Serial Port와 Microcontroller의 Serial Port를 연결하는 이용 하는 Module 예
      • 가장 간단한 경우는 Server측의 Serial Port와 Microcontroller의 Serial Port를 직접 연결 하는 경우 이다.
      • Bluetooth <-> Serial 변환 모듈: 근거리 무선통신을 지원 한다.
      • ZigBee <-> Serial 변환 모듈: 근거리 무선통신을 지원 한다. Bluetooth 보다 통신 속도는 느리지만 같은 전력을 소비 하는 경우 더 먼거리 까지 통신이 가능 하다. 디지털 홈 구현, 빌딩 자동화, 공장 자동화 등에 적당 하다.
      • 기타 필요에 따라 여러가지 변환 모듈을 사용 할 수 있다.
  • Microcontroller
    • 이 과제에서는 AVR Microcontroller(ATmega128 Board와 Arduino Mega Board(ATmega2560))를 사용 한다.
    • AVR Microcontroller 개발 Tool은 Atmel Studio, Android Studio를 사용 할 수 있다.