'2020/08/11'에 해당되는 글 1건
- 2020.08.11 Software | Blynk 사용해 보기
Arduino 나 ESP8266 을 사용하면서, sensor 로부터 받은 데이터를 표현해주는 방법이 몇 가지 있습니다.
일전에는 ThingSpeak 라는 것을 사용해 봤었죠.
* Software | ThingSpeak 등록하여 IoT 데이터 펼처보기
- https://chocoball.tistory.com/entry/Software-ThingSpeak-IoT-monitoring
어느 분께서 댓글 달아 주시길, Blynk 도 좋다고 합니다. 사용해 봤습니다.
1. Blynk 란?
Data 는 있지만, 그 값들을 이해하기 쉬운 방법으로 표시해 주고 모니터링 해주는 어플리케이션 이죠.
클라우드 펀딩으로 시작한 솔루션 입니다.
* Blynk - build an app for your Arduino project in 5 minutes
- https://www.kickstarter.com/projects/167134865/blynk-build-an-app-for-your-arduino-project-in-5-m
Arduino project 를 5분만에 시작할 수 있다고 하지만, 숙련된 사람 이야기 이고, 학습하는 시간이 필요합니다.
다만, 각 프로젝트에 따른 예시나 모듈이 잘 되어 있어서, 하다 보면, 아니... 이렇게 쉽게? 라는 생각이 잠시 드는 때도 있습니다.
KickStarater 클라우드 펀딩을 성공적으로 마무리 하고, 아래 사이트에서 정식 런칭하였습니다.
* Blynk Inc
2. Library 설치
저는 Arduino / ESP8266 에서 받은 값을 전달할 목적이므로, Arduino IDE 에서 모듈을 인스톨 합니다.
Tools > Manage Libraries > Blynk
모듈이 인스톨 되면, Arduino > libraries 에 등록 되어 있는 것을 확인 할 수 있습니다.
자동으로 설치해 주는 방법 외에도, 수동으로 파일을 받아서 설치 할 수도 있습니다.
* Blynk Arduino Library
- https://github.com/blynkkk/blynk-library/releases/latest
3. App 설치
프로그래밍을 위한 환경이나 라이브러리가 설치되었으면, 실제로 그 값들을 모니터링 하고 확인할 수 있는 인터페이스가 필요합니다.
Blynk 는 모바일 환경에 최적화가 되어 있으므로, 스마트폰에 관련 어플을 설치합니다.
평점이 좋네요.
4. Project 시작하기
모바일앱에서 어플을 시작하면, 등록이 나옵니다.
Facebook 계정 연동으로 시작해도 되나, 저는 그냥 email 로 사용자 등록 하였습니다.
계정을 만들고 로그인 합니다.
New Project 를 선택합니다. My Apps 메뉴를 이용해서, 개인 전용앱 처럼 꾸밀 수도 있다고 합니다.
시작할 새로운 Project 는 주로 어떤 IoT 기기와 연결될 것 인지를 선택합니다.
저는 ESP8266 을 이용하여, WiFi 연결 뿐만 아니라, arduino 처럼 처리도 시킬 것이기 때문에, ESP8266 을 선택 했습니다.
포름알데히드 센서를 이용한 그래프 모니터링용 이니, 그에 맞게 Title / Device / Connection Type 을 선택해 줍니다.
저는 Formaldehyde / ESP8266 / WiFi 를 선택 했습니다.
Create Project 를 최종적으로 누르면, 새로 생성한 project 에 대한 전용 인증 코드가 생성됩니다.
이 코드는 project 마다 유니크 하며, 메일로도 알려 줍니다.
계정 생성시 사용 했던 email 로 관련된 정보가 왔습니다.
Auth Token
5. 소스코드 생성
누가 5분만에 가능하다 했나... 5분은 여기까지 오느라 훨씬 지났습니다.
다만, 코딩을 쉽게 도와주기 위해 "Sketch generator" 라는 메뉴가 준비되어 있어요.
* Sketch generator
접속하면, 아래처럼 Board (Device) / Connection 방법 / Auth Token 및 예시를 선택하면 소스코드를 만들어 줍니다!
이 페이지에서 만들어준 기본 코드에, 포름알데히드 측정에 사용되었던 코드를 살짝 추가 하였습니다.
Blynk 사용하지 않은 코드
#include "ze08_ch2o.h" #include "SoftwareSerial.h" // Instantiate a serial port, whatever Stream you have // SoftwareSerial ch2oSerial(4, SW_SERIAL_UNUSED_PIN); // RX, TX SoftwareSerial ch2oSerial(14, 14); // RX, TX // Instantiate a sensor connected to the previous port Ze08CH2O ch2o{&ch2oSerial}; void setup() { ch2oSerial.begin(9600); ch2oSerial.listen(); Serial.begin(115200); // Serial Monitor } void loop() { Ze08CH2O::concentration_t reading; if (ch2o.read(reading)) { Serial.print("New value: "); Serial.println(reading); } }
Blynk 기능을 입힌 코드
#include "ze08_ch2o.h" #include "SoftwareSerial.h" SoftwareSerial ch2oSerial(14, 14); // RX, TX Ze08CH2O ch2o{&ch2oSerial}; int sensorData; /* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #include "ESP8266WiFi.h" #include "BlynkSimpleEsp8266.h" // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "XXXXXXXXXXXX"; char pass[] = "YYYYYYYYYYYYYYYYYYY"; BlynkTimer timer; // This function sends Arduino's up time every second to Virtual Pin (5). // In the app, Widget's reading frequency should be set to PUSH. This means // that you define how often to send data to Blynk App. void myTimerEvent() { // You can send any value at any time. // Please don't send more that 10 values per second. Ze08CH2O::concentration_t reading; if (ch2o.read(reading)) { Serial.print("ZE08-CH2O : "); Serial.println(reading); sensorData = reading; } Blynk.virtualWrite(V5, sensorData); } void setup() { // Debug console Serial.begin(115200); ch2oSerial.begin(9600); ch2oSerial.listen(); Blynk.begin(auth, ssid, pass); // You can also specify server: //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80); //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080); // Setup a function to be called every second timer.setInterval(5000L, myTimerEvent); } void loop() { Blynk.run(); timer.run(); // Initiates BlynkTimer }
위의 Before / After 를 비교해 보면, "Sketch generator" 코드에서 자동으로 만들어준 소스에, 원래 소스를 살짝 입히기만 했습니다.
참 쉽죠?! 제가 작업한 것은 다음 세 가지 뿐 입니다.
- 기본 소스 코드 생성 (이것 마저도 인터넷에서 따옴)
- Sketch generator 이용하여 Blynk 연결 소스 만듬
- Auth Token / WiFi 접근 SSID / Password 적용
가장 눈여겨 들여다 봐야 할 부분은 아래 코드 부분입니다.
Blynk.virtualWrite(V5, sensorData);
Blynk 는 ESP8266 / ESP32 등에서 받는 data 값 들을, 가상의 Pin 으로 보내는 기능이 있습니다.
Analog / Digital 값들이 다양한 Pin 들을 통해 들어온다 하여도, Blynk 로 보낼 때에는 하나의 가상 Pin 으로 고정해서 보낼 수 있습니다.
이렇게 되면, Device 가 변경되더라도 Blynk 앱에서는 변경을 하지 않아도 됩니다. 자세한 내용은 아래 링크를 참고해 보세요.
* What is Virtual Pins
- http://help.blynk.cc/en/articles/512061-what-is-virtual-pins
* How to display ANY sensor data in Blynk app
- http://help.blynk.cc/en/articles/512056-how-to-display-any-sensor-data-in-blynk-app
6. ESP8266 에서 실행
ESP8266 에 소스를 입히고 실행시키면, 다음과 같은 화면이 Serial Monitor 에 출력 됩니다.
[5220] Connected to WiFi [5221] IP: 192.168.1.90 [5221] ___ __ __ / _ )/ /_ _____ / /__ / _ / / // / _ \/ '_/ /____/_/\_, /_//_/_/\_\ /___/ v0.6.1 on ESP8266 [5227] Connecting to blynk-cloud.com:80 [5586] Ready (ping: 125ms). ZE08-CH2O : 66 ZE08-CH2O : 112 ZE08-CH2O : 114 ZE08-CH2O : 117 ZE08-CH2O : 116 ZE08-CH2O : 114 ...
ASCII code 를 이용하여 Blynk 문자를 잘 만들었네요 :-)
Library 는 Heartbeat 를 통한 연결상태 확인도 해주는 군요. 잘 만들어져 있습니다.
여기까지 진행하면 ESP8266 에서 할 것은 이제 다 했습니다.
7. Blynk 모바일앱에서 설정
Blynk 로 데이터는 들어오고 있으니, 받을 수 있도록 연동 설정하면 됩니다.
데이터를 표현해주는 방법은 여러 가지가 있으나, 대략 Gauge / SuperChart 로 해결 됩니다.
스마트 폰에서 Create Project 후에 나오는 빈 화면 아무곳을 터치하면, Widget Box 가 아래처럼 뜹니다.
건전지 아이콘에 2000 크레딧이 미리 충전 (무료) 되어 있습니다.
이걸 다 쓰면, 돈을 충전해서 사용해야 합니다. 각 메뉴 추가시 크레딧이 차감되니 신중하게 위젯을 만들어야 합니다.
처음에 멋도 모르고 "Value Display" 를 설정 했더랬습니다. 그냥 조금하게 값만 표시됩니다.
역시 데이터 값 표현은 차트죠. SuperChart 만들어 봅니다.
PIN 정보는 항상 "Virtual 5 PIN" 으로 했습니다만, 다른 Pin 들도 다이렉트로 사용할 수 있나 봅니다.
만들어진 위젯에 손가락을 잠깐 동안 올려 놓으면, 위치를 이동 시킬 수 있습니다.
이제 센서 값들의 모니터링은 일상으로 사용하는 스마트폰에서 바로바로 확인이 가능하게 됩니다.
웹페이지를 띄울 필요도 없고, 인증을 걸 필요도 없이, 하나의 앱 처럼 사용할 수 있어서 편하긴 합니다.
FIN
'Software' 카테고리의 다른 글
Software | Google Adsense 적립금 타기 (0) | 2021.01.18 |
---|---|
Software | AWS Certified 자격증 취득기 - 5 (3) | 2020.12.18 |
Java | OpenJDK 업데이트 및 선택 변경 (0) | 2020.07.24 |
Software | Windows 10 Pro 와 Office 2019 (0) | 2020.06.28 |
Software | AWS Certified 자격증 취득기 - 4 (8) | 2020.06.17 |