ESP-WROOM-02 개발 보드로 15분 만에 집의 온도, 습도, 기압 모니터 시스템 만들기
14271 단어 ESP8266전자 공작ArduinoIoTESP-WROOM-02
요약
가족의 인플루엔자 예방을 위해서도, 실내의 온도·습도를 관리하고 싶어서 만들어 보았습니다.
화제의 ESP8266이 올라가고 있는 Switch Science의 ESP-WROOM-02 개발 보드 원했는데 계속 품절··라고 생각하면서 센고쿠전상에 가 보면 보통으로 팔고 있었으므로 샀습니다.
배선도 다른 파트도 필요 없고, 넷에 연결하는 것도 곧바로 할 수 있고, 이 가격은 게임 체인지구나, 라고 느끼고 있습니다.
다만, 전원이 없는 곳에서 사용하려고 하면 역시 전지의 문제를 어떻게 할까, 라고 하는 문제는 남기 때문에, 딥 슬립 모드로 어느 정도 연속 가동할 수 있을까 시험해 보고 싶다.
딥 슬립 모드에서 복귀 1s 이내에 Wifi로 POST할 수 있어, 곧바로 딥 슬립 모드에 들어간다면 twe-lite보다 간단하게 배터리 가동의 모니터링 시스템을 할 수 있을지도.
Blynk도 훌륭하고, 에너지 절약이라든지 생각하지 않으면 간단하게 모니터링+표시하는 앱을 만들 수 있어, 배포까지 할 수 있으므로 가정내라고 하고 싶은 일을 간단하게 실현할 수 있어 훌륭하다.
아키하바라가 더 가까이 있거나, 아마존에서 전자공작의 부품을 Prime에서 살 수 있게 되면 좋지만,,,.
필요한 것
합계 3000엔 정도일까. ESP8266 + 브레이크 아웃 보드로 만들면 2000 엔 정도가 될 것. ESP-WROOM-02 개발 보드는 USB 시리얼 변환 칩도 타고 있으므로, 개발은 이 보드로 하고, 운용은 싼 구성으로 해 스케치를 쓰는 것이 좋을지도.
합계 3000엔 정도일까. ESP8266 + 브레이크 아웃 보드로 만들면 2000 엔 정도가 될 것. ESP-WROOM-02 개발 보드는 USB 시리얼 변환 칩도 타고 있으므로, 개발은 이 보드로 하고, 운용은 싼 구성으로 해 스케치를 쓰는 것이 좋을지도.
아키즈키의 BME280 모듈 키트는 풀업 저항도 온보드가 되어 있어 브레드보드에 올릴 때도 깔끔한 느낌이 듭니다.
만드는 법
h tp : // 어딘가에. 여기 g-에 fty. 이 m/bぉg/2015/10/에 sp-w 여우 m02 2c. HTML
에서 소개 해주는 것을 참고로,
- IO4 -> SDI
- IO5 -> SCK
를 연결해 주면 OK.
스케치도 아래에 소개되어있는대로 OK. 고맙습니다.
BME280, Blynk의 라이브러리는 github에서 zip을 다운로드하여 라이브러리 추가해 두면 OK.
코드
h tp : // 어딘가에. 여기 g-에 fty. 이 m/bぉg/2015/10/에 sp-w 여우 m02 2c. HTML
에서 소개해 주는 코드의 거의 copipe입니다.
일부 디버깅을 위해 Print를 추가했을 정도.
/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
* Downloads, docs, tutorials: http://www.blynk.cc
* Blynk community: http://community.blynk.cc
* Social networks: http://www.fb.com/blynkapp
* http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
* This example runs directly on ESP8266 chip.
*
* You need to install this for ESP8266 development:
* https://github.com/esp8266/Arduino
*
* Please be sure to select hte right ESP8266 module
* in the Tools -> Board menu!
*
* Change WiFi ssid, pass, and Blynk auth token to run :)
*
**************************************************************/
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <BME280_MOD-1022.h>
#include <Wire.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "blynk auth token";
unsigned long lastCheck = 0;
double tempMostAccurate, humidityMostAccurate, pressureMostAccurate;
char buff[50];
// Arduino needs this to pring pretty numbers
void printFormattedFloat(float x, uint8_t precision) {
char buffer[10];
dtostrf(x, 7, precision, buffer);
Serial.print(buffer);
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "ssid", "pass");
Wire.begin();
pinMode(12, OUTPUT);
// need to read the NVM compensation parameters
BME280.readCompensationParams();
BME280.writeStandbyTime(tsb_0p5ms); // tsb = 0.5ms
BME280.writeFilterCoefficient(fc_16); // IIR Filter coefficient 16
BME280.writeOversamplingPressure(os16x); // pressure x16
BME280.writeOversamplingTemperature(os2x); // temperature x2
BME280.writeOversamplingHumidity(os1x); // humidity x1
BME280.writeMode(smNormal);
}
void formattedFloat(float x, uint8_t precision, char *buff) {
dtostrf(x, 7, precision, buff);
}
BLYNK_READ(V0)
{
tempMostAccurate = BME280.getTemperatureMostAccurate();
Serial.print("Temp ");
printFormattedFloat(tempMostAccurate, 2);
Serial.println();
formattedFloat(tempMostAccurate, 2, buff);
Blynk.virtualWrite(V0, buff);
}
BLYNK_READ(V1)
{
humidityMostAccurate = BME280.getHumidityMostAccurate();
Serial.print("humid ");
printFormattedFloat(humidityMostAccurate, 2);
Serial.println();
formattedFloat(humidityMostAccurate, 2, buff);
Blynk.virtualWrite(V1, buff);
}
BLYNK_READ(V2)
{
pressureMostAccurate = BME280.getPressureMostAccurate();
Serial.print("pressure ");
printFormattedFloat(pressureMostAccurate, 2);
Serial.println();
formattedFloat(pressureMostAccurate, 2, buff);
Blynk.virtualWrite(V2, buff);
}
void loop()
{
Blynk.run();
int diff = millis() - lastCheck;
if (diff > 1000) {
while (BME280.isMeasuring()) {
}
// read out the data - must do this before calling the getxxxxx routines
BME280.readMeasurements();
lastCheck = millis();
} else if (diff < 0) {
lastCheck = 0;
}
}
Blynk 표시
바로 멋진 느낌으로 표시할 수 있다! 좋은 이것. 데이터를 축적하는 것과, 그래프로 가시화하고 싶다, 라고 하는 것은 자주 있는 케이스이므로 잘 알고 있지 말라, 라고 하는 느낌이 든다. 데이터를 꺼낼 수 없는 것 같기 때문에, 분석하고 싶은, 같은 용도에는 사용할 수 없는 것 같지만.
문제
ESP8266을 프로그램 쓰기 모드로 하려면 IO0=L로 할 필요가 있습니다만, IO0의 스위치를 누르면서 리셋하는 것만으로는 안됩니다. 내가 올리는 느낌으로하면 잘 작동했습니다.
처음 왜 쓰기 모드가 되지 않는지 전혀 모르게 빠졌습니다・・・.
Reference
이 문제에 관하여(ESP-WROOM-02 개발 보드로 15분 만에 집의 온도, 습도, 기압 모니터 시스템 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tittea/items/fab4671304bf3001efbd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
* Downloads, docs, tutorials: http://www.blynk.cc
* Blynk community: http://community.blynk.cc
* Social networks: http://www.fb.com/blynkapp
* http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
* This example runs directly on ESP8266 chip.
*
* You need to install this for ESP8266 development:
* https://github.com/esp8266/Arduino
*
* Please be sure to select hte right ESP8266 module
* in the Tools -> Board menu!
*
* Change WiFi ssid, pass, and Blynk auth token to run :)
*
**************************************************************/
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <BME280_MOD-1022.h>
#include <Wire.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "blynk auth token";
unsigned long lastCheck = 0;
double tempMostAccurate, humidityMostAccurate, pressureMostAccurate;
char buff[50];
// Arduino needs this to pring pretty numbers
void printFormattedFloat(float x, uint8_t precision) {
char buffer[10];
dtostrf(x, 7, precision, buffer);
Serial.print(buffer);
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "ssid", "pass");
Wire.begin();
pinMode(12, OUTPUT);
// need to read the NVM compensation parameters
BME280.readCompensationParams();
BME280.writeStandbyTime(tsb_0p5ms); // tsb = 0.5ms
BME280.writeFilterCoefficient(fc_16); // IIR Filter coefficient 16
BME280.writeOversamplingPressure(os16x); // pressure x16
BME280.writeOversamplingTemperature(os2x); // temperature x2
BME280.writeOversamplingHumidity(os1x); // humidity x1
BME280.writeMode(smNormal);
}
void formattedFloat(float x, uint8_t precision, char *buff) {
dtostrf(x, 7, precision, buff);
}
BLYNK_READ(V0)
{
tempMostAccurate = BME280.getTemperatureMostAccurate();
Serial.print("Temp ");
printFormattedFloat(tempMostAccurate, 2);
Serial.println();
formattedFloat(tempMostAccurate, 2, buff);
Blynk.virtualWrite(V0, buff);
}
BLYNK_READ(V1)
{
humidityMostAccurate = BME280.getHumidityMostAccurate();
Serial.print("humid ");
printFormattedFloat(humidityMostAccurate, 2);
Serial.println();
formattedFloat(humidityMostAccurate, 2, buff);
Blynk.virtualWrite(V1, buff);
}
BLYNK_READ(V2)
{
pressureMostAccurate = BME280.getPressureMostAccurate();
Serial.print("pressure ");
printFormattedFloat(pressureMostAccurate, 2);
Serial.println();
formattedFloat(pressureMostAccurate, 2, buff);
Blynk.virtualWrite(V2, buff);
}
void loop()
{
Blynk.run();
int diff = millis() - lastCheck;
if (diff > 1000) {
while (BME280.isMeasuring()) {
}
// read out the data - must do this before calling the getxxxxx routines
BME280.readMeasurements();
lastCheck = millis();
} else if (diff < 0) {
lastCheck = 0;
}
}
바로 멋진 느낌으로 표시할 수 있다! 좋은 이것. 데이터를 축적하는 것과, 그래프로 가시화하고 싶다, 라고 하는 것은 자주 있는 케이스이므로 잘 알고 있지 말라, 라고 하는 느낌이 든다. 데이터를 꺼낼 수 없는 것 같기 때문에, 분석하고 싶은, 같은 용도에는 사용할 수 없는 것 같지만.
문제
ESP8266을 프로그램 쓰기 모드로 하려면 IO0=L로 할 필요가 있습니다만, IO0의 스위치를 누르면서 리셋하는 것만으로는 안됩니다. 내가 올리는 느낌으로하면 잘 작동했습니다.
처음 왜 쓰기 모드가 되지 않는지 전혀 모르게 빠졌습니다・・・.
Reference
이 문제에 관하여(ESP-WROOM-02 개발 보드로 15분 만에 집의 온도, 습도, 기압 모니터 시스템 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tittea/items/fab4671304bf3001efbd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ESP-WROOM-02 개발 보드로 15분 만에 집의 온도, 습도, 기압 모니터 시스템 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tittea/items/fab4671304bf3001efbd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)