연구실에 피쉬본 선인장을 데리고 왔다. 피쉬본 선인장 키우는 방법을 알아보는중 피쉬본 선인장은 물을 주기적으로 주어야한고한다. 물을 주는 주기는 화분 표면의 흙이 마르지않도록 주면 된다고 한다. 그런데 분갈이를 이쁘게하면서 화분표면이 자갈을 깔아서 수분체크하기 위해서는 자갈들을 치워가면서 해야했다. 그래서 원격으로 알수 있는 방법이 있으면 좋을 것 같다고 생각하여 아두이노 토양습도센서를 넣어보기로 했다.
아두이노 토양습도센서와 esp8266
센서의 작동과 데이터 수집원리는 다음과 같다.
토양습도센서에서 습도측정 -> esp8266에서 센서의 신호를 받고 와이파이로 데이터전송 -> blynk 앱에서 데이터출력
토양습도센서는 두개의 전극에 습도에 따라 변하는 저항값을 측정해서 아날로그값으로 출력하게 된다. 0~1024 사이의 값을 출력하게 되는데 센서값 1024는 건조함( 두 전극이 연결되지 않은상태, 저항높음)이고 0은 매우 습한 (두 전극에 전기가 통하는 상태, 저항낮음) 상태를 나타낸다.
센서는 +-의 극성이 없고 센서데이터 변환칩의 5V, GND, 그리고 A0를 연결시켜주면된다. A0는 ESP8266의 아날로그핀 A0와 연결시켜준다. (esp8266에는 5V전원출력이 없어서 아두이노나 다른 제품에서 전원연결을 통해 센서에 5V를 입력해주여야한다)
blynk 앱에서 프로젝트 만들기 후 데이터를 볼 수 있는 아이콘을 생성하고 INPUT 데이터로 인터넷으로부터 불러올 가상핀 V을 연결한다.
blynk 코드
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
char auth[] = "토큰정보";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "와이파이 아이디;
char pass[] = "와이파이 비밀번호";
#define sensor A0 //센서와 연결된 아날로그핀 번호
int Value = 0; // 센서값 정의 및 초기화
/////////////////////////////////////////////////////////////////////////////////////////////////
// Announcing the Blynk timer
BlynkTimer timer; // 데이터갱신을 위한 블링크 타이머
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
// Blynk 데이터 인터벌
timer.setInterval(1000L, sensorDataSend); // 1초마다 센서데이터를 블링크로보낸다.
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
void loop(){
Blynk.run();
timer.run(); // run timer every second
}
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
void sensorDataSend() // 센서데이터를 블링크로 보내기 위한 함수
{
Value = analogRead(sensor); // 센서데이터를 아날로그읽기함수로 정의
Blynk.virtualWrite(V5, Value); // 블링크 가상핀 V5에 센서로부터 읽어온 값을 저장
}
오류와 해결
1. 블링크앱과 esp8266이 같은 와이파이에 있을때 연결할 수 있다. 온라인으로 보기 위해서는 블링크 ioT라는 다른 앱을 설치해야한다.
참고
https://rasino.tistory.com/215
'만들기 > 아두이노' 카테고리의 다른 글
아두이노 서보모터 회전운동을 왕복운동으로 (0) | 2022.04.09 |
---|---|
[아두이노] 토양습도센서 고장 (부식) (0) | 2021.11.14 |
공대생 감성 아두이노 스마트 전등 스위치봇 만들기 (1) | 2021.07.25 |
[아두이노] 아두이노 코드 업로드중 모터가 돌아갈 때 (0) | 2021.06.29 |
[아두이노] esp8266 이용시 핀모드와 시리얼모니터 오류 (0) | 2021.06.29 |