一、需要的硬件支持:
开发板(本人使用的是中国移动的 麒麟座开发板(免费申领),非常感谢onenet给了我这么好的学习机会),LED灯,ESP8266 WiFi模块,USB转ttl ( 开发板上自带有可以不需要 )、、、、、、
二、设置网络调试助手
网络调试助手配置.png 根据配置好的服务器信息,我们使用ESP8266进行连接就可以了(当然其他的WiFi模块或者GSM模块都是可行的),连接上了之后我们可以直接双向传输数据;
调试助手比较方便,我们可以简单完成创建服务器的工作,但是这些都是别人弄好的,有些功能没法实现我们自己想要达到的目的,因此我们可以自己建立一个服务器,用python都是可行的;过几天我会使用python来建立调试其他的功能。
三、查看发送的数据格式
1、ESP8266---->网络调试助手:
数据显示.png这里数据显示没法显示字符,估计与固件有关,在这里我就不进行更改了,因为这个用其他产品之后就能正常发送,就我个人而言就不用过多考虑。
2、网络调试助手----->ESP8266
发送数据.png 然后ESP8266传输给单片机的是: +IPD,9:blueled,1# ;我仅仅需要的信息是:”blueled”
与 “1”
, “#”
,我的想法相对简单,感觉有点拿不出手。” blueled”
表示蓝色LED灯;”1”
表示LED灯亮;”#”
表示发送数据的结尾。数据格式没多难,仅仅只加了个结束位而已。
- 关键定义:
u8 Led[][10] = {"redled","greenled","yellowled","blueled","beep"};
- 数据接收:
_Bool GetServelFlag = 0;//接收到服务器传过来数据的结束标志位
u8 EndNum = 0;
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断
{
if(esp8266_cnt >= sizeof(esp8266_buf))
esp8266_cnt = 0; //防止串口被刷爆
esp8266_buf[esp8266_cnt++] = USART2->DR;
EndNum = esp8266_cnt-1;//得到 # 的位置
if(esp8266_buf[EndNum]=='#')
GetServelFlag = 1;//说明我们想要的数据已经全部接收完毕
USART_ClearFlag(USART2, USART_FLAG_RXNE);
}
}
- 数据解析:
if(GetServelFlag==1)
{
GetServelFlag = 0;
UsartPrintf(USART_DEBUG, esp8266_buf);
for(i=0;i<5;i++)
{
if(strstr((char *)esp8266_buf,Led[i])) //匹配关键字
{
UsartPrintf(USART_DEBUG, "OK!");//串口调试使用
switch(i)
{
case 0:Led4_Set(esp8266_buf[EndNum-1]-'0');break;
case 1:Led5_Set(esp8266_buf[EndNum-1]-'0');break;
case 2:Led6_Set(esp8266_buf[EndNum-1]-'0');break;
case 3:Led7_Set(esp8266_buf[EndNum-1]-'0');break;
case 4:Beep_Set(esp8266_buf[EndNum-1]-'0');break;
}
break;//达到目的退出
}
}
}
得到我们想要的数据之后,便可以控制开发板灯的亮灭;简单的物联网差不多就是这样的一种方式吧。慢慢成长吧!
续、、、、、、(2017、12、29)
(今天来用 MarkDown 来编写)
网友评论