树莓派串口通信
我用的是树莓派3b+型号,网上各种各样的修改方式来使得树莓派的串口可以工作,过于混乱,还有的教程甚至会被树莓派系统搞崩溃,尤其是树莓派实验室那里的中文教程,是错误的,按照那个来就直接系统崩溃重装。因此我在这记录一下简单的串口配置和通信的过程。
第一步 配置
其实配置只需要三个步骤
一、把serial打开,这个在当前最新的系统里面,能够直接在Raspberry Pi Configuration里面找到,在Interfaces里面把Serial Port改成Enable,重启即可
二、修改配置文件
sudo gedit /boot/cmdline.txt
删掉里面的 console=serial1,115200
三、还需要把serial口子换一下,因为serial0和serial1不一样,我们需要的默认被蓝牙占用了
通过 ls -l /dev
可以查看
sudo gedit /boot/config.txt
在末尾加上一句话
dtoverlay=pi3-miniuart-bt
这样,重启之后,两个串口类型就互换了,我们就可以利用这个串口进行通信了
如下:
第二步 写串口程序
这里,串口通信和测试的方式有很多中,可以通过python gcc等方式进行通信
python的方式比较简单,但是我考虑了一下,可能不太适用于我后面的工作,所以这里只把这个作为测试接口是否能用,具体参考这位博主的python方式
https://blog.csdn.net/weixin_41656968/article/details/80085836
下面还是来说说利用gcc g++的方式通信,这里用到一个好用的库 wiringPi
具体怎么安装就不再介绍,很简单。主要是看怎么用
这位博主对于这个写得很仔细,介绍得也很清晰
https://www.cnblogs.com/lulipro/p/5992172.html
这个代码可以用来测试接口是否开启等
创建一个新的.c文件,然后利用gcc来运行
#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>int main(){int fd;if(wiringPiSetup()<0)return 1;if((fd=serialOpen("/dev/ttyAMA0",9600))<0)return 1;printf("serial test start ...\n");serialPrintf(fd,"hello world!!\n");serialClose(fd);return 0;
}
编辑完之后利用gcc编译并运行,能够在终端输出一个hello world!
gcc test.c -o test -lwiringPi./test
一定要带上后面的库,不然编译会失败