Forum: Mikrocontroller und Digitale Elektronik Auswahl Microcontroller Bluetooth


von Patrick E. (patrick_e152)


Lesenswert?

Hallo zusammen.

Für ein Projekt versuche ich, mit mehreren gleichen Bluetooth- 
Barcodescanner eine Verbindung zu mehreren gleichen Microcontroller 
aufzubauen. Wenn ein Barcode vom Scanner gelesen wird, erhält der 
Scanner die Bluetooth- Adresse des nächstgelegenen Microcontrollers im 
Raum. Ziel wäre es, dass die Microcontroller im Raum nach den 
Barcodescanner suchen, welche nach einem erfolgreichen lesen des 
Barcodes sich mit diesem verbinden wollen und diese Verbindung 
herstellen. Ich habe dies bereits mit einem Raspberry Pi 3 versucht, 
konnte diesen jedoch nicht mehrere Scanner verbinden.

Schlussendlich soll man mit dem Scanner im Raum herumlaufen und überall 
Barcodes scannen können. Entsprechend soll der zugewiesenen am nächsten 
liegenden Microcontroller eine Verbindung aufbauen, ohne dass man dies 
manuell auf dem Microcontroller machen muss.

Ist dies überhaupt möglich? Und wenn ja, welchen Mikrocontroller muss 
ich dafür nehmen?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Patrick E. schrieb:
> Ist dies überhaupt möglich? Und wenn ja, welchen Mikrocontroller muss
> ich dafür nehmen?

dem Controller ist es ziemlich schnurz, was er ausführen soll. Selbst 
das Übertragungsverfahren (leitungsgebunden oder funkbasierend) ist 
nahezu vollkommen unwichtig.

Wichtig ist es, das du dir im ersten Schritt einen Algorithmus 
(Ablauf-Verfahren) ausdenkst oder ausdenken lässt. So einen Algorithmus 
kann man durchaus auch umgangssprachlich formulieren, das braucht im 
ersten Schritt nicht in einer konkreten Sprache erfolgen.

Vergleiche z.B. mit einen Sortier-Algorithmus (da gibt es ca. 10-20 
verschiedene Algorithmen, um "Dinge" zu sortieren): Auch da ist es erst 
mal nicht wichtig, dass man irgendwas in einer konkreten 
Programmier-Sprache formuliert. Eine Pseudo-Anweisung wie diese lässt 
sich "ohne weiteres" in jede Beliebige Programmifersprache umsetzen.

Pseudo-Anweisung:
"Vertausche das Element an der Stelle x mit dem Element an der Stelle y"

Programmcode:
xxxxx

PS: Zur not kann man den Algorithmus auch tanzen.
https://www.youtube.com/watch?v=ywWBy6J5gz8

: Bearbeitet durch User
von Patrick E. (patrick_e152)


Lesenswert?

Vielen Dank für die schnelle Antwort.

Heisst das, dass alle Microcontroller gleichzeitig mindestens 5 
Verbindungen mit verschiedenen Geräten aufrecht erhalten können?

Die Mikrocontroller kennen die Adresse der Barcodescanner nicht, nur 
umgekehrt, deshalb muss der Verbindungsaufbau auch durch die 
Barcodescanner erfolgen.

von ThomasW (Gast)


Lesenswert?

Wäre es denn nicht einfacher wenn der Barcodescanner nach dem Scannen 
selbst nach verfügbaren Controllern sucht und sich mit einem davon (vlt. 
den mit dem stärksten Signal) verbindet und seine Daten übermittelt? Er 
kann die Verbindung ja danach lösen, dann müssen nicht mehrere 
Verbindungen gleichzeitig möglich sein.

Bei der Wahl der Controller finde ich wichtig wie die Daten denn 
weitergeben werden sollen. Bei WLAN käme z.b. ein ESP32 in Frage ...

von Stefan F. (Gast)


Lesenswert?

Mir ist nicht klar, um welche Barcode Scanner es geht. Davon würde 
abhängen, was geht.

> Wenn ein Barcode vom Scanner gelesen wird, erhält der
> Scanner die Bluetooth- Adresse des nächstgelegenen
> Microcontrollers im Raum.

Wie erhält er sie? Was für eine Kommunikation findet da mit welchen 
Teilnehmern statt?

von Patrick E. (patrick_e152)


Lesenswert?

Es ist gewünscht, dass die Daten in Echtzeit übermittelt werden (ca. 
2s). Ein neuer Verbindungsaufbau hat bei Tests um die 10s gedauert. Die 
Scanner werden in Schichten genutzt, in welchen die Arbeiter an einer 
Verpackungslinie arbeiten und den Scanner nur dort einsetzen. Bei 
Schichtwechsel werden sie jedoch übergeben, sie sind nicht 
personalisiert, deshalb kann es sein dass der nächste Arbeiter an einer 
anderen Verpackungslinie arbeitet. Dass dabei der erste 
Verbindungsaufbau 10s dauert, nehmen wir in Kauf.

Die Barcodes sind an der Verpackungslinie aufgeklebt und werden nicht 
verschoben. Somit können wir mit einem Programm auf dem Scanner den 
nächstgelegenen Mikrocontroller zuweisen. Die entsprechende Linie ist im 
Barcode enthalten und jede Linie hat genau einen Microcontroller.

Bsp: -Barcode 1 an Linie 1 --> Bluetooth-Adresse Microcontroller Linie 1
     -Barcode 2 an Linie 1 --> Bluetooth-Adresse Microcontroller Linie 1
     -Barcode 1 an Linie 3 --> Bluetooth-Adresse Microcontroller Linie 3

Benutzter Barcodescanner: https://opticon.com/product/opn-2006/

von Stefan F. (Gast)


Lesenswert?

Deine Geräte kommunizieren über SPP, also virtuelle serielle Ports.

Patrick E. schrieb:
> Ich habe dies bereits mit einem Raspberry Pi 3 versucht,
> konnte diesen jedoch nicht mehrere Scanner verbinden.

Die meisten Geräte unterstützen nur eine gleichzeitige Bluetooth 
Verbindung.

Da hättest du wohl besser Scanner mit WLAN verwendet. Kommt es eventuell 
in Frage, dass die Mitarbeiter ein Smartphone oder einen ESP32 mit sich 
herumtragen, als Gateway zum WLAN?

von Patrick E. (patrick_e152)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die meisten Geräte unterstützen nur eine gleichzeitige Bluetooth
> Verbindung.

Welche unterstützen dann mehrere gleichzeitige Bluetooth Verbindungen?
Bei unserem Versuchsaufbau mit einem Raspberry Pi 3 hat es geheissen, 
dass es funktionieren sollte. Leider hat es nicht geklappt. Bevor wir 
nun mehr Zeit mit dem Raspberry Pi aufwenden wäre es gut zu wissen, ob 
nicht ein anderer Microcontroller dazu besser geeignet ist.

Der Scanner war leider bereits vorgegeben, die Daten werden momentan 
gespeichert und per USB Ende Schicht ausgelesen, sie möchten die Daten 
nun aber in Echtzeit per Bluetooth übermittelt haben.


>Kommt es eventuell in Frage, dass die Mitarbeiter ein Smartphone oder einen 
>ESP32 mit sich herumtragen, als Gateway zum WLAN?

Unser Ziel ist es zu vermeiden, dass wir für jeden Scanner einen eigenen 
Microcontroller brauchen, da es 11 Verpackungslinien à 5 Scanner gibt.

von Stefan F. (Gast)


Lesenswert?

Patrick E. schrieb:
> Welche unterstützen dann mehrere gleichzeitige Bluetooth Verbindungen?

Keine Ahnung, habe ich noch nie gesehen. Gibt's aber bestimmt irgendwo. 
Es ist ja letztendlich nur eine Frage der Firmware (denke ich).

von Patrick E. (patrick_e152)


Lesenswert?

Mit dem ESP32 wäre es also nicht möglich? Die Scanner unterstützen auch 
HID, wäre es so möglich?

von Ozvald K. (Gast)


Lesenswert?

Patrick E. schrieb:
> Unser Ziel ist es zu vermeiden, dass wir für jeden Scanner einen eigenen
> Microcontroller brauchen, da es 11 Verpackungslinien à 5 Scanner gibt.

Du braucht so wieso 55 mal "Irgendwas" die an Scannern hängen. Ob sie 
jetzt BT-Module sind oder µC...

Es sei denn du fasst die 5 Scanners über USB Hub zusammen und so weiter 
in ein Zielsystem (RPI, mini-PC, ? ). Wie lang ist eine 
Verpackungslinie? Ich weiß nicht ob es so funktionieren würde, 
austesten.

Patrick E. schrieb:
> Mit dem ESP32 wäre es also nicht möglich? Die Scanner unterstützen auch
> HID, wäre es so möglich?

Ich könnte mir eine Lösung vorstellen mit 11*5= 55 ESP32 über WLAN. 
Irgendwo auf einem PC / Server läuft dann eine Applikation als Host, die 
mit 55 Klienten gleichzeitig spricht.

von Patrick E. (patrick_e152)


Lesenswert?

Ozvald K. schrieb:
> Wie lang ist eine Verpackungslinie?

Eine Verpackungslinie ist ungefähr 24m lang.

Ozvald K. schrieb:
>Ich könnte mir eine Lösung vorstellen mit 11*5= 55 ESP32 über WLAN.
>Irgendwo auf einem PC / Server läuft dann eine Applikation als Host, die
>mit 55 Klienten gleichzeitig spricht.

Wäre dies ein grosser (finanzieller) Aufwand, diese 55 ESP32 ? Bzw. kann 
ich mir das ganze nicht so ganz vorstellen. Ehrlich gesagt weiss ich 
nicht genau, was ein ESP32 ist. Kannst du mir einen Link mit einem 
möglichen ESP32 Mikrocontroller schicken?

von Ozvald K. (Gast)


Lesenswert?

Patrick E. schrieb:
> Eine Verpackungslinie ist ungefähr 24m lang.

Dann wäre es mit einer Verkabelung von 5 Scannern per USB Hub ein 
bisschen aufwändiger.

Patrick E. schrieb:
> Kannst du mir einen Link mit einem
> möglichen ESP32 Mikrocontroller schicken?

Google ist Dein Freund. :-)

https://de.wikipedia.org/wiki/ESP32

An zu merken, ich habe mit ESP32 bis jetzt keine persönliche Erfahrung. 
Mit einem Host umso mehr, habe eine Windows Applikation entwickelt, die 
in einer Produktionsumgebung über TCP/IP mit mehreren Maschinen 
kommuniziert. (allerdings kein WLAN)
Mehrere Maschinen --> 50 , begrenzt durch die visuelle Darstellung der 
Verbindungen im Programm. 55 wären auch kein Problem.

von Stefan F. (Gast)


Lesenswert?

Ich habe das gerade mal mit meinem Linux Laptop und mit einem Raspberry 
Pi 3B+ erfolgreich ausprobiert. Als Verbindungspartner dienten mir zwei 
HC-06 Module mit einer Brücke zwischen Rx+Tx.

Wichtig ist, dass die Bluetooth Geräte einmalig mit dem Computer gepaart 
werden. Beim Gnome Desktop mache ich das über das Bluetooth Icon in der 
rechten oberen Ecke. Ich soll ein zufälliges Passwort bestätigen, das 
aber falsch ist. Ich muss die Nummer in dem Dialog auf "1234" ändern 
(wie von den HC-06 Module vorgegeben).

Beim Raspberry Pi habe ich keinen Desktop installiert, deswegen mache 
ich es dort auf der Kommandozeile:

> sudo su -
> systemctl start hciuart
> hcitool scan
1
Scanning ...
2
  20:13:11:15:16:08  HC-06
3
  00:18:E4:00:13:9E  HC-06

Wenn er nicht alle Bluetooth Geräte findet, einfach nochmal wiederholen.

> bluetoothctl
1
[bluetooth]# power on
2
[bluetooth]# agent on
3
4
[bluetooth]# pair 20:13:11:15:16:08
5
Attempting to pair with 20:13:11:15:16:08
6
[CHG] Device 20:13:11:15:16:08 Connected: yes
7
Request PIN code
8
[agent] Enter PIN code: 1234
9
[CHG] Device 20:13:11:15:16:08 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
10
[CHG] Device 20:13:11:15:16:08 ServicesResolved: yes
11
[CHG] Device 20:13:11:15:16:08 Paired: yes
12
Pairing successful
13
14
15
[bluetooth]# pair 00:18:E4:00:13:9E
16
Attempting to pair with 00:18:E4:00:13:9E
17
[CHG] Device 00:18:E4:00:13:9E Connected: yes
18
Request PIN code
19
[agent] Enter PIN code: 1234
20
[CHG] Device 00:18:E4:00:13:9E UUIDs: 00001101-0000-1000-8000-00805f9b34fb
21
[CHG] Device 00:18:E4:00:13:9E ServicesResolved: yes
22
[CHG] Device 00:18:E4:00:13:9E Paired: yes
23
Pairing successful
24
25
[bluetooth]# exit

Danach binde ich die beiden Bluetooth Geräte an virtuelle serielle 
Ports:

> rfcomm bind 0 20:13:11:15:16:08
> rfcomm bind 1 00:18:E4:00:13:9E

Danach kann ich die seriellen Ports öffnen, z.B. mit Minicom:

> minicom -D /dev/rfcomm0 -b 115200
> minicom -D /dev/rfcomm1 -b 115200

Ich hoffe, das hilft dir. Spannend wäre jetzt noch die Frage, mit wie 
vielen Verbindungen das gleichzeitig geht. Auf jeden Fall geht mehr als 
nur eine.

von Patrick E. (patrick_e152)


Lesenswert?

Vielen Dank für die Informationen!

Das Anbinden an einen Host wird dann ein Thema sein, sobald klar ist, 
wie die Daten von den Scannern auf die Mikrocontroller kommen :)

von Patrick E. (patrick_e152)


Lesenswert?

Bei uns hat es nicht geklappt, wahrscheinlich weil wir mit bluetoothd -C 
und sdptool veraltete Tools verwendet haben. Werde es aber mal so 
probieren, vielen Dank dafür!

von mIstA (Gast)


Lesenswert?

Patrick E. schrieb:
> Eine Verpackungslinie ist ungefähr 24m lang.

Das könnte mit der Reichweite eng werden.

von Patrick E. (patrick_e152)


Lesenswert?

Wir haben den Scanner mit dem Raspberry Pi 3 verbunden und konnten bis 
zu 15m Daten senden, wenn wir einen Mikrocontroller ungefähr in der 
Mitte platzieren sollte dies kein Problem sein :)

von Stefan F. (Gast)


Lesenswert?

Wenn es mit dem Raspberry Pi klappt, dann würde ich auch dabei bleiben 
und mir nicht den Entwicklungsaufwand für Schaltung und Software mit 
Mikrocontroller antun.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

@Thread-Eröffner:

mir ist noch nicht klar, was da genau mitspielt. Stimmt das?

11 Verpackungslinien a 24 Meter
5 Scanner pro Verpackungslinie
n Microcontroller

Datenerfasser rennen die Verpackungslinien lang, und erfassen Barcodes 
von irgendwas (anhand einer Pickliste?) mit den Scannern.

Diese Daten laufen dann auf den Microcontrollern auf

und dann werden dei daten weiter geleitet zu einem Host?

--> Mach doch mal eine Skizze der Beteiligten "Objekte", und der 
Geometrie der Anordnung.

: Bearbeitet durch User
von noreply@noreply.com (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn es mit dem Raspberry Pi klappt, dann würde ich auch dabei bleiben
> und mir nicht den Entwicklungsaufwand für Schaltung und Software mit
> Mikrocontroller antun.

Sinnvoller Vorschlag. Aber vielleicht liegt die Softwareabteilung auch 
in Indien. ;-)

von Patrick E. (patrick_e152)



Lesenswert?

Ich habe versucht, das ganze im Word Dokument zusammenzufassen. Bei 
Fragen einfach melden :)

von Patrick E. (patrick_e152)


Lesenswert?

@stefanus

Das gleichzeitige Verbinden von 2 Scannern hat mit diesem Code 
funktioniert, danke nochmal dafür. Jetzt gilt es, das ganze in einem 
Python Programm zu automatisieren.

von Stefan F. (Gast)


Lesenswert?

Patrick E. schrieb:
> Das gleichzeitige Verbinden von 2 Scannern hat mit diesem Code
> funktioniert

Danke für die Rückmeldung. Wir sind immer daran interessiert, zu 
erfahren, ob ein Tipp geholfen hat.

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.