Anwesenheitserkennung per Adafruit Feather WiFi und BLE

Das Board

Ist ein Adafruit Feather M0 Atwinc1500. Es hat den sehr guten ATWINC1500 WiFi Chip integriert, einen "echten" Hardware UART (SoftSerial wird damit für das HM-10 nicht benötigt), mehr als genug Speicher und auch Leistung. Dazu kommt das Adafruit Feather Wing OLED Display

Die Software

Ein Problem war den seriellen Speicher des Feather M0 von den standardmäßigen 64 bytes auf 256 zu erhöhen. Es hat ein wenig gedauert das richtige File "RingBuffer.h" zu finden, denn es ist ein verstecktes Systemfile. Ihr müsst also nach Installation der Adafruit Libraries in Eurem FileBrowser versteckte Files einschließen und dann nach "RingBuffer.h suchen. Darin die Größe des Serial Buffers auf 256 bytes erhöhen.

Inkludiert ist auch ein Watchdog (SleepyDog.h), welcher einen Lockup des Boards verhindert und nach ca.16Sekunden Stillstand einen SoftReset des Boards anstößt.

Das OLED Display zeigt nun auch permanent den Status des Hauses an.
Mit Button A am OLED-Board wird ein manueller Scan nach BLE Devices gestartet.
Mit Button B wird das verbundene Netzwerk und die Empfangsleistung angezeigt.
Mit Button C wird das Display ein-und ausgeschaltet.

Loxone - seitig kann sehr gut das Beispielsprogramm von Dieter Schmidberger aus dem HowTo Anwesenheitserkennung mit Bluetooth (BLE) und G-Tags verwendet werden, es ist super durchdacht. Dazu gekommen sind nur die UDP-Ausgangsmeldungen für das OLED Display. Befehl "111" wenn Haus offline, "222" wenn Haus online. Ein Scan wird wie gehabt mit "000" aktiviert.

Edit: Mit Version 2 pingt der Feather M0 ca. alle 30 Sekunden den Miniserver an und wartet auf eine Antwort. Kommt keine Antwort wird der Feather neu gestartet.
 

Das Board, oder ein Zweitbord für bessere Abdeckung, kann auch ohne Display gebaut werden, dann sind die Befehle für das Display und die Buttons im Programm zu löschen bzw zu "auskommentieren //".

 Die Erkennung der Anwesenheit funktioniert in Verbindung mit den Gigaset G-Tags perfekt. Die G-Tags sind zwar nicht so klein, aber dafür kann man die Batterie wechseln.

Benötigte Komponenten

Gesamtkosten ca. 120€

Aufbau

Das Anpassen der Software, die benötigten Libraries und Lötinstruktionen sind in der Einleitung des Arduino Files beschrieben.

 Viel Spaß beim Nachbauen!

 lg Vinc



Anleitung:

1. Verdrahtung gemäß den Verdrahtungsdiagrammen weiter unten.
2. Optional Arduino Tutorials anschauen: https://www.youtube.com/watch?v=0wAY...63281B90FB376E
3. Arduino IDE (Programmierumgebung) herunterladen: https://www.arduino.cc/en/Main/Software
4. Arduino Feather aufsetzen gemäß: https://learn.adafruit.com/adafruit-...view=all#setup
5. Anschießend Datenbanken für SAMD Boards installieren gemäß: https://learn.adafruit.com/adafruit-...th-arduino-ide
6.WiFi Libraries installieren: https://learn.adafruit.com/adafruit-...he-wifi-module
7. evtl SSL-Zertifikate updaten: https://learn.adafruit.com/adafruit-...l-certificates
8. Das eigentliche Programm (Arduino Sketch) findet ihr im Zip-File im Folder "Anwesenheitserkennung_FeatherWiFiClean"
9. Die Libraries aus dem Zip File der Anwesenheitskontrolle in den Libraries Folder der Arduino IDE kopieren oder bei Adafruit herunterladen, also Adafruit_SleepyDog.h; Adafruit_SleepyDog.h; Adafruit_WINC1500Udp.h; Adafruit_GFX.h; Adafruit_SSD1306.h
10. Die Buffer-Size in der Datei RingBuffer.h der Adafruit Feather Wifi Library muss auf 128 bytes oder höher gesetzt werden, also File öffnen und anpassen.
ACHTUNG: RingBuffer.h ist als versteckte Systemdatei installiert. Bitte "versteckte Dateien anzeigen" im File Browser aktivieren und den gesamten Computer nach RingBuffer.h durchsuchen!! Das File liegt irgendwo in den Systemdateien der Arduino IDE.
11. Im ArduinoSketch der Anwesenheitskontrolle bitte die Wifi Informationen und UDP Eingangsport des Feather under der Loxone ausfüllen, also alle Felder die unter Wifi Setup stehen. ACHTUNG: Die ip-Adressen werden mit Komma getrennt eingegeben, nicht mit Punkt! Standardmäßig kann man eine feste IP eingeben, möchte man DHCP muss die Code-Zeile "IPAddress feather_ip(192, 168, 1, 112);" und unter Setup die Codezeile "WiFi.config(feather_ip);" auskommentiert werden. Auskommentieren heist einfach // davor setzten, also "//IPAddress feather_ip(192, 168, 1, 112);"!
12. Der Hausstatus am Display schaltet per UDP Befehl des Miniserver. UDP- Befehl "111" bedeutet "Haus ist offline", "222" bedeutet "Haus ist online".
13. UDP-Befehl "000" startet den Scan nach BLE Tags
14. Es ist ein Verbindungstest programmiert, durch den die Loxone einen Abbruch der Verbindung erkennt und die Anwesenheitserkennung deaktiviert. Dafür sendet der Feather einen UDP-Befehl "testConnection" und der Miniserver muss darauf mit "333" antworten. Kommt keine Antwort vom Miniserver startet die Anwesenheitserkennung automatisch neu. 
15. Die Adafruit_Sleepydog Library startet den Feather neu (Soft-Reset) bei Abbruch der Verbindung oder dauernden Abbruch des WiFi-Empfanges. Möchte man den Soft-Reset deaktivieren (zum Aufsetzen sinnvoll bis alles Läuft) unter Setup folgende Code-Zeile auskommentieren:

int countdownMS = Watchdog.enable();
if (Serial) { Serial.print("Enabled the watchdog with max countdown of ");
Serial.print(countdownMS, DEC);
Serial.println(" milliseconds!");
Serial.println();}

Also zum deaktivieren des SoftReset:

/*int countdownMS = Watchdog.enable();
if (Serial) { Serial.print("Enabled the watchdog with max countdown of ");
Serial.print(countdownMS, DEC);
Serial.println(" milliseconds!");
Serial.println();}*/

16. Am OLED Display startet Taste A (Oben) einen manuellen Scan, Taste B ( Mitte) zeigt den Wifi Empfang, Taste C (unten) schaltet das Display Ein/Aus.
17. Stromverbrauch mit Display ist normalerweise ca 60mA, während senden einen UDP-Befehls 150mA. Auto-Powermanagement ist im WiFi Modul aktiviert.



Programm

 

Download  

Bilder