嵌牛IT观察

树梅派串行口通信方法

2018-12-14  本文已影响0人  孙昊_cd3f

姓名:孙昊

 学号:16020188032

 转载自https://blog.csdn.net/huayucong/article/details/47006431,有删节

嵌牛导读】:本文主要介绍树莓派串行口通讯的主要方法和配制过程,以及注意事项。

嵌牛鼻子】:树莓派 串行通信

嵌牛提问】:树莓派还有哪些好的应用?

嵌牛正文】:

一、树莓派串行通信的方法 

    树莓派的串行通讯的方式主要有两种:一种是通过树莓派GPIO口、一种是通过USB口。

二、莓派的串口(UART)配置和使用

1、树莓派上UART端口的位置

    GND位于HEAD-6(也可选其他GND)

    TXD位于HEAD-8

    RXD位于HEAD-10

    树莓派的第一排的第三,四,五分别,也就是下图的6,8,10三个端口分别是地、TX与RX。注意在接线时,3根线都要接,首先设备必须共地,树莓派的TX要连接从设备的RX,树莓派的RX要连接树莓派的TX。

                                                                         图. 树莓派 UART位置

2、树莓派的串口电平

    树莓派的TX和RX是TTL电平,如果从设备不是TTL电平就需要进行电平转换,转换方式需要根据从设备的信号形式。例如,如果从设备是RS232电平(比TTL电平抗干扰,尤其是距离较长的时候),就需要到网上购买RS232转TTL的转换模块。(下面网址不是广告只是个例子https://detail.tmall.com/item.htm?spm=a230r.1.14.1.JBapZL&id=12425122397&cm_id=140105335569ed55e27b&abbucket=19)

说明:TTL电平与RS232电平的区别

1)TTL电平标准

    输出 L:<0.8V ; H:>2.4V。

    输入 L:<1.2V ; H:>2.0V

    TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。

2)RS232标准

    逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次。

3、树莓派的串口默认为一个控制台,用于SSH调试使用,若要使用串口需要修改两处文件。 具体的修改方法如下:

1)修改两处文件

【1】/boot/cmdline.txt

【输入以下指令】

    sudo nano /boot/cmdline.txt

【删除红色部分】

    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4elevator=deadline rootwait

【最终变为】

    dwc_otg.lpm_enable=0 console=tty1root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait    

【2】/etc/inittab

【输入以下指令】

    sudo nano /etc/inittab

【注释最后一行内容】

    #T0:23:respawn:/sbin/getty -LttyAMA0 115200 vt100  

2)重新启动系统

    sudo reboot

4、测试 

    配置完之后便可测试一下树莓派的UART是否正常工作,而minicom便是一个简单好用的工具。minicom是linux平台串口调试工具,相当于windows上的串口调试助手。

【1】minicom安装

    sudo apt-get install minicom

【2】minicom启动

    minicom -b 9600 -o -D /dev/ttyAMA0

    -b代表波特率,-D代表端口,/dev/ttyAMA0 类似于windows中的COM1,-o功能暂时未知。

                                                                       图. minicon界面

【3】minicom发送内容

     直接在控制台中输入内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没人任何反应,千万不要以为minicom没有正常工作。

【4】minicom回显控制

     先Ctrl+A,再E。可翻转回显状态(原来回显打开则此事回显关闭)

【5】minicom退出

     先Ctrl+A,再Q。

5、利用python程序通信事例(利用pyserial,下载安装方法见后文)

     import serial  

     from time import sleep  

     ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5)   

     def recv(serial):    

         data  

         while True:    

             data =serial.read(30)    

             if data == '':    

                 continue  

             else:  

                 break  

             sleep(0.02)   

         return data    

     while True:    

         data =recv(ser)    

         ser.write(data)

三、树莓派的串行通信(利用USB)配置和使用

    首先用RS232转USB的转接线连接树莓派,即可完成硬件连接。对于串口通信,可以通过pyserial实现。

1、安装pyserial模块和测试

    从https://pypi.python.org/pypi/pyserial下载最新版本的安装包,再通过下面的命令完成安装:

        tar zxvf pyserial-2.7.tar.gz  

        cd pyserial-2.7  

        python setup.py install  

    通过命令lsusb查看串口是否存在:

    通过命令python -m serial.tools.list_ports可以查看大可用的端口:

2、python通讯程序

    usb设备:/dev/ttyUSB0

     import serial  

     from time import sleep  

     ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.5)   

     def recv(serial):    

         data  

         while True:    

             data =serial.read(30)    

             if data == '':    

                 continue  

             else:  

                 break  

             sleep(0.02)   

         return data    

     while True:    

         ser.write(data)  

         data =recv(ser)    

    总结:如果你使用的是usb Hub,那么通讯的设备就不一定是/dev/ttyUSB0,可能是/dev/ttyUSB1,/dev/ttyUSB2,/dev/ttyUSB3等,以此类推。

上一篇下一篇

猜你喜欢

热点阅读