Der Classroom-Sensor verwendet einen ESP32-Mikrocontroller mit integriertem wifi-Modul.
Durch den Einsatz von FreeRTOS Tasks werden die einzelnen Bestandteile des Programms entkoppelt. Der Wifi-Task zum Beispiel, ist dafür zuständig, die wifi-Verbindung neu aufzubauen, falls sie abgebrochen wurde. Der Rest des Programms funktioniert aber mit und ohne wifi.
Mit den drei Sensoren werden die folgenden Umweltwerte gemessen
- CO₂-Konzentration mit dem MH-Z19
- Lufttemperatur, Luftfeuchtigkeit, Luftdruck und Luftwiderstand mit dem Bosch BME680
- Lautstärke in Dezibel mit dem INMP441-Mikrofon
Die beiden RGB-Leuchtdioden zeigen die Lautstärke und den CO2-Wert optisch an. Ein Summer kann zusätzlich ein akkustisches Feedback geben. Die beiden Taster können noch frei konfiguriert werden.
Alle Teile des Programms kommunizieren über FreeRTOS-Queues miteinander und funktionieren dadurch vollkommen asynchron. Der Button-Task sendet zum Beispiel eine Nachricht wenn ein Taster gedrückt oder losgelassen wurde.
Die Platine wird in einem IKEA Bilderrahmen als Gehäuse untergebracht. Die "Frontblende" kann frei gestaltet werden. Dabei werden die LEDs integriert.
Hier können die Testdaten betrachtet werden.
In der Datei cred.h müssen die WLAN-Zugangsdaten und URL/Port des MQTT-Servers eingetragen werden.
- Die Taster und der Summer funktionieren aber haben noch keine Funktion.
- WifiClientSecure für TLS
- arduino-mqtt für das MQTT-Protokoll
- MH-Z19 für den CO₂-Sensor
- BME680 für den BME680
- Aus INMP441 entstammt die sound_level_meter.h ursprünglich (Aus den Rohdaten des Mikrofons die Lautstärke zu berechnen ist anspruchsvoll).
- jled um die LEDs einfach anzusteuern
- igs/environment/deepsleep
- igs/environment/RAUM_ID/co2
- igs/environment/RAUM_ID/bme680
- igs/environment/RAUM_ID/vol
Wobei RAUM_ID durch eine eindeutige Kennzeichnung des Raumes ersetzt wird. Zu Testzwecken verwende ich raum1 und raum2.
Auf der zugehörigen Projektseite auf oshwlab.com können Sie den Schaltplan und die Platine bearbeiten und von jlcpcb fertig lassen.
-
Widerstände: R1 = 100, R2 = 120, R3 = 47, R4 = 100, R5 = 120, R6 = 47, R7 = 10k, R8 = 10k
-
Außenmaß: Die Innenmaße des Ikea Rahmens Ribba 10x15 definieren den Umriss der Platine (152.5mm x 102.6mm). Die Löcher (3,2mm) sind dafür da um optional den Feinstaubsensor auf die Rückseite der Platine anzuschrauben.
Auf der Platine gibt es zwei Anschlussmöglichkeiten für bis zu 6 LEDs. Eine RGB-LED ersetzt 3 LEDs. Es lassen sich also zwei RGB-LEDs anschließen und beliebig programmieren. Die erste LED könnte die CO₂-Konzentration und die zweite die Lautstärke anzeigen.
Die LEDs kann man an einem beliebigen Platz direkt auf die Platine auflöten indem man für eine RGB-LED vier nebeneinanderstehende freie Lötlöcher auswählt. Alle Löcher mit quadratischer Lötstelle sind mit GND (Minus) verbunden. Die anderen Löcher (mit runden Lötstellen) sind nicht verbunden. Für jede LED braucht es also eine Kabelverbindung zu einem der LED Anschlussstellen, die mit LED1 und LED2 beschriftet sind.
Alternativ kann man die LEDs auch mit einem Kabel mit der Platine verbinden, wenn man einen Connector auf die Platine lötet. Es eignet sich zu Beispiel ein abgewinkelter 2X4P IDC Connector oder ein 2x4 Pin Header. LCSC: 2X4P IDC Connector oder C492432
Dieser Anschluss ist für den Classroom-Sensor absolut optional. Dabei Feinstaubsensor handelt es sich um ein total anderes Projekt, dass sich mit dieser Platine ebenfalls umsetzten lässt.
Datenblatt des Feinstaubsensors
- Sensor: AliExpress
- Buchse: AliExpress
- LCSC XH-5AW
Jeder Pin des ESP32 Entwicklungsboards ist auf der Platine herausgeführt. Bei Bedarf können zwei einreihige Pin-Buchsen (15 Pins pro Seite) aufgelötet werden.
Zur Lärmpegelmessung.
- AliExpress
- LCSC: SEA-12085-16
- AliExpress
- LCSC: SKHHNHA010
Man hat die Wahl zwischen zwei RGB Leuchtdioden mit gemeinsamer Kathode oder bis zu 6 einzelnen LEDs. Man kann auch eine RGB LED und 3 einzelne LEDs verwenden. Ich rate zu diffusen LEDs, da sich die Farben besser mischen.