Als Datenverbindung zwischen PC und Microcontroller brauche ich eine Funkbrücke. Eigentlich wollte ich das Ganze mit zwei nRf24 machen. Mittlerweile scheint mir aber WLAN das geeignetere Verfahren. Hier gibt's ein Beispiel und ich habe versucht, den Port mit // netcat serial port on linux: // nc -l 8880 > /dev/ttyS1 < /dev/ttyS1 zu linken, aber der Port taucht nicht auf. Hat jemand eine Idee? Oder eine andere Lösung für die Datenübertragung?
Bluetooth wäre vielleicht auch noch eine Überlegung wert. SPP sollte out of the Box funktionieren.
:
Bearbeitet durch User
chris schrieb: > Hier gibt's ein Beispiel und ich habe versucht, den Port mit > // netcat serial port on linux: > // nc -l 8880 > /dev/ttyS1 < /dev/ttyS1 > > zu linken, aber der Port taucht nicht auf. Wie und unter welchem User startest Du das? Was meinst Du mit "der Port taucht nicht auf?". Meinst Du den TCP-Port 8880, den man mit netstat verfolgen könnte? Oder meinst Du den Serial-Port? Gibt es Fehlermeldungen? Was ist mit stderr? Leitest Du den auch um oder siehst Du ihn in der Console? Wie ist die Baudrate, Anzahl Bits und Parity von ttyS1 eingestellt? Ohne hinreichende Infos wird das eine Glaskugel-Raterei.
:
Bearbeitet durch Moderator
>Wie und unter welchem User startest Du das? chris@chris-Rechner:~$ nc -l 8880 > /dev/ttyS1 < /dev/ttyS1 >Was meinst Du mit "der Port taucht nicht auf?". Bei der automatischen Portsuche der Arduino IDE. Normalerweise wird dort ja ein serieller Port angezeigt, sobald dieser im System verfügbar ist. > Meinst Du den TCP-Port 8880, den man mit netstat verfolgen könnte? Das obige Arduinoprogramm erzeugt einen TCPIP Server als AccessPoint. Man kann in der Funknetzwerksuche den Accesspoint auswählen und der PC verbindet sich dann mit diesem. Ich gehe mal davon aus, dass der TCP-Server dann auf den Ports 8880 und 8881 verfügbar ist. Gibt es Fehlermeldungen? Keine, aber ich kenne auch keine Diagnosemöglichkeit. Vielleicht kannst Du eine vorschlagen. > Wie ist die Baudrate, Anzahl Bits und Parity von ttyS1 eingestellt? Das sollte egal sein, da der TCP-Stream nur Rohdaten überträgt und die Baudrateneinstellung im Mikrocontroller fixiert ist. Das Arduinoprogramm habe ich von der im Programm oben eingetragenen Adresse.
chris schrieb: > Wie und unter welchem User startest Du das? > > chris@chris-Rechner:~$ nc -l 8880 > /dev/ttyS1 < /dev/ttyS1 Hat chris die notwendigen Berechtigungen, um auf /dev/ttyS1 zuzugreifen? Gibt es eine Fehlermeldung? > Bei der automatischen Portsuche der Arduino IDE. Normalerweise wird dort > ja ein serieller Port angezeigt, sobald dieser im System verfügbar ist. Häh? Was hängt denn an /dev/ttyS1 kabelmäßig dran? Ich dachte, der ESP soll über WLAN mit Deinem PC kommunuzieren? > Das obige Arduinoprogramm erzeugt einen TCPIP Server als AccessPoint. > Man kann in der Funknetzwerksuche den Accesspoint auswählen und der PC > verbindet sich dann mit diesem. Das Verbinden mit dem AP klappt? > Ich gehe mal davon aus, dass der TCP-Server dann auf den Ports 8880 und > 8881 verfügbar ist. Wie kommst Du auf diese Schnapsidee? Mit "nc -l 8880" sagst Du dem nc, er soll als Server fungieren, also auf dem TCP-Port 8880 horchen. Auf dem ESP startest Du einen "UDP-Server". Jedenfalls steht das so in dem Kommentar von Deinem Source. Beide Teilnehmer horchen also, der eine auf dem TCP-Port 8880 und der andere horcht auf dem UDP-Port 8881?!? Das können die eine Ewigkeit machen, ohne dass etwas passiert. Also: Ich habe überhaupt nicht verstanden, was Du da machst. Kannst Du da mal eine Skizze machen, wer wie an der Kommunikation beteiligt sein soll? > Wie ist die Baudrate, Anzahl Bits und Parity von ttyS1 eingestellt? > > Das sollte egal sein, da der TCP-Stream nur Rohdaten überträgt und die > Baudrateneinstellung im Mikrocontroller fixiert ist. Aber nicht die von ttyS1, oder doch? Was hängt denn da dran? Ohne Skizze, wie Du was zusammenstöpselst, wird das nix.
Frank schrieb: >Auf dem ESP startest Du einen "UDP-Server". Jedenfalls steht das so in >dem Kommentar von Deinem Source. Nein, da steht
1 | #define PROTOCOL_TCP
|
Abhängig von der Konfiguration wird TCP oder UDP verwendet. Das obige Python-Testscript erzeugt korrekt ein "hello world" auf der seriellen Schnittstelle des ESP8266. Leider wartet das Script auch auf eine Antwort, so dass es erst beendet wird, wenn Zeichen an der seriellen Schnittstelle ankommen und per TCP zurück gesendet werden. Aufbau: PC(WIFI) <-> (Wifi AP)ESP8266(serial RxTX) <-> (serial RXTX) irgendein Microcontroller Im Moment ist aber ( serial RxTX )<->FDTI<->(USB)PC
chris schrieb: > Aufbau: > PC(WIFI) <-> (Wifi AP)ESP8266(serial RxTX) <-> (serial RXTX) irgendein > Microcontroller Was möchtest du jetzt netcat anstellen?
>Was möchtest du jetzt netcat anstellen?
Ich hätte gerne, dass der COM-Port in der Arduino-IDE auftaucht.
chris schrieb: >>Was möchtest du jetzt netcat anstellen? > Ich hätte gerne, dass der COM-Port in der Arduino-IDE auftaucht. Arduino braucht kein netcat, um auf serielle Ports zuzugreifen. Wenn du auf /dev/ttyS0 zugreifen möchtest, solltest du zerst klären, ob dieses Device existiert und ob du berechtigt bist, darauf zuzugreifen. Kontrolliere das mit mit dem ls Befehl (oder Dateimanager). Alternativ kannst du Cutecom verwenden, dort kannst du manuell Device Namen eingeben, die nicht in der Liste erscheinen. Wenn das Device existiert und zugreifbar ist, dann funktioniert es dort auch (egal ob es automatisch in der Liste erscheint).
Wir reden aneinander vorbei. Es existiert kein Device. Es gibt nur einen TCP-Server ( oder UDP ) auf dem ESP8266. Der soll auf ein Device abgebildet werden. Hast Du das Programm überflogen?: https://www.mikrocontroller.net/attachment/highlight/431571
Du kannst mit Netcat kein virtuelles serielles Device erzeugen. Dafür gibt es andere Software. Dort wurden Lösungen für deine Idee diskutiert: https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp Oder: A. M. schrieb: > Bluetooth wäre vielleicht auch noch eine Überlegung wert. SPP sollte out > of the Box funktionieren. Dem stimme ich zu
> Bluetooth wäre vielleicht auch noch eine Überlegung wert. SPP sollte out > of the Box funktionieren. Tatsächlich habe ich noch ein paar rumliegen, die ich schon vergessen habe. Im Moment probiere ich gerade ein HC-06, das wie wild blinkt ....
chris schrieb: > Es existiert kein Device. Dann wird dies auch nicht funktionieren: chris schrieb: > nc -l 8880 > /dev/ttyS1 < /dev/ttyS1 socat ist das, was Du suchst. https://linux.die.net/man/1/socat
Früher hatte ich Bluetooth mal in Betrieb, aber ich erinnere mich, dass es immer Problem gab. So jetzt: Der interne Bluetooth-Adapter meines Ubuntu-PC findet keine Geräte. Wenn ich einen externen USB-Adapter anstecke, findet er das HC-06 Modul, kann sich angebleich auch "pairen" (1234) aber die LED hört nicht auf zu blinken und der Port taucht auch nicht auf. Also auch wieder ein halbgare Sache. Am besten scheint mir, eine Wifi-Verbindung mit dem ESP8266 als serieller Adapter aufzubauen. Eigentlich brauch ich gar nicht unbedingt auf der PC-Seite einen seriellen Port, weil ich ein Java-Programm schreiben will, dass z.b. 255 Byte an den ESP schickt und der soll dass dann als seriellen Stream ausgeben. Ich brauch aber auch eine Rückmeldung, wenn serielle Daten an den ESP geliefert werden. Ich vermute mal, dass UDP dazu geeignet wäre ... Stefanus, Du bist doch Java-Spezialist, wenn ich mich recht entsinne.
chris schrieb: > Ich brauch aber auch eine > Rückmeldung, wenn serielle Daten an den ESP geliefert werden. Ich > vermute mal, dass UDP dazu geeignet wäre ... Im gegensatz zu TCP liefert UDP eben keine Rückmeldung. UDP ist wie eine Postkarte an eine geliebte. Du verschickst ganz viele und die meisten kommen irgendwann an. Manchmal auch in veränderter Reihenfolge. TCP ist wie ein Einschreiben mit Rückantwort. Mit den HC-05 und HC-06 habe ich ebenfalls durchwachsene Erfahrungen gemacht. Das BTM-222 funktionierte so viel besser, dass ich gerne bereit war, den höheren pries von damals 15€ zu bezahlen. Das Modul gibt es leider nicht mehr zu kaufen. Nachfolger ist das BTM-238. Ich hab's noch nicht probiert, weil ich noch einige BTM-222 vorrätig habe. > Stefanus, Du bist doch Java-Spezialist, wenn ich mich recht entsinne. Nimm die RxTx Library in Version 2.1.7. Hier sind meine Notizen zu Bluetooth Modulen: http://stefanfrings.de/bluetooth/index.html
Es gibt fertige usb Sticks für 4€ in China mit nrf24 im Set.. Bei dem einen geht man an den usb to Uart Chip und greift das Signal mit dem mikrocontroller ab.
Frank M. schrieb: > Hat chris die notwendigen Berechtigungen, um auf /dev/ttyS1 zuzugreifen? Bei der Gelegenheit: Hat jemand eine Ahnung wie man dieses ganze Linux Berechtigungsgeschiss ein für alle Mal abschaltet? Mein Netzwerk ist nicht mit dem Internet verbunden. Trotzdem wirft Linux einem dauernd irgendwelche Passwort/Berechtigungs- Knüppel zwischen die Entwicklerbeine, im Zeichen einer weder gewünschten noch benötigten "Sicherheit" :(
Egon schrieb: > Hat jemand eine Ahnung wie man dieses ganze Linux > Berechtigungsgeschiss ein für alle Mal abschaltet? Witzig. Das ist eine Kern-Funktion in der sich Linux von Anfang an extremst von Dos/Windows unterschied. Aber ja, man kann das weitgehend deaktivieren. Aber nicht mit einem simplen zentralen Schalter. Da musst du dir jedes einzelne Programm separat vornehmen. Du kannst dich als root einloggen, dann darfst du fast alles. Oder die betroffenen Tools als root (eventuell mit sudo) ausführen.
Stefanus F. schrieb: > Witzig. Ne das ist nicht witzig sondern ein echtes Ärgernis. Deiner Antwort entnehme ich daß es nicht möglich- bzw. die eingebaute Sicherheitsbürokratie nur mit noch mehr Bürokratie umständlich einzudämmen ist.
Egon schrieb: > Bei der Gelegenheit: Hat jemand eine Ahnung wie man dieses ganze Linux > Berechtigungsgeschiss ein für alle Mal abschaltet? Du arbeitest einfach als root. > Mein Netzwerk ist > nicht mit dem Internet verbunden. Ist es mit IRGENDEINEM Netzwerk verbunden (dazu zählt auch das LAN)? Nur dann, wenn das nicht der Fall ist, wäre das Konzept der Benutzung als root eventuell irgendwie ernsthaft in Erwägung zu ziehen. Der Nutzen erscheint allerdings zweifelhaft.
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.