×

Arduino在线气象站(NodeMCU)

消耗积分:0 | 格式:zip | 大小:0.46 MB | 2023-07-04

王帅

分享资料个

描述

大家好!我希望你已经喜欢我之前的教程“ Arduino Robot 4WR ”并且你已经准备好接受新的教程了,像往常一样,我制作了这个教程来指导你一步一步地制作你自己的电子项目。

在制作这个项目的过程中,我们试图确保在您选择制作自己的电子项目时,本教程将成为帮助您的最佳指南,因此我们希望本教程包含所需的文件。

在获得我们从JLCPCB订购的定制PCB以改善我们电子设备的外观后,这个项目非常方便,并且本指南中有足够的文档和代码,让您创建漂亮的气象站。

我们只用了 2 天就完成了这个项目,仅用了 1 天就得到了所有需要的零件并完成了硬件制造和组装,然后用了 1 天准备了适合我们项目的代码,然后我们就开始了测试和调整。

您将从本教程中学到什么:

  • 根据其功能为您的项目选择正确的硬件。
  • 了解气象站工作流程。
  • 准备威廉希尔官方网站 图以连接所有选择的组件。
  • 制作您自己的 PCB 设计。
  • 将电子部件焊接到 PCB 上。
  • 组装所有项目部分。
  • 开始第一个测试并验证项目。

第 1 步:气象站的工作原理!

pYYBAGOFeu2ASRcGAADBDPY1prc471.png
 

与往常一样,我以这个简短的描述开始我的项目,我们的项目基于NodeMCU开发板,该开发板已经包含一个 WiFi 模块,用于连接到互联网,以便接收天气预报更新并将其显示在已连接的 OLED 屏幕上通过 I²C 通信端口连接NodeMCU 。

为了使这一切顺利进行,一些库应该包含在源代码中。这些库是开源的,您可以直接从您的 Arduino IDE 添加它们

气象站还将从 Internet 获取时间和日期数据,并且要执行此功能,我们需要向NodeMCU提供网站,从中上传天气预报和时间日期数据。所有这些都将在本演示文稿的软件部分进行解释。

第 2 步:威廉希尔官方网站 图

poYBAGOFevCALhMoAAGa5MJlYE8470.png
 

这个项目非常基础,没有复杂性,我使用easyEDA在线平台准备了这个威廉希尔官方网站 图,其中包含该项目的所有必要组件以及一些附加部件,例如用于一些警报的蜂鸣器和一些LED输出,您可以拥有PDF原理图格式或下方下载部分的 PNG 格式。

Schematic_NodeMCU-weather-station_NodeMCU-weather-station_20190618012912.pdf

 

第 3 步:PCB 制作

 
 
 
poYBAGOFevWAO5osAAkgSV4bu7w232.jpg
 
1 / 5
 

准备好威廉希尔官方网站 后,我将这个威廉希尔官方网站 图转换成一个云形状的定制 PCB 设计,以适应我们的项目主题,我们现在所需要的就是制作这个威廉希尔官方网站 设计,所以我搬到了JLCPCB最好和最便宜的 PCB 生产商,以获得最好的PCB制造服务,JLC是一家规模大、设备精良、管理严格、质量上乘的专业PCB制造商。与往常一样,您只需点击几下即可上传 PCB 设计的 GERBER 文件并设置一些制造参数,而我只需等待三天即可收到我的订单。

正如您从照片中看到的那样,PCB 制作得非常好,这种云状将为我们的项目增添更好的外观

相关下载文件

您还可以下载此威廉希尔官方网站 的 Gerberfile。

第 4 步:外壳设计

 
 
 
poYBAGOFevqAAoaiAAX_zygBGi0644.jpg
 
1 / 7
 

我使用 Solidworks 软件设计了这个外壳,我们将在其中放置电子元件,然后我通过 CNC 激光切割机生产设计的零件。

您可以下载外壳部件的 DXF 文件

天气%2Bstation%2BDXF%2Bfiles.rar

 

第5步:成分

poYBAGOFev-APXFyAAiBpEKp3Gk199.jpg
 

现在让我们回顾一下这个项目的完整组件列表,所以我们需要:

★☆★ 必要组件(亚马逊链接)★☆★

我们从JLCPCB订购的 PCB

第 6 步:软件部分

 
 
 
pYYBAGOFtbSABzRvAAb_Btvcm04763.jpg
 
1 / 4
 

Arduino IDE 库设置

确保您的计算机已连接到 Internet,以便访问在线图书馆。运行 Arduino IDE 后,转到草图>>包含库>>管理库,将出现一个新窗口,显示您拥有的已安装库和可以下载的其他库,确保您已下载所有这三个库通过上面的照片,你可以通过他们的名字搜索它们(下载与我相同的版本)

  • 第一个库是 OLED 显示器,它将有助于使用 NodeMCU 板控制显示屏。
  • 第二个库将帮助您获得 NodeMCU 源代码。
  • 第三个库是在线流媒体库,因为互联网数据对于 MCU 来说是一个有点大的数据来解释它们,所以这个库将有助于将互联网大数据分割成一些小帧。

获得适当的库后,您将转到 IDE 示例并运行气象站演示正如您在上面的照片中看到的,该程序中包含所有下载的库,我们需要执行的下一步是插入WiFi ID 和密码,接下来我们转到Openweathermap网站,NodeMCU 将从该网站获取预测更新。

在此网站上创建帐户后,您将拥有唯一的 API 密钥,因此只需将其复制并粘贴到代码演示中即可。

以指导您完成。

 

第 7 步:硬件组装和演示

 
 
 
pYYBAGOFtbiAIZ-TAAWVU7av4PM766.jpg
 
1 / 14
 

现在一切准备就绪,让我们开始将电子元件焊接到 PCB 上,为此我们需要烙铁和焊芯线。

正如您所看到的,使用此 PCB 非常容易,因为它的制造质量非常高,并且不会忘记在焊接每个组件时将指导您的标签,因为您会在顶部丝绸层上找到每个组件的标签,指示其放置在板,这样你就可以 100% 确定你不会犯任何焊接错误。

我已将每个组件焊接到其位置,关于此 PCB,它是一个两层 PCB,这意味着您可以使用它的两面来焊接您的电子组件。

现在我们已经完成了硬件组装,一旦我们插入电源适配器,小工具就会开始显示天气预报。

这个项目非常容易制作,而且是一个了不起的项目,我们向任何制造商推荐它如何尝试创建自己的小工具,但仍然需要在我们的项目中进行一些其他改进,以使其更加黄油,这就是为什么我会等待为您的意见改进它。

最后一件事,确保你每天都在做电子产品。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'Arduino在线气象站(NodeMCU)',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);