아두이노는 이탈리아에서 시작된 "손쉽게 사용할 수 있는 마이크로컨트롤러" 로서 전세계 메이커들이 디지털장치를만들 때 가장 보편적으로 사용하는 개발환경이다.

 

여기에서 마이크로컨트롤러란 마이크로프로세서와 입출력 모듈을 하나의 칩으로 만들어 특정 기능을 수행하는 작은 컴퓨터를 말한다. 즉 다양한 스위치나 센서로부터 입력 값을 받아들여 LED나 모터와 같은 전자 장치들로 출력을 제어함으로써 환경과 상호작용이 가능한 물건을 만들어 낼 수 있도록 하여 피지컬컴퓨팅 시스템을 가능하게 해 준다. 

 

아두이노는 다음과 같은 장점이 있다.    

 

1) 저렴하고 구하기 쉬운 부품 : 아두이노는 open source이므로 수많은 유사 제품이 많고, 동일한 사양의 다양한 호환제품도 시중에 유통되기 때문에 가격도 저렴하고  구하기도 매우 쉽다.

 

2) 간단하고 쉬운 개발환경 : 아두이노 IDE라는 전용 개발환경이 무료로 제공되는데, 복잡한 구조 없이 필요한 기능 만으로  구성되어 있기 때문에 관련분야 지식이 없는 사람도 간편하게 프로그램을 하고 테스트할 수 있다.  

 

3) 수많은 예제 : 전세계 수많은 사람들이 아두이노를 사용해서 개발한 내용들을 공유하고 있기 때문에 이러한 예제들을 참조하면서 배우기가 쉽다.  

 

4) 범용화된 플랫폼과 부품 : 아두이노는 윈도우즈,맥OS,리눅스 운영체제 모두에서 작동되며, 센서 등 각종 부품들도 아두이노에 호환되도록 개발되는 것들이 많기 때문에 아두이노를 활용하여 개발할 수 있는 범위는 매우 넓다.  

 

 

아두이노의 종류

 

아두이노는 오픈소스로서 모든 내용이 공개되어 있기 때문에 전세계적으로 수많는 아누이노 모델들이 개발되고 보급되고 있으며, 필요할 경우 개인이 원하는 부분만을 수정하여 개인용 아두이노 모델을 만들어 사용할 수도 있다.

 

수많은 아두이노 모델들 중에서 일반적으로 많이 사용하는 모델은 아두이노 우노, 아두이노 나노,아두이노메가, 아두이노 프로 정도이다.

 

 

 

 

명칭

 

프로세서

입출력핀수 

주요 특징 

 아두이노 우노

 Atmega328

 20개

 가장 기본형으로, 초기교육, 실습용으로 많이 사용한다.  

 

 아두이노 나노

 Atmega328

 22개

 우노에 비해 사이즈가 작기 때문에 실제 기기에 장착하기 위한 용도로 사용할 수 있고, USB 단자가 있어 개발하기에도 편리하다.

 

 아두이노 프로미니

 Atmega328,

 Atmega168

 22개

 나노 보다 좀 더 작은 사이즈로 전자기기 부품용도로 사용할 수 있고, USB단자까지 생략했기 때문에 전력소비도 적다

 

 아두이노 메가

 Atmega2560 

 70개

 매우 많은 입출력핀과 더 큰 메모리가 장착되어 있기 때문에 좀 더  복잡한 시스템을 구성할 수 있다. 실제로 많은 3D 프린터들이 이 아두이노 메가를 기반으로 제작되어 있다. 

   

 

 

 

아두이노 유사 마이크로컨트롤러들

 

 

크기와 용도에 맟춰 아두이노모델을 사용할 수 있지만 제공되는 아두이노 시리즈보다 더 작은 사이즈나 더 다양한 기능을 원할 경우 다른 보드들을 사용해야 하는데, 그 중에서 개발환경이 아두이노와 유사하여 기존 아두이노IDE를 그대로 사용할 수 있어  편리하게 사용할 수 있는 아두이노 유사 보드들은 다음 두가지가 있다.  

 

1) Attiny 시리즈 : 좀 더 작고 저렴한 방식으로 시스템을 구성하고자 할 때 사용한다. 즉 아두이노에서 일반적으로 사용하는 ATmega칩보다 더 싸고 작은 Attiny칩을 사용하여 아두이노 처럼 개발할 수도 있다. 대표적인 예로 Digispark보드는 엄지손톱보다 약간 큰 사이즈로 6개의 입출력핀만 가지고 있고 USB단자에 꽂아 사용할 수 있는 초소형 보드이다. 이 Digispark보드를 이용하여 PC USB단자에 꽂으면 패스워드가 자동 입력되게 한다는지, 간단한 자동 파워  ON/OFF기능을 구현한다 든지 하는 시스템을 개발할 수 있다.       

 

2) ESP시리즈 : IOT 기능을 구현하기 위해서는 WIFI Network 기능이 필수적인데, 이 WIFI기능을 아예 하나의 칩안에 내장시킨 형태로 개발된 ESP시리즈가 있다.  즉 아두이노보드에 별도의 WIFI 보드를 연결시켜 사용하는 것 보다 ESP8266을 하나 사용하는 것이 가격도 저렴하고 사이즈도 작기 때문에 널리 애용되고 있다. ESP시리즈도 크기와 성능 에 따라 여러기지 모델들이 시판되고 있으므로 용도에 따라 선택할 수 있다.

 

 

 

 

 

 

아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨IOT) 열한번째.

 

Blynk :  Blynk는 KickStarter를 통해 소개된 사물인터넷(IOT) 플랫폼으로써 스마프폰 앱으로 네트워크에 연결된 IOT기기를 제어할 수 있도록 Blynk Server 기능을 제공해 준다. 즉, 세계 어디에서 든지 인터넷에 접속할 수 있는 스마트폰만 있으면 Blynk Server를 통해 인터넷에 연결되어 있는 IOT기기에 명령을 주고 응답을 받을 수 있게 된다. 이를 위해서는 스마트폰에 전용 APP이 설치되어야 하고 IOT기기에도 Blynk Library를 통해 관련기능을 구현해 주어야 한다. 

 

본 프로젝트에서는 언제 어디에서든지 필요할 때 스마트폰에서 명령을 주어 WaterMAN IOT 기기 워터펌프를 원격으로 가동시켜 화분에 물을 공급하는 용도로 활용해 본다.  

 

 

 

 Blynk APP설치 : Play스토어에서 “blynk” 검색하여 APP 설치한다. 

 

 

회원가입/로그인 :

 

 

- Create New Account 버튼을 선택하여 회원가입

 

- E-mail를  ID로 회원가입 (인증키 등이 이 E-mail주소로 전송된다.)

 

 

 

 Blynk 프로젝트 생성

 

 

 New Project 버튼선택한 후  Project Name을 입력하고 Device 버튼을 선택

 

 

 

- Hardware를 Wemos D1mini 선택하고 OK버튼을 선택한다.

 

- Connection type을 WIFI 선택하고 OK버튼을 선택한다.

 

 

 


- Create버튼을 클릭하면 가입되어 있는 E-mail주소로 Auth Token을 보냈다는 확인메세지가 표시되고, 프로젝트 생성이 완료된다. 

 

- 프로젝트가 생성되면 등록되어 있는 E-mail주소로 다음과 같은 메일이 전송되는데, Auth Token 문자열은 IOT Device 프로그램할 때 지정해 주어야 하는 값이다

 

 

Token값 이외에도 참조할 수 있는 URL 링크들이 포함되어 있는데 Documentation에 보면 다음과 가이 Blynk 사용에 대한 상세한 매뉴얼을 참조해 볼 수 있다

 

 

 

 

 

Widget 추가하기  

 

 

Widget이란 버튼,문자열표시 등 실제 화면을 구성하기 위한 각각의 구성요소들을 말하는데, 종류에 따라 가격을 지불해야 하는 유료서비스이지만 가입시 기본캐시가 지급되므로 간단한 APP은 무료로 제작해 볼수 있다. 

 

 

- 실제 기능을 구현하기 위해 Widget 추가버튼 선택한다. 

 

- Widget Box에 표시되는 수십가지 Widget들 중 Button을 선택한다.

 

 

 

-선택한 Button Widget이 화면에 표시되는데, 이 Widget을 끌어 적당한 위치에 배치한다

 

 

 

- Widget을 클릭하여 버튼의 속성을 지정(명칭을 지정하고 PIN속성 지정)

 

 - PIN속성을 Virtual V0로  지정한다.

 

 

 

Widget의 실행

 

 

 

- 삼각형모양의 실행버튼을 선택하면 실행모드로 전환된다

 

- 정상실행 가능상태가 아닐  경우 위와 같이 붉은점이 표시된다. (현재는 실행 기기가 아직 없으므로 )

 

 

 

 

-붉은 점을 클릭해 보면 에러메세지가 표시되는데 아직 연결된 IOT가 없으므로 연결되지 않았다는 의미이다

 

 

 

 

 

Blynk 기능 테스트

 

 

1. Blynk 라이브러이 설치 :  IDE 스케치 메뉴 -> 라이브러리 포함하기 -> 라이브러리 관리하기 화면에서“blynk" 를 검색하여 설치한다.

 

2. 테스트 샘플프로그램

 

 

  3  line:  본인 project의 Auth token

  7  line:  Blynk Virtual PIN V0 에 대한 기능을 구현하는 함수 

  8  line:  스마트폰 Blynk APP에서 V0 상태 값을 Interger로 전달 받기

 9-14 line: 스마트폰 Blynk APP에서 V0 상태. 즉, 버튼이 눌러져 있는지 여부에 따라 보드 내장LED ON/OFF 시키기

  21 line  Blynk  Auth Token, 공유기SSID, 공유기암호를 주어 Blynk 시작

 

위 프로그램을 실행시켜 놓은 상태에서 해당 스마트폰의 Blynk APP을 기동시켜 버튼을 눌러 보면 보드의 파란색 내장 LED 점등상태가 바뀌는 것을 확인할 수 있다.   

 

 

아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨IOT) 열번째.

 

 

IFTTT 기능 사용하기 : 다음과 같이 인터넷으로 IFTTT 서버에 접속하여 API Key와 함께 event_name을 지정해 주면 된다.

 

 

  3  line:  접속할 IFTTT 서버 주소
  4  line:  본인의 WEB hook API key
  8  line:  접속하고자 하는 공유기의 SSID와 password
 14  line: 기동시키고자 하는 event_name을 지정한다.
 16  line:  4 line에서 정의한 IFTTT API key값을 지정한다.

 

위 프로그램을 실행시키면 스마트폰에 지정한 메시지가 전송되는 것을 확인할 수 있다.

 

 

 

중간과제

 

 

매1분마다 온도와 토양수분 값을 측정하여 일정값이하로 떨어지면 스마트폰에 해당되는 알람 메시지 전송하는 기능을 구현
 -온도가 20도 이하로 떨어지면  “추워요”메시지
 -토양수분이 50이하로 떨어지면 “목말라요”메시지
 -토양수분이 50이하로 3분이상 계속되면 “물이 없어요” 메시지 보내기

 

 

 

 IFTTT Applet만들기 : 프로그램 작성을 위해 먼저 다음과 같이 Webhook trigger와 Notification Message로 구성된 세개의 IFTT Applet을 새로 등록한다

 1) Webhook event_name : low_temp,  Notification 메세지 : “추워요”
 2) Webhook event_name : low_moist,  Notification 메세지 : 목말라요
 3) Webhook event_name : low_water,  Notification 메세지 : 물이 없어요

 

 

 

 

중간과제 샘플

 

 


 11  line  : cnt_low_moist : 토양수분 부족 확인 횟수 관리를 위한 변수
 13~14 line : 각자의 환경에 맞는 공유기 SSID/Password와 각자 채널별 Write API key
 16      line:  본인의 IFTTT WEB hook API key
 18~32 line : 온도와 토양수분을 check하기 위한 함수
 33~68 line:  trigger라는 인수로 event_name을 전달받아 IFTTT event를 발생시키기 위한 함수
 50   Line  :  IFTTT URL의 일부로써 전달받은 event_name을 지정   
 79~81 line :  측정한 온도값이 20도 이하이면 low_temp라는 IFTTT event를 호출
 82~90 line :  측정한 토양수분값이 50일때 해당 IFTTT event를 호출( 2회 이하까지는 low_moist, 3회이상 반복되면 low_water 라는 event 호출)
 94 line :  60초 마다 다시 센서측정 반복    

 

 

 

 

+ Recent posts