Was werden Sie in diesem IoT-Projekt erreichen?
Durch die Programmierung verschiedener Sensoren;
- Sie messen Temperatur und Luftfeuchtigkeit in 1-Sekunden-Intervallen. So entgeht Ihrer Wetterstation nichts.
- Die Messwerte werden sofort in die Thinspeak-Umgebung übertragen. Sie können in Thinspeak Ihre eigenen Grafiken und Karten erstellen. Genau wie ein Meteorologe.
- Wenn die Lufttemperatur über 25 Grad Celsius steigt, ist Ihr RGB-LED leuchtet rot, zwischen 10 und 25 Grad gelb, 10 Grad und darunter blau.
- Bei Temperaturen unter 4 Grad erhalten Sie die Warnung „Es besteht Vereisungsgefahr“ auf Ihrem Fahrzeug OLED-Bildschirm. Sie hören außerdem einen Warnton von Ihrem Summer Modul. So können Sie mögliche Frostkatastrophen bereits im Vorfeld erkennen.
Komponenten
- OLED-Bildschirm
- RGB-LED
- Temperatur- und Feuchtigkeitssensor
Schaltplan
Bauen Sie Schritt für Schritt Ihre eigene Wetterstation
Schritt 1
ThingSpeak ist eine Plattform zum Sammeln, Speichern und Analysieren von Daten über das Internet. Es wird insbesondere zum Speichern und Analysieren von Daten verwendet, die von IoT-Geräten (Internet of Things) generiert werden.
Bevor wir unseren Code schreiben, müssen wir uns bei der Thingspeak-Umgebung anmelden. Ich empfehle, den Abschnitt „Zeitregion“ korrekt aufzuzeichnen, da es wichtig ist, sicherzustellen, dass die Zeitinformationen, die wir grafisch speichern, mit den Daten kompatibel sind, die wir später senden.
Wenn nach der Registrierung oben im Menü „Kanäle“ die Option „Meine Kanäle“ ausgewählt wird, wird ein Menü wie das folgende angezeigt.
Wenn Sie zu diesem Menü gelangen, klicken Sie auf die Registerkarte „Neuer Kanal“ und wir sind bereit, einen neuen Kanal mit dem unten angezeigten Menü zu öffnen.
Das Namensschild ist der Name, den Sie Ihren Daten geben. Wenn Sie möchten, können Sie im Beschreibung-Tag eine Beschreibung für Ihr Projekt eingeben.
Für dieses Projekt verwenden wir die Tags „Feld 1“ und „Feld 2“. Wir benennen Feld 1 Tag als Temperatur und Feld 2 Tag als Luftfeuchtigkeit. In diesen Feldern werden die Temperatur- und Feuchtigkeitsmessungen angezeigt, die wir von unserem Sensor erhalten haben.
Sie müssen in diesem Projekt keine anderen Tags verwenden.
Wenn Sie auf „Kanal speichern“ klicken Taste Unten wird unser Kanal erstellt.
Hier ist unser Kanal. Um unseren Kanal mit PicoBricks zu verbinden, rufen Sie die Registerkarte API-Schlüssel auf.
Schritt 2
Schreiben wir den Code.
Wir werden die Netzwerkbibliothek verwenden, um eine Verbindung zum Internet herzustellen, und die Urequest-Bibliothek, um Daten an Thingspeak zu senden.
# Steuern Sie eine LED und lesen Sie einen Button mit einem Webbrowser
Importzeit
Importnetzwerk
Vom Maschinenimport Pin,PWM,ADC
Von Picobricks importieren Sie SSD1306_I2C, WS2812, DHT11, NEC_16, IR_RX
aus utime import schlaf
Zeit importieren
Urequests importieren
THINGSPEAK_WRITE_API_KEY = 'OKY41ZGPRUTFKRW5'
HTTP_HEADERS = {'Content-Type': 'application/json'}
Summer = PWM(Pin(20))
BREITE = 128
HÖHE = 64
sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
oled = SSD1306_I2C(BREITE, HÖHE, i2c)
ws = WS2812(6, Helligkeit=0,4)
ws.pixels_fill((0 ,0 ,0 ))
ws.pixels_show()
pico_temp=DHT11(Pin(11, Pin.IN, Pin.PULL_UP))
current_time=utime.time()
utime.sleep(1)
ssid = „dsmart_1811“
Passwort = „SeVgI11036706012018“
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, Passwort)
oled.text("Einschalten",30,0)
oled.text("Warten auf ",20, 30)
oled.text("Verbindung",23, 40)
oled.show()
time.sleep(2)
oled.fill(0)
# Auf die Verbindung warten oder scheitern
max_wait = 10
während max_wait > 0:
wenn wlan.status() < 0 oder wlan.status() >= 3:
brechen
max_wait -= 1
print('Warten auf Verbindung...')
time.sleep(1)
# Verbindungsfehler behandeln
wenn wlan.status() != 3:
runtimeError('Netzwerkverbindung fehlgeschlagen') auslösen
anders:
print('Verbunden')
Temperatur=0
Luftfeuchtigkeit=0
während True:
oled.fill(0)
if(utime.time() - current_time > 2):
current_time = utime.time()
versuchen:
pico_temp.measure()
außer:
print("Messung fehlgeschlagen, werde es bald erneut versuchen")
oled.fill(0)#clear OLED
oled.show()
Temperatur=pico_temp.temperature
Luftfeuchtigkeit=pico_temp.humidity
oled.text("Temp: ",15,0)#print "Temperature:" auf dem OLED bei x=15 y=10
oled.text(str(int(temperatur)),55,0)
oled.text("Hum: ", 15,10)
oled.text(str(int(Luftfeuchtigkeit)),55,10)
oled.show()#show auf OLED
utime.sleep(0.5)#warte eine halbe Sekunde
dht_readings = {'field1':temperature, 'field2':humidity}
request = urequests.post( 'http://api.thingspeak.com/update?api_key=' + THINGSPEAK_WRITE_API_KEY, json = dht_readings, headers = HTTP_HEADERS )
request.close()
print(dht_readings)
if(Temperatur >= 25):
ws.pixels_fill((255, 0, 0))
ws.pixels_show()
elif(Temperatur > 10 und Temperatur < 25):
ws.pixels_fill((255, 255, 0))
ws.pixels_show()
elif(Temperatur <= 10):
ws.pixels_fill((0, 0, 255))
ws.pixels_show()
wenn (Temperatur < 4 ):
oled.text("Es besteht Vereisungsgefahr")
für i im Bereich((3)):
Buzzer.duty_u16(2000)
Buzzer.freq(831)
time.sleep(0.25)
Buzzer.duty_u16(0)
time.sleep(0.25)
Schritt 3: Code erklären
Wir werden die Netzwerkbibliothek verwenden, um eine Verbindung zum Internet herzustellen, und die Urequest-Bibliothek, um Daten an Thingspeak zu senden.
Wir weisen den oben erwähnten API-Schlüssel dem Wert THINGSPEAK_WRITE_API_KEY zu. Termine werden für büzer, OLED und DHT11 vereinbart. Wir weisen dem Wert „ssid“ den Internetnamen und dem Wert „password“ das Internetpasswort zu. Wir schreiben die Codes dafür
um eine Verbindung zum Internet herzustellen.
Wir warten darauf, dass eine Verbindung zum Internet hergestellt wird, und treffen Vorkehrungen für etwaige Fehler.
Bevor wir in die Schleife eintreten, weisen wir Temperatur und Luftfeuchtigkeit 0-Werte zu. Temperatur- und Feuchtigkeitsmessungen werden innerhalb des Kreislaufs durchgeführt und auf dem Bildschirm ausgedruckt.
Hier ist der Schlüsselteil:
Dank dieser Codes können wir Daten an Thinspeak senden. Wir weisen den Wert „dht_readings“ einem Wörterbuchwert als Feld1 und Feld2 zu, den wir in ThinSpeak erstellt haben. In den von uns zugewiesenen Befehl „urequest.post“ schreiben wir jeweils die Internetadresse, an die wir Daten senden möchten, den API-Schlüssel dieser Adresse (falls vorhanden), die Daten, die wir senden werden, sowie die Internetzuweisungen und die Internetzuweisungen. Mit dem Befehl „urequest.post“ senden wir die Daten ins Internet.
Abschließend weisen wir die Temperaturwerte entsprechend den von uns gewünschten Bereichen zu.