본문 바로가기

IOT

아두이노 LED 점등 테스트(C++)

  • IOT 사물인터넷 개발 관련해서 아두이노로 친숙해 질수 있다.

 

아두이노 UNO 보드로 테스트를 하자.

 

정품이 아닌 호환보드는 IDE 툴에 드라이버 설치시 까다로울수 있으나,

보드구매시 가격은 저렴하다(저렴한것은 메인보드만 8600원 정도)

사용자 선택 사항이다. 

 

아두이노 개발툴을 다운받자

 

DOWNLOAD URL :

https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE

 

 

 

다운받은 후 

 

아두이노 회로보드를 컴퓨터 TO USB3.0 케이블로 연결한다.

 

 

 

그리고 Aduino IDE 설치후 실행한다.

 

실행후 도구 > 보드 를 지정한다(정품이 아닐 경우에 툴에서 보드이름으로 잡아주지 않으면 윈도우 장치관리자에서 설정을 추가로 해야 한다.)

 

 

 포트를 잡아준다

 

내장된 테스트 C++  Blink 예제소스를 입력한다. (회로 LED등을 껐다 키는 스크립트)

 

툴상단에 있는 실행버튼( ㅡ>) 을 누른다 (펌웨어 포팅, Bare Material 로 OS없이 시리얼통신만으로 동작하므로 빠르다.)

센서값만 보드안에서 주고 받는다.

 


보드는 PCB 회로 기판 포함이다.

이  ARM설계된 회로 기판에 CPU프로세서, RAM, ROM , 센서 등이 집약되어 있다.

 

보드 종류는

아두이노보드, ESP32(저전력, Wifi), 라즈베리파이(SDC),  Luxonis OAK-D, Digi(주로 산업용),

Nvidia Jetson 시리즈( AI) 등

용도에 따른 보드가 있다.

 

라즈베리파이 부터는 SDC로 싱글보드컴퓨터 개념으로 보드에 임베디드 OS 를 포팅할 수 있다.(Ubuntu OS)

추가로 필요시 미들웨어, 펌웨어 설치도 가능하다.

 

IOT 시작으로 펌웨어에 작성하는 주언어는 C, C++ 이지만,

아두이노는 마더보드에 배선연결이라든지, 초음파센서라든지 모듈을 다양하게 사용할수 있어서

개념을 잡는데 입문용으로 적합하다.

 

보드에 친숙해진후에는 보드의 센서로 받는 데이터를 

디비서버로 보내서 

파이썬 tensorflow, numpy 머신러닝으로 학습시킨 모델과 연동하여

특정 기능을 구현할수 있다. 


통신 방식은

 

  • serial 통신 - 데이터를 한 비트씩 순차적으로 전송하며 센서 데이터를 보드에서 수집할 때 주로 사용

 

  • 보드에서 디비서버로 데이터를 전송할때 즉 연속적인 데이터 송신(온도, 스트림 영상 등) 은 WebSocket(클라이언트 서버 양방향 통신)

 

  • 일반 데이터 송신은 디비서버로 보내는 REST 통신(HTTP 요청)을 사용할 수 있다.

.

  •  UART는 비동기 방식의 직렬 통신 프로토콜로서
    하드웨어에서 TX(송신)와 RX(수신) 핀을 통해 데이터를 교환, 하드웨어 기판을 보면  에코핀이라고 해서 X(송신)와 RX(수신) 핀이 있는데 이를 통해 모듈 에서 프로세서로 전달등 센서데이터를 주고 받는다.

 

  •  MQTT 는 경량화된 메시지 기반 프로토콜로, IoT 장치 간 통신에 많이 사용된다고 한다.
    "발행(Publish)"과 "구독(Subscribe)" 구조라고 하며, 브로커 설정 및 운영이 필요하다.

 

임베디드의 수집된 데이터를 디비서버에 전달하고 (RDBMS는 메타데이터, 시스템폴더에 원본저장 방식 또는 NoSql, Postgres) 후

이전에 머신러닝 학습시킨 모델 기준으로 WAS에 연동되면, 

APP,  WEB 형태로  클라이언트 단에서 사용이 가능하다.

 

임베디드에 작성하는(회로기판에 인식시키는 포팅, 펌웨어) 언어는 C++, C 를 많이 사용하고,

 

핵심이 되는 기준모델의 지도, 비지도 강화 머신러닝 학습은 Python 으로 구현하는 것이 일반적이다.(데이터 학습 라이브러리가 풍부하다. tensorflow, numpy...) 

 

APP 이나 WEB 은 사용자 기능에 최적화된 프레임워크로 만들면 된다.


 

아래 개발보드에서 LED등이 작성된 C++ 소스대로 점등 동작 한다.