esp8266与stm32、手机通讯(原子云) |
您所在的位置:网站首页 › 手机控制esp8266的app › esp8266与stm32、手机通讯(原子云) |
本文所讲: 正点原子的wifi模块esp8266与正点原子开发板战舰V3(stm32f103zet6)及手机app通讯
esp8266分为三种工作模式: STA:8266连接到网络比如wifi、手机热点等。 AP:8266作为热点,由手机连接到8266. STA+AP:两种模式兼容。 本文章的实现是采用第一种方式。 首先百度搜索原子云(手机通讯就是用原子云app),进入设备管理,新建设备,(图中的是我以前建的,如果你第一次使用原子云下图应该没有设备)。 选择ESP8266,填写设备名称和密码。 硬件连接: 必须短接:PB11(RX)和 GBC_TX 以及 PB10(TX)和 GBC_RX。 此时8266与开发板的串口3相连(波特率为115200)。 代码实现: 利用hal库与keil5进行实现。cubemx里配置好串口1(需要在代码里重定义printf函数)和串口3。(既然使用8266了,相信这一步对你来说小菜一碟) 首先了解几个AT指令 AT+CWMODE=1 //设置8266为STA模式 AT+RST //复位 WIFI CONNECTEDWIFI GOT IPAT+CWJAP=“热点名称”,“热点密码”//连接手机热点 AT+ATKCLDSTA=“上面说的编号”,“设置的密码”//连接到原子云 除连接到原子云需要每次上电都配置外,其余指令只需初始化一次,因此我们可以利用串口1和串口助手直接发送AT指令完成前三个指令。 将8266的VCC连到单片机的5V,GND与单片机的GND相连,TXD与单片机的RXD相连,RXD与单片机的TXD相连 发送指令如下图,发送第一个指令时极有可能乱码,再发送一次就好了 发送复位指令后会出现乱码和一个logo,如下图 代码实现: 在主函数中添加如下代码 你可能发现代码好像怪怪的,好像多了好多 \ ,这里要提到转义字符的概念,字符串中是不能直接输出 " 的,解决方法就是在 " 前加 \ ,这样就可以输出 " 了,这里的 \ " 就是转义字符。 然后编译,下载到单片机,稍等片刻,即可连接到原子云。 这样就完成了电脑与单片机通讯了吗?并没有!我们现在是在已经连接到手机热点的基础上进行的与原子云连接。那如果将热点关闭,单片机断电。然后打开热点,单片机重新上电会发生什么?你可以试一下,你会发现连接不到原子云了。 这是因为代码的执行速度比8266连接到手机的速度快得多,也就是当8266还没连接到手机时,8266连接原子云的指令已经执行完毕了。 所以在执行连接到原子云的指令之前,应该延时几秒等待8266连接到手机热点,我的8266连接到手机时间是7s左右,所以我延时8s。 手机与单片机通讯 下载原子云app。 链接:https://pan.baidu.com/s/1Kzpj4MArcxq1judQC3swPA 提取码:t7vu 安装成功之后进入登陆界面,需要输入的token需要到原子云网页里找,进入原子云网页,点击左下角账号信息,即可看到API TOKEN. 登陆成功后会发现一片空白。 点击分组管理,点击创建分组,分组名称随便起。之后点击操作里的分组设置。 按以上步骤操作后,重新登陆原子云app。即可与单片机通讯。 下面举个例子,手机输入123使led亮灭 代码如下: 首先定义有三个元素的数组, uint8_t buffer[3];之后在主函数的while里添加以下代码, 别忘了添加头文件 > #include之后编译,下载到单片机中。即可发现led一直在闪烁。 至此,本文所讲内容结束了,大家也可以尝试用串口中断来实现消息的发送。其实当你把这个功能和项目里其他功能结合时可能会出现一些逻辑上的问题,并不是直接cv就可以的。这里博主希望各位可以在学习过程中自己解决问题,最后希望我们一起进步。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |