用CC2530单片机自制WIFI天气时钟

2019-08-08  本文已影响0人  Hiper

突然想起了当初上无线传感的学期作业,还是有点小小自豪的,在任何没有单片机基础的一个学期里,我们成功的用Webee的CC2530单片机自制了一个WIFI天气时钟,虽然不实用吧,但最起码功能是实现了。
下面来讲讲大概的个情况:

零件:CC2530单片机两个,0.96寸OLED显示屏一个,中文转语音TTS模块(喇叭)一个,ESP8266模块一个,杜邦线若干。(调试过程中需要一个USB转TTL器)

具体流程:1号单片机连接ESP8266,ESP8266从网上找的API网站获取时间天气信息,返回的是JSON格式的字符串,传到1号单片机,1号单片机提取出时间天气数据,再传给2号单片机,2号单片机连着喇叭和显示屏,接收到信息后分别传给显示屏和喇叭。
当然,这个不会太完美,我一直没能让ESP8266自动查询天气事件信息,每次使用得在电脑端控制ESP输入一大堆代码,很伤。

1.(每条 AT 指令后均需要添加换行后再发送)
2. 使用串口发送指令 AT+CWMODE=1 设置模块 Wi-Fi 应用模式为 Station 模式;
3. 发送指令 AT+RST 重启模块使应用模式更改生效;
4. 发送指令 AT+CWJAP =”ssid”,”pwd”连接 AP;
5. 发送指令 AT+CIPMUX=0 设置模块为单路连接模式,模块默认为单路连接模式;
6. 发送指令 AT+CIPSTART="TCP","api.k780.com",88 与服务器建立 TCP 连接,域名前面一定不能加"http://"!;
7. 发送指令 AT+CIPMODE=1 设置模块传输模式为透传模式;
8. 发送指令 AT+CIPSEND 开启透传模式向服务器发送数据,模块收到此指令后先换行后返回“>”,每包数据以 20ms 间隔区分,每包最大 2048 字节;
9. 然后发送以下内容向服务器发出 HTTP 请求获取北京时间(不可以用 HTTP/1.1):
10.GET http://api.k780.com/?app=life.time&appkey=34109&sign=006284f20d3a6c3129d63afc5a4d4c26&format=json
11. 单片机可以从返回信息中解析出北京时间;
12. 20ms 后发送指令+++退出透传模式返回指令模式(后面不要换行);
13. 最后发送指令 AT+CIPCLOSE 断开模块与服务器的 TCP 连接。

看看这可怕的步骤,不过用过一次后可以把前面的步骤省略,最后如下

1. *******************时间***************************
2.
3. AT+CIPSTART="TCP","api.k780.com",88
4. AT+CIPMODE=1
5. AT+CIPSEND
6. GET http://api.k780.com/?app=life.time&appkey=34109&sign=006284f20d3a6c3129d63afc5a4d4c26&format=json
7.
8. +++ 退出透传模式,不要回车换行
9. AT+RST 重启 ESP-8266
10.
11. ******************天气******************************
12.
13. AT+CIPSTART="TCP","api.seniverse.com",80
14. AT+CIPMODE=1
15. AT+CIPSEND
16. GET https://api.seniverse.com/v3/weather/now.json?key=wwyxdn82qum3a3pf&location=taiyuan&language=en&unit=c

但是,除了这个步骤,其余全部完美,比如字符串的接收啦,单片机间的通讯啦。不过我没有用那个协议栈,当初时间不太够,精力也不可能都放在这个上。
具体的细节懒得打了,估计只有恰好使用这个单片机的人才感兴趣,想要源代码的直接评论要就好了。

上一篇 下一篇

猜你喜欢

热点阅读