ESP-WROOM-02 및 DHT11의 온습도계(Ambient)에 LCD 모니터 붙이기
13010 단어 C++AmbientESP8266ESP-WROOM-02
16문자✖️2행의 LCD가 310엔!
시험으로 연결이 쉬운 I2C 대응으로 저렴한 LCD 디스플레이를 찾았습니다.
Amazon에 16문자✖️2행의 LCD 디스플레이가 190엔, 시리얼 인터페이스 어댑터가 120엔(둘 다 송료 포함)이라고 하는 것이 있었으므로 그것을 구입.
구성
구성은 다음과 같습니다.
LCD와 보드는 납땜이 필요합니다.
LCD의 SDA는 4번, SCL은 5번 단자에 접속했습니다. (풀업 저항은 10KΩ으로 있었습니다만, 수중에 있던 24KΩ으로 대용)
스크립트
프로그램은 다음과 같습니다.
WROOM
#include <Ambient.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ssid "YOUR WiFi SSID" // WiFiのSSID をセット
#define password "YOUR WiFi PASSWORD" // WiFiのパスワード をセット
#define channelId <YOUR CHANNEL> // Ambientのチャネル番号
#define writeKey "YOUR WRITE KEY FOR AMBIENT" // Ambient の書き込みキーをセット
WiFiClient client;
Ambient ambient;
void setupWiFi() {
Serial.println(); Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
dht.begin();
setupWiFi();
ambient.begin(channelId, writeKey, &client);
lcd.init();
lcd.backlight();
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
Serial.print("Humidity: ");
Serial.print(h);
Serial.println(" %\t");
ambient.set(1, t);
ambient.set(2, h);
lcd.clear();
lcd.setCursor(1,0);
if (ambient.send()) {
lcd.print("Data sent!");
} else {
lcd.print("Data send NG.");
}
lcd.setCursor(1,1);
lcd.print(" to Ambient.");
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("\xb5\xdd\xc4\xde"); // 「オンド」
lcd.print(": ");
lcd.print(t);
lcd.print("\xdf"); // 上付きの○
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("\xbc\xc2\xc4\xde"); // 「シツド」
lcd.print(": ");
lcd.print(h);
lcd.print("%");
delay(20000);
}
의도에 반해 1문자 밖에 표시되지 않았을 때는
Arduino nano 등, WROOM-02 보다 처리 속도가 빠른 것 등으로 사용하면, 이 LCD 는 1 문자 밖에 표시되지 않는 경우가 있습니다. 처리가 느려서 따라잡지 않는 것 같습니다.
그런 때는, 다음의 오마지나이를 먼저 해 두면, 전부 표시되게 됩니다.
(Amazon 고객 리뷰에 있습니다.)
omajinai
#define printIIC(args) Wire.write(args)
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 1;
}
잡감
DHT11은 싸고 사기 쉽습니다만, 정밀도가 좋지 않기 때문에 기준 정도입니다.
Reference
이 문제에 관하여(ESP-WROOM-02 및 DHT11의 온습도계(Ambient)에 LCD 모니터 붙이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ynomura/items/aa9422a4814958ddd4ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)