Hi,我是小鱼君~
本期小鱼君给大家带来了简单易懂的单片机与ESP8266进行无线通讯的教程。
在一个比赛中需要用到单片机发送数据到云端,我们就用到了ESP8266这个比较简单的模块,网上已经有很多PC调试的例子了所以我们直接点,用单片机发送串口指令。
完整工程请在小鱼君的微信公众号 小鱼君code 中搜索ESP8266即可
接下来我们就开始了,先讲两个重要的函数:
1.这个可以称为串口发送字符串的升级版。它适用于所有AT指令模块,在发送字符串后等待接收,这就可以对AT指令发送成功与否进行判断。
使用信息大家可以看图片中的注释, 这里我们在发送字符串时候和PC调试一致,需要发送\r\n来作为结束符。
第二个就是C语言中的sprintf函数,百度是这样子说的:
看完之后我们应该大致了解了,而在使用中我们可能会遇到这样的问题。我们的HTTP报文是这样的:
可以看到我们在PC通讯中换行了,那么在使用spritnf中也应该手动加上\r\n。
小鱼君是这样子使用的:
这样子我们就可以把官方协议放到temp1数组中,直接通过串口发送就可以了。
接下来就是主函数的内容了:
我们使用三个按键来完成发送过程:
先按下KEY1,我们就开始发送指令,小鱼君因为已经连接过手机的热点了所以就省略了连接的过程。可以看到我们发送的指令基本上是与上一节用串口助手发送的是相同的,我们每次都用if语句判断,如果是1我们就认为是成功了。
在调试过程中小鱼君是为了调试速度所以没有写测试失败的代码,如果大家想自己试试可以随便定义一个变量,如果失败就给它赋值,每一步都对应不同值,这样就可以知道自己哪一步有问题了。
但是我们也不要怕,基本上头铁是没什么问题的,如果上一期的操作成功了,那么这次也不会出差错。
再按下KEY0,我们给上传的数据赋值,按一次就加1,用sprintf更新temp1。
03
最后按下KEY-wkup就可以上传了。我们的OneNet就会同步显示数据。
如果大家的按键没有这么多,可以设置对一个按键实现长按与短按,或者通过触摸屏来控制。
看到这里大家是不是基本都可以实现功能了呢,其实我们做的只是最简单的物联网。如果大家有什么问题可以在下方评论,小鱼君看到就会回复的