ylyfxzsx 发表于 2020-2-16 12:30

玩转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&nbsp; SDK3.0.1&nbsp; 固件网站给的各种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>&nbsp;</p>

<p>好了,接下来我们开始进行LUA编程,先下载一个 Esplorer,然后连接上模块,因为我们还没有编写应用文件,所以提示&nbsp;</p>

<p>&ldquo;lua: cannot open init.lua&rdquo;</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&nbsp;</p>

<p><a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&amp;location=zhangjiajie&amp;language=en">https://api.thinkpage.cn/v3/weather/now.json?key= &amp;location= &amp;language=en</a></p>

<p>加上 -Hans&amp;unit=c 会有中文显示</p>

<p>我们用<a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&amp;location=zhangjiajie&amp;language=en">https://api.thinkpage.cn/v3/weather/now.json?key=&amp;location=&amp;language=en</a></p>

<p>就行了,上面url中&nbsp;<a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&amp;location=zhangjiajie&amp;language=en">key=</a>&nbsp;后面填写你自己申请的key&nbsp; &nbsp;<a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&amp;location=zhangjiajie&amp;language=en">location=</a>&nbsp;&nbsp;后面填写你自己的城市拼音</p>

<p>输入好后可以自己先在浏览器测试下:</p>

<p>例如 :<a href="https://api.thinkpage.cn/v3/weather/now.json?key=24qbvr1mjsnukavo&amp;location=beijing&amp;language=zh-Hans&amp;unit=c" target="_blank">https://api.thinkpage.cn/v3/weather/now.json?key=24qbvr1mjsnukavo&amp;location=beijing&amp;language=e</a>n</p>

<p>不出意外的话浏览器返回一串天气信息,如下图,有些地级市可能没有数据,那么你在 &nbsp;<a href="https://api.thinkpage.cn/v3/weather/now.json?key=SlsgmH1x1pvUkqqUY&amp;location=zhangjiajie&amp;language=en">location=</a>&nbsp;后面换成比你所在城市更大一点的城市再测试下即可</p>

<p>&nbsp;</p>

<p></p>

<p>好了,天气数据的接口有了,下一步就是怎么让ESP8266模块通过WiFi 自动连接网络,通过http请求天气数据,然后串口输出了</p>

<p>编写好LUA指令后串口效果如下</p>

<p>采用串口助手试试,效果完美</p>

<p></p>

<p>&nbsp;</p>

<p>&nbsp;</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>

nemon 发表于 2020-3-13 00:23

<p>楼主辛苦了。写的很详细。沙发。顶一下。mark。</p>

symic 发表于 2020-3-15 10:08

<p>谢谢楼主,很细心得教程</p>
页: [1]
查看完整版本: 玩转Node MCU ESP8266 LUA实现串口输出天气信息