×

Arduino物联网云智能家居与Alexa使用NodeMCU

消耗积分:0 | 格式:zip | 大小:1.32 MB | 2023-06-25

张秀兰

分享资料个

描述

在这个物联网项目中,我展示了如何使用 ESP8266 Arduino 使用Arduino IoT CloudAlexa制作基于物联网的智能家居,以通过语音命令、红外遥控器和手动开关控制 4 台家用电器。

 
 
 
poYBAGSBpziATu1UAAICdDB00Go176.png
 
1 / 2
 

如果互联网不可用,您可以通过红外遥控和手动开关控制家电。

  • 使用Alexa控制设备。
  • 使用 Arduino EEPROM来记住以前的状态
  • 用红外遥控器控制电器。
  • 使用开关或按钮手动控制设备
  • 在 Amazon Alexa 应用程序中监控实时反馈室温。
  • 无需互联网即可手动控制家电。
  • 用于该项目的所有资源都是免费的。

因此,如果您按照所有步骤操作,只需使用 Arduino UNO、NodeMCU 和继电器模块即可轻松制作此物联网项目。

虽然 PCB 不是强制性的,但我使用 PCB 使威廉希尔官方网站 紧凑并使项目具有专业外观。

这个 Arduino 物联网云项目如何运作?

pYYBAGSBp0WAElBVAAFNP9-jn7o155.png
 

此 Arduino ESP8266 家庭自动化按以下步骤工作。

  • 当您要求Alexa控制电器时,它会将信号发送到 Arduino 物联网云服务器。
  • NodeMCU通过互联网接收来自Arduino IoT Cloud的信号
  • NodeMCU通过串行终端向 Arduino 发送相同的信号。
  • Arduino UNO将处理该信号并打开或关闭继电器。
  • Arduino通过串行通信将反馈发送到 NodeMCU 。
  • NodeMCU 通过互联网向Arduino 物联网云服务器发送反馈。
  • 可以在Amazon Alexa应用程序中监控实时反馈
pYYBAGSBp0iAWCVGAAKEGslQUkw408.png
 

此物联网项目所需的组件(无 PCB)

  • 阿杜诺UNO
  • NodeMCU ESP8266
  • 1838红外线接收器(带金属外壳)
  • DHT11传感器
  • 4 通道 5V SPDT 继电器模块
  • 开关或按钮
  • 5V 直流电源。
pYYBAGSBp0uAN0xeAAHfludL_fY632.png
 

Arduino 控制继电器 PCB 所需的组件:

  • Atmega328P微控制器
  • ESP8266 ESP01
  • PC817 光耦合器(4 个)
  • 510 欧姆 0.25 瓦电阻器(4 个)(R1 -- R4)
  • 1k 0.25 瓦电阻器(6 个)(R5 -- R10)
  • 2k 0.25瓦电阻
  • 4.7k 0.25瓦电阻
  • 10k 0.25 瓦电阻器(2 个)
  • 22pF陶瓷电容
  • 104陶瓷电容
  • 220uF 25V 电容 (2no)
  • 1uF 箱形电容 (1no)
  • 16MHz晶振
  • LED 5 毫米(6 个)
  • 1N4007 二极管(4 个)(D1 -- D4)
  • 按钮(8 个)
  • BC547 三极管(4颗)
  • 继电器 5v (SPDT)(4 个)
  • 终端连接器
  • 跳线 (5no)
  • 开关 (1no)
  • 海凌交直流220v-5v

ESP8266 Arduino 控制继电器的威廉希尔官方网站 图

pYYBAGSBp1aADKQvAAHo3zLJmHI468.png
 

威廉希尔官方网站 非常简单,我使用数字引脚D4、D5、D6 和 D7来控制 4 个继电器。

数字引脚D10、D11、D12 和 D13与开关连接以手动控制 4 个继电器。

红外接收器的输出脚接A0 ,DHT11传感器接A1

我在 Arduino IDE 中使用了INPUT_PULLUP函数,而不是使用上拉电阻。

我使用D2 作为 RX ,使用D3 作为 TX与 NodeMCU 模块进行串行通信。

如果您使用锁存开关,则只需将按钮连接到数字引脚和 GND,而不是按钮。

我用5V手机充电器给智能继电器模块供电。

在高压下工作时,请采取适当的安全预防措施。

使用 ESP8266 NodeMCU 的 Alexa 控制继电器

poYBAGSBp2KANovwAAE03xM86Rg260.png
 

如果 NodeMCU 连接到 WiFi,您可以通过Amazon Alexa App控制家电。

您还可以要求Alexa从世界任何地方打开和关闭设备。

对于这个家庭自动化项目,您不需要任何 Echo DOT 或其他 Alexa 设备。

如果 NodeMCU 与 WiFi 连接,您还可以通过Arduino IoT Cloud 网络仪表板Arduino IoT Cloud Remote 移动应用程序控制家电。

带红外遥控和手动开关的控制继电器

poYBAGSBp22AUu3HAAE5UlYvTAI344.png
 

您始终可以使用红外遥控和手动开关控制继电器。

我将在以下步骤中解释如何从任何遥控器获取红外代码(十六进制代码)。

如果 NodeMCU 连接到 Wi-Fi,您可以在Amazon Alexa AppArduino 云仪表板中监控实时反馈。

如果 WiFi 不可用,您仍然可以使用红外遥控和手动开关控制继电器。

当 WiFi 可用时,NodeMCU 将自动重新连接 WiFi。

为这个智能家居系统设计 PCB

pYYBAGSBp2-Aeq9TAAHZwYGOGP4883.png
 

为了使威廉希尔官方网站 紧凑并具有专业的外观,我在测试了智能继电器模块的所有功能后设计了 PCB。

您可以从以下链接下载此家庭自动化项目的 PCB Gerber 文件:

用于下载 PCB Gerber 文件的 GitHub 链接

为什么要使用 JLC SMT 服务?

在JLCPCB的一站式在线平台上,客户只需支付8.00美元的安装费(每个接头0.0017美元)即可享受低成本、高质量、快速的SMT服务

每月 27 美元的新用户优惠券和 24 美元的 SMT 优惠券。

访问https://jlcpcb.com

JLCPCB SMT 零件库200k+库存元件(689 基本元件和 200k+ 扩展元件)

零件预购服务https://support.jlcpcb.com/article/164-what-is-jlcpcb-parts-pre-order-service

建立个人图书馆库存,为现在或将来保存零件

组装将支持来自 Digikey、mouser 的超过1000 万个部件。

从 JLCPCB 订购 PCB 组件的步骤

pYYBAGSBp3KAfb78AAB6BGHOEck371.jpg
 

1. 访问https://jlcpcb.com登录/注册。

poYBAGSBp3SAPm1PAABuDUaNZf4670.png
 

2. 单击立即报价按钮。

pYYBAGSBp3iAVuILAABmxqh9E4A004.jpg
 

3. 单击“添加您的 Gerber 文件”按钮。然后浏览并选择您下载的 Gerber 文件。

4. 设置所需参数,如数量、PCB 遮蔽颜色等。

pYYBAGSBp3uAS1onAAB57aCrmCE831.png
 

5. 选择组装面和 SMT 数量。

pYYBAGSBp32ACp5fAABUp-xPc5I520.png
 

6. 现在上传BOMPickAndPlace文件。

poYBAGSBp3-AYv85AABk-P0yr-w096.png
 

7. 现在确认您要通过 SMT 服务焊接的所有组件。

8. 单击“保存到购物车”按钮。

选择送货地址和付款方式

pYYBAGSBp4KANYRPAABYNmZPgJI563.jpg
 

6. 键入送货地址。

7. 选择适合您的运输方式。

8. 提交订单并进行付款。

您还可以从JLCPCB跟踪您的订单

poYBAGSBp4WATQ5_AADDpQF6-P0376.png
 

我的 PCB 需要 3 天时间才能制造出来,并使用 DHL 交付选项在一周内送达。

pYYBAGSBp4eAEwbIAADqt-LeH3c731.png
 

PCB 包装完好,质量非常好,价格实惠。

创建 Arduino 物联网云免费帐户

pYYBAGPi_WGACcdkAAB40raLDp4033.png
 

对于这个智能家居项目,我使用了 Arduino Cloud Free 计划。

单击以下链接创建一个Arduino IoT Cloud帐户。

https://store.arduino.cc/digital/create

  • 单击“创建一个”。
poYBAGPi_WSANpmDAABrFEr_Z5g151.png
 
  • 输入您的生日,然后单击“下一步”。
poYBAGPi_WeAbVu5AAB6sgHTsRY463.png
 
  • 输入电子邮件 ID、用户名、设置密码。然后点击“注册”。
poYBAGPi_WmAdQYjAAB3S5Vtbdk545.png
 
  • 现在点击“物联网云”。

在 Arduino 物联网云中添加 NodeMCU ESP8266 设备

pYYBAGSBp5OAWwdnAABZFIlSSoE737.png
 
  • 单击右侧的选择设备。
pYYBAGSBp5WAfKlVAABajGM9sag123.png
 
  • 选择“Set up a third Party device” ,然后选择设备类型为ESP8266 ,设备型号为NodeMCU 1.0。
poYBAGSBp5iASrUSAABlvQTCfM8096.png
 
  • 您将获得代码中需要的设备 ID密钥
  • 点击“继续”,您会发现设备已添加。
pYYBAGSBp5uAWDYOAABoKUOq-Zg901.png
 

可以看到,设备已添加。

在 Arduino IoT Cloud 中添加变量

现在要控制 4 个继电器,您必须添加 4 个变量。

单击“添加变量”按钮。

poYBAGSBp52AG3LPAABbGMxsFRs877.png
 

输入名称,然后选择Alexa 兼容开关类型。变量权限将是“读写”,变量更新策略将是“更改时”。

pYYBAGSBp6CACsXXAABhcvJd-3g275.png
 

以类似的方式,您必须添加接下来的 3 个变量。

poYBAGSBp6KAEbphAABiHH2gPsI486.png
 

对于室温读数,请选择Alexa compatible Temperature Sensor 变量更新策略将是“定期”,并提及间隔时间。

设置 Arduino 物联网云仪表板

pYYBAGSBp6SAdu_-AAA0zAFwyZk783.png
 
  • 现在单击顶部的仪表板以设置 Arduino 云仪表板。
  • 然后单击构建仪表板
  • 之后单击“编辑”图标。然后单击“添加”并选择“切换”。
poYBAGSBp6eAHgFfAABAvMVYOWY820.png
 
  • 为这个 Switch 命名,然后将一个变量链接到这个 switch 小部件。
pYYBAGSBp6mARrdmAABDQy03Lpg290.png
 
  • 然后点击完成。
pYYBAGSBp6yAC4ZJAABFVFWiKOc202.png
 

以类似的方式,您必须添加总共 4 个开关小部件来控制 4 个继电器。

poYBAGSBp66AHifoAACWxoXnQdI395.png
 

对于温度,选择Gauge widgets 并链接 Temperature 变量。您还可以设置MINMAX 限制。

pYYBAGSBp7CAMXgfAACnd8SXZ2U381.png
 

从远程获取 IR 代码(十六进制代码)

pYYBAGSBp7OAJBYbAACqRL2qv_c949.png
 

现在,要从遥控器获取十六进制代码,首先,我们必须将红外接收器输出引脚连接到 Arduino UNO的A0 引脚。并在 VCC 和 GND 之间提供 5V。IR 接收器必须有金属外壳,否则,您可能会遇到问题。

poYBAGSBp7WAY71FAACVMTl8Xbs796.png
 

然后按照以下步骤获取十六进制代码:

  • 在Arduino IDE 中安装IRremote库。
  • 下载附件代码,并上传到Arduino UNO。
  • 打开串行监视器,波特率为9600。
  • 现在,按下红外遥控按钮。
  • 相应的十六进制代码将填充在串行监视器中。
  • 将所有十六进制代码保存在文本文件中。您必须在主草图中更新这些十六进制代码。

使用 Arduino IDE 对 ESP8266 NodeMCU 进行编程

poYBAGSBp7eAUz4yAACX3r5cO4A773.png
 

为了对 NodeMCU 进行编程,我使用了 Arduino IDE。

下载附件代码。

首先,您必须安装ArduinoIoTCloud 库在安装过程中,它可能会要求安装其他依赖项。然后点击全部安装。

pYYBAGSBp7qAcX4dAAFeh21k9ZA786.jpg
 

在代码中,输入以下详细信息。完成所有这些更改后,您可以将代码上传到 NodeMCU。

使用 Arduino IDE 对 Arduino UNO 或 ATmega328P 进行编程

pYYBAGSBp72AGQzsAAJTVu2AGB4087.png
 

poYBAGSBp8CALfGFAABoH3LZciY649.png
 

但是,如果您不使用 PCB,则可以直接将 Arduino UNO 与笔记本电脑连接。

对于主草图,您需要安装以下库

然后你必须更新红外遥控器草图中的十六进制代码。

对于瞬时开关,使用代码:Code_ArduinoUNO_EEPROM_WiFi_IR_Button_4Relay.ino

对于锁存开关,使用代码:Code_ArduinoUNO_EEPROM_WiFi_IR_Switch_4Relay.ino

为 Arduino 物联网云配置 Alexa 应用程序

poYBAGPi_eyAbfKhAAC_JyqiihM336.jpg
 

从 Google Play 商店或 App Store下载并安装Amazon Alexa App 。

  • 点击“更多”。
  • 然后选择“技能和游戏”。
  • 搜索 Arduino 并点击“ Arduino ”。
  • 点击“启用使用”。

将 Arduino 云设备与 Alexa 连接

pYYBAGPi_fOARo2NAACRMdcYX2o273.jpg
 

使用 Arduino Cloud 凭据登录。

  • 点击关闭
  • 点击“发现设备”。添加设备需要一分钟时间。在此期间,NodeMCU 应连接到 WiFi。
  • 点击“设备”,然后点击“开关”以查看所有设备。

因此,所有来自 Arduino IoT Cloud 的设备都将添加到 Amazon Alexa App。

连接家电

pYYBAGSBp8iAUHMZAAEz8XUa7vk761.png
 

按照威廉希尔官方网站 图用继电器模块连接4台家电。

在高压下工作时,请采取适当的安全预防措施。

将 110V/230V 电源连接到 PCB。

最后!!Arduino 云智能家居系统已准备就绪

pYYBAGSBp8uAFp1HAAF963RrBqA148.png
 

现在您可以智能地控制您的家电。

我希望您喜欢这个 Arduino IoT 和 Alexa 控制家庭自动化项目。我已经分享了这个项目的所有必需信息。

如果您能分享宝贵的反馈意见,我将不胜感激。另外,如果您有任何疑问,请写在评论部分。

谢谢你,快乐学习。


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

评论(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物联网云智能家居与Alexa使用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);