Anwesenheitskontrolle per BLE-Tag

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Incalculable
    Extension Master
    • 26.08.2015
    • 118

    #1

    Anwesenheitskontrolle per BLE-Tag

    Liebe Kollegen,

    ich war schon lange auf einer angenehmen Lösung zur Präsenzkontrolle um die Alarmanlage, Lichter etc.. automatisch zu schalten.
    Ziemlich ideal dafür erschien mir die Lösung von Dieter Schmidberger mit den BLE-Tags (BLE-Tag in die Frauenhandtasche und die Alarmanlage wird nicht mehr vergessen ). Allerdings wollte ich eine Lösung per Wlan, damit das Modul überall eingesetzt werden kann.
    Das Endziel war daher ein Arduino in einem Gehäuse das man wie einen Stecker einfach in eine Steckdose steckt.

    Für die die Auswertung der G-Tags benötigen wir mind.128 bytes (ich arbeite mittlerweile mit 256 bytes). Das benötigt allerdings bereits relativ viel Speicher auf einem Arduino Nano, und in Kombination mit den Wireless Libraries ist man damit sehr schnell am Ende der Speicherkapazität eines Nano. Es bleibt daher fast kein Arbeitsspeicher mehr über.
    Erschwerend kommt dazu dass die meisten Wifi Breakout Boards die Softserial Library verwenden und dann mit Softserial das benötigte HM-10 Bluetooth Modul nicht mehr angesprochen werden kann (es kommt zu Timing Problemen in der Softserial Library). Eine Alternative wäre AltSoftSerial zu verwenden, kostet aber wieder Speicher...
    Es musste also ein leistungsfähigeres Board her.



    Das Board:

    Da ich ein Fan von Adafruit Produkten bin landete ich beim 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. Und da es so schön ist kam noch ein OLED Display dazu ;-)



    Die Software:

    Basierend auf Dietmars Programm habe ich angefangen zu programmieren, im Endeffekt musste ich dann für das neue Board praktisch alles ändern...Ihr kennt das ja..

    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 Dietmar aus dem LoxWiki 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:

    - Adafruit Feather M0 WiFi- ATSAMD 21 + ATWINC1500 (entweder mit Antenne am Board, oder mit UFl-Antenne), 43,95€. Das Board ist leider meist sehr schnell ausverkauft :
    http://www.exp-tech.de/adafruit-feat...d21-atwinc1500

    - Adafruit Feather Wing OLED, 15,95€:
    http://www.exp-tech.de/adafruit-feat...?___SID=U[

    - Stacking Header, 1,35€:
    http://www.exp-tech.de/feather-stack...female-headers

    - HM-10 Bluetooth Modul, 14,99€:
    http://www.amazon.de/SunFounder-Blue...=sr_1_1&sr=8-1

    - Gigaset G-Tags, 43,79€:
    http://www.amazon.de/Gigaset-Bluetoo...=sr_1_2&sr=8-2
    ----------------------------------------------------------------------------------------------------------
    Gesamtkosten ca. 120€



    Zum Aufbau:

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



    Weiters Vorgehen:

    Konstruktion eines schönen Gehäuses zum Einstecken in die Steckdose mit WAF . Mal schauen wie ich das mache...

    Viel Spaß beim Nachbauen!

    lg Vinc


    Anleitung:

    1. Verdrahtung gemäß den Verdrahtungsdiagrammen weiter unten.
    2. Optional Arduino Tutorials anschauen:
    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.
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Anwesenheitskontrolle Verdrahtung.jpg Ansichten: 2 Größe: 397,2 KB ID: 73903
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Anwesenheitskontrolle Verdrahtung 2.jpg Ansichten: 1 Größe: 279,3 KB ID: 73904








    Zuletzt geändert von Incalculable; 28.12.2016, 11:31.
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7432

    #2
    Sehr schönes Projekt und die Erweiterung per WLAN.
    Die Erweiterung per Display ist auch eine gute Idee.

    Mein Name ist übrigens Dieter nicht Dietmar
    Kein Support per PN!

    Kommentar

    • Incalculable
      Extension Master
      • 26.08.2015
      • 118

      #3
      Hi Dieter,

      wird sofort geändert 😉. Ich dachte ich Programmier mal schnell dein Howto um auf WLAN (die Idee von Dir mit den GTags ist Spitze), dass ich dabei auf soviel Probleme mit Rechenleistung, Softserial, Buffer Größe & Zuverlässigkeit stoße hätte ich nicht gedacht.
      Das einzige was mich stört ist, dass ich es bisher nicht geschafft habe die Battery Service UUID abzufragen. Da macht das HM-10 nicht mit... Aber vielleicht kommt ja noch die Erleuchtung 😇, ansonsten wird die Batterie per Handy gechecked.

      Lg Vinc


      Mfg Incal

      Kommentar

      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7432

        #4
        ...dafür lernt man extrem viel über die Materie bei solchen Projekten.

        Batterie Service geht nicht, hab mich auch schon erfolglos damit rumgeschlagen.
        Kein Support per PN!

        Kommentar

        • Incalculable
          Extension Master
          • 26.08.2015
          • 118

          #5
          So, anbei ein paar Bilder vom selbstgebastelten "Steckergehäuse" 😀.

          Lg Vinc










          Mfg Incal

          Kommentar

          • Incalculable
            Extension Master
            • 26.08.2015
            • 118

            #6
            So, kurzes Update:

            Mit Software 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

            Software Version 2 findet Ihr im Ursprungspost.

            Kommentar


            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Warum das?
              Gab es Probleme mit der Verbindungsstabilität?
          • Incalculable
            Extension Master
            • 26.08.2015
            • 118

            #7
            Hallo Kollegen,

            Für Euch als Info:

            in der V2 Version läuft das System bei mir nun seit über einer Woche ohne jeden Fehler. Bin sehr zufrieden. 😀

            Kommentar

            • The Spirit
              LoxBus Spammer
              • 11.09.2015
              • 391

              #8
              Welche Reichweite hast du in etwa für die Erkennung?
              Danke

              Kommentar

              • Incalculable
                Extension Master
                • 26.08.2015
                • 118

                #9
                Das ist stark abhängig vom Aufbau deines Hauses, vor allem den Wänden, und natürlich von den BLE-Limits. Bei mir nach Osten durch 2 Wände etwa 5,5m, nach Westen 10m, nach Norden auch ca 7m durch eine 50er Wand. Meine Wände sind Ziegel bzw Stahlbeton.Flächenmäßig sinds bei mir ca 90qm im Haus. Bei mir hängt der Stecker in der Garderobe und deckt somit absolut sicher etwa 80% des EG ab. Bei meiner Frau ist der G-Tag in der Handtasche, bei mir in der Geldtasche, und wir legen beides in der Garderobe ab.
                Bis jetzt hat der G-Tag meine Anwesenheit immer sicher bei Betreten des Hauses erkannt.
                Sollte die Abdeckung nicht reichen kann man auch einen 2ten Feather mit HM-10 ohne Display nehmen. Oder auch einen 3ten ;-)

                Kommentar

                • hismastersvoice
                  Supermoderator
                  • 25.08.2015
                  • 7432

                  #10
                  Ich empfehle zwei zu nehmen.
                  Habe einen an der West einen an der Ost-Seite wo meine Garage ist. Wenn ich mit dem Auto in den Hof fahre werde ich als anwesend erkannt, und Geräte die im Standby sind aktiviert. Bis ich ausgestiegen ist alles bereit.
                  Kein Support per PN!

                  Kommentar

                  • The Spirit
                    LoxBus Spammer
                    • 11.09.2015
                    • 391

                    #11
                    Wollte jetzt das ganze nachbauen.
                    Finde den Preis für die Komponenten jedoch recht hoch.
                    Gibt es auch günstige Chinavarianten deiner verbauten Komponenten?
                    Danke

                    Kommentar

                    • Incalculable
                      Extension Master
                      • 26.08.2015
                      • 118

                      #12
                      Ich empfehle bei den Originalteilen zu bleiben. Ich habe es mit einem Arduino Nano versucht, aber mit ausreichend seriellem Buffer und den WLAN Libraries ist der Nano damit am Ende. Dazu kommt eine Softserial Library, und da die Wifi-Library die Softserial-Vektoren nutzt und somit blockiert, bleibt nur die Altsoftserial Library. Die kostet wieder Leistung, was dazu führt dass es mit einem Nano nicht stabil läuft. Zudem musst du dann das Programm komplett anpassen.
                      Sparen kannst Du indem du das Display weglässt (im Programm sind die Zeilen markiert die dann auskommentiert bzw gelöscht werden) und du kannst billigere BLE Tags nutzen (da kenn ich die Performance nicht. Ich verwende die von Gigaset da man die Batterie wechseln kann).

                      Evtl gibt's ja was im Chinaladen, ich bin ehrlich gesagt davon auch nicht soooo der Fan, da es dazu keinen Support gibt.



                      Mfg Incal

                      Kommentar

                      • The Spirit
                        LoxBus Spammer
                        • 11.09.2015
                        • 391

                        #13
                        OK.
                        Danke für die Info.
                        Dann bleib ich bei den Originalteilen.
                        Kannst du mir noch Bilder zeigen, wie es in deinem "Gehäuse" aussieht?
                        Danke

                        Kommentar

                        • Incalculable
                          Extension Master
                          • 26.08.2015
                          • 118

                          #14
                          Kann ich machen wenn ich wieder zu Hause bin, bin grad in LA. Grundsätzlich hab ich nur einen USB Stecker gekauft, beim USB Kabel die Adern freigelegt, den Leiter mit dem USB Pin der Platine verlötet und Grund mit dem Ground Pin. Dann alles ins Gehäuse, mit zwei Tropfen Epoxydharz den Stecker fixiert und fertig 😉. Das Gehäuse selbst hab ich mit Restmaterial aus meinem Modellbaukeller schnell zusammengezimmert.


                          Mfg Incal

                          Kommentar

                          • The Spirit
                            LoxBus Spammer
                            • 11.09.2015
                            • 391

                            #15
                            Wo gibt es aktuell das Bluetooth Modul?
                            Find bei eBay das SunFounder nicht.
                            Danke

                            Kommentar

                          Lädt...