Läsa och skriva från serieporten med Raspberry Pi
I den här guiden kommer vi se hur man använder den seriella porten på Raspberry Pi. Vi använder den seriella porten tillgängliga på hallon med en RS232/TTL 3-5, 5V-adaptern och en USB-seriell adapter. Som standard konfigureras Raspberry Pi: s seriella porten ska användas för console input/output. Detta kan hjälpa att fastställa problem under uppstart, eller logga in på Pi om video och nätverk inte är tillgänglig.
För att kunna använda den seriella porten att ansluta och prata med andra enheter (t.ex. ett modem en skrivare...), måste seriell port console inloggning inaktiveras.
Här använder vi Raspberry Pi 2, och vi ansluter en RS232/TTL 3-5, 5V-adaptern till stift 4 (5V), 6 (GND), 8 (TX), 10 (RX) i hallon, naturligtvis ansluta tx med rx och vice versa.
För att söka efter tillgängliga seriella portar använder vi kommandot
dmesg | grep tty
Produktionen är något sånt här
PI ~ $ dmesg | grep tty
[0,000000] Kärnans kommandorad: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2709.boardrev=0xa01041 bcm2709.serial=0x93f9c7f9 smsc95xx.macaddr=B8:27:EB:F9:C7:F9 bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console = tty1 console = ttyAMA0, 115200 root = / dev/mmcblk0p2 rootfstype = ext4 hiss = sista rootwait
[0.001774] konsolen [tty1] aktiverad
[0.749509] dev:f1: ttyAMA0 på MMIO 0x3f201000 (irq = 83, base_baud = 0) är en PL011 rev3
[1.268971] konsolen [ttyAMA0] aktiverad
PI ~ $
Sista raden anger att konsolen har aktiverats på den seriella porten ttyAMA0, så vi stänga av den
Kör kommandot konfiguration och följ instruktionerna nedan
sudo raspi-config
Starta om och försök med
dmesg | grep tty
utgång nu är
PI ~ $ dmesg | grep tty
[0,000000] Kärnans kommandorad: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2709.boardrev=0xa01041 bcm2709.serial=0x93f9c7f9 smsc95xx.macaddr=B8:27:EB:F9:C7:F9 bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console = tty1 root = / dev/mmcblk0p2 rootfstype = ext4 hiss = sista rootwait
[0.001769] konsolen [tty1] aktiverad
[0.749438] dev:f1: ttyAMA0 på MMIO 0x3f201000 (irq = 83, base_baud = 0) är en PL011 rev3
PI ~ $
Nu kan vi använda den seriella ttyAMA0. Vi ansluter en adapter-usb / seriell, då vi ska försöka etablera en kommunikation mellan de två seriella portarna; i en praktisk tillämpning till varje följetong kunde vi naturligtvis ansluta en enhet, till exempel ett modem, en skrivare en RFID-läsare etc.
När du har anslutit den andra seriella porten lansera vi kommandot för att hitta det namn som hallon ger honom
dmesg | grep tty
Produktionen är något sånt här
PI ~ $ dmesg | grep tty
[0,000000] Kärnans kommandorad: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2709.boardrev=0xa01041 bcm2709.serial=0x93f9c7f9 smsc95xx.macaddr=B8:27:EB:F9:C7:F9 bcm2708_fb.fbswap=1 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console = tty1 root = / dev/mmcblk0p2 rootfstype = ext4 hiss = sista rootwait
[0.001769] konsolen [tty1] aktiverad
[0.749438] dev:f1: ttyAMA0 på MMIO 0x3f201000 (irq = 83, base_baud = 0) är en PL011 rev3
[971.919417] usb 1-1.2: pl2303 converter nu bifogas ttyUSB0
PI ~ $
OK, nu skapar vi två filer, en som skriver något om den ttyAMA0 porten och den andra som läser på ttyUSB0 port.
serial_write.py
#! / usr/bin/env python
Importera tid
importera följetong
ser = följetong. Serial)
Port = "/ dev/ttyAMA0",
baud = 9600,
paritet = följetong. PARITY_NONE,
StopBits = följetong. STOPBITS_ONE,
bytesize = följetong. EIGHTBITS,
timeout = 1
)
räknare = 0
medan 1:
ser.write ("skriver counter: %d \n" %(counter))
Time.Sleep(1)
räknaren += 1
serial_read.py
#! / usr/bin/env python
Importera tid
importera följetong
ser = följetong. Serial)
Port = "/ dev/ttyUSB0",
baud = 9600,
paritet = följetong. PARITY_NONE,
StopBits = följetong. STOPBITS_ONE,
bytesize = följetong. EIGHTBITS,
timeout = 1
)
räknare = 0
medan 1:
x=ser.readline()
Skriv ut x
Om vi kör båda filerna, kommer att serial_read.py läsa vad serial_write.py skriver
Detta är bara ett litet exempel men det kan tjäna som en utgångspunkt för att skicka en utskrift till en gammal skrivare eller läsa data från en router eller en gps.
Följ oss på sociala att hålla dig informerad.
http://www.emmeshop.EU