【F769IDISCOVERY评测】实现ESP8266连接到云端API打造智能的IOT
本帖最后由 moyanming2013 于 2016-12-28 10:39 编辑非常感谢STM32社区和STM32官网!STM32F769IDISCOVERY配备WiFi模块接口,可以直接连接ESP8266-01 WiFi模块,可以通过WiFi并结合各类信息提供商的云端API,来实现智能的物联网产品。本文展示了如何通过ESP8266实时获取天气预报信息并显示在LCD上。1. ESP8266-01SWiFi模块的安装配置ST官方说明中支持ESP8266-01 WiFi模块。但现在该款产品升级到了ESP8266-01S,主要是优化了WiFi天线部分等,但我测试ESP8266-01S后发现接口和程序都是兼容的,所以我这次安装和使用的是ESP8266-01S WiFi模块,但依然兼容并支持ESP8266-01 WiFi模块。ESP8266-01S很便宜,10元包邮,认准正品(回复后发推荐的购买链接吧)!比较悲催的是必须把屏幕拆掉才能安装该WiFi模块,如下图所示: 如果直接安装ESP8266会卡住!屏幕正好挡住了ESP8266,还好只是屏幕上沿比较凸出,拆掉屏幕模块再安装ESP8266就可以了。ESP8266与开发板的接口如下图所示: 当然,上图中ESP8266需要反转后接入开发板中,成功接入后如下图所示:再把屏幕接入开发板,下图中可以看到屏幕上沿已经盖住了ESP8266:但还好,屏幕的PCB部分还是可以和ESP8266共容的,但高度已经接近极限了,否则屏幕就会被抬起了,如下图所示:如果开发板可以在不拆屏的情况下安装ESP8266就比较方便了。需要说明的是,拆屏幕时拧掉开发板上面的螺丝还是比较轻松的。2. 通过ESP8266-01S获取实时天气预报信息本文附带了示例代码(代码仅供参考),首先需要下载并解压STM32CubeF7,然后把附件中的代码解压后放到如下典型目录中:“\Projects\STM32F769I-Discovery\Applications\”,解压后的文件夹名是“WiFi”,如下图所示:在示例程序中的“MDK-ARM”目录下即可打开该工程。代码程序的基本执行流程如下图所示:结合上图,程序的说明如下:2.1.程序启动后先初始化开发板,然后初始化LCD和ESP8266。ESP8266是通过串口方式进行通信的。2.2.ESP8266初始化成功后,紧接着它会连接到无线路由器中。你需要1个已经连接到互联网的无线路由器,同时需要更改代码中的信息,包括路由器名称和密码,如下图所示:2.3.ESP8266连接无线路由器成功后,会连接到天气预报信息服务器中,上图中也对服务器信息有所展示,服务器名称和端口分别是:api.openweathermap.org:80,该链接是通过TCP的方式实现的。2.4.ESP8266往服务器发送HTTP GET请求。你需要填写HTTP GET请求中的appid部分,默认是获取beijing的天气信息,你也可以更改“q=”后面的城市拼音来获取任意城市的天气信息。HTTP GET请求如下:GET /data/2.5/weather?q=beijing&mode=xml&units=imperial&appid=your-apikey HTTP/1.1%c%cHost: api.openweathermap.org%c%cAccept: */*%c%cConnection: keep-alive%c%c%c%c 其中成对出现的%c需要分别用\r\n来替换(具体参考示例代码),其中的“your-apikey”就是你需要填写的自己申请到的api key,可以在官网openweathermap.org中注册并自动获取自己的api key填写在程序代码中即可,如下图所示:2.5.成功发送HTTP GET请求后,服务器返回数据。此应用,必须是含有“200 OK”的数据头才是正确的返回数据。开始调试前,在示例代码中的“main.c”文件中的368行加入一个断点,并直接运行如果无错误程序会直至该断点处自动停止,此时如下图所示是调试时返回的正确数据:2.6.服务器返回的数据保存在“HtmlData”数组中,在MDK-ARM中打开Memory窗口并填写“&HtmlData”即可看到它里面的数据。服务器返回xml格式的数据,我们需要对xml数据进行简单分析后获取它的有效内容。分析的代码可以参考示例程序中的“analyData”函数。2.7.通过分析“HtmlData”中的数据,获取有效信息,然后显示在LCD上,如下图所示,我只分析显示了其中的一部分数据:上图中的温度是30.2华氏度,换算成摄氏度是-1度,其中clouds是0表示没有云,beijing是晴天。下图是对应的页面中查询到的天气信息,通过ESP8266获取到的信息是正确的:2.8.显示完天气信息后,系统进入休眠,休眠约1小时,然后再次发送HTTP GET请求,然后获取天气信息后显示在LCD上。如果服务器没有返回正确的数据,那么程序就释放网络资源并停止了,此程序仅作参考。说明:ESP8266-01S底层有良好的代码封装实现,必要时可以去调试查看,上述功能只需要调用简单的几个API接口即可完成初始化、配置和数据的收发等,使用起来非常简便。3. 总结本文讲述了在STM32F769IDISCOVERY开发板上安装使用ESP8266-01S WiFi模块,ST首推在该开发板上支持了直接安装WiFi模块,方便进行物联网IOT相关的开发和评估。主要展示了如何通过开放的云端API接口实现实时获取天气预报的示例过程,目前这种云端API接口越来越多,比如获取准确时间日期的API接口、获取电商SKU及打折信息的API接口、获取语音信息的API接口、获取TTS的API接口、获取人工智能相关的API接口等等,这些API接口都基本类似,通过申请一个API KEY然后发送HTTP GET请求,最终获取到服务商提供的免费信息。通过此开发板,结合它的高清LCD显示屏可以有更多的应用进行评估,以其实现智能的物联网产品。4. 参考资料.UM2033Discovery kit with STM32F769NI MCUhttp://www.st.com/content/ccc/resource/technical/document/user_manual/group0/7c/c9/c0/5f/4e/9b/44/eb/DM00276557/files/DM00276557.pdf/jcr:content/translations/en.DM00276557.pdf.STM32CubeF7下载:http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef7.html.开放的天气预报API接口:http://openweathermap.org/
示例代码仅供参考:
我的帖子:【F769IDISCOVERY评测】搭建开发环境与调试简单程序【F769IDISCOVERY评测】开箱及套件资源展示
好东西,支持一下 peter001 发表于 2016-12-11 17:01
好东西,支持一下
费了好大劲才发成功,再回复有机会中ST金币 moyanming2013 发表于 2016-12-11 17:03
费了好大劲才发成功,再回复有机会中ST金币
:lol继续支持,wifi模块运行可靠不,网上很多卖的,想了解一下品质如何 我自己再试试{:3_52:} peter001 发表于 2016-12-11 17:07
继续支持,wifi模块运行可靠不,网上很多卖的,想了解一下品质如何
通过试用看,ESP8266目前还是挺靠谱的。
另外,国外对此模块也推崇有加,估计生产环境下应该还不错。 哈哈,回复得金币 多谢分享 领金币 谢谢分享