Go to file
Harald Küller 479703ddf8 Definition für die US Sensor Pins (Echo und Trigger) ist jetzt im
config.h. damit sollte es auch möglich sein US und Laser Sensoren
gleichzeitig zu verwenden
2023-04-04 11:17:19 +02:00
Bilder Added some Pictures 2023-03-31 10:46:00 +02:00
Fizzing Fritzing für LaserSensor (ToF) hinzugefügt 2023-03-27 19:24:19 +02:00
Fuellstandssensor Definition für die US Sensor Pins (Echo und Trigger) ist jetzt im 2023-04-04 11:17:19 +02:00
Gehaeuse Gehäuse und Deckel für die Steuereinheit mit VL53L0X Sensoren 2023-03-30 16:14:39 +02:00
Readme.md „Readme.md“ ändern 2023-03-31 11:33:35 +00:00

Readme.md

Projekt zur Erfassung des Fuellstandes eines Pelletslagers. Hierbei hat das Lager eine rechteckige Form, das unten eine "Wanne" bildet. Die Wanne sind dabei 45° nach innen gekippte Flächen.

Das Prinzip basiert darauf, das die Sensoren (1-4 Stück) jeweils an unterschiedlichen Positionen den Abstands der Pellets zur Lagerdecke messen, die Messpunkte mitteln, und daraus das Luftvolumen im Lager Berechnet. Mit dem zusätzlich berechneten Gesammtvolumen des Lagers kann dann durch eine einfache Subtraction das Volumen der im Lager befindlichen Pellets berechnet werden. Das wiederrum kann über das Pelletsgewicht/m³ (ca. 650Kg) in Tonnen umgerechnet werden.

Der Ermittelte Mittelwert den die Sensoren Messen, sowie Temperatur und Lagerfüllstand werden auf einem Display ausgegeben.

Da der ESP8266 WLAN Integriert hat, muss dieser in das Hausnetz eingebunden werden, und kann dann eine Webseite (http:///) abgerufen werden, die die Daten eines jeden Sensors, sowie Temperatur und Luftfeuchte anzeigt.

Es können entweder 1-2 Ultrashall Sensoren (HCSR04 oder kompatibel), oder 1-4 Laser Sensoren (Adafruit VL53L0X) verwendet werden. Zusätzlich kann ein DHT11 Feuchte/Temperatur Sensor angeschlossen werden.

Bei Verwendung von Ultraschall Sensoren, wird die Temperatur in die Messung mit einbezogen.

Gesteuert wird das ganze von einer nodemcu, oder Wemo D1 (ESP 8266). mit HCSR04 Sensoren kann auch ein Arduino verwendet werden.

Ich habe hier noch ein Adafruit 1.3 Inch Display verwendet, das mittels I2C angeschlossen wird - im Fritzing ist ein Ähnliches Display eingezeichnet.

Alternativ können hier auch LCD Module (2 Zeilig) verwendet werden.

Konfiguration der Lagergrössen, Sensortypes und Sensoranzahl wird in Fuellstandssensor/config.h vorgenommen. Was die Werte bedeuten ist im config.h dokumentiert. Dieses also editieren!

Kompilierd wird mit code-stution und plattformio. Gesteuert wird der Build mit platformio.ini

Bei einem Fabrikneuen Nodemcu oder Wemo chip sind die Zeilen: upload_protocol = espota upload_port = <ip oder nodename des esp8366> upload_flags = --port=8266 komplett auszukommentieren ('#' am Zeilenanfang einfügen) Danach den Wemo D1 mit einem USB Kabel anschliessen, und das Projekt mittels:

\# pio run -e nodemcu -t upload

Kompilieren. und auf den esp8266 Flashen.

Nach dem Flashen startet der Arduino als AccessPoint (SSID: ConfigPelletsSensor) Bindet man sich mit einem Android Gerät (ich nehme an bei IOS ist das genauso) an diesen AP, wird eine "authentifizierung" verlangt, und auf die WebSeite des ESP8266 weitergeleitet. Hier können SSID's im Netzwerk gescanned, ausgewählt, und das WPA2 Passwort eingegeben werden. Danach nimmt der Pellets Sensor seinen Betrieb auf. Diese WLAN Initialisierung muss normalerweise nur einmal gemacht werden. Kann der ESP aus irgendeinem Grund nicht mehr mit dem WLAN Verbinden, startet er im AP Modus neu, wartet 5 Minuten, und führt einen Reset durch. Ist nach diesen 5 Minuten der AP wieder Erreichbar und die WLAN Authentifizierung funktioniert, geht der Sensor wieder in den normalen Betrieb über, ansonsten wird wieder im AP Modus gestartet.

Wenn das WLAN mal aktiv ist und die Verbindung funktioniert, können die zeilen im platformio.ini wieder aktiviert werden. Wichtig ist bei upload_port die ip bzw. hostnamen des pelletssensors anzugeben. Dann kann ohne den Sensor per USB anzuschliesen ein OverTheAir (OTA) update gemacht werden. Das kommando zum übersetzen und flashen (pio run -e nodemcu -t upload) bleibt das gleiche.

Sollte ein Arduino Verwendet werden, muss die Schaltung natürlich entsprechend angepasst werden, und die verwendeten Pins korrekt in der config.h angegeben werden. Der Arduino muss dann mittels adapter an den USB Port angeschlossen werden. Netzwerk Funktionalität steht hier nicht zur Verfügung. Auch werden aktuell die ToF Sensoren (VL53L0X) auf einem Arduino nicht unterstützt. Mit dem 74HC4052 in der Schaltung sollte das zwar funktionieren - hab ich aber nie ausprobiert.

Mittels:

\# pio run -e uno -t upload

kann die Firmware für den Arduino gebaut und geflashed werden.

Hier ein Beispiel um den Sensor per HTTPMOD in Fhem zu integrieren: define kg_heizung_pellets HTTPMOD http://<ip des esp8266 Sensor WemoD1>/ 180 setuuid kg_heizung_pellets 61e92360-f33f-d654-5946-9893b9886baf89b9 attr kg_heizung_pellets DbLogExclude .* attr kg_heizung_pellets enableControlSet 1 attr kg_heizung_pellets event-on-change-reading .* attr kg_heizung_pellets group Heizung attr kg_heizung_pellets handleRedirects 1 attr kg_heizung_pellets reading01Name pellets attr kg_heizung_pellets reading01Regex Pelletlagers: ([\d.]+) attr kg_heizung_pellets reading02Name distance attr kg_heizung_pellets reading02Regex SensorAbstand: ([\d.]+) attr kg_heizung_pellets reading03Name temperature attr kg_heizung_pellets reading03Regex Temperatur: ([\d.]+) attr kg_heizung_pellets reading04Name humidity attr kg_heizung_pellets reading04Regex Feuchte: ([\d.]+) attr kg_heizung_pellets reading05Name sensor1 attr kg_heizung_pellets reading05Regex Sensor 1: ([\d.]+) attr kg_heizung_pellets reading06Name sensor2 attr kg_heizung_pellets reading06Regex Sensor 2: ([\d.]+) attr kg_heizung_pellets room Keller attr kg_heizung_pellets showBody 0 attr kg_heizung_pellets showError 0 attr kg_heizung_pellets showMatched 0 attr kg_heizung_pellets stateFormat {sprintf("%.2f C, %.3f Tonnen, %.2f cm",ReadingsVal($name,"temperature",0), ReadingsVal($name,"pellets",0),ReadingsVal($name,"distance",0))}