因为嵌入式课程做的东西想用esp8266 将开发板上使用摄像头获取的图像发送到电脑。所以参考正点原子上的示例学习做了一下。虽然有源码可以参考,不过在根据自己的需要修改的过程中还是遇到不少问题的。
esp8266的初始化过程为:
1. 首先需要初始化串口的波特率。在初次尝试传输图像的时候,由于传输的速度太慢(1s仅能发送2000字节),我以为是串口设置的波特率问题,所以用了一个USB转TTL 使用 AT+UART指令修改串口的波特率为921600(代码中以及串口调试助手都要调整为对应的值)。不过再次尝试并没有显著的提高传输速度(这是因为代码中其他地方的原因,下面会解释)。
2. 接着用一个循环发送AT 指令,是否可以连接模块。在测试发送数据的时候,由于我是移值的UCOSIII 系统,OV7670 将图象数据保存在SRAM 中,此时发送数据的任务等待,所以连续发送两次数据之间有时间间隔。在这个间隔中有时候会出现模块连接不上的情况(就是发送AT 指令无法连接到模块)。之前我以为重新把连接的过程运行一遍就没有问题了,但是依然没有解决这个问题。后来改为如果连接中断不重新连接,而是直接退出当前发送。一般情况下,在中断10s后会重新识别到模块的。
3. 测试之后,发送ATE0 关闭回显。该步骤感觉可选,不过没有测试。
4. 使用AT+CWMODE=1 设置模式为STA。
5. 在设置模式之后使用AT+RST 重启模块,延时4s等待重启完成
6. 使用AT+CWJAP 连接WIFI ,需要用到WIFI 的SSID 与密码,在该步骤后,开发板将会获得一个IP 地址
7. 使用AT+CIPMUX =0指令设置为单连接,=1 为多连接
8. 使用AT+CIPSTART 指令启动TCP 连接,参数为TCP 、目标主机的IP 、目标主机的端口
9. 使用AT+CIPMODE=1 退出透传模式。如果要发送指令,需要退出透传模式,在发送数据的时候,需要开启透传
10.之后就可以使用AT+CIPSEND 指令传输数据了
在以上步骤中,需要经常使用atk_8266_at_response(1) 检查接收到的数据。该函数是例程中封装好的函数,如果直接操作到寄存器的话,可以