一、如何根据单片机发来的消息在手机端界面显示?即:手机、单片机如何双向通信且在各自界面中进行信息显示。
答:我们可以把手机、单片机通过esp8266模块和路由器建立联系,组成局域网(路由能上网的话,亦可于外网通信)。具体来说:
- 把单片机和wifi模块通过串口进行连接
- 通过单片机内部编程由单片机的串口发送AT指令设置wifi模块工作在station模式,然后主动连接能上网的当前环境路由器
- 手机也连接该路由器,让手机和wifi模块同处在一个路由器下
- 通过单片机的串口发送AT指令设置wifi模块为tcp客户端,与知心天气网站服务器和手机进行tcp通信,接入知心天气网站服务器端域名为api.seniverse.com,端口80,手机端可借助有人网络助手(或者自己写一个手机端的软件)设置手机的tcp server及指定开放的端口成功建立tcp通信后,用户可通过单片机的串口向知心天气网站的服务器端提交基于http协议的GET请求,获取天气信息的api接口需要用户注册申请,如下是我已经申请了的:GET https://api.seniverse.com/v3/weather/now.json?key=S4bQnu5_rNi_kbNJZ&location=hangzhou&language=zh-Hans&unit=c,服务求收到GET请求后会返回一个json格式的数据包,使用到第三方的开源库cJSON进行解析即可
- 对于如何在各自界面进行显示,单片机端可以外接一块液晶屏,手机端利用有人网络助手(前期开发测试时推荐使用)也可以显示通信的信息,只不过界面不美观,且没有特定的说明和规划,如果是自己写的手机端的软件,则可以根据需要进行UI界面设计,进行有规划的消息显示,以及可设计触发单片机执行各事件的触发控件,实现各动作的软/硬件触发。
二、单片机如何上网?
单片机通过esp8266wifi模块连接一个可以上网的路由器即可建立与广域网(外网)的tcp通信。