Vor kurzem habe ich begonnen, die Programmierung des Arduino-Mikrocontrollers zu studieren. Nachdem ich einige grundlegende Übungen abgeschlossen hatte (blinkende LEDs, Arbeiten mit diskreten und analogen Eingängen, Anzeigen von Informationen auf einem LCD-Display usw.), wollte ich ein nützliches Gerät für zu Hause entwickeln.Ich entschied mich für ein Temperatur- und Feuchtigkeitsmessgerät im Raum mit einer Anzeige der Parameter auf dem LCD. Ich habe auch eine adaptive Hintergrundbeleuchtung für das Display erstellt, die die Helligkeit je nach Beleuchtungsstärke im Raum ändert. Auf diese Weise können Sie den Stromverbrauch des Geräts reduzieren und dadurch die Akkulaufzeit verlängern.Im Projekt habe ich die folgenden Komponenten verwendet:1. Arduino Uno-
Karte 2. LCD1602-Anzeige mit I2C-Protokollunterstützungsmodul. Um die Anzahl der Drähte zu reduzieren und den Anschluss des Displays zu vereinfachen, habe ich beschlossen, es über das I2C-Protokoll anzuschließen. Dazu habe ich ein spezielles Konvertermodul an das LCD-Display gelötet.
"3. Temperatur- und Feuchtigkeitssensor DHT11. Hiermit können Sie die Luftfeuchtigkeit zwischen 20 und 80% und die Temperatur zwischen 0 und 50 ° C bestimmen. Der Sensor verfügt über 4 Ausgänge, es werden jedoch nur 3 verwendet. Zwischen dem Leistungsausgang und dem Datenausgang muss ein 10-kΩ-Widerstand installiert werden. I. Ich habe einen vorgefertigten Sensor verwendet, der mit einem angeschlossenen Widerstand auf der Platine montiert ist, damit Sie ihn sicher an die Arduino-Platine anschließen können.
"4. Fotowiderstand. Es ist über einen 10kΩ-Widerstand mit einem Pull-up auf GND mit der Arduino-Platine verbunden.
Das Anschlussdiagramm lautet wie folgt: Der
Fotowiderstand ist mit dem Analogeingang A0 der Arduino-Karte verbunden. Die DHT11-Sensordatenleitung ist mit dem diskreten Pin 2 verbunden, der Power-Pin ist mit + 5V Arduino verbunden, der GND-Pin ist mit der Masse der Arduino-Platine verbunden. Das LCD-Display ist mit der Platine verbunden, der SDA-Pin ist mit A4 verbunden, der SCL-Pin ist mit A5 verbunden. Die Steuerleitung für die Hintergrundbeleuchtung ist an Pin 9 angeschlossen, an dem das PWM-Signal erzeugt wird.Unten ist der Quellcode:#include "DHT.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
int LD;
#define DHTPIN 2
#define LED 9
#define FOTO 0
DHT dht(DHTPIN, DHT11);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(LED, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
int light(int svet)
{
if (svet<25)
{
return 255;
}
if(svet>1020)
{
return 2;
}
else
{
int L=(int)(-0.2*svet+261.262);
return L;
}
}
void loop() {
int f = analogRead(FOTO);
LD=light(f);
delay(2000);
analogWrite(LED, LD);
float h=dht.readHumidity();
float t=dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Temp ");
lcd.print(t);
lcd.setCursor(0,1);
lcd.print("Hum ");
lcd.print(h);
}
Nachdem wir diesen Code kompiliert haben, erhalten wir ein so funktionierendes Gerät:
In Zukunft plane ich, einige interessantere und komplexere Geräte auf Arduino zu entwickeln.Ich habe auch ein Video gemacht, in dem ich gezeigt habe, wie das Gerät funktioniert: