Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52
Hinweis: Dieses Projekt ist im Grunde eine Erweiterung eines früheren instructable, das nur 2 Pins verwendet. Die begrenzte Anzahl (4) von GPIO-Pins auf dem ESP8266-01 kann für jede ernsthafte Anwendung wie ein Hindernis erscheinen Auf eine intelligente Weise ist es sehr gut möglich, mit nur diesen 4 Pins viel zu tun. In einigen meiner jüngsten Anleitungen habe ich die Verwendung eines DHT11, eines DS18B20, eines OLED, eines RTC und eines BMP180 mit dem ESP8266-01 gezeigt. In diesem anweisbaren machte ich mich daran, 4 Sensoren und ein Display zu verwenden und gleichzeitig die erfassten Daten auf Thingspeak hochzuladen. Es erweitert tatsächlich ein Projekt zur Überwachung der Atmosphäre in und um meinen Hühnerstall. Ja, Sie könnten dies als Wetterstation bezeichnen, aber es dient nur zur Veranschaulichung der Verwendung der 4 Pins. Sie können auf diese Weise leicht etwas anderes herstellen. Ich werde 2 Pins für I2C (BMP180 und OLED) verwenden OneWire-Protokoll1-Pin für das DHT11Obwohl der ESP8266-01 jetzt alle seine Pins verwendet hat, kann ich immer noch weitere Sensoren (oder Aktoren) über das OneWire-Protokoll und/oder über das I2C-Protokoll hinzufügen. Also, was brauchen wir: Stückliste?
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (optional)
und natürlich ein Steckbrett, ein 3,3-V-Netzteil und einige Steckbrettdrähte und ein Thingspeak-Konto
Nur einige Anmerkungen zur Stückliste:
- ESP8266-01Natürlich geht es bei dem Projekt darum, die begrenzten Pins des ESP8266-01 zu verwenden, aber wenn Sie noch einen kaufen müssen, könnten Sie einen ESP8266-12 in Betracht ziehen, der mehr Pins hat
- DHT11A preiswerter Allzweck-Feuchte- und Temperatursensor. Es ist nicht sehr genau, aber es wird reichen. Wenn Sie noch einen kaufen müssen, können Sie sich für das vermeintlich genauere DHT22 entscheiden, aber auch für das AMS2321. Das ist eine Art DHT22, die für I2C geeignet ist und so einen weiteren Pin freigibt
- BMP180 misst Temperatur und Luftdruck. Es ist der Nachfolger des BMP085, hat aber jetzt auch selbst einige Nachfolger. Es gibt den (günstigeren) BMP280, aber Sie können sich auch für den BME280 entscheiden, der Temperatur, Luftdruck UND Luftfeuchtigkeit misst. So können Sie beim DHT/AMS-Sensor sparen
- Das hat OLEDI gerade benutzt, damit ich schnell sehen konnte, ob die Sensoren ausgelesen wurden, aber man könnte es genauso gut auf Thingspeak überprüfen. Die OLED ist sowieso zu klein, um alle gelesenen Werte auszudrucken
Schritt 1: Die Schaltung
Die 4 Pins des ESP8266 sind auf der Platine nicht als solche gekennzeichnet, und die meisten Bilder geben nur GPIO0 und GPIO2 deutlich an. Der ESP826-01 hat jedoch einen GPIO1-Pin (den Tx-Pin) und einen GPIO3-Pin (den Rx-Pin).i werde diese Pins wie folgt verwenden
- GPIO0 -> SDA-Pin des I2C-Ports
- GPIO1 ->DHT11
- GPIO2-> SCL-Pin des I2C-Ports
- GPIO3-> OneWire-Bus
Da meine I2C-Module bereits über Pullup-Widerstände verfügen, werde ich dort keine I2C-Pullup-Widerstände hinzufügen. Der DS18B20 benötigt noch einen Pull-Up-Widerstand, für den ich einen 4k7 verwendet habe, aber der ist wirklich nicht so kritisch, ein 10k ist auch gut. Der DHT11 braucht angeblich auch einen Pull-Up-Widerstand, aber ich fand, dass er auch ohne einen funktioniert. Das Hinzufügen eines 4k7-Widerstands hat keinen der Messwerte geändert, also habe ich ihn weggelassen. Viele der 3-poligen DHT11-Module haben bereits ein 10 k auf das Modul gelötet. Ich habe gerade festgestellt, dass ich die Anschlüsse für die OLED nicht gezeichnet habe. Das liegt daran, dass ich es nur für eine schnelle Überprüfung angeschlossen habe, aber wenn Sie es hinzufügen möchten, müssen Sie nur SDA mit SDA und SCL mit SCL verbinden … und natürlich die Masse- und Vcc-Pins mit ihren Gegenstücken
Schritt 2: Das Programm
Das Programm ist recht einfach. Zuerst richtet es die Bibliotheken und die Sensoren ein. Es schließt das DHT11 an Pin 1 (Tx) und den OnWire-Bus für das DS18B20 an Pin 3 (Rx) an. Um mehr als 1 DS18B20-Sensor am OneWire-Bus zu verwenden, müssen Sie deren „eindeutige Adresse“kennen. Wenn Sie das nicht haben, benötigen Sie ein Programm, um diese Adressen zu lesen. Tun Sie dies der Einfachheit halber auf einem Arduino. Im Programm müssen Sie noch Ihre WLAN-Anmeldeinformationen sowie die Schreib-API für Ihren Thingspeak-Kanal angeben
/*
Feld 1 Temp. Quartier (DHT11) Feld 2 Feuchte Quartier (DHT11) Feld 3 Stalltemperatur (DS18B20) Feld 4 Bodentemperatur (DS18B20) Feld 5 Luftdruck (bmp180) Feld 6 Aussentemperatur (bmp180) * */ #include #include // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page?title=Dallas_Tem… #include #include #include "SSD1306.h" SSD1306-Anzeige (0x3c, 0, 2); #define DHTPIN 1 //GPIO1 (Tx) #define DHTTYPE DHT11 #define ONE_WIRE_BUS 3 // GPIO3=Rx const char* ssid = "YourSSID"; const char* password = "IhrPasswort"; const char* host = "api.thingspeak.com"; const char* writeAPIKey = "W367812985"; //benutze DEINE writeApi //DHT11 Zeug float temperature_buiten; float temperature_buiten2; DHT dht (DHTPIN, DHTTYPE, 15); // DS18b20 Zeug OneWire oneWire (ONE_WIRE_BUS); //oneWire-Instanz zur Kommunikation mit allen OneWire-Geräten DallasTemperature-Sensoren(&oneWire); // Übergeben Sie die Adresse unserer oneWire-Instanz an Dallas Temperature. DeviceAddress Probe01 = { 0x28, 0x0F, 0x2A, 0x28, 0x00, 0x00, 0x80, 0x9F}; DeviceAddress Probe02={0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9}; // bmp180 Zeug Adafruit_BMP085 bmp; Void setup () {//I2C Zeug Wire.pins (0, 2); Draht. Begin(0, 2); // Sensoren initialisieren // Dht 11 Zeug dht.begin (); // ds18b20 stopfe sensor.begin (); // ds18b20 // setze die Auflösung auf 10 Bit (kann 9 bis 12 Bit sein.. niedriger ist schneller) Sensoren.setResolution (Probe01, 10); sensor.setResolution (Probe02, 10); // bmp180 Sachen wenn (! bmp.begin ()) {// Serial.println ("Kein BMP180 / BMP085"); // während (1) {} } // OLED-Zeug display.init (); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10); Verzögerung (1000); // Mit dem WiFi-Netzwerk verbinden WiFi.begin (ssid, Passwort); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); aufrechtzuerhalten. aufrechtzuerhalten. aufrechtzuerhalten. // Senden Sie den Befehl, um die Temperaturen zu erhalten temperature_buiten = Sensoren.getTempC(Probe01); // temperature_buiten2 = Sensoren.getTempC(Probe02); // //dht11 stuff---------------- ---- Schwebefeuchtigkeit = dht.readHumidity(); Float-Temperatur = dht.readTemperature(); if (isnan(Luftfeuchtigkeit) || isnan(temperatur)) { zurück; } //bmp-Zeug-------------------------- String t= String(bmp.readTemperature()); String p=String(bmp.readPressure()); // OLED-Zeug -------------------------- display.clear (); display.drawString (0, 10, p); // bmp-Druck display.drawString (0, 24, String (temperature_buiten)); // ds18b20 display.drawString (0, 38, String (Luftfeuchtigkeit)); //dht11 display. Anzeige(); // TCP-Verbindungen herstellen WiFiClient-Client; const int httpPort = 80; if (!client.connect(host, httpPort)) { return; } String-URL = "/update?key="; URL += writeAPIKey; URL += "&field1="; url += String(temperatur);// quartier (DHT1) url += "&field2="; url += String(Luftfeuchtigkeit);// Schlafplatz (DHT11) url += "&field3="; url += String(temperature_buiten); // Stalltemperatur (DS18B20 nr 1) url += "&field4="; URL += String(temperature_buiten2); // Bodentemperatur (DS18B29 nr 2) url +="&field5="; url +=String(bmp.readTemperature());Außentemperatur (BMP180) url +="&field6="; url +=String(bmp.readPressure()); // Luftdruck (BMP180) url += "\r\n"; // Anfrage an den Server senden client.print(String("GET") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r \n\r\n"); Verzögerung (1000); }
……..
Schritt 3: Mehr
Derzeit überwacht dieses Programm nur, aber was hindert Sie daran, einen BH1750 I2C-Lichtsensor hinzuzufügen, um zu messen, ob es Abend oder Morgen ist, oder eine RTC, um die Tageszeit zu kennen und die Stalltür automatisch mit Hilfe von zu öffnen und zu schließen eine PCF8574 I2C I/O-Erweiterungskarte, oder wie bereits im Garten vorhanden, fügen Sie einen PCF8591 oder ADS1115 AD-Wandler hinzu, um die Bodenfeuchtigkeit zu messen und bei Bedarf eine Pumpe zu aktivieren. Oder vielleicht die Wasserbeckenheizung einschalten, wenn die Temperatur unter Null fällt, wenn es einen I2 C-Chip dafür gibt, kann der ESP8266 ihn wahrscheinlich verwenden.
Ein wichtiger Hinweis jedoch: Das Programm funktioniert wie es ist gut, aber wenn Sie andere Sensoren zu Rx oder Tx hinzufügen, insbesondere wenn Sie sie zu Ausgängen machen, können sich die Pins plötzlich daran erinnern, dass es sich nicht wirklich um GPIO-Pins handelt. Es ist besser, den Pins von vornherein zu sagen, dass es sich um GPIO-Pins handelt. Das macht man, indem man die folgenden Anweisungen in das Setup einfügt:
pinMode(1, FUNCTION_3);
pinMode(3, FUNCTION_3);
Empfohlen:
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir
Navigieren in der Software des Raspberry Pi: Teil 1: 14 Schritte
Navigieren in der Software des Raspberry Pi: Teil 1: In dieser Lektion erfahren Sie, wie Sie mit der Befehlszeilenschnittstelle auf Ihrem Raspberry Pi navigieren. Sie erstellen Ordner, wechseln von einem Verzeichnis zum nächsten und lernen, wie Sie einen Screenshot erstellen, um Ihre gesamte Arbeit während des Unterrichts festzuhalten! Brunnen
Bodenfeuchtesensor und ESP8266 mit der AskSensors IoT Cloud verbinden – wikiHow
So verbinden Sie Bodenfeuchtigkeitssensor und ESP8266 mit der AskSensors IoT Cloud: Diese Anleitung zeigt Ihnen, wie Sie Ihren Bodenfeuchtigkeitssensor und ESP8266 mit der IoT-Cloud verbinden. Für dieses Projekt verwenden wir ein Knoten MCU ESP8266 WiFi-Modul und einen Bodenfeuchtigkeitssensor das misst den volumetrischen Inhalt des Wassers in der so
Verwenden des Suchmenüs: 3 Schritte
Verwenden des Suchmenüs: Einführung.Das Suchmenü bietet die Möglichkeit, Dateien, Ordner, Dokumente oder Fotos zu finden, die auf Ihrem Computer gespeichert sind. Wenn Sie über eine Internetverbindung verfügen, können Sie diese auch verwenden, um auf einer Website gespeicherte Informationen zu finden
Fügen Sie eine PC-Sync-Buchse zu einem Nikon Sc-28 Ttl-Kabel hinzu (verwenden Sie die automatischen Einstellungen für einen Blitz an der Kamera und lösen Sie Kamerablitze aus !!):
Fügen Sie eine PC-Sync-Buchse zu einem Nikon Sc-28 Ttl-Kabel hinzu (verwenden Sie die automatischen Einstellungen für einen Kamerablitz und lösen Sie die Kamerablitze aus !!): In dieser Anleitung zeige ich Ihnen, wie Sie einen dieser lästigen proprietären 3-Pin-TTL-Anschlüsse auf entfernen die Seite eines Nikon SC-28 Off-Camera-TTL-Kabels und ersetzen Sie es durch einen Standard-PC-Sync-Anschluss. Auf diese Weise können Sie einen dedizierten Blitz verwenden, s