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?
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
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.
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 ...
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?
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/
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?
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.
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).
Mit dem ESP32 wäre es also nicht möglich? Die Scanner unterstützen auch HID, wäre es so möglich?
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.
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?
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.
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.
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 :)
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!
Patrick E. schrieb: > Eine Verpackungslinie ist ungefähr 24m lang. Das könnte mit der Reichweite eng werden.
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 :)
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.
@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
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. ;-)
Ich habe versucht, das ganze im Word Dokument zusammenzufassen. Bei Fragen einfach melden :)
@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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.