买了个蓝牙模块,因为自带的蓝牙不符合需求。网上找了一逼资料,没有stretch的,照着操作是走不下去的,里面好多细节对于非硬件开发真是坑。说树莓派有ttyAMA0、ttyS0两个串口,在Pi 3中,ttyAMA0被蓝牙用了。ttyS0中的S是软件的意思,所以这ttyS0用起来会不如预期,所以要关掉蓝牙用串口ttyAMA0
树莓派串口原被用来做ssh之类的,要切换掉。要把蓝牙也关掉,这样才能用ttyAMA0。再装个minicom测试串口用。
1. sudo apt-get install minicom
2. sudo raspi-config
选择 Interfacing Options -> Serial -> 是-> 确定。
重启
3. 关掉蓝牙(这一步不要做,第4步已经搞定了)
sudo systemctl disable hciuart
sudo reboot
4. 修改 /boot/config.txt文件
打开文件执行: sudo vi /boot/config.txt
在文件末尾添加
dtoverlay=pi3-miniuart-bt
sudo reboot
4. 查看一下,应该关掉了
systemctl status bluetooth
5. 修改默认配置
sudo minicom -s
进入Serial port setup
改成:Bps/Par/Bits 这个要根据硬件的文档来折腾波特率、校验位之类的。
| A - Serial Device : /dev/ttyAMA0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No
最后 Save setup as dfl
7. sudo minicom
就可以输入命令玩了,这里有个坑,你在minicom中输入一个字符就马上传给设备了,设备会报AT指令错。我的设备是有AT指令的,后面还要求换行。我之前在windows中的sscom工具,工具设置成自动加/r换行符,正常使用。但在树莓派试时,发现输入AT会报错,然后在文本编辑器中输入“AT”再copy进minicom执行还是报错,然后在文本编辑器中输入如下
AT //注意,这是串口所接硬件支持的命令
//注意这里是换行
然后把AT和下面一行的换行一起copy,再粘贴到minicom就执行成功了。
在做第7步前,其实还可以把树莓派的TXD和RXD用线短接,然后在minicom中你输入一个字母就能看到两个字母,这样能证明1-6步做的正常否。也可以两个树莓派串口连接,但注意txd对rxd,并且两个派的Ground也要用线连起来(这是个坑,试了好久),然后你就可以在两个派minicom中看到的效果,这边发的那边能看到。
这里注意,要打ctrl + a,e,打开回显,否则输入是看不到,只有接收能看到。
参考命令:
minicom -b 9600 -o -D /dev/ttyAMA0