目录
硬件准备
esp8266-01s,stm32f103c8t6最小系统板
软件准备
keil5,串口调试助手
自我准备
带好脑子
贝壳物联
贝壳物联链接:https://www.bigiot.net/User/index.html
注册并登录
点击进入个人中心
新建一个设备
添加内容如下
名称最少四个字符
必须为公开模式(公开✔)
剩下的随便写
其中需要用到的是ID和APIKEY
以上就是贝壳物联网站的准备工作了
贝壳物联和esp8266的连接
通过AT指令连接
1.需要硬件STC(USB转TTL)下载器,esp8266-01S模块,连线如下:
stc esp8266
GND GND
3.3V 3.3V
TX RX
RX TX
2.通过串口调试器发送AT指令
STC插入电脑等设备会显示COMX-CH340(有没有USB不记得了,X为阿拉伯数字)的字样,选择好你的端口号之后就可以发送AT指令了。
AT指令如下:
1、AT 测试
2、AT+CWMODE=1 station模式
3、AT+RST 重启
4、AT+CWJAP="XXX01","XXX02" XXX01为WIFI账号,XXX02为WIFI密码
5、AT+CIFSR 获取本地 IP 地址
6、AT+CIPSTART="TCP","www.bigiot.net",8181 登陆贝壳物联服务器
7、AT+CIPMODE=1 透传模式
8、AT+CIPSEND 开始透传
其中""为英文符号,大家需注意
每次发送需要等待片刻,等串口调试返回ok或其他数据即可,wifi连接时间略久,如果返回数据为ERROR则说明返回错误,注意看 " " 的格式,必须英文格式
如果连接成功则在线状态为在线,在线设备背景底色为绿色。
但是只是AT指令连接无法达到一直连接的。四十秒左右会自动断开(不在线)。
AT+CIPSTART="TCP","www.bigiot.net",8181 登陆贝壳物联服务器
这句话的含义是
通讯方式:TCP 地址:www.bigiot.net TCP端口:8181
根据贝壳物联网的文档我们可以知道:8181端口——服务器不主动发送心跳包,靠客户端主动发送心跳包保持在线,心跳间隔以40~50s为佳;心跳包差不多相当于是定时发送有效信息,让设备保持在线。所以这就是为什么需要发送通过代码烧录的方法让单片机自动连接代码并保持长时间连接。
STM32F103+esp8266连接贝壳物联
首先是获取源码,在贝壳物联官方的文档中有许多资料,大家可以好好参考一下。其中还有Arduino 的源码,但是跟本文没有和关系的,大家感兴趣自行查看。下面放上stm32f103的链接和文档链接:
文档链接:帮助文档-贝壳物联,让你与智能设备沟通更方便的物联网云平台 (bigiot.net)
stm32f103:远程控制通讯——基于STM32 + ESP8266控制LED灯并返回结果-贝壳物联,让你与智能设备沟通更方便的物联网云平台 (bigiot.net)
代码下载如下图所示
代码所在网站是GitHub,如果无法访问请在CSDN搜索相关问题解决办法或者问我,有空会看(肯定不会看的)。我才不会说有个steam++的软件可以加速,然后正常使用,也不会说B站一大把教程。
双击箭头所指可以打开工程,自己注意文件目录
以上代码可以在esp8266连接的情况下保持不断开连接,但是问题在于他不能上机自己连接成功,需要在已经连接的情况下使用
如何上机连接
代码部分
代码下载后没有反应的话可以把上面 \n 改为 \r\n
void ESP8266_Init(void)
{
printf("AT\n");
delay_ms(2000);
printf("AT+CWMODE=1\n");
delay_ms(2000);
printf("AT+RST\n");
delay_ms(2000);
printf("AT+CWJAP=\"XX\",\"XXXXXX.\"\n");//wifi名称和密码
delay_ms(5000);
delay_ms(5000);
delay_ms(5000);
delay_ms(5000);
printf("AT+CIPSTART=\"TCP\",\"www.bigiot.net\",8181\n");
delay_ms(2000);
printf("AT+CIPMODE=1\n");
delay_ms(2000);
printf("AT+CIPSEND\n");
delay_ms(2000);
//上述代码下载后没有反应的话可以把上面 \n 改为 \r\n
}
可以先用串口连接PA9,PA10看是否可以正确打印。
然后再把串口断开连接esp8266。
如果是对代码进行一定要注意延时函数的代码,即delay_ms();
void delay_ms(u16 time)
{
u16 i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
通过手机对STM32进行灯亮灭的控制
通过微信搜索小程序:贝壳物联,也可以通过关注公众号,然后绑定设备来实现对灯的开关。
如果是使用小程序的话是通过获取设备输入设备ID,APIKEY来连接,然后在首页->在线设备进行控制,第一行第二个按钮是play,也就是开灯,第一行第三按钮是stop,也就输关灯。可以看到板子自带PC13灯的亮灭。
注意:代码下载到单片机运行后需要等设备在线后再对灯进行控制,下载后等待二三分钟左右。
也可以关注公众号发送 stop,play的消息来进行控制。在个人中心的第三方账号里面。
以下是代码中实现字符判断来对灯进行控制的部分。