ESP-WROOM-02 및 DHT11로 온습도 센서 만들기
16888 단어 DHT11ESP-WROOM-02
하고 싶은 일
구입한 것
아키즈키 전자 씨로 아래를 구입.
부품
가격 (세금 포함)
[K-09758]Wi-Fi모듈 ESP-WROOM-02DIP화 키트
¥650
【M-08461】FT234X 초소형 USB 시리얼 변환 모듈
¥600
【P-03647】택트 스위치(흑색)
¥10
【P-03650】택트 스위치(황색)
¥10
【P-02315】브레드 보드·점퍼 와이어 14종류×5개
¥300
【I-11577】3mm 적색 LED 70° OSR5JA3Z74A
¥10
【P-10196】전지 박스 단 3×2개 리드선·간 칸막이 있음
¥50
【M-07003】온습도 센서 모듈 DHT11
¥300
【K-13066】3.3V 출력 승압 DCDC 컨버터
¥300
【R-16103】카본 저항(탄소 피막 저항) 1/6W 10kΩ(100개입)
¥100
조립
스케치 작성, 동작 확인
adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors 및 adafruit/Adafruit_Sensor: Common sensor library을 라이브러리에 추가했습니다.
/**
* ESP-WROOM-02 + DHT11 で計測した温度・湿度を WiFi 経由で送信する
*/
#include <ESP8266WiFi.h>
#include <DHT.h>
#include "credencials.h"
#define READ_BUF_SIZE 4096
const int LED_PIN = 13;
const int PIN_DHT = 14;
DHT dht( PIN_DHT, DHT11 );
// API用パラメータ id : センサーを識別するID
const char* api_room_id = "dht11b";
// Server
const char* host = "IPアドレスなど";
const int httpPort = 80;
const char* path = "/hoge/fuga.php";
WiFiClient client;
char buf[READ_BUF_SIZE];
void setup() {
Serial.begin(115200);
Serial.println("");
// DHT11開始
dht.begin();
// LED 初期化
pinMode( LED_PIN, OUTPUT );
// WiFi 接続
setupWiFiConnection();
Serial.println("setup done");
}
void loop() {
digitalWrite( LED_PIN, HIGH );
delay(200);
digitalWrite( LED_PIN, LOW );
delay(200);
float percentHumidity = dht.readHumidity();
bool isFahrenheit = false;
float temperature = dht.readTemperature( isFahrenheit );
if (isnan(percentHumidity) || isnan(temperature)) {
Serial.println("ERROR");
return;
}
String s = "Temp: " + String(temperature, 1) + "℃ Humidity: " + String(percentHumidity, 0) + "%";
Serial.println(s);
// Serial.println(temperature);
// Serial.println(percentHumidity);
requestToServer(temperature, percentHumidity);
delay(5 * 60 * 1000);
}
void setupWiFiConnection() {
// 省電力化のために WiFi 接続を遅延する
Serial.println("Waiting...");
delay(2000);
Serial.println("OK");
WiFi.mode(WIFI_STA);
WiFi.begin(ap_ssid, ap_password, ap_channel);
Serial.print("Connecting to ");
Serial.println(ap_ssid);
// 接続中を表すLEDを付ける
digitalWrite( LED_PIN, HIGH );
int status = WL_IDLE_STATUS;
while ((status=WiFi.status()) != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
digitalWrite( LED_PIN, LOW );
Serial.println("");
Serial.println("WiFiに接続しました。");
Serial.print( "IPアドレス: ");
Serial.println( WiFi.localIP());
Serial.print( "ゲートウェイ: ");
Serial.println(WiFi.gatewayIP());
Serial.print( "サブネットマスク: ");
Serial.println(WiFi.subnetMask());
}
void requestToServer(float temp, float percentHumidity) {
if (!client.connect(host, httpPort)) {
Serial.println("接続に失敗しました。");
return;
}
client.print(String("GET ") + path + "?id=" + api_room_id + "&temp=" + temp + "&humid=" + percentHumidity + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 10000) {
Serial.println(">>> タイムアウトしました。");
client.stop();
return;
}
}
while (client.available()) {
char c = client.read();
}
}
Reference
이 문제에 관하여(ESP-WROOM-02 및 DHT11로 온습도 센서 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takke/items/307cf6183ec144da4e29텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)