Hi,
ich habe nach einer Lösung gesucht den Wasserstand unseres Regenwasserbehälter zu messen. Nachdem mich Thorsten Gehrig zum Arduino bekehrt hat :-) kam ein Arduino mit Ultraschallsensor dabei raus. Der Sensor mißt den Freiraum im Behälter und schickt den Wert alle 60sec auf den Bus wenn es eine Änderung gibt. Der Code muss noch überarbeitet werden. Da hat mir Thorsten auch schon eine Vorlage geliefert. Muss ich nur noch dazu kommen.
Mit dem Wert wird dann im Edomi der Wasserstand/Wassermenge berechnet. Bei überschreiten einer def. Füllmenge wird eine Meldung über Sonos ausgegeben.
Bauteile:
Siemens BCU 5WG1117-2AB12 26,70€ - Voltus
Arduino Pro Mirco 5V ca. 4€ eBay
HW1.2 ca. 3€
4-Pin Ultraschall- Modul HC-SR04 Abstand Messung Wandler Sensor 6€ (5er Pack)
Zusammen unter 40€
Noch mehr Informationen zum Arduino am KNX gibt es hier https://knx-user-forum.de/forum/öffe...arduino-am-knx
IMG_1154.JPG
ich habe nach einer Lösung gesucht den Wasserstand unseres Regenwasserbehälter zu messen. Nachdem mich Thorsten Gehrig zum Arduino bekehrt hat :-) kam ein Arduino mit Ultraschallsensor dabei raus. Der Sensor mißt den Freiraum im Behälter und schickt den Wert alle 60sec auf den Bus wenn es eine Änderung gibt. Der Code muss noch überarbeitet werden. Da hat mir Thorsten auch schon eine Vorlage geliefert. Muss ich nur noch dazu kommen.
Mit dem Wert wird dann im Edomi der Wasserstand/Wassermenge berechnet. Bei überschreiten einer def. Füllmenge wird eine Meldung über Sonos ausgegeben.
Bauteile:
Siemens BCU 5WG1117-2AB12 26,70€ - Voltus
Arduino Pro Mirco 5V ca. 4€ eBay
HW1.2 ca. 3€
4-Pin Ultraschall- Modul HC-SR04 Abstand Messung Wandler Sensor 6€ (5er Pack)
Zusammen unter 40€
Noch mehr Informationen zum Arduino am KNX gibt es hier https://knx-user-forum.de/forum/öffe...arduino-am-knx
Code:
// Library from: https://bitbucket.org/thorstengehrig/arduino-tpuart-knx-user-forum //Initialize the KNX TP-UART library on the Serial1 port of Arduino Mega // 1,1,3 ist die Source-Adresse #include <KnxTpUart.h> KnxTpUart knx(&Serial1, "1.1.203"); int trigPin = 8; int echoPin = 9; unsigned int duration, cm, cmo; //int 100cm, float 100.09cm, unsigned int 100cm void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Set KNX Serial to Even parity Serial1.begin(19200); UCSR1C = UCSR1C | B00100000; // Even Parity knx.uartReset(); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); cm = (duration/2) / 29.1; // Sendet wenn der neue Wert(cm) ungleich dem alten Wert (cmo) ist if (cm > cmo) bool success = knx.groupWrite2ByteInt("7/4/1",cm); if (cm < cmo) bool success = knx.groupWrite2ByteInt("7/4/1",cm); // Schreib den neuen Wert in cmo cmo = cm; delay(60000); //ms }
Kommentar