Tumgik
#BME680
draegerit · 3 months
Text
Ideaspark Mikrocontroller: Schritt-für-Schritt-Anleitung zur Anbindung des BME680 über SPI
Tumblr media
In diesem Beitrag möchte ich dir zeigen, wie du den Umweltsensor BME680 am ESP8266 von Ideaspark programmierst. Der Mikrocontroller verfügt bereits über ein OLED Display und daher ist dieser Mikrocontroller ideal dafür geeignet Sensordaten sehr einfach zu visualisieren.
Tumblr media
Den Umweltsensor BME680 habe ich dir bereits für den Arduino im Beitrag Arduino Lektion #113: Umweltsensor BME680 vorgestellt und gezeigt, wie dieser über I2C programmiert wird. Hier möchte ich nun die andere Schnittstelle (SPI) nutzen, um diesen mit dem ESP8266 zu verbinden. Die Idee zu diesem Beitrag habe ich aus einem Kommentar vom Beitrag ESP8266 Programmierung mit 0,96″ OLED Display von Ideaspark: Eine Schritt-für-Schritt-Anleitung entnommen, wo mich ein aufmerksamer Leser gefragt hat, wie dieser Sensor am Mikrocontroller programmiert wird. Daher geht zunächst ein Gruß an Michael B. heraus.
Benötigte Ressourcen für dieses Projekt
Wenn du dieses Projekt nachbauen möchtest, dann benötigst du: - einen ESP8266 von Ideaspark* mit OLED Display, oder - einen ESP8266 mit separatem 0,96" OLED Display, - einen Umweltsensor BME680*, sowie - einige Breadboardkabel*, - zwei 400 Pin Breadboards* Zusätzlich verwende ich für den Sensor noch eine externe Spannungsversorgung über ein Power Supply Modul* für das Breadboard. An diesen kann man entweder eine Powerbank via USB oder eine 9V Batterie via Jack Adapter anschließen. Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau der Schaltung - Sensor BME680 am ESP8266 von Ideaspark
Da der Ideaspark wie bereits erwähnt über ein eigenes OLED Display verfügt, brauchen wir dieses nicht separat anschließen bzw. verkabeln. In der Schaltung zeige ich dir jedoch, wie ein solches an den ESP8266 angeschlossen wird.
Tumblr media
Schaltung - Umweltsensor BME680 & OLED Display am ESP8266 KomponenteESP8266FarbeUmweltsensor BME680VCC5VrotGNDGNDschwarzSCLD1grauSDAD7violettSDOD2braunCSD8blauOLED DisplaySCLD5gelbSDAD6grünVCC5VrotGNDGNDschwarz
Programmieren in der Arduino IDE
Die Programmierung erfolgt in diesem Projekt in der Arduino IDE. Diese Entwicklungsumgebung kannst du dir unter https://www.arduino.cc/en/software für macOS, Windows & Linux herunterladen. Ich empfehle dir hier die neue Version 2.x. Schritt 1 - Installieren der Bibliotheken für das Projekt Bevor wir jedoch beginnen können, müssen wir zwei Bibliotheken installieren. Für den Umweltsensor BME680 verwende ich die Adafruit BME680 Bibliothek, welche du sehr einfach über den internen Bibliotheksverwalter der Arduino IDE installieren kannst. Dazu musst du nur nach "adafruit bme680" suchen und die Schaltfläche "INSTALLIEREN" klicken.
Tumblr media Tumblr media
Die gewählte Bibliothek hat jedoch einige Abhängigkeiten, welche wir zusätzlich installieren müssen. Dieses wird uns angezeigt und hier klicken wir auf "ALLE INSTALLIEREN". Für das OLED Display gibt es diverse andere Bibliotheken auch von Adafruit, jedoch habe ich mit der U8G2 Library sehr gute Erfahrungen gesammelt, da diese nicht nur leichtgewichtig ist, sondern auch noch wenig Code benötigt, um Daten anzuzeigen.
Tumblr media
Zunächst suchen wir nach u8g2 und klicken dort ebenso auf die Schaltfläche "INSTALLIEREN". In meinem Fall ist diese bereits in der Version 2.34.22 installiert.
Schritt 2 - auslesen der Sensorwerte vom Umweltsensor BME680 am Ideaspark ESP8266
Im ersten Schritt zur Programmierung wollen wir zunächst die Sensorwerte auslesen und auf der seriellen Schnittstelle anzeigen. Dazu können wir das Beispiel unter "DateiBeispieleAdafruit BME680 Librarybme680test.ino" verwenden.
Tumblr media
//Bibliotheken für den BME680 Sensor #include #include #include "Adafruit_BME680.h" /** Konfiguration des Sensors am ESP8266 Da der verwendete ESP8266 von Ideaspark bereits über ein I2C OLED Display verfügt welches über D5 & D6 angeschlossen ist, müssen wir andere Pins für die SPI Kommunikation verwenden! **/ #define BME_SCK D1 #define BME_MISO D2 #define BME_MOSI D7 #define BME_CS D8 #define SEALEVELPRESSURE_HPA (1013.25) //erzeugen eines Objektes vom Typ Adafruit_BME680 mit der SPI Konfiguration Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); void setup() { //starten der seriellen Kommunikation mit 9600 Baud. Serial.begin(9600); while (!Serial){ //Warten bis die serielle Schnittstelle bereit steht. } //starten der Kommunikation mit dem Sensor. //Wenn dieses nicht funktioniert, soll eine Fehlermeldung ausgegeben //und eine Endlosschleife gestartet werden. if (!bme.begin()) { Serial.println("Es konnte kein Sensor vom Typ BME680 gefunden werden!"); Serial.println("Prüfen Sie die Verkabelung / Konfiguration!"); while (1) ; } //Setup der Sensordaten (wurde vom Beispiel belassen) bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); bme.setPressureOversampling(BME680_OS_4X); bme.setIIRFilterSize(BME680_FILTER_SIZE_3); bme.setGasHeater(320, 150); // 320*C for 150 ms } void loop() { //anfordern der aktuellen Sensordaten if (!bme.performReading()) { Serial.println("Fehler beim lesen der Sensordaten!"); return; } //Funktion String(sensorwert, 2) kürzt den Wert auf zwei Stellen nach dem Komma. //auslesen der Temperatur String temp = "Temperatur: "; temp = temp + String(bme.temperature, 2); temp = temp + " *C"; //auslesen des Luftdrucks String luftdruck = "Luftdruck: "; luftdruck = luftdruck + String(bme.pressure / 100.0, 2); luftdruck = luftdruck + " hPa"; //auslesen der rel. Luftfeuchtigkeit String relLuftfeuchtigkeit = "rel. Luftfeuchtigkeit: "; relLuftfeuchtigkeit = relLuftfeuchtigkeit + String(bme.humidity, 2); relLuftfeuchtigkeit = relLuftfeuchtigkeit + "%"; //auslesen der ungefähren Höhe String hoehe = "ungef. Höhe: "; hoehe = hoehe + String(bme.readAltitude(SEALEVELPRESSURE_HPA), 2); hoehe = hoehe + " m"; //berechnen der Luftqualität String luftqualitaet = "Luftqualität: "; luftqualitaet = luftqualitaet + String(bme.gas_resistance / 1000.0,2); luftqualitaet = luftqualitaet + " kOhm"; //ein Trenner Serial.println("**************************"); //Ausgeben der ermittelten Daten auf der seriellen Schnittstelle Serial.println(temp); Serial.println(luftdruck); Serial.println(relLuftfeuchtigkeit); Serial.println(hoehe); Serial.println(luftqualitaet); //eine kleine Pause von 2 Sekunden delay(2000); } Dieser Code erzeugt die Ausgabe der Sensordaten auf der seriellen Schnittstelle.
Tumblr media
Programm - Umweltsensor BME680 & ESP8266 von Ideaspark, serielle AusgabeHerunterladen Wichtiger Hinweis: vor dem Upload externe Spannungsversorgung trennen! Damit ich den Code erfolgreich hochladen konnte, musste ich die externe Spannungsversorgung trennen. Da ich ein kleines Power-Modul für das Breadboard verwende, ist dort ein Schalter drauf, welchen ich dazu einfach betätigen musste. Nach dem erfolgreichen Upload erhalte ich zunächst eine Fehlermeldung vom Mikrocontroller, diese wird aber mit Betätigen des Schalters und damit die Spannungsversorgung zum Sensor wieder nichtig. Es konnte kein Sensor vom Typ BME680 gefunden werden! Prüfen Sie die Verkabelung / Konfiguration! --------------- CUT HERE FOR EXCEPTION DECODER --------------- Soft WDT reset Exception (4): epc1=0x402027ac epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 >>>stack>>> ctx: cont sp: 3ffffe50 end: 3fffffd0 offset: 0160 3fffffb0: feefeffe 00000000 3ffee91c 40204e18 3fffffc0: feefeffe feefeffe 3fffdab0 40101001 Read the full article
0 notes
ckuehnel · 6 months
Text
#IoT OCTOPUS
Typische IoT-Projekte erfordern Kommunikation, Sensoren und ein Energiemanagement, welches nach Möglichkeit dann auch Batteriebetrieb ermöglicht. Guido Burger entwickelte den Octopus, der die Dinge. die einen IoT-Knoten ausmachen, in einem Kit zusammenfasst. Technische Spezifikationen: ESP8266 (ESP-12F) Low power options (20uA in Deep Sleep) 2 x RGBW NeoPixel on board 2 x Grove Connectors (1…
Tumblr media
View On WordPress
0 notes
techcree · 2 years
Text
Sensordaten anzeigen mit Node Red
Tumblr media
Node red ist eine Möglichkeit um beispielsweise Sensordaten in einem Web-Dashboard anzeigen zu lassen. Was hat es damit aufsich?
Es ist oftmals etwas beschwerlich sich Daten übersichtlich in einer Website anzeigen zu lassen. Am Beispiel eines Raspberry Pi 4, der bestückt ist mit einem BME680 Sensor bietet sich aber die Möglichkeit sich auf dem Pi Node Red zu installieren. Node Red kann dann mit einem weiteren Modul ergänzt werden. dem Dashboard Modul. Das simuliert euch einen Web-Server unter der IP Adresse eures Pi mit dem Port ".1880". Und auch ein passendes Modul um den BME680 am Raspberry Pi auszulesen kann nachinstalliert werden.
Zunächst muss natürlich erstmal Node Red selbst installiert werden. Alles was man dazu wissen muss wird auf der Website https://nodered.org/ von Node Red zur Verfügung gestellt. Im bereich der Dokumentation ist ein Beginners-Guide auch spesziell mit Infos zur Installation auf einem Raspberry Pi. Wer sich nun zum ersten Mal mit Node red beschäftigt wird feststellen, dass dies einen erstmal quasi erschlägt, denn es ist ziemlich umfangreich und eignet sich auch für zahlreiche andere Anwendungsfälle mal von dem BME680 Sensor abgesehen.
Tumblr media
In den Einstellungen und im Bereich der Paletten findet man die Möglichkeit zusätzliche Module bzw. Paletten hinzuzufügen bzw. zu installieren. Auch hier gibt es eine große Auswahl von Möglichkeiten und Modulen und man muss ggf. schon genau wissen was man da sucht um auch schnell fündig zu werden. In der Suchfunktion helfen Schlagworte, wie "Dashboard" oder auch "Raspberry Pi oder "BME680". Solche Erweiterungen sind aber dann fix installiert und werden euch dann auch direkt in der Auswahlleiste links angezeigt.
Tumblr media
Für das Projekt mit dem BME680 von Bosch, welchen ihr unter anderem bei Pimoroni.com bekommen könnt wäre ein erster recht einfacher Flow schon ausreichend. Die einzelnen Module lassen sich einfach links suchen und hoffentlich auch finden und dann hinüberziehen. In unserem Fall benötigen wir das BME680 Modul und hängen dort jeweils für die einzelnen Messwerte eine Funktion an. Damit wir es dann entsprechend im Dashboard auch sehen fehlt uns nun nur noch ein Dashboard-Modul. Dazu können wir uns bspw. zwischen reinem text, einem Gauge oder einem Chart entscheiden.
Tumblr media
Damit wir auch die entsprechenden Werte bekommen müssen wir in der Funktion angeben wie und welchen Wert wir dort haben möchten. Beispielsweise gibt uns in der Funktion für Gas Ohm folgender Code die gewünschte Info aus und wird durch den Zusatz .toFixed(2) auf zwei Zeichen hiinter dem Komma begrenz:
return [{ payload: msg.payload.gas_resistance_Ohms.toFixed(2) }]
Tumblr media
Unter der IP-Adresse des Pi oder einfach mit localhost und dem Port :1880/ui können wir dann das Dashboard im Browser öffnen und uns die Messwerte anzeigen lassen. Damit bekommen wir mit Hilfe von Node Red eine bereits sehr schicke Website mit unseren Sensordaten. Um das ggf. noch weiter aufzubohren und noch schciker darzustellen muss man sich aber nun um einiges teiefr in die Materie einarbeiten.
Tumblr media
Für uns soll das an dieser Stelle erstmal reichen und ich hoffe ich konnte euch damit einen wertvollen Tipp geben.
0 notes
biophysicslab · 2 years
Text
Arduino Circuit Design using BME680 Sensor
Arduino Circuit Design using BME680 Sensor
BiophysicsLab.com has added Arduino to its workbench for research and client support. The Circuit Bill of materials: Tools: LCD screen, 16 characters x 2 lines, LCD1602 Module ( with pin header)ELEGOO UNO R3 Board ATmega328P with USB Cable (Arduino-Compatible) for ArduinoACEIRMC BME680 Digital Temperature Humidity Pressure Sensor Breakout Board Compatible for Arduino Raspberry Pi ESP8266…
Tumblr media
View On WordPress
0 notes
adafruit · 10 months
Text
Tumblr media
The Adafruit BME688 sensor by Bosch offers temperature, humidity, barometric pressure, and VOC gas sensing, with features like SPI or I2C. A 'drop-in' replacement for BME680, it has controlled odor-analysis capability and can be used as an altimeter.
13 notes · View notes
hackgit · 2 years
Text
[Media] ​​IKEA Vindriktning WisBlock Hack
​​IKEA Vindriktning WisBlock Hack This repository holds the code to connect a WisBlock RAK4631 to an IKEA Vindriktning air quality sensor and send the aire quality data over LoRaWAN to your LNS of choice. The code also expects a Bosch BME680 sensor connected to the WisBlock using a WisBlock Environment Sensor (RAK1906). These are the components required for this hack: ▫️ IKEA Vindriktning ▫️ RAKwireless WisBlock Mini Base Board (RAK19003) ▫️ RAKwireless nRF52840 Core (RAK4631) ▫️ RAKwireless Environment Sensor (RAK1906) ▫️ A JST1.0 battery connector and some wire ▫️ USB Type-C cable to flash the WisBlock https://github.com/xoseperez/wisblock-vindriktning
Tumblr media
0 notes
manufacturedba · 2 years
Text
Tumblr media
it's polite for guests to know their data
0 notes
enrgtechltd · 4 years
Link
BME680 gives you all the environmental sensing you would like in a small box. A compact sensor, includes the capability to detect temperature, humidity, barometric pressure, and VOC emissions. SPI or I2C all over for a good price! Bosch’s precision sensor can measure humidity with an accuracy of ±3 percent, barometric pressure with the absolute precision of ±1 hPa, and temperature with a precision of ±1.0 ° C.
0 notes
maverickuk · 3 years
Text
My awesome friends at Zone gifted me Pimoroni vouchers as a leaving present recently.
I'll be sad to not be working with those fantastic people everyday anymore. But playing with the Raspberry Pi Pico I got with the vouchers is certainly bringing a smile to my face.
The Pico itself only cost a few pounds and has lots of sensors and outputs available which can be used via C or MicroPython code.
It even has a built in temperature sensor, which opens up lots of possibilities out the box.
I purchased the Pico Display Pack that adds a 1.14" IPS LCD screen along with a BME680 air quality sensor.
I might make it into a cycle computer or perhaps a series of small temperature sensors I can place round the house.
Tumblr media Tumblr media Tumblr media
1 note · View note
planetarduino · 3 years
Text
VenTTracker is an anomaly detection system for windows to help ensure proper ventilation
Within an industrial setting, being able to determine if and/or when a machine malfunctions is vital to maintaining safety and uptime. This challenge is what prompted a maker who goes by javagoza on element14 to enter into their Design for a Cause 2021 contest with his device which he calls the VenTTracker.
At its heart, the VenTTracker uses an Arduino Nano 33 IoT mounted onto a small protoboard that is attached to a sliding surface, such as a window or vent. Under normal operation, the device does nothing, but once an anomaly is detected, including an obstacle or breakdown, the onboard OLED screen shows an alert message. 
Because this project uses machine learning to differentiate between normal operation and an anomaly, javagoza collected a large dataset of motions from an accelerometer and then uploaded it to Edge Impulse’s Studio. From there, he added a time series processing block and flattening block to generate the features that fed into the Keras neural network for training and validation. Once deployed back to the Arduino, the model performed very well at telling the difference between the window opening normally and something being in the way.
He even included Arduino Cloud functionality that displays if the window is open and any anomalies that have been detected so far. There was an additional module constructed that consists of a Nano 33 IoT and a BME680 environmental sensor to send CO2, temperature, and humidity data to another Cloud dashboard to let users know when to open the window.
To read about the VenTTracker in more detail and see its code, you can visit javagoza’s write-up on element14.
The post VenTTracker is an anomaly detection system for windows to help ensure proper ventilation appeared first on Arduino Blog.
VenTTracker is an anomaly detection system for windows to help ensure proper ventilation was originally published on PlanetArduino
0 notes
draegerit · 4 days
Text
Genauigkeitstest bei der PTB: Luftdrucksensoren BMP180, BMP280 und BME680
Tumblr media
Im Rahmen von einem Genauigkeitstest der Luftdrucksensoren an der PTB habe ich die Modelle BMP180, BMP280 und BME680 untersucht. Diese Sensoren sind weit verbreitet und werden in verschiedenen Anwendungen wie Wetterstationen, Höhenmessern und IoT-Geräten eingesetzt. Um die Zuverlässigkeit und Präzision dieser Sensoren zu bewerten, habe ich die Messungen in den Räumlichkeiten der Physikalisch-Technischen Bundesanstalt (PTB) in Braunschweig durchgeführt. Durch die Verwendung eines hochpräzisen Referenzsensors der PTB konnte ich die Messergebnisse validieren und eine fundierte Analyse der Leistungsfähigkeit der Sensoren durchführen. In diesem Beitrag stelle ich die Testergebnisse vor.
Tumblr media
Für den Beitrag Vergleich von Temperatursensoren für den Arduino & Raspberry PI war ich bereits an der TU-Braunschweig und konnte dort in einem Klimaschrank diverse Temperatursensoren testen. Hinweis: Als begeisterter Hobbyschrauber und beruflich im Bereich Informatik tätig, ist mir die Arbeit mit Luftdrucksensoren vertraut. Jedoch ist die wissenschaftliche Herangehensweise an den Vergleich dieser Sensoren für mich neu. Für diesen Beitrag habe ich intensiv recherchiert und Unterstützung aus verschiedenen Quellen genutzt, darunter das Internet, ChatGPT sowie Freunde und Bekannte mit entsprechendem Fachwissen. Mein Ziel ist es, diesen Beitrag so präzise und informativ wie möglich zu gestalten. Ich hoffe, dass meine Ausführungen hilfreich und interessant für dich sind.
Warum dieser Test der Luftdrucksensoren?
In vielen Anwendungen verwenden wir Luftdrucksensoren, um präzise Daten zu erfassen und in verschiedenen Schaltungen einzusetzen. Diese Daten können dann in weiterführenden Systemen für verschiedene Zwecke genutzt werden. Es ist von entscheidender Bedeutung, dass wir uns auf die Genauigkeit und Zuverlässigkeit dieser Sensoren verlassen können. Daher ist es mein Ziel, die Leistung der Sensoren zu prüfen und festzustellen, inwieweit sie unseren Anforderungen entsprechen. Besonders in Betracht der vergleichsweise günstigen Preise dieser Sensoren ist es wichtig, ihre Qualität kritisch zu hinterfragen. Auch wenn sie kostengünstig sind, sollten sie dennoch zuverlässige und präzise Messungen liefern. Durch diesen Test können wir herausfinden, ob die Sensoren ihren Preis wert sind und ob sie für unsere Anwendungen geeignet sind.
Welche Luftdrucksensoren sollen getestet werden?
Es sollen die Sensoren BMP180, BMP280 sowie BME680 getestet werden.
Tumblr media
BME680 Sensor
Tumblr media
BMP280 Sensor
Tumblr media
BMP180 Sensor Technische Daten der verwendeten Sensoren Schauen wir uns zunächst die technischen Daten der Sensoren an, man kann der Tabelle recht gut entnehmen, dass der Messbereich identisch ist, lediglich die Auflösung der Daten ist unterschiedlich. EigenschaftBMP180BMP280BME680Versorgungsspannung1.8 - 5V DC1.8 - 5V DC1.2 - 3.6V DCSchnittstelleI2C, SPII2C, SPII2C, SPITemperaturbereich-40 bis +85 °C-40 bis +85 °C-40 bis +85 °CDruckbereich300-1100 hPa300-1100 hPa300-1100 hPaAuflösung Druck0,02 – 0,06 hPa0,01 hPa0,01 hPaGenauigkeit Druck±0,12 hPa±0,12 hPa±0,12 hPaMesszeit--< 1 s Nachfolgend die Links zu den Quellen, von wo ich diese Daten entnommen habe: - Bosch BMP180 - Bosch BMP280 - Bosch BME680
Testaufbau bei der PTB - Braunschweig
Für meinen Testaufbau wurde mir ein Prüfmittel bereitgestellt welches zuletzt am 09.01.2024 geprüft wurde und eine negative Tolleranz von -0,24 mBar / Pascal hat. Diese -0,24 mBar sind zufälligerweise auch die Tolleranz zum Referenzsensor welcher sich einen Raum darunter befindet.
Tumblr media
Prüfmittel von der PTB und Schaltung am Raspberry Pi Pico
Tumblr media
Prüfmittel von der PTB zum messen von Luftdruck, Temperatur und rel. Luftfeuchte
Tumblr media
Testaufbau - prüfen von Luftdrucksensoren an der PTB Braunschweig Auf der Internetseite https://www.ptb.de/cms/nc/ptb/fachabteilungen/abt3/fb-33/ag-333/luftdruckdaten.html findest du die aktuellen Daten (im 15 Minuten Takt) des Luftdrucksensors welcher als Referenz für sämtliche Aufbauten genutzt wird. Ebenso wird auch dieser Sensor für die Abteilung verwendet welche sich mit dem Messen von Gewichten beschäftigt.
Tumblr media
Genaues Prüfmittel in einem klimatisiertem, Labor der PTB
Ergebnisse und Analyse der gesammelten Messdaten
In diesem Abschnitt möchte ich die Ergebnisse aus diesem Test aufzeigen. Meine Herangehensweise ist hier das zunächst die Rohdaten (>1000 Datenreihen) gegenübergestellt werden. Die Rohdaten der Messungen am Raspberry Pi Pico: Messdaten - Luftdrucksensoren BMP180, BMP280 und BME680Herunterladen Die Messdaten vom Referenzsensor können unter https://www.ptb.de/cms/nc/ptb/fachabteilungen/abt3/fb-33/ag-333/luftdruckdaten.html abgerufen werden. Der Zeitraum sollte hier auf das Datum 27.05.2024 eingeschränkt werden. (Es wird jedoch lediglich alle 15 Minuten ein Messwert veröffentlicht.) Von diesen Messwerten müssen nun durch den ca. 2m Höhenunterschied ein Wert von 0,24 Pascal abgezogen werden. ZeitstempelMesswertEinheit2024-05-27 15:301008.4mbar2024-05-27 15:451008.9mbar2024-05-27 16:001008.7mbar Ich habe vom Referenzsensor mehrere Werte erfasst und diese waren zumeist zwischen 1008,36 mbar & 1008,47 mbar.
Tumblr media
Darstellung der aufgezeichneten Messwerte Es ist jetzt schon erkennbar das der BMP280 Sensor deutlich näher am Referenzsensor der PTB ist als die anderen beiden. Der Sensor BME680 (ca. 16 €) ist nach dem BMP280 noch näher an dem Referenzsensor und der günstige BMP180 ist als ausreicher weit außerhalb der Werte. Messwerte als Microsoft Excel MappeHerunterladen Hier die Ansicht der Daten in Boxplotes:
Tumblr media
Vergleich der Drucksensoren in Boxplotes
Wie werden die Druckmessgeräte kalibriert?
Schauen wir uns die Pyramide im Bild 1 etwas genauer an (von unten nach oben), wir haben zunächst ein einfaches Prüfmittel, dieses wird gegen ein höherwertiges Messgerät kalibriert, dieses wiederum wird gegen ebenso ein höherwertiges Prüfmittel kalibriert. Bis man eben an der Spitze der Pyramide angekommen ist und es keine weitere Ebene gibt. Nur, wie werden die nationalen Prüfmittel kalibriert? Um ein Prüfmittel sehr genau zu kalibrieren, nutzt man zwei Systeme ein Normal Flüssigkeitsmanometer und ein Normal Kolbenmanometer. In der Vergangenheit waren die Flüssigkeitsmanometer verbreitet und das genaueste Prüfmittel. Die Flüssigkeitsmanometer werden jedoch durch verbesserte Fertigungsprozesse bei Kolbenmanometer (Verringerung der Spaltmaße) immer mehr verdrängt. Das PTB hat noch so ein Flüssigkeitsmanometer, welches mit Quecksilber arbeitet. Das Prinzip der Kalibrierung von Messgeräten ist recht einfach bzw. wurde mir von Herrn E. erläutert und danach war das ganze auch mehr als einleuchtend. Die Formel ist p=F/A, wobei p der Druck, F die Kraft und A die Fläche ist. Die Funktionsweise ist sehr simple, auf einem Kolben von welchem die Maße auf wenige tausenstel bekannt sind werden hochgenaue Gewichte gelegt, unterhalb von diesem Kolben bildet sich dann ein Druck welchen man mit der oben genannten Formel berechnen kann.
Tumblr media
Tafel - Kalibrierung von Messgeräten
Tumblr media
spezielle Gewichte zum Kalibrieren von Messgeräten Rechts im Bild siehst du eine Aparatur zum Messen von Druck bis 1000 Bar. Jedoch ist der Bauraum für diesen druck so klein das bei einem bersten der Aparatur nur ein kleines Klacken zu hören wäre.
Tumblr media
Aufbau von Drucktest bis 1000 Bar
Tumblr media
Hochgenaues / Nationales Prüfmittel An der Physikalisch-Technischen Bundesanstalt Braunschweig gibt es das genaueste Prüfmittel für Drücke welches auf sechs Stellen nach dem Komma messen kann. Links im Bild siehst du einen Teil von diesem Prüfmittel mit der Seriennummer 2. Bei meinem Besuch war dieses zerlegt und daher fehlen hier einige Anbauteile. Das Prinzip des Flüssigkeitsbarometer wird jedoch weiterhin verwendet und mit Lasermessgeräten wird dieses umso genauer. Als Flüssigkeit wird hier ein spezielles Öl verwendet.
Tumblr media
experimentelles Flüssigkeitsmanometer in der PTB Braunschweig
Fazit
Als Fazit aus diesem Test der Luftdrucksensoren an der PTB ziehe ich das der Luftdrucksensor BMP280 welcher sich im mittleren Preissegment befindet eine gute Wahl ist wenn es um die Messung von Drucken geht. Der deutlich günstige Sensor BMP180 währe eine alternative wenn es um nicht kritische Werte geht. Einzig der BME680 Sensor welcher noch viele weitere Messgrößen liefert (Luftqualität, Temperatur, rel. Luftfeuchtigkeit) liegt hier noch etwas näher am Referenzsensor der PTB.
Danksagung
Ich möchte mich herzlich bei der Physikalisch-Technischen Bundesanstalt (PTB) in Braunschweig bedanken, dass ich die Möglichkeit erhalten habe, die Räumlichkeiten für meinen Genauigkeitstest der Luftdrucksensoren BMP180, BMP280 und BME680 zu nutzen. Besonders dankbar bin ich für die Bereitstellung eines hochpräzisen Referenzsensors, der es mir ermöglicht hat, die Messergebnisse meiner Testsensoren zu validieren und sicherzustellen, dass die durchgeführten Messungen höchst zuverlässig sind. Diese Unterstützung war von unschätzbarem Wert für die Durchführung und die Qualität meines Tests.
Anhang 1 - Aufbau der Schaltung
Die Luftdrucksensoren werden via I2C angeschlossen, der verwendete Raspberry Pi Pico hat davon zwei zur Verfügung. Diese beiden I2C Schnittstellen werden auch benötigt, da die Sensoren gleiche I2C Adressen haben. (Selbst wenn man eine alternative I2C Adresse über Lötpunkte setzt, hat man dieses Problem.) Sensordefault I2C Adressealternative I2C AdresseBMP180 0x77-BMP280 0x760x77BME680 0x770x76 Hier die Schaltung auf dem Breadboard:
Tumblr media
Schaltung - Luftdrucksensoren BMP180, BMP280 und BME680 am Raspberry Pi Pico
Anhang 2 - Programmieren der Sensoren mit MicroPython
Für die Programmierung verwende ich das Tool Thonny welches unter https://thonny.org/ kostenfrei heruntergeladen werden kann. Zusätzlich für die Sensoren benötigen wir noch drei Module, welche von den entsprechenden GitHub Repositorys heruntergeladen werden können. - Sensor BMP180 - robert-hh / BMP085_BMP180 (ZIP-Datei) - Sensor BMP280 - flrrth / pico-bmp280 (ZIP-Datei) - Sensor BME680 - robert-hh / BME680-Micropython (ZIP-Datei) #importieren der Bibliotheken #für die Sensoren from bme680 import * from bmp280 import BMP280I2C from bmp085 import BMP180 from machine import I2C, Pin import machine import time #definieren der verwendeten I2C Schnittstellen i2c0 = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) i2c1 = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000) #initialisieren des Sensors BME680 bme680 = BME680_I2C(i2c0) #initialisieren des Sensors BMP280 bmp280 = BMP280I2C(0x76, i2c1) #initialisieren des Sensors BMP180 bmp180 = BMP180(i2c1) bmp180.oversample = 2 bmp180.sealevel = 101325 #Starten der Endlosschleife while True: #auslesen der Sensorwerte vom BME680 Sensor bme680Temperatur = bme680.temperature bme680Luftfeuchtigkeit = bme680.humidity bme680Luftdruck = bme680.pressure bme680Hoehe = bme680.altitude #auslesen der Sensorwerte vom BMP280 Sensor bmp280Values = bmp280.measurements bmp280Temperatur = bmp280Values bmp280Luftdruck = bmp280Values #auslesen der Sensorwerte vom BMP180 Sensor bmp180Temperatur = bmp180.temperature bmp180Luftdruck = bmp180.pressure bmp180Hoehe = bmp180.altitude #ermitteln des aktuellen Zeitstempels rtc = machine.RTC() #die Funktion datetime() liefert ein Tupel #mit den Werten für Datum und Uhrzeit #Beispiel: (2024, 5, 23, 3, 6, 43, 7, 0) currentDateTime = rtc.datetime() year = currentDateTime month = currentDateTime day = currentDateTime unknown = currentDateTime hour = currentDateTime minutes = currentDateTime seconds = currentDateTime #formatieren der Zeitwerte textFormat = "{0}.{1}.{2} {3}:{4}:{5}" formatedDateTime = textFormat.format(day, month, year, hour, minutes, seconds) currentTimestamp = time.time() #ausgeben der Daten auf der seriellen Schnittstelle, #als Separator wird ein Semikolon verwendet, #somit können diese Daten als CSV eingelesen werden #Spalten: # 1 - aktueller Zeitstempel (lesbar) # 2 - aktueller Zeitstempe (Unix Timestamp) # 3 - BMP180 - Luftdruck # 4 - BMP180 - Temperatur # 5 - BMP180 - Höhe über Null # 6 - BMP280 - Luftdruck # 7 - BMP280 - Temperatur # 8 - BME680 - Luftdruck # 9 - BMP680 - Temperatur # 10 - BME680 - Luftfeuchtigkeit # 11 - BMP680 - Höhe über Null print(formatedDateTime, Read the full article
0 notes
mangowall · 3 years
Link
Description: Brand: CJMCUUltra-small Pressure Height Development Board Package included: 1 x CJMCU-680 BME680 BOSCH Temperature And Humidity Pressure Sensor ...
0 notes
techcree · 2 years
Text
BME280 vs BME680 Sensoren messen verschieden
Tumblr media
Um eine kleine Wetterstation zu betreiben, werden die Sensoren BME280 oder BME680 gerne genutzt. Doch im direkten Vergleich fällt auf, dass da etwas nicht stimmen kann.
Es sind gleich mehrere Sensoren, welche hier auf einem winzigen Breakout montiert sind und gleichzeitig Werte ausgeben, wie die relative Luftfeuchtigkeit, Temperatur, Luftdurck und beim BME680 auch Gas. Gerne werden diese Sensoren genutzt um Projekte, wie Wetterstationen umzusetzen. Dabei ist der BME280 besonders geeignet für den Einsatz in Verbindung mit einem Raspberry Pi Pico oder PicoW. Grund dafür ist, dass für diesen Sensor auch für Micropython Bibliotheken existieren, was die Programmierung dann ausmacht.
Tumblr media
Eine andere Variante ist bspw. einen Raspberry Pi 4 mit dem BME680 zu nutzen umd sich ebenfalls die verschiedenen Werte anzeigen zu lassen. Doch im direkten Vergleich fällt auf, dass die Sensoren unterschiedliche Daten auswerfen. Dabei kommt der BME680 eher an die realistischen Werte heran als der BME280.
Die ursache für diesen Unterschied findet man nach reichlicher Recherche in der Software der Sensoren. In einem Forum ist zudem folgender Eintrag zu finden:" Aber da ich BME280 verwende und der Temperatur einen Offset hinzufügen muss (um eine korrekte Temperatur zu melden), muss ich noch die relative Luftfeuchtigkeit mit dieser Offset-Temperatur schätzen. Ich habe verstanden, dass dies für BME680 bereits mit dem BSEC-Treiber unterstützt wird, aber was ist mit dem BME280-Treiber? Dazu habe ich nichts gefunden."
Und tatsächlich unterscheiden sich die beiden Breakouts hier ganz wesentlich auch wenn diese auf den ersten Blick recht gleich aussehen. Beide Sensoren kommen im Ursprung aus dem Hause Bosch, das eigentlich für Qualität steht. Doch im Fall dieser Sensoren gibt es quasi Unterschiede in der Grundstrucktur der Berechnung der Daten aus denen sich die Messwerte ergeben.
Tumblr media
Die Unterschiede bzw. Fehlermittlung sind aber beim BME280 gravierend und machen den Sensor damit eigentlich unbrauchbar. Zwar kann man daran noch mit tiefen Eintauchen etwas schrauben, doch der Aufwand ist eigentlich zu hoch. Wer es also etwas genauer haben möchte muss wohl dann auch eher zum BME680 greifen.
0 notes
ckuehnel · 3 years
Text
Überwachung der Luftgüte
Neben den breit eingesetzten CO2-Ampeln, die die Luftqualität in Innenräumen und ggf. auch einen Lüftungsbedarf signalisieren, stellen LoRaWAN-Sensoren ihre Messwerte zentral auf einem LoRaWAN-Server zur weiteren Bearbeitung zur Verfügung. Ich habe einen mit einem BME680 Sensor von Bosch ausgestatteten WASN Indoor Sensor ins TTN integriert und visualisiere die erfassten Daten über…
Tumblr media
View On WordPress
0 notes
Photo
Tumblr media
Since my last post, I have been working out the kinks for an environmental monitoring device using a BME680 sensor that measures temperature, humidity, barometric pressure and VOC gases. 
The interest spurred from the growing trend in air quality monitoring devices and the rise of citizen science as a way to take health into our own hands. Originally I was hoping to take measurements in homes nearest to toxic sites, such as refineries. After reading an article posted by Villanova, it was brought to my attention that weather and traffic patterns have varying impacts block by block in a city, making it very hard to get accurate results from just a select number of recordings. That’s when I decided it may be a more worthwhile experiment to collect data in various places in the household to determine if different rooms held different concentrations of VOC’s throughout the day. Perhaps there could be indicators showing a need for automatic filtration devices connected to a data sensor, such as near a radiator or in a basement prone to collection of gases. 
The sensor has been fun and fairly straightforward to work with so far. The hangup for me has been getting it to work with the data logging shield, which translates all collected data to an SD reader to use in visualization tools later. Beware! Make sure you use a CR1220 battery any time your power your data shield or you may end up freezing your arduino. Order it ahead of time! I could not find them anywhere.
Additionally, It takes a full 48 hours to “burn in” the metal oxide (MOX) sensor in the BME680, and an additional 30 mins each time you turn it on for it to warm up. Once an equilibrium is reached, any rise in the gas reading correlates with increased air quality, while decreases suggest a lowering of air quality. 
To test, I held a sharpie marker up to the reader. It’s incredibly sensitive and fluctuated considerably as I moved it back and forth near the sensor. (see below) The gas readings for the room had stabilized at ~220 kOhms and moved to as low as 29 kOhms with the sharpie near the sensor, slowly returning back up to 220 kOhms after the sharpie was removed.
14:53:24.747 -> Temperature = 75.09 *F
14:53:24.781 -> Pressure = 1001.00 hPa
14:53:24.848 -> Humidity = 33.61 %
14:53:24.848 -> Gas = 213.75 KOhms
14:53:24.848 -> Approx. Altitude = 102.32 m
14:53:25.171 ->
14:53:27.534 -> Temperature = 75.11 *F
14:53:27.569 -> Pressure = 1001.00 hPa
14:53:27.613 -> Humidity = 33.55 %
14:53:27.613 -> Gas = 223.73 KOhms
14:53:27.644 -> Approx. Altitude = 102.32 m
14:53:27.963 ->
14:53:30.338 -> Temperature = 75.11 *F
14:53:30.376 -> Pressure = 1001.00 hPa
14:53:30.376 -> Humidity = 33.49 %
14:53:30.416 -> Gas = 94.24 KOhms
14:53:30.416 -> Approx. Altitude = 102.32 m
14:53:30.773 ->
14:53:33.112 -> Temperature = 75.11 *F
14:53:33.149 -> Pressure = 1001.00 hPa
14:53:33.207 -> Humidity = 33.50 %
14:53:33.207 -> Gas = 71.77 KOhms
14:53:33.207 -> Approx. Altitude = 102.32 m
14:53:33.537 ->
14:53:35.911 -> Temperature = 75.11 *F
14:53:35.945 -> Pressure = 1001.00 hPa
14:53:36.013 -> Humidity = 33.49 %
14:53:36.013 -> Gas = 78.47 KOhms
14:53:36.013 -> Approx. Altitude = 102.32 m
14:53:36.328 ->
14:53:38.704 -> Temperature = 75.11 *F
14:53:38.741 -> Pressure = 1001.00 hPa
14:53:38.741 -> Humidity = 33.51 %
14:53:38.782 -> Gas = 56.00 KOhms
14:53:38.782 -> Approx. Altitude = 102.32 m
14:53:39.132 ->
14:53:41.484 -> Temperature = 75.11 *F
14:53:41.519 -> Pressure = 1001.00 hPa
14:53:41.519 -> Humidity = 33.63 %
14:53:41.584 -> Gas = 29.00 KOhms
14:53:41.584 -> Approx. Altitude = 102.24 m
14:53:41.914 ->
14:53:44.282 -> Temperature = 75.09 *F
14:53:44.317 -> Pressure = 1001.02 hPa
14:53:44.317 -> Humidity = 33.78 %
14:53:44.355 -> Gas = 34.89 KOhms
14:53:44.355 -> Approx. Altitude = 102.24 m
14:53:44.711 ->
14:53:47.068 -> Temperature = 75.11 *F
14:53:47.103 -> Pressure = 1001.02 hPa
14:53:47.103 -> Humidity = 33.87 %
14:53:47.142 -> Gas = 49.85 KOhms
14:53:47.142 -> Approx. Altitude = 102.24 m
14:53:47.493 ->
14:53:49.843 -> Temperature = 75.11 *F
14:53:49.878 -> Pressure = 1001.02 hPa
14:53:49.935 -> Humidity = 33.96 %
14:53:49.935 -> Gas = 31.33 KOhms
14:53:49.935 -> Approx. Altitude = 102.24 m
14:53:50.296 ->
14:53:52.652 -> Temperature = 75.09 *F
14:53:52.652 -> Pressure = 1001.02 hPa
14:53:52.734 -> Humidity = 34.07 %
14:53:52.734 -> Gas = 46.85 KOhms
14:53:52.734 -> Approx. Altitude = 102.24 m
14:53:53.074 ->
14:53:55.416 -> Temperature = 75.11 *F
14:53:55.453 -> Pressure = 1001.02 hPa
14:53:55.492 -> Humidity = 34.06 %
14:53:55.492 -> Gas = 71.96 KOhms
14:53:55.526 -> Approx. Altitude = 102.24 m
14:53:55.845 ->
14:53:58.209 -> Temperature = 75.11 *F
14:53:58.243 -> Pressure = 1001.02 hPa
14:53:58.281 -> Humidity = 33.99 %
14:53:58.281 -> Gas = 92.96 KOhms
14:53:58.314 -> Approx. Altitude = 102.24 m
14:53:58.661 ->
14:54:01.009 -> Temperature = 75.11 *F
14:54:01.047 -> Pressure = 1001.00 hPa
14:54:01.047 -> Humidity = 33.87 %
14:54:01.082 -> Gas = 108.33 KOhms
14:54:01.117 -> Approx. Altitude = 102.24 m
14:54:01.430 ->
14:54:03.812 -> Temperature = 75.13 *F
14:54:03.812 -> Pressure = 1001.02 hPa
14:54:03.870 -> Humidity = 33.75 %
14:54:03.870 -> Gas = 119.75 KOhms
14:54:03.894 -> Approx. Altitude = 102.32 m
14:54:04.235 ->
14:54:06.585 -> Temperature = 75.11 *F
14:54:06.623 -> Pressure = 1000.98 hPa
14:54:06.623 -> Humidity = 33.64 %
14:54:06.676 -> Gas = 127.46 KOhms
14:54:06.676 -> Approx. Altitude = 102.49 m
0 notes
dfrobots-blog · 5 years
Text
How to Monitor the Home Temperature&Humidity with BME680
My hometown is a small county town. My parents and I have lived together at there until I was 18 years old. Our home is the second floor, but the whole building is old fashioned. The old house developers did not pay much attention to the building environment. That building is totally backed by a small mountain. Therefore, even the second-floor rooms are still next to the mountain. Staying at home, I can feel the inner temperature is lower than the outside. The windows are always covered with steam at night. 
The labors holidays are just coming, I want to back to hometown and make device to check its temperature and humidity, and the air quality.
This time, I adopts I2C BME680 Environmental Sensor for its high precision and powerful detection ability. You can monitor 4 environmental parameters gas, pressure, temperature & humidity simultaneously at the most. It is designed for air quality monitor.
Tumblr media
Design IdeaTake DFRduino UNO R3 as the controller and DS1307 as a clock. Then BME680 Environmental Sensor collects environment data and pass it to UNO. Finally, UNO input data to SD card that received from the sensor in every second.Materials List
1.DFRduino UNO R3 - Arduino Compatiblex1
2.Gravity IO Expansion Shield for Arduino V7.1x1
3.Gravity: I2C DS1307 RTC Modulex1
4.Gravity: I2C BME680 Environmental Sensorx1
5.MicroSD card module for Arduinox1
6.SD/MicroSD Memory Card (8 GB Class10 SDHC)x1
7.7.4v Lithium Battery x1
Tumblr media
Connection Diagram
Tumblr media
MicroSD module can plugin to the blue socket in the expansion board.
Tumblr media
Install library files of BME680 and DS1307, and download the Arduino program.This is a contrast test and there are 2 devices. One is put to my friend home in the 3rd floor, which is not close to the mountain and the other is my home in the 2nd floor. I have put them in the same position of 2nd floor and the 3rd floor. Then I set device to collect data for 24 hours to guarantee enough source data to analyze.
Tumblr media
Save data to computer via EXCEL
Tumblr media
Select to open 1 file
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Adjust EXCEL format and title
Tumblr media Tumblr media
After data analysis, I found the temperature and humidity data of my home is different from the 3rd floor. The humidity is 8% higher and the temperature is 3% lower. I guess the mountain plays a big role.
0 notes