Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Python USB serial op een Raspberry Pi

Pagina: 1
Acties:

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
Allen,

Ik ben al een paar dagen aan het puzzelen maar ik kom er niet uit. Ik hoop dat iemand hier me op het juiste pad kan helpen.

Ik heb een USB RFID reader gekocht om samen te werken met mijn Domoticz, wat allemaal op een Raspberry Pi draait. Ik ben nog in het beginstadie van wat ik er mee wil doen echter loop ik al direct vast.

De RFID reader emuleert een toetsenbord. Als ik hem op mijn windowsmachine aansluit en ik scan een tag dan krijg ik het Tag-nummer gevolgd door een newline. Werkt allemaal prima.

Als ik hem aansluit op mijn Pi dan werkt hij volgens mij wel:

[ 4.289566] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 4.291590] ftdi_sio 1-1.3:1.0: FTDI USB Serial Device converter detected
[ 4.436128] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB0

Ik heb de tutorial gevolgd om je serial los te maken door je cmdlin en inittab aan te passen en te herstarten.

Code is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Import python serial
import serial

# Define serial device & baudrUSB
port = serial.Serial("/dev/ttyUSB0",
        baudrate=9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        writeTimeout=0,
        timeout=10,
        rtscts=False,
        dsrdtr=False,
        xonxoff=False)

#print if Serial connection is succesfully established
print (port.isOpen())
#Dit geeft true op de cli
while True:
        data = port.read()
        if data =='\n':
                print ("New line detected")
                print(code)
                code = ''
        else:
                print ("Code is")
                code = code + data

En verschillende variaties op deze code als mede de baudrate.

Het enige wat het doet is een true geven voor de serial connection en voor de rest om de x seconden Code is op de CLI weergeven. Ongeacht of ik wat scan ja of te nee.

Het betreft deze reader: http://www.zillz.nl/16571...hz-rfid-lezer---rfid-card

Ik doe ongetwijfeld iets simpels fout, maar zie het even niet meer.

Alvast bedankt voor elke tip.

http://www.catalogged.net/


  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Ik zie op de website staan: 'Communicatie:106 kbit/sec'. Zou je dit eens matchende kunnen maken met de baudrate? Heb je eventueel ook wat meer informatie over de reader? Voor zover ik kan zien staan er geen merk- en/of componentnamen bij.

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
Thanks voor de snelle reply! Hmm even zien hoe die conversie moet.

Ik heb eigenlijk nog niet veel meer qua hardware specs. Op het kastje zelf zijn ook geen stickers of iets dergelijks.

http://www.catalogged.net/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:12
Voor een USB CDC device ("Virtuele compoort") maakt de baudrate instelling iha niet uit, deze zijn normaal bedoeld voor de seriele poort aan de converter, niet voor de USB kant. Wat ik raar vind is dat het ding onder Windows als HID device wordt herkend blijkbaar en onder Linux als CDC device. Kun je er nog iets aan instellen aan het ding? ( Dat Windows logo op de behuizing :X )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
Ik kan geen instelmogelijkheden vinden op het apparaat zelf.

Windows logo is eraf te krassen heb ik al uitgevonden :-)

http://www.catalogged.net/


  • Marcj
  • Registratie: November 2000
  • Laatst online: 15:14
Draait die raspberry pi gewoon op Raspbian? Dan zou je het volgende kunnen uitproberen om te zien of er wel iets uit komt:

Bash:
1
2
3
4
> sudo apt-get install cu minicom
...
> cu -l /dev/ttyUSB0 -s 9600 --parity=none
data?


cu is een command line tool onder linux waarmee je op seriele poorten kunt inloggen. Als je wil stoppen moet je ~. (tilde en punt) invoeren en op enter drukken. Zie ook de man voor de vele opties van het programma.

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
@Feanathiel: Helaas baudrate aanpassen heeft niet geholpen.
@Farlane: Geen instelmogelijkheden inderdaad.
@Marcj: Thanks voor de tip, geinstalleerd en de volgende output:

root@iacon:/home/rfid# cu -l /dev/ttyUSB0 -s 9600 --parity=none
cu: open (/dev/ttyUSB0): Permission denied
cu: /dev/ttyUSB0: Line in use

http://www.catalogged.net/


Verwijderd

Probeer zijn laatste commando eens met sudo servoor:

sudo cu -l /dev/ttyUSB0 -s 9600 --parity=none

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
@System76: Dit maakt helaas geen verschil.

http://www.catalogged.net/


Verwijderd

Oh, jammer. Hij is ingeplugd via USB? Wat zegt 'lsusb'?

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
@System76: Ga ik vanmiddag gelijk checken!

http://www.catalogged.net/


  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
Verwijderd schreef op maandag 31 maart 2014 @ 08:22:
Oh, jammer. Hij is ingeplugd via USB? Wat zegt 'lsusb'?
root@iacon:/home/pi# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 05fe:1010 Chic Technology Corp. Optical Wireless
Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

Deze heb ik overigens gebruikt om de UART vrij te maken:

http://learn.adafruit.com...pi/freeing-uart-on-the-pi

[ Voor 11% gewijzigd door Raenius op 31-03-2014 20:55 . Reden: Extra info over UART toegevoegd ]

http://www.catalogged.net/


  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
Iemand nog een idee?

http://www.catalogged.net/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:12
Je dmesg geeft aan dat de lezer op /dev/ttyUSB0 wordt gezet, de kans is klein dat daar ook meteen een tty op gestart wordt. Dus dat vrijmaken lijkt me niet nodig, je moet alleen wel de rechten hebben ( member zijn van dialout normaal gesproken om seriele poorten te mogen openen )

Verder zou ik met een tail -f /dev/ttyUSB0 kijken of er ueberhaubt wat binnenkomt

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21-11 22:57
Je kan ook nog even proberen of het ding wel werkt op een desktop linux systeem. Dan kun je in ieder geval bepalen of het probleem 'm zit in Linux i.p.v. Windows, of Raspberry Pi i.p.v. PC. (Er is wel wat USB hardware die niet goed werkt in de Raspberry Pi.)

  • Raenius
  • Registratie: December 2003
  • Laatst online: 20-08-2021
@Soultaker & @farlane: Thanks voor jullie reacties.

@farlane: tail -f /dev/ttyUSB0 geeft helaas geen enkele reactie.

@Soultaker: Deze werkt gelukkig wel.

Mijn code is gebaseerd op deze pagina: http://bradsrpi.blogspot....-for-raspberry-using.html

Na nog een tijdje spitten kwam ik op de volgende pagina uit: http://stackoverflow.com/...board-using-linux-and-pyt

(Ik log inderdaad ook in via SSH op mijn pi.)

Hierin wordt aangegeven dat met het commando: less -f /dev/input/event2 hij in ieder geval iets binnen ziet komen. En wonderwel zie ik dat ook (weliswaar met event0):

root@iacon:/home/pi# less -f /dev/input/event0
<FC><EA>?Sb^Z^B^@^D^@^D^@'^@^G^@<FC><EA>?Sb^Z^B^@^A^@^K^@^A^@^@^@<FC><EA>?Sb^Z^B^@^@^@^@^@^@^@^@^@<FC><EA>?S^@*^B^@^D^@^D^@'^@^G^@<FC><EA>?S^@*^B^@^A^@^K^@^@^@
^@^@<FC><EA>?S^@*^B^@^@^@^@^@^@^@^@^@<FC><EA>?S<EB>1^B^@^D^@^D^@'^@^G^@<FC><EA>?S<EB>1^B^@^A^@^K^@^A^@^@^@<FC><EA>?S<EB>1^B^@^@^@^@^@^@^@^@^@<FC><EA>?SsA^B^@^D
^@^D^@'^@^G^@<FC><EA>?SsA^B^@^A^@^K^@^@^@^@^@<FC><EA>?SsA^B^@^@^@^@^@^@^@^@^@
<FC><EA>?SDI^B^@^D^@^D^@'^@^G^@<FC><EA>?SDI^B^@^A^@^K^@^A^@^@^@<FC><EA>?SDI^B^@
^@^@^@^@^@^@^@^@<FC><EA>?S<FC>X^B^@^D^@^D^@'^@^G^@<FC><EA>?S<FC>X^B^@^A^@^K^@^@
^@^@^@<FC><EA>?S<FC>X^B^@^D^@^D^@&^@^G^@<FC><EA>?S<FC>X^B^@^A^@
^@^A^@^@^@<FC><EA>?S<FC>X^B^@^@^@^@^@^@^@^@^@<FC><EA>?S<AE>h^B^@^D^@^D^@&^@^G^@
<FC><EA>?S<AE>h^B^@^A^@
^@^@^@^@^@<FC><EA>?S<AE>h^B^@^D^@^D^@#^@^G^@<FC><EA>?S<AE>h^B^@^A^@^G^@^A^@^@^@
<FC><EA>?S<AE>h^B^@^@^@^@^@^@^@^@^@<FC><EA>?S6x^B^@^D^@^D^@#^@^G^@<FC><EA>?S6x^B^@^A^@^G^@^@^@^@^@<FC><EA>?S6x^B^@^D^@^D^@!^@^G^@<FC><EA>?S6x^B^@^A^@^E^@^A^@^@
^@<FC><EA>?S6x^B^@^@^@^@^@^@^@^@^@<FC><EA>?SÛ^B^@^D^@^D^@!^@^G^@<FC><EA>?SÛ^B^@
^A^@^E^@^@^@^@^@<FC><EA>?SÛ^B^@^D^@^D^@%^@^G^@<FC><EA>?SÛ^B^@^A^@ ^@^A^@^@^@
<FC><EA>?SÛ^B^@^@^@^@^@^@^@^@^@<FC><EA>?SÚ^B^@^D^@^D^@%^@^G^@<FC><EA>?SÚ^B^@^A^@ ^@^@^@^@^@<FC><EA>?SÚ^B^@^D^@^D^@!^@^G^@<FC><EA>?SÚ^B^@^A^@^E^@^A^@^@^@
<FC><EA>?SÚ^B^@^@^@^@^@^@^@^@^@<FC><EA>?S^^<A7>^B^@^D^@^D^@!^@^G^@<FC><EA>?S^^
<A7>^B^@^A^@^E^@^@^@^@^@<FC><EA>?S^^<A7>^B^@^D^@^D^@#^@^G^@<FC><EA>?S^^<A7>^B^@
^A^@^G^@^A^@^@^@<FC><EA>?S^^<A7>^B^@^@^@^@^@^@^@^@^@<FC><EA>?S<BB><B6>^B^@^D^@^D^@#^@^G^@<FC><EA>?S<BB><B6>^B^@^A^@^G^@^@^@^@^@<FC><EA>?S<BB><B6>^B^@^D^@^D^@&^@^G^@<FC><EA>?S<BB><B6>^B^@^A^@
^@^A^@^@^@<FC><EA>?S<BB><B6>^B^@^@^@^@^@^@^@^@^@<FC><EA>?SP<C6>^B^@^D^@^D^@&^@^G/dev/input/event0

Dus dat is al een vooruitgang. Het doet in ieder geval iets op het moment dat een tag wordt gelezen.

Er wordt daarna verwezen naar: The problem was solved after the user realized he was logged into the embedded device through SSH. He proceeded by simply reading /dev/tty0 using io.open from the Python 3 standard library.

Ik heb vervolgens getracht via tail /dev/tty iets uit te lezen maar dat werkte niet. Toen verschillende tty's geprobeerd maar er kwam niks.

Toen geprobeerd:
root@iacon:/home/pi# more -f /dev/tty1
0009648469
0009648469
0009648469
0009648469
0009648469
0009648469
0005193597
0005193597
0005193597
0005193597
0005193597

Hier ziet hij wel de tags. Opvallend genoeg de eerste tag die hij scant laat hij niet zien. Alle daarop volgende wel.

Ik vraag me alleen af of dit nu ook wel werkt als ik straks verder ben en de pi zelfstandig actiemoet ondernemen op basis van de gescande tag. Of ik dan toch niet verder met de USB moet?

(Pi is mijn enige ervaring met linux tot nu toe, dus mogelijk dat ik wat dingen mis)

http://www.catalogged.net/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:12
Ok, hij wordt dus onder Linux ook een HID/input device, maar blijkbaar wordt er ook een CDC device aangemaakt ( misschien om hem (configuratie) commando's te kunnen geven oid )
De tty is voor het lezen van de gescande tags wel de manier om mee verder te gaan.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 15:49
Een FTDI FT232 bevat meerdere USB endpoints, een daarvan is een een VCP (als deze is ingeschakeld op de chip, zie FT PROG)
De andere is voor de D2XX toegang met de DLL (uiteraard geen dll voor linux) voor de speciale features van de chip, dat zal de HID dan wel zijn.

Grote kans trouwens dat de baudrate 9600 8N1 + parity is.
Immers is 106000 / 11* = 9636 baud
*(1 start +8 data +1 stop +1 parity)

edit: Misschien is het nuttig de output van de scanner ruw te bekijken met Hterm die laat ook de non-printable char zien zodat je de python code daarnaar kan laten kijken.

[ Voor 21% gewijzigd door jeroen3 op 05-04-2014 15:48 ]

Pagina: 1