Ich selbst würde mich eigentlich immer eher als Softwaremensch bezeichnen. Mit Hardware habe ich es normalerweise nicht so. Klar man ist informiert über das, was es so am Markt gibt, aber mit dem Lötkolben bewaffnet bin ich eher eine Gefahr für mich und andere als das es wirklich einen Nutzen liefert.
Nun habe ich allerdings neulich diese Schnucken chinesischen Steckdosen gesehen, die einen eingebauten ESP8266 haben. Hierbei handelt es sich um einen kleinen WLAN-Fähigen Mikroprozessor, der nahezu keinen Strom verbraucht. Der Preis ist wirklich unschlagbar! Wären die Dinger nicht nur fest verdrahtetet mit ner chinesischen Cloud. Also muss man wohl doch nochmal hand anlegen und ein wenig mit den Dinger rumspielen, um irgendwie eine eigene Programmierung auf den Chip drauf zu kriegen.
Was macht man also als Softwaremensch? Richtig, man stellt erstmal ne USB-Verbindung mit seinem Linux-System her, von da aus kann man dann weiter sehen. Hierfür brauche ich erstmal ne Wandlung von Pins auf USB und siehe da im Grabbelschrank liegt auch noch einer dieser tollen FTDI-USB-Adapter herum. Bevor es also ans eingemachte mit der Steckdose geht, nochmal kurz testen, ob das Ding überhaupt funktioniert.
So sieht der Kleine aus. Links sieht man recht deutlich den USB-Anschluss, während Rechts die Pins für den Anschluss liegen. Über dieses Gerät kann man also dann den RS232 wandeln auf USB. Die Beschriftung an den Pins ist ein wenig verdeckt und man erkennt nur, dass direkt der unterste Pin GRND zu sein scheint. Zwei der Pins müssten nun noch RX und TX sein und weiß der Teufel wofür die anderen Pins genutzt werden (*hust).
Um die Chancen eines Treffers zu minimieren, dachte ich mir, dass man einfach ein Loop Device baut. Den überbrücke ich RX und TX zusammen, dann ist es mir eigentlich egal, welcher Pin welcher ist. Landet ja sowieso auf den gleichen Kabel und senkt somit das Risiko den Falschen zu erwischen. Wenn ich nun Chinese wäre würde ich vermutlich direkt nach Erde RX und TX setzen. Also einfach mal ne Jumper-Kabel dran und das ganze an USB ...
Kaum ist das USB drauf, geht schon die rote Lampe an und scheint mit Strom versorgt zu sein. Ein Blick ins Linux-Log mit "dmesg" offenbart:
[66476.321334] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[66476.321370] ftdi_sio 1-1.1.3:1.0: device disconnected
[66480.332896] usb 1-1.1.3: new full-speed USB device number 8 using ehci-pci
[66480.417706] usb 1-1.1.3: New USB device found, idVendor=0403, idProduct=6001
[66480.417709] usb 1-1.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[66480.417711] usb 1-1.1.3: Product: FT232R USB UART
[66480.417713] usb 1-1.1.3: Manufacturer: FTDI
[66480.417714] usb 1-1.1.3: SerialNumber: 00000000
[66480.420594] ftdi_sio 1-1.1.3:1.0: FTDI USB Serial Device converter detected
[66480.420631] usb 1-1.1.3: Detected FT232RL
[66480.421041] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB0
Ein neues Gerät liegt also bereit unter ttyUSB0. Also neue Shell auf und ein:
cat /dev/ttyUSB0
drauf legen.
Dann eine zweite Shell auf und ein:
echo "Hallo Welt!" > /dev/ttyUSB0
Die erste Shell meldet darauf hin Ausgabe, allerdings scheint dort ein permanentes Signal anzuliegen und alles huscht nur so durch. Unter anderem manchmal auch unsere Meldung. Ach ja... da war ja etwas. Einige Signale wie der Zeilenumbruch können falsch gedeutet werden und so zu unnötigen Echos führen. Also nochmal kurz die Ausgabe des Terminals nachjustziert:
stty -F /dev/ttyUSB0 -echo -onlcr
stty soll nicht STDIN nutzen, sondern eben unser serielles Gerät. Zeichen sollen ausgegeben werden, aber wenn ein Zeilenumbruch gefunden wird, soll dieser umgewandelt werden in ein carriage return-newline. Der selbe Test nochmal:
Wir senden einen Text in das Gerät rein, schicken es über USB auf die Reise, hauen es über die seriellen Pins raus, über das Kabel wieder rein und schicken das ganze wieder auf USB zurück. Zack fertig! FTDI Loopback Device :)
Nun weiß ich, dass das Gerät grundsätzlich funktioniert und ich über die Pins an den Mikroprozessor gehen kann. Hierfür fehlen mir allerdings noch ein paar Steckpins, die ich nicht mehr auf Lager habe und erst ordern muss. Danach kann die Reise dann weitergehen.
Und was ist die Moral der Geschichte? Man kann sich als Softwaremensch natürlich die ganze Zeit damit rausreden, dass man ja von Hardware keine Ahnung hat. Oder man zieht die Technik einfach auf ein Terrain rüber in dem man sich besser auskennt und schlägt sich dann mit seiner Erfahrung! (oder so ähnlich ;)). Natürlich hätte man nun auch im Netz auf die Suche gehen können und die genaue Pin-Belegung ermitteln können. Aber wieso soll man stundenlang suchen, wenn man auch einfach mit etwas experimentieren innerhalb von 5 Minuten an sein Ziel kommt!
Man muss auch manchmal eben einfach nur ein wenig basteln. Mal klappt es, manchmal nicht. Aber am Ende ist man auf jeden Fall immer eine Erfahrung schlauer!
btw: Folgende Hardware wurde hier verwendet: https://www.amazon.de/gp/product/B01C2P9GD2/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1. Bedenkt das auf einigen Linux-Systemen Euer Nutzer in der Gruppe "dialout" sein muss.
Sehr sehr nice @gammastern!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Sehr interessanter Beitrag
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit