玩转Node MCU ESP8266 LUA实现串口输出天气信息
<div class='showpostmsg'> 本帖最后由 ylyfxzsx 于 2020-2-16 13:02 编辑<p>研究了二天ESP8266,记录一下过程,力争本贴作为小白的教学贴,哪怕你从来没有编程基础,也可以快速上手。</p>
<p>网上很多的ESP8266都是刷的AT固件,采用AT指令和MCU交换信息,我觉得MCU的负荷太大,刷Node MCU的固件完全可以解放MCU。</p>
<p>我的思路是MCU只需要接收ESP8266发送的串口信息,截取文本,显示,MCU的鸭梨就小了,好勒,废话不说,开始主题</p>
<p>首先得有个ESP8266的模块,我的是这样的</p>
<p></p>
<p>接下来,定制固件,<a href="https://nodemcu-build.com/">https://nodemcu-build.com/</a></p>
<p></p>
<p></p>
<p>然后一会儿就会收到网站发过来给你编译好的固件,float和integer的区别是支持浮点数</p>
<p>然后接上node mcu ESP8266 模块,打开ESP8266固件下载工具 flash_download_tools_v3.6.5</p>
<p></p>
<p>升级完成后,复位模块,可以看到串口输出信息</p>
<p></p>
<p>LUA版本5.1.4 SDK3.0.1 固件网站给的各种API函数接口的使用,非常详尽,稍微阅读下即可上手</p>
<p><a href="https://github.com/nodemcu/nodemcu-firmware/tree/master/docs/modules">https://github.com/nodemcu/nodemcu-firmware/tree/master/docs/modules</a></p>
<p></p>
<p> </p>
<p>好了,接下来我们开始进行LUA编程,先下载一个 Esplorer,然后连接上模块,因为我们还没有编写应用文件,所以提示 </p>
<p>“lua: cannot open init.lua”</p>
<p></p>
<p>那么接下来写个最简单的控制GPIO点亮LED的LUA指令,点击发送到ESP看看效果</p>
<p></p>
<p></p>
<p>点击保存到ESP,就下载进入ESP8266内部模块了</p>
<p>至此,框架是搭起来了,至于NodeMcu LUA的语法和编程,自己去看我上面给的API函数文档,我就不罗嗦了,现在我们要干嘛呢,找提供天气接口函数的服务商给我们调用,我这里用的是心知天气</p>
<p><a href="https://www.seniverse.com/">https://www.seniverse.com/</a></p>
<p>注册账号,然后我们用免费的就行了,会得到一个密匙key</p>
<p></p>
<p></p>
<p>心知天气的http天气获取url </p>
<p><a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&location=zhangjiajie&language=en">https://api.thinkpage.cn/v3/weather/now.json?key= &location= &language=en</a></p>
<p>加上 -Hans&unit=c 会有中文显示</p>
<p>我们用<a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&location=zhangjiajie&language=en">https://api.thinkpage.cn/v3/weather/now.json?key=&location=&language=en</a></p>
<p>就行了,上面url中 <a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&location=zhangjiajie&language=en">key=</a> 后面填写你自己申请的key <a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&location=zhangjiajie&language=en">location=</a> 后面填写你自己的城市拼音</p>
<p>输入好后可以自己先在浏览器测试下:</p>
<p>例如 :<a href="https://api.thinkpage.cn/v3/weather/now.json?key=24qbvr1mjsnukavo&location=beijing&language=zh-Hans&unit=c" target="_blank">https://api.thinkpage.cn/v3/weather/now.json?key=24qbvr1mjsnukavo&location=beijing&language=e</a>n</p>
<p>不出意外的话浏览器返回一串天气信息,如下图,有些地级市可能没有数据,那么你在 <a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&location=zhangjiajie&language=en">location=</a> 后面换成比你所在城市更大一点的城市再测试下即可</p>
<p> </p>
<p></p>
<p>好了,天气数据的接口有了,下一步就是怎么让ESP8266模块通过WiFi 自动连接网络,通过http请求天气数据,然后串口输出了</p>
<p>编写好LUA指令后串口效果如下</p>
<p>采用串口助手试试,效果完美</p>
<p></p>
<p> </p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>楼主辛苦了。写的很详细。沙发。顶一下。mark。</p>
<p>谢谢楼主,很细心得教程</p>
页:
[1]