树梅派学习 21. 串口连接

树梅派学习 21. 串口连接


接线:

在这里插入图片描述
其中6、8、10 是串口的引脚。

1. 执行命令

sudo apt-get update 
sudo apt-get upgrade
sudo reboot

2. 编辑/boot目录下的config.txt文件

sudo nano /boot/config.txt

添加下面两行:

enable_uart=1
dtoverlay=pi3-disable-bt

3. 编辑/boot目录下的cmdline.txt文件

sudo nano /boot/cmdline.txt

原内容:

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles

参考下面内容修改:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles

保存退出
这里更改掉,串口就不作为终端使用了。如果不设置,通讯会发现数据混乱。

4. 启用串口

sudo raspi-config

选择Interfacing Options–>Serial,回车进入后选择enable
在这里插入图片描述
在这里插入图片描述

5. 关闭板载蓝牙的方法:

1.SSH登录树莓派3后,输入下面命令关闭hciuart使用uart0.

sudo systemctl disable hciuart

2.编辑/lib/systemd/system/hciuart.server将 “ttyAMA0”修改为“ttyS0”

sudo nano /lib/systemd/system/hciuart.service

将 “ttyAMA0”修改为“ttyS0”
如果没有ttyAMA0,就参照下面修改其内容:

[Unit]
Description=Configure Bluetooth Modems connected by UART
ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins
Requires=dev-serial1.device
After=dev-serial1.device

[Service]
Type=forking
ExecStart=/usr/bin/hciattach /dev/ttyS0 bcm43xx 921600 noflow -

[Install]
WantedBy=multi-user.target

6. 重启

sudo reboot

7. 安装minicom

sudo apt-get install minicom
sudo minicom -D /dev/ttyAMA0 -b 115200

minicom设置方法:

sudo  minicom -s

这里写图片描述

这里写图片描述
十六进制显示并自动换行:

minicom -b 4800 -o -D /dev/ttyAMA0 -H -w

参考:
https://github.com/RPi-Distro/repo/issues/31
https://hallard.me/enable-serial-port-on-raspberry-pi/

8. python 串口数据读取

sudo easy_install pyserial

代码:

 # -*- coding: utf-8 -*  
import serial  
import time
import binascii

# 打开串口
ser = serial.Serial("/dev/ttyAMA0", 115200)

    
def main():
    while True:  
        # 获得接收缓冲区字符

        count = ser.inWaiting()  
        if count != 0:  
            # 读取内容并回显  
            recv = ser.read(count)
            data = str(binascii.b2a_hex(recv))[2:-1] #如果16进制输出
            print(data)
            ser.write(recv)  
        # 清空接收缓冲区  
        ser.flushInput()  
        # 必要的软件延时  
        time.sleep(0.1)  
     
if __name__ == '__main__':  
    try:
        main()  
    except KeyboardInterrupt:  
        if ser != None:  
            ser.close()  

一些常量:

  • bytesize:FIVE BITS、SIXBITS、SEVENBITS、EIGHTBITS
  • parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE
  • stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO

异常:

  • ValueError:参数错误
  • SerialException:找不到设备或不能配置

9. 使用USB转串口CH430

树霉派已经写入了ch430的串口转Usb口的驱动

查连接的是那个U口,用命令lsusb可以查看设备已经连接上,看到CH340。
在这里插入图片描述

使用命令 dmesg tail可以看到最后一行为access to ttyUSB0

Python创建串口连接的方法:

ser = serial.Serial("/dev/ttyUSB0", 115200)   

10. 安装xgcom

sudo apt-get update
sudo apt-get install automake  libglib2.0-dev libvte-dev libgtk2.0-dev
git clone https://github.com/wanzhang/xgcom
cd xgcom
./autogen.sh
sudo apt-get install make automake libglib2.0-dev libvte-dev libgtk2.0-dev -y
make
sudo make install 
xgcom

11. java使用rxtx

安装:

sudo apt-get install librxtx-java

启动java程序时加上参数:

java -Djava.library.path=/usr/lib/jni -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 -jar 你的jar

参考:https://angryelectron.com/rxtx-on-raspbian/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值