0
点赞
收藏
分享

微信扫一扫

树梅派学习 21. 串口连接

JakietYu 2022-06-28 阅读 94

树梅派学习 21. 串口连接

接线:

树梅派学习 21. 串口连接_java
其中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
树梅派学习 21. 串口连接_ico_02
树梅派学习 21. 串口连接_串口_03

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

树梅派学习 21. 串口连接_ico_04

树梅派学习 21. 串口连接_串口_05
十六进制显示并自动换行:

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。
树梅派学习 21. 串口连接_java_06

使用命令 ​​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/


举报

相关推荐

0 条评论