EinführungWas kann auf einem zweizeiligen Bildschirm angezeigt werden, außer "Hallo Welt!"? Warum nicht Temperatur, Luftfeuchtigkeit und Druck anzeigen?
Die als Trainingshilfe für Arduino angebotenen Sensoren (DHT11, DHT22) zeigen Temperatur und Luftfeuchtigkeit an. Für Bildungszwecke (für die Universität) war es notwendig, den Druck auf die gleiche Weise zu beobachten. Natürlich hat die Abteilung ein Barometer, aber warum nicht Ihr eigenes sammeln? Darüber hinaus können Sie im automatischen Modus weitere Messwerte sammeln. Dies ist eine gute Erfahrung beim Erlernen von Arduino.
Auf die eine oder andere Weise wurden Komponenten aus China bestellt und dieses Gerät zusammengebaut.
Notwendige KomponentenArduino Pro MiniI2C für LCD (es war möglich, sofort montiert zu bestellen, aber es stellte sich heraus, ein bisschen billiger)
LCD 1602BME280USB-UART wurde verwendet, um die Skizze an Arduino zu senden. Es war auch möglich, einen Raspberry Pi oder einen Computer mit einem COM-Anschluss zu verwenden.
Anschlussplan für Firmware und ProgrammcodeUSB-UART aus China wurde mit einer Reihe von Kabeln geliefert:

Sie waren genug. Ich habe den Jumper bei 3,3 Volt belassen, obwohl meine Version des Arduino mit 5 Volt betrieben wird.
UART - Arduino
5v - VCC
TXD - RXD
RXD - TXD
GND - GND
CTS - DTR (optional, es hat bei mir nicht funktioniert, möglicherweise weil die Signalspannung 3,3 V blieb)
Wenn Sie den DTR nicht anschließen, müssen Sie nach dem Senden der Arduino-Firmware, die Sie mit der integrierten Taste neu starten müssen, auf beiden Seiten einen aktiven Datenaustausch beginnen (wie durch die USB-UART-LEDs angezeigt). Nachdem die Firmware erfolgreich heruntergeladen wurde, startet sie sich selbst neu.
Erforderliche Bibliotheken von Drittanbietern:
SparkFunBME280LiquidCrystal I2CDirekt der Code mit Kommentaren aus den Beispielen (falls jemand etwas ändern muss).
Code#include <stdint.h> #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include <LiquidCrystal_I2C.h> //Global sensor object BME280 mySensor; LiquidCrystal_I2C lcd(0x3F,16,2); // , 0x3F void setup() { lcd.init(); lcd.backlight(); //***Driver settings********************************// //commInterface can be I2C_MODE or SPI_MODE //specify chipSelectPin using arduino pin names //specify I2C address. Can be 0x77(default) or 0x76 //For I2C, enable the following and disable the SPI section mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; // , //For SPI enable the following and dissable the I2C section //mySensor.settings.commInterface = SPI_MODE; //mySensor.settings.chipSelectPin = 10; //***Operation settings*****************************// //renMode can be: // 0, Sleep mode // 1 or 2, Forced mode // 3, Normal mode mySensor.settings.runMode = 3; // Forced mode, Normal mode //tStandby can be: // 0, 0.5ms // 1, 62.5ms // 2, 125ms // 3, 250ms // 4, 500ms // 5, 1000ms // 6, 10ms // 7, 20ms mySensor.settings.tStandby = 5; // //filter can be off or number of FIR coefficients to use: // 0, filter off // 1, coefficients = 2 // 2, coefficients = 4 // 3, coefficients = 8 // 4, coefficients = 16 mySensor.settings.filter = 0; //tempOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.tempOverSample = 1; //pressOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.pressOverSample = 1; //humidOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.humidOverSample = 1; //Calling .begin() causes the settings to be loaded mySensor.begin(); } void loop() { // , , . lcd.setCursor(0,0); lcd.print("H="); lcd.print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0); lcd.print(" P:"); lcd.setCursor(0,1); int mmH=mySensor.readFloatPressure()/133; lcd.print(mmH); lcd.print("mmH "); lcd.print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000); }
Die Sensoradresse kann erraten werden, es gibt nur zwei davon.
Wie Sie die Adresse Ihres Displays herausfinden, erfahren Sie
hier . Je nach Chip gibt es zwei Platten.
In diesem Fall:
Und die Adresse wird seitdem 0x3F sein A0 - A2 offen:

Die im Oval eingekreiste LED ist
besser zu verdampfen.
SchaltplanDer Widerstand wurde als die Hälfte des Sensorwiderstands (zwischen VVC und GND) gewählt, so dass der Spannungsabfall an ihm 1,7 Volt betrug. Die Schaltung kann auch über den Eingang von RAW, eine andere Spannung (zum Beispiel von der Krone) mit Strom versorgt werden.

Das Foto zeigt, dass Sie aus Gründen der Kompaktheit den Sensor und die Anzeige von einem anderen Pin aus mit Strom versorgen können. Es zeigt auch einen Zweig eines orange-gelben Kabelpaares, an dem ein Widerstand von 100 Ohm hängt, um die Helligkeit der Hintergrundbeleuchtung zu verringern (Sie können den Jumper verlassen, aber er schneidet Ihnen die Augen).

In meinem Fall wird alles von einem alten Computer-Netzteil gespeist. Kann über USB mit Strom versorgt werden. Alle Komponenten wurden mit dem vorhandenen Momentkleber verklebt.
ZusammenfassungAm Arbeitsplatz erschien 1602 mit dem Tisch verschraubt, der Druck, Luftfeuchtigkeit, Temperatur anzeigt. Arduino kann erneut entfernt werden, ohne es zu entfernen (
es kann zu einer Kriechlinie werden).
Foto
Arbeitsplatz, Gesamtansicht.

Vorderansicht.

Rückansicht.