Forum: Mikrocontroller und Digitale Elektronik Kabellose Verbindung Smartphone + mehrere Mikrocontroller


von Hannes (Gast)


Lesenswert?

Hallo zusammen,

ich bräuchte mal etwas Hilfe zur Selbsthilfe.

Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die 
Teil eines Spiels werden sollen.
Diese sollen jetzt so erweitert werden, dass man sie nicht nur über dem 
Programmcode sondern ganz einfach über eine Smartphone-(Web)App durch 
Übertragung ein paar weniger Bytes GESAMMELT konfigurieren kann.

Jetzt stellt sich mir einfach die generelle Frage, wie man so etwas 
angehen kann. Verpasse ich jedem Gadget ein Bluetooth-Modul muss ich 
vermutlich auch jedes Teil einzeln mit dem Smartphone verbinden? Oder 
ist das mit Bluetooth Mesh auch so zu lösen, dass ich mich nur mit einem 
Gerät verbinden muss?
Vielleicht läuft es aber auch auf ein WLAN-Bluetooth-Gateway hinaus?

Sorry, ich habe mit WLAN und Bluetooth noch keine Erfahrung und es läuft 
wohl auf eine steile Lernkurve hinaus. Aber vorher wollte ich einfach 
herausfinden, was auch praktikabel ist.

Danke

von Jobst M. (jobstens-de)


Lesenswert?

Gesammelt bedeutet eine Art Broadcast.

Wie soll bei den Geräten der Empfang gestartet werden? Oder sind die 
immer auf empfang?

Bei Bluetooth findet vorab immer eine Kopplung statt und ist dann eine 
Peer-to-Peer-Verbindung. Also nix mit Broadcast.
WLAN könnte mit Broadcast gehen. Dazu müssten die Geräte aber an einem 
AP angemeldet werden.

Was ist mit Alternativen?
IRDA (ohne Rückkommunikation) oder Audio?

Wo sollen sich die Geräte befinden? Dürfen die Geräte für diese Aktion 
an einen Ort gebracht werden?

Induktiv?

Gruß
Jobst

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Das wäre eine Möglichkeit:

a) wenn die einzelnen Controller man per Kabel verbinden kann:
Ein Controller hat BlueTooth, der leitet die Daten z.B. per CAN Bus zu 
den anderen weiter.

b) wenn die einzelnen Controller ohne Kable verbunden sind und z.B. 
einen Akku haben:
Ein Controller hat BlueTooth, der leitet die Daten per Funk-Module zu 
den anderen weiter, die jeweils ebenfalls Funk Module haben.

von Hannes (Gast)


Lesenswert?

Da je nach Gerät extrem sparsam mit der Batterie (das hätte ich 
vielleicht noch erwähnen sollen) umgegangen werden soll, soll die 
Empfangsbereitschaft an jedem Gadget explizit per Taster / eventuell 
Reedkontakt ausgelöst werden werden.
Geräte in unmittelbarer Nähe ist OK, ACK wäre aber schon gut. Über 
optisch und Audio habe ich schon nachgedacht, kommt beides nicht in 
Frage.
Zur Konfiguration steht kein AP zur Verfügung.

Ein beliebiges 2,4GHz Funkmodul + Gateway wäre noch eine Lösung, dennoch 
wäre es eleganter, auf eine Gateway verzichten zu können.

Am Ende soll es einfach idiotensicher sein, da ich das Ganze, wenn 
komplett fertig, auch anderen zur Verfügung stellen möchte.

von Jobst M. (jobstens-de)


Lesenswert?

Hannes schrieb:
> ACK wäre aber schon gut.

Kannst Du bei Broadcast aber vergessen. Das geht nur bei 
Einzelverbindungen.

Du könntest Dir einen Sender hinstellen, der immer wieder die selben 
Infos wiederholt.

Dann drückst Du an einem Gerät (oder mehreren) einen Knopf und dieser 
empfängt das. Kann das zur Verifikation nochmal empfangen. Beliebig 
häufig, bis er der Meinung ist, dass es nun passt. Der Einsatz von 
Checksummen sollte umfangreich genutzt werden.

Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit 
stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.

Wenn die Geräte untereinander Kommunizieren, reicht es, wenn einer die 
Info vom Handy bekommt. Der kann die dann verteilen.

Welche Fähigkeiten/Sensorik haben die Geräte noch?
Kamera on Board?
-> QR-Code vom Display des Smartphones scannen.

Gruß
Jobst

von (prx) A. K. (prx)


Lesenswert?

Jobst M. schrieb:
> Bei Bluetooth findet vorab immer eine Kopplung statt und ist dann eine
> Peer-to-Peer-Verbindung.

Die Corona-Warn-App kommt offensichtlich ohne explizite Kopplung aus.

Bluetooth Low Energy erlaubt es, kurze Informationen im Advertising 
unterzubringen.

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

(prx) A. K. schrieb:
> Mindestens Bluetooth Low Energy erlaubt es, kurze Informationen im
> Advertising unterzubringen.

Ach, na sicher. Was vor der laufenden Verbindung passiert habe ich 
völlig verdrängt.

Spätestens über die SSID kann man dann auch bei WLAN ein paar Byte 
übermitteln.

Gruß
Jobst

: Bearbeitet durch User
von Paul F. (zwanni)


Lesenswert?

schau dir mal ESP-NOW an, das ist ein eigener Standard von Espressif der 
ein Mesh Netzwerk zwischen ESPs aufbaut.

: Bearbeitet durch User
von Schlaumaier (Gast)


Lesenswert?

Ich würde eine Beere oder etwas komplizierter eine ESP-32 als "Server" 
zwischen schalten.

Das Handy verbindet sich mit den "Server" sendet neue Daten, und alles 
dürfen sich bedienen.

Wenn es sich nur um deine eigene Wohnung handelt und du eine Fritzbox 
hast, geht es auch wenn du deren File-Server nutzt.

Mit den Smartphone schickt du die Config an den "Mini-Server" und deine 
Teile holen sich die da ab. Push wäre möglich aber ist sehr aufwendig 
finde ich.

Also die Teile fragen alle X-Time nach ob was neues da ist, und holen 
sich dann die Daten. Das bedeutet das sie nach X-Time alle auf den 
neustes Stand sind.

Das ganze geht relativ Stress frei.

von Schlaumaier (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Die Corona-Warn-App kommt offensichtlich ohne explizite Kopplung aus.

Dafür ist auch extra das BT-Protokoll geändert worden.

Es sendet Daten über die "Kopplungs-Anfrage". Witziger weise hat Google 
das NICHT über das Smartphone-Update gemacht, sondern über Google-Play 
;)

Und damit das BT-System die "Anfrage" nicht einfach ignoriert sondern 
verarbeitet musste da einiges geändert werden. Weshalb der 
Stromverbrauch bei aktiver App höher ist. Die schaltet nämlich die "ich 
warte auf Daten" permanent an.

Vorher musst du die von Hand anschalten genannt "Kopplungsanfrage". 
Ansonsten ist BT selbst aktiviert ziemlich inaktiv wenn es kein Job hat.

von (prx) A. K. (prx)


Lesenswert?

Schlaumaier schrieb:
> Witziger weise hat Google
> das NICHT über das Smartphone-Update gemacht, sondern über Google-Play

Nicht witzig, sondern zwangsläufig. Man hatte keine 5 Jahre Zeit.

von Schlaumaier (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Nicht witzig, sondern zwangsläufig. Man hatte keine 5 Jahre Zeit.

nö. Mein Handy hätte den Mist sonst nicht bekommen. Weil ich aus den 
Update-Service raus bin.  Ich kaufe nicht alle 2 Jahre ein neues Handy 
wegen angeblicher Sicherheitslücken.

von (prx) A. K. (prx)


Lesenswert?

Schlaumaier schrieb:
> Mein Handy hätte den Mist sonst nicht bekommen.

Eben. Deshalb musste es über die Google Services laufen, nicht über 
Android Updates.

von Jan (Gast)


Lesenswert?

Hannes schrieb:
> Da je nach Gerät extrem sparsam mit der Batterie (das hätte ich
> vielleicht noch erwähnen sollen) umgegangen werden soll, soll die
> Empfangsbereitschaft an jedem Gadget explizit per Taster / eventuell
> Reedkontakt ausgelöst werden werden.

Mein geniales, selbst entwickeltes Funksystem (mehrere Protokoll-Stacks) 
funktioniert auch mit Broadcasts, da es eine selbstsynchronisierte 
Netzwerkzeit gibt, das versendete Pakete nach einigen Sekunden ungültig 
macht. Ein Dupe-Check verhindert Replay-Attacks in diesem Zeitfenster.

Jedes Gerät im Bus sendet periodisch Reports. Ein zentraler Server 
erkennt so, ob Geräte ausgefallen sind. Jetzt kommt der Clou: Die 
batteriebetriebenen Geräte hören, nachdem sie ein Report abgesendet 
haben, exakt 3ms auf eingehende Pakete. Ansonsten sind sie im 
deep-sleep. Stromverbrauch quasi Null. Der Sender muss einfach nur 
warten, bis ein Report-Packet eingetrudelt ist.

Bestimmt habe ich dadurch 10029807422457 Patente verletzt. Deshalb 
bleibt das Teil auch privat. Falls nicht, ist es hiermit prior Art. Bin 
aber ziemlich sicher, dass nichts davon wirklich neu ist.

von Helmut H. (helmuth)


Lesenswert?

Jobst M. schrieb:
> Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit
> stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.

Mit Micropython auf ESP8266 (aka "Gerät")ist es einfach:
1
import network
2
wlan = network.WLAN(network.STA_IF)
3
wlan.active(True)
4
wlan.connect('My_Handy_AP','30728671214167815478')

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Mit Micropython auf ESP8266 (aka "Gerät")ist es einfach

Du wirst einem Enduser wohl kaum zumuten, auf jedem einzelnen Gerät 
Quelltexte zu ändern. Selbst wenn die WLAN Zugangdaten anders 
gespeichert werden muss man sie doch irgendwie eingeben.

Es sei denn, man nutzt WPS "auf Knopfdruck", doch das funktionierte bei 
mir stets nur sporadisch mit viel Glück (auch auf anderen Geräten). WPS 
ist bei mir unten durch.

von Helmut H. (helmuth)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Du wirst einem Enduser wohl kaum zumuten, auf jedem einzelnen Gerät
> Quelltexte zu ändern.
Kann man bei einem Handy-AP nicht dessen Namen und den Schlüssel 
vorgeben?
Habe es nur mit einer uralten Fritz-Box als AP mit Gastzugang gemacht, 
hat problemlos funktioniert.
Gleiche Software auf allen ESPs.

von Stefan F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Kann man bei einem Handy-AP nicht dessen Namen und den Schlüssel
> vorgeben?

So mache ich das gerne. Immer wenn der ESP startet, erzeugt er für 5 
Minuten ein temporäres Netz (im Soft-AP Modus). Darauf kann ich mich per 
Web-Browser auf Smartphone oder Laptop verbinden, um die WLAN 
Zugangsdaten einzustellen.

Aber so richtig komfortabel ist das auch nicht. Für einmalige 
Einstellungen OK, aber nicht für Geräte die man täglich woanders 
aufstellt.

von Maxx (Gast)


Lesenswert?

Jobst M. schrieb:
> Dazu müssten die Geräte aber an einem
> AP angemeldet werden.

Nein. Wie Nintendo mit dem DS gezeigt hat ist der 802.11 Standard 
kompatibel mit nicht AP/STA Protokollen umsetzbar.

Passendes Paper für das entsprechende Protocol:
https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjx0YD9qrj1AhWE5KQKHSsLD9gQFnoECAQQAQ&url=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.120.1452%26rep%3Drep1%26type%3Dpdf&usg=AOvVaw2i20SgXqeZiwpMjscG1K2H

von Helmut H. (helmuth)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Aber so richtig komfortabel ist das auch nicht.

Man muss doch nur den Namen des AP und den Schlüssel auf dem Handy 
konfigurieren. Nach einem Reset versucht jeder ESP sich mit dem 
vorgegebenen AP zu verbinden. Falls das funktioniert holt es sich 
allfällige Konfigurationsdaten ab.

von Joachim S. (oyo)


Lesenswert?

Hannes schrieb:
> Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die
> Teil eines Spiels werden sollen.
> Diese sollen jetzt so erweitert werden, dass man sie nicht nur über dem
> Programmcode sondern ganz einfach über eine Smartphone-(Web)App durch
> Übertragung ein paar weniger Bytes GESAMMELT konfigurieren kann.
>
> Jetzt stellt sich mir einfach die generelle Frage, wie man so etwas
> angehen kann. Verpasse ich jedem Gadget ein Bluetooth-Modul muss ich
> vermutlich auch jedes Teil einzeln mit dem Smartphone verbinden? Oder
> ist das mit Bluetooth Mesh auch so zu lösen, dass ich mich nur mit einem
> Gerät verbinden muss?

Audio und optisch wurden zur Datenübertragung ja bereits ausgeschlossen, 
verkabelte Verbindung ebenfalls.
Da "extrem sparsam mit der Batterie umgegangen werden soll", fällt WLAN 
ja eigentlich auch per se flach...

Somit bleibt imho eh nur noch Bluetooth LE übrig. (Da es eine Webapp 
sein soll, wenn ich das richtig verstanden habe, funktioniert es dann 
allerdings eh nicht auf iPhones, sondern nur auf Android-Smartphones, 
falls Dir das bislang nicht klar ist - denn die dafür erforderlich "Web 
Bluetooth API" gibt es auf iPhones nicht (bzw. nur über Umwege, die 
normalen Usern nicht zuzumuten sind)).

Die Daten als Teil der Bluetooth LE-Advertising-Informationen zu 
broadcasten, wäre grundsätzlich zwar eine Möglichkeit, ist bei einer 
WebApp aber glaube ich auch nicht möglich, weil die Web Bluetooth API 
das bislang glaube ich nicht vorsieht.

Somit bleibt eigentlich nur die Möglichkeit, das über Bluetooth 
LE-Punkt-zu-Punkt-Verbindungen zu machen. Vom Smartphone aus 
Punkt-zu-Punkt-Verbindungen zu jedem einzelnen Gadget aufzubauen, halte 
ich allerdings auch nicht für wirklich praktikabel. Denn der 
Verbindungsaufbau ist bei Web Bluetooth umständlich/aufwändig (im Sinne 
von: viel Nutzer-Interaktion), ausserdem gibt es evtl. ein Limit, 
wieviele Verbindungen gleichzeitig geöffnet sein können.

Wirklich praktikabel erscheint mir daher im Moment nur folgende 
Möglichkeit:
Du baust vom Smartphone aus nur eine Verbindung per Bluetooth LE/Web 
Bluetooth zu einem einzigen Gadget auf, und implementierst auf den 
einzelnen Gadgets dann noch selbst eine Art Bluetooth Mesh.

von Stefan F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Man muss doch nur den Namen des AP und den Schlüssel auf dem Handy
> konfigurieren.
> Nach einem Reset versucht jeder ESP sich mit dem
vorgegebenen AP zu verbinden.

Welcher ist denn in deinem Konzept der "vorgegebene AP"? Ich habe 
verstanden, dass die ESP Bestandteil mobiler Geräte sind. Wenn ich sie 
zu meinen Schwiegereltern schleppe, kann ich die alten Leute wohl kaum 
dazu auffordern, ihr Gast Netz zu ändern. Wahrscheinlich wird er 
verweigern überhaupt ein Gast-Netz zu erstellen.

Schön wäre, wenn ein Smartphone diesen temporären AP (aka WLAN Hotspot) 
bereit stellen würde. Aber das kann nicht jedes Smartphone, und eine App 
kann es nicht aktivieren/konfigurieren. Und mir ist unklar, mit wie 
vielen Clients (ESP) das geht.

Ich denke, WLAN ist für derartigen mobilen Einsatz einfach nicht 
gedacht. Vielleicht eignen sich dazu andere Funkmodule besser, sowie 
eine Funk <--> Bluetooth Bridge.

von Helmut H. (helmuth)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn ich sie zu meinen Schwiegereltern schleppe ...

Auf dem Smartphone ist der AP konfiguriert. Dessen Name und Schlüssel 
ist den ESPs bekannt.
Man muss also nur sein Smartphone und die ESPs mitnehmen.
Bei den Schwiegereltern aktiviert man den AP des Smartphones und 
resettet den ersten ESP.
Dieser verbindet sich mit dem Smartphone.
Mit webrepl 
https://microcontrollerelectronics.com/micropython-webrepl-on-android/ 
kommuniziert man nun mit dem ESP und konfiguriert diesen.
Nachdem alle ESPs konfiguriert sind, schaltet man den AP ab und resettet 
alle ESP.

Joachim S. schrieb:
> Da "extrem sparsam mit der Batterie umgegangen werden soll", fällt WLAN
> ja eigentlich auch per se flach...
Das WLAN wird nur nach einem Reset aktiviert, wenn kein AP erreicht 
wird, dann wird es wieder abgeschaltet. Ebenso z.B. 3 Minuten nach dem 
Reset.

von Stefan F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Auf dem Smartphone ist der AP konfiguriert. Dessen Name und Schlüssel
> ist den ESPs bekannt...

Ich denke das ist die beste Methode die man mit WLAN heraus holen kann. 
Außer mit WPS, wenn es denn funktioniert.

von Helmut H. (helmuth)


Lesenswert?

Hannes schrieb:
> Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die
> Teil eines Spiels werden sollen.
"Ich brauche mehr Details": Welcher Controller, was machen die Gadgets?

von Stefan F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Welcher Controller

Gute Frage. Ich bin einfach von irgendwelchen ESP Modellen ausgegangen, 
aber das hat er ja gar nicht geschrieben.

von Helmut H. (helmuth)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich bin einfach von irgendwelchen ESP Modellen ausgegangen

Mea Culpa, ich hatte das Gerücht in die Welt gesetzt. Habe jetzt mal 
meine 10 eingemotteten ESP8266 rausgekramt und bin ganz wild darauf, die 
coolen Gadgets damit zu maken.

von Paul F. (zwanni)


Lesenswert?

Es sind offensichtlich keine ESPs wenn er schreibt er würde jedem Gerät 
ein Bluetooth Modul ergänzen. Da wäre es das beste direkt auf ESPs 
umzubauen und mit ESP-NOW zu arbeiten. Das kann genau alles was er 
benötigt, also mit einem Master interagieren, oder als ESP-NOW Mesh, wo 
dann ein ESP noch zusätzlich die WLAN Verbindung macht.

von Schlaumaier (Gast)


Lesenswert?

Jobst M. schrieb:
> Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit
> stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.

Das funktioniert bei 99 % der Handys nur eingeschränkt.

Grund : Das Handy kann nur EINS von Beiden.  AP zu GSM, ODER 
Wlan-Verbindung als Client.

Mein Samsung-Handy sagt mir nämlich jedes mal wenn ich den AP nutze, das 
ich Wlan AUSSCHALTEN muss.

Deshalb war ja meine Idee den AP extern zu bauen. Einmal an einen Beere 
angemeldet und gut ist. Stromkosten sind kaum der Rede wert. Die 
Steuerung via Handy auch nicht wirklich ein Problem. Normal mit z.b. WWW 
auf die Beere zugreifen und das war's. Oder alternativ die Steuerdatei 
mit FTP zur Beere schicken.  1000 Möglichkeiten das zu regeln. Und Platz 
/ Speicher hat man auch genug auf der Beere.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.