中国 - 标记 中国

请确认您选择的货币:

人民币
国际贸易术语:DDP
所有价格均包括关税和海关费用。

Bench Talk for Design Engineers

贸泽电子 - 博客

rss

Bench Talk for Design Engineers | The Official Blog of Mouser Electronics


自己动手,铁皮信箱亦可智能 - 手把手教您借助Arduino MKR FOX 1200让传统信箱接入物联网 Rafik Mitry

logos over a cityscape signifying a mailbox connected to the sigfox cloud connected to a smartphone

当您日复一日打开信箱,却发现里面空空如也,这会不会让您有种被「耍」的感觉?在本文所述的项目中,我们将创建一个简单的LPWAN(低功耗广域网)应用,将您的信箱连接到云,并且借助Arduino MKR FOX 1200开发板和Sigfox网络,实现每收到一封信件时发送通知。下面的视频展现了这个项目的构建过程和实际演示:

项目所涉技术概览

在这个项目中,我们将会用到以下产品和技术:

  • Arduino MKR FOX 1200
  • Sigfox

下面我们来具体了解一下它们。

Arduino MKRFOX 1200

Arduino MKR FOX 1200开发板提供了一种实用且经济高效的解决方案,让用户能够在项目中轻松添加Sigfox连接。它基于Microchip SAMD21 32位Arm® Cortex®-M0+微控制器Atmel ATA8520单片Sigfox射频收发器。MKR FOX 1200提供了丰富的I/O接口,支持低功耗Sigfox通信功能,并采用简单易用的Arduino软件集成开发环境(IDE)进行代码开发和编程,这些都使MKR FOX 1200开发板成为了紧凑型电池供电物联网(IoT)项目的理想选择。MKR FOX 1200开发板只需两节AA(五号)或AAA(七号)电池即可满足供电需求,通常情况下可以连续运行长达六个月时间而无需更换电池。

何为Sigfox?

Sigfox是一种低功耗广域网(LPWAN)网络,可为物联网(IoT)提供连接。Sigfox网络非常适合用于只需低频度发送少量数据的应用。用户每天可发送140条消息,每条消息可携带12字节的有效载荷。作为一种LPWAN网络,Sigfox功耗非常低,因此非常适合电池供电的应用。Arduino MKR FOX 1200自带了1年的Sigfox网络免费订阅。

下面,就让我们开始动手吧!

项目物料清单(BOM)

通过贸泽网站上的这份项目物料清单,您可以一次买齐以下必需组件: (该清单包含一个锂电池组和一个干电池盒,这两者只需购买其一即可。本文中使用安装了两节AA电池的电池盒为开发板供电。)

硬件组装

本节中,我们将指导您组装该项目的所有硬件:

  1. 将电磁接触开关连接到Arduino(导线的顺序无关紧要):
    • 一根导线从传感器连接到PIN 1(黄色跳线)
    • 另一根导线从传感器连接到GND脚(黑色跳线)
  2. 由于MKR FOX 1200开发板上没有电源开关,因此可以增设一个SPDT拨动开关以便在需要时关闭开发板的电源。请在连接电池盒之前先将SPDT开关焊接到电源/电压线(红色导线)上。
  3. 将电池盒连接到螺丝接线端子。
  4. 将天线连接到微型UFL连接器。

Circuit diagram for the hardware setup 

图1:硬件组装电路图(图源:贸泽电子)

软件配置

如果您是第一次使用Arduino MKR FOX 1200,必须先配置该开发板,并将其注册到Sigfox网络。如果您已经做过这些操作,则可以直接跳到后面的「代码概览」部分继续阅读。

  1. 在PC上安装Arduino IDE(可从Arduino网站下载)。
  2. 打开Arduino IDE,单击工具开发板开发板管理器,然后安装Arduino SAMD Boards (32-Bits ARM Cortex-M0+) 软件包。
  3. 单击项目加载库管理库,然后安装下面这些库:
    • Arduino SigFox for MkRFox 1200
    • Arduino Low Power
  4. 将开发板连接到PC,然后打开FirstConfiguration示例。该示例位于文件示例Arduino SigFox for MkRFox 1200
  5. 将代码刷入(上传)到开发板,然后打开串口监视器。
  6. 将串口监视器中显示的ID和PAC编号复制出来,在随后将开发板注册到Sigfox网络时需要使用这两个编号(图2)。

ID and PAC of the Arduino board  

图2:Arduino开发板的ID和PAC(图源:贸泽电子)

SigFox后台 - 注册开发板

下一步,我们需要将开发板注册到Sigfox网络。在浏览器中访问Sigfox后台(需要登录),按照其中的步骤注册您的开发板。该过程需要输入上一步中复制的ID和PAC编号。

Board registration on Sigfox backend

图3:在Sigfox后端注册开发板(图源:贸泽电子)

代码概览

现在,所有安装和准备工作都已完成,可以刷入贸泽GitHub仓库中提供的smart_mailbox.ino代码了。这些代码会指示Arduino进入睡眠模式,直到发生需要处理的事件为止,该事件只要信箱投递口被打开即会触发。在我们提供的代码中,主要有下面几个要点:

  • 中断函数中添加了一个变量,用于获取电池电压,以便计算电池的剩余电量。代码中采用的计算方法可以粗略估算出电池的电量状态,不过在理想状况下,还是需要通过充电电路来计算出电池的容量,并以此来计算出准确的电量信息。就本文中的项目而言,我们就直接采用代码中现有的算法(图4)。

Code snippet - voltage calculation 

图4:代码片段 - 电压计算(图源:贸泽电子)

  • 如果通过将两个磁铁彼此移开来触发Arduino,那么您应该会看到板上的LED灯闪烁,这是因为代码中打开了调试模式,但在省电模式的所有功能都测试完毕后,应关闭调试模式(图5)。

Code snippet - debug mode 

图5:代码片段 - 调试模式(图源:贸泽电子)

  • 禁用调试模式后,可能会遇到这样的问题:Arduino只触发了一次,就再也无法唤醒了。通过网络搜索,发现Arduino论坛上的这个帖子提到了这个问题,指出这是因为Sigfox库中存在问题而导致的,并且提供了一种规避方法。为此,我修改了sigfox.cpp文件,并将修改后的文件放到了前文所述的GitHub仓库中。如果您遇到了同样的问题,请使用该文件替换PC上的sigofx.cpp文件(位于C:/Documents/Arduino/libraries/Arduino_SigFox_for_MKRFox1200/src/ 路径中),然后重新刷板,以更新开发板上的库。

注意:本文提供的代码会使Arduino模块进入睡眠状态,这会导致COM串口上无法检测到开发板,因而刷板时需要按两下「RST」按钮,串口上才能检测到开发板。

SigFox后台 - 回调函数

下一步中,我们需要创建一个回调函数。该回调函数会将接收自MKR FOX 1200开发板的数据传输到您的电子邮箱地址。

  1. 在浏览器中访问Sigfox后台(需要登录)
  2. 单击以下各项:DEVICE TYPE(设备类型)→您的DevKit→Edit(编辑)

Device settings 

图6:设备设置(图源:贸泽电子)

  1. 然后您会进入到7所示的页面。确认Downlink mode(下行模式)中选中的是Callback(回调)。

Device Settings - Downlink Mode 

图7:设备设置 - 下行模式(图源:贸泽电子)

  1. 单击7所示页面左侧边栏中的CALLBACKS(回调),转到Callbacks页面,然后单击New(新建)。
  2. 选择Custom callback(自定义回调)(图8)。

 Device Settings - Custom callback

图8:设备设置 - 自定义回调(图源:贸泽电子)

  1. 设置自定义回调函数,步骤如下:
    1. 设置Type(类型)→DATA(数据)和UPLINK(上行),以及Channel(途径)→EMAIL(电子邮件)。
    2. 因为我们需要将剩余电量数据包含在1字节的有效载荷中发送到Sigfox服务器,故需要配置Custom payload(自定义有效载荷)。变量percentage(百分比)为8位无符号整数,这就是Sigfox服务器将会接收到的数据。
    3. 最后,在消息正文中添加 {customData#percentage} 这个变量,它在电子邮件中将会替换为接收到的电池电量百分比数值。

Callback function setup 

图9:回调函数设置(图源:贸泽电子)

安装

整个项目的最后一步,就是将所有组件和零件都安装到信箱上。把所有组件都固定在信箱门内侧,并将电磁接触开关固定到投递口上,然后将天线固定到信箱外面(建议尽可能不要把天线贴在金属表面上)。

Callback function setup

图10:将所有组件都安装到信箱上(图源:贸泽电子)

结论

本项目创建了一个简单的LPWAN应用,从而将传统的信箱转变为智能信箱。借助Arduino MKR FOX 1200可以非常轻松地连接到Sigfox网络并将数据发送到云端。此外,本项目还可以实现自我供电,只需在信箱上安装太阳能电池板并将其连接到充电电路即可。

 




« 返回


Rafik Mitry于2019年取得慕尼黑工业大学电气工程硕士学位后加入贸泽电子,他在该所大学中还从事过三年能源收集领域的研究工作。作为贸泽的技术营销工程师,Rafik撰写的内容独特而富含技术性,反映电子行业当前和未来技术趋势。除了紧跟最新技术趋势外,Rafik还是航空和网球的狂热爱好者


所有作者

显示更多 显示更多
按日期查看博客