文章目录
1 树莓派串口设置
树莓派包含两个串口,一个称之为PL011 UART硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。
硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠。
mini串口时钟源是由CPU内核时钟提供,波特率受到内核时钟的影响,不稳定。想要通过树莓派的GPIO引脚进行稳定的串口通信,需要修改串口的映射关系。
PL011 UART串口默认用于蓝牙/无线模块,在需要数据连接可靠的情况下,可以使用PL011 UART串口,如果同时需要使用蓝牙模块,可以使用mini UART串口。
默认情况下serial0(GPIO串口已启用)使用的是ttyS0设备(mini串口),serial1(蓝牙)使用的是ttyAMA0设备(硬件串口PL011)。
我们接下来要做的事情就是将物理引脚上的TXD,RXD映射变为PL011.
1.1 打开mini UART
sudo raspi-config
- 关闭serial登录功能,仅用于通信
- 使能
1.2 交换映射关系
- pi3-miniuart-bt的设备树文件用于交换串口映射。用下面的命令查看
ls -l /boot/overlays/pi3-miniuart-bt*
启用该文件只需在/boot/config.txt文件末尾添加一行代码。
- 编辑文件
sudo vim /boot/config.txt
- 在末尾添加一行代码
dtoverlay=pi3-miniuart-bt
- 修改完以后重启系统:
sudo reboot
- 再查看串口映射关系:
2 ESP8266连线说明
ESP8266分为两种状态,烧录固件和运行FLASH
运行状态GPIO0悬空即可,当需要下载固件的时候,将GPIO0拉低,然后将RST拉低2秒,GPIO2在两种状态都悬空就行。
3 AT指令
你可以选择将ESP8266连接树莓派,然后使用minicom调试工具对模块进行配置,也可以使用busybox中的microcom调试工具或者使用USB转TTL的芯片将模块与电脑相连,然后使用串口调试工具进行配置。
桦桦这里使用官方的调试工具。
http://wiki.ai-thinker.com/tools
乐鑫官网也有AT指令的文档,我自己总结了这篇文档,方便自己以后调试,也希望帮助到有需要的人。
请一定注意,输入AT指令,要注意大小写,还有前后中间都不能有空格,以及符号必须是英文符号
3.1 AT 基础指令
ESP8266有三种模式:
1 station模式,即相当于手机,可以连接家里的路由器
2 AP模式 即相当于路由器,其他的终端可以连接自己发出的热点信号
3 上两种共存
AT=RESTORE //恢复出厂设置
AT //测试是否连接上了
AT+RST //重启模块
AT+GMR //查看版本信息
AT+PING="baidu.com" //测试联通性,下面我们没有连接路由器,当然就连接失败
AT+CWMODE? //查询现在模块是什么模式
AT+CWMODE=? //查询帮助信息
AT+CWMODE=3 //指定为第三种模式
AT+UART=<baudrate>,<databits:>,<stopbits>,<parity>,<flow control>
串口波特率 数据位 停止位 奇偶校验位 流控
5: 5 bit 1:1 bit 0: None 0:不使能流控
6: 6 bit 2:1.5 bit 1: Odd 1:使能 RTS
7: 7 bit 3:2 bit 2: EVEN 2:使能 CTS
8: 8 bit 3:同时使能 RTS 和 CTS
3.2 station模式
- 接下来我们连接路由器,使模块可以连接外网
AT+CWLAP //列出所有能收到的WiFi信息
AT+CWJAP //加入其中一个WiFi
AT+CIPSTA?
AT+CIFSR
3.3 AP模式
就是将自己设置为热点
AT+CWSAP="热点名字","密码","通道","ecn"
<ecn> 0 OPEN, 2 WPA_PSK, 3 WPA2_PSK, 4 WPA_WPA2_PSK
AT+CIPAP="自定义IP地址"
AT+CIPAP? //查询作为AP的配置信息
AT+CWLIF //查询连这个热点的IP
- 打开你手机,就会发现有一个HUAHUA的热点,当然了,ESP模块是没有NAT转换的,所以不能上网。
3.4 将模块作为TCP服务器
AT+CIPMUX=1 //设置为多链接模式
AT+CIPSERVER=1,6666 //使能服务器功能,并开端口6666
AT+CIPSERVER=0 //关闭服务器
3.5 将模块作为TCP客户端
AT+CIPMUX=0 //单链接
AT+CIPSTART="TCP","192.168.0.106",12345
AT+CIPCLOSE //关闭socket