Dans ce tutoriel nous allons voir comment utiliser le port série sur Raspberry Pi. Nous allons utiliser le port série disponible sur framboisier avec un adaptateur de 5 v TTL/RS232 3-5 et un adaptateur USB-série. Par défaut, port série de l’IP de la framboise est configuré pour être utilisé pour la console d’entrée/sortie. Cela peut aider à résoudre les problèmes lors du démarrage, ou se connecter à la Pi si le réseau et vidéo ne sont pas disponibles.
Pour pouvoir utiliser le port série pour se connecter et parler avec d’autres appareils (par exemple un modem une imprimante..), la connexion à la console port série doit être désactivé.
Ici, nous utilisons Raspberry Pi 2, et nous nous connectons à un TTL/RS232 3-5, 5V adaptateur aux broches 4 (5V), 6 (GND), 8 (TX), 10 (RX) de framboise, évidemment raccorder tx rx et vice versa.
Pour rechercher des ports série disponibles, nous utilisons la commande
dmesg | grep tty
La sortie est quelque chose comme ça
pi ~ $ pi ~ $ dmesg | grep tty [ 0.000000] Kernel command line: 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 elevator=deadline rootwait [ 0.001774] console [tty1] enabled [ 0.749509] dev:f1: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev3 [ 1.268971] console [ttyAMA0] enabled pi ~ $
Dernière ligne indique que la console est activée sur le port série ttyAMA0, donc nous le désactiver
Exécutez la commande de configuration, puis suivez les instructions ci-dessous
sudo raspi-config
Redémarrer et essayer avec
dmesg | grep tty
sortie est maintenant
pi ~ $ pi ~ $ dmesg | grep tty [ 0.000000] Kernel command line: 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 elevator=deadline rootwait [ 0.001769] console [tty1] enabled [ 0.749438] dev:f1: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev3 pi ~ $
Maintenant, nous pouvons utiliser la série ttyAMA0. Nous connecter un adaptateur usb / série, alors nous allons essayer d’établir une communication entre les deux ports série ; évidemment dans une application pratique pour chaque série, nous pourrions connecter un périphérique, par exemple un modem, une imprimante, un lecteur RFID, etc..
Après avoir connecté le second port série, nous lançons la commande pour trouver le nom de framboise lui donne
dmesg | grep tty
La sortie est quelque chose comme ça
pi ~ $ pi ~ $ dmesg | grep tty [ 0.000000] Kernel command line: 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 elevator=deadline rootwait [ 0.001769] console [tty1] enabled [ 0.749438] dev:f1: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev3 [ 971.919417] usb 1-1.2: pl2303 converter now attached to ttyUSB0 pi ~ $
OK, maintenant, nous créons deux fichiers, celui qui écrit quelque chose sur le port de ttyAMA0 et l’autre qui se lit sur le port ttyUSB0.
serial_write.py
#!/usr/bin/env python import time import serial ser = serial.Serial( port='/dev/ttyAMA0', baudrate = 9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) counter=0 while 1: ser.write('Write counter: %d \n'%(counter)) time.sleep(1) counter += 1
serial_read.py
#!/usr/bin/env python import time import serial ser = serial.Serial( port='/dev/ttyUSB0', baudrate = 9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) counter=0 while 1: x=ser.readline() print x
Si nous exécutons les deux fichiers, serial_read.py lit ce que serial_write.py écrit
C’est juste un petit exemple, mais il peut servir de point de départ pour envoyer une impression d’une vieille imprimante ou lire les données d’un routeur ou un gps.
Suivez-nous sur social pour rester informé.
http://www.emmeshop.eu