“生物是在遗传、变异、生存斗争中和自然选择中,由简单到复杂,由低等到高等,不断发展变化的” — 《物种起源》 达尔文
提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议。
提示2:如果您有其他 LoRa 需求或建议,欢迎联系锐米 [email protected]
智联万物,让生活更美好,这是 LoRa 物联网的美好愿景。
现在,上百种传感器(执行器)即将接入 LoRa 物联网,这给产业界带来一个挑战—低成本快速开发 LoRa 终端。
为应对该挑战,我们推出一种“革命性”解决方案—ArduinoLoRa+传感器(执行器)
本方介绍批量生产 LoRa 终端的方法,实现从 1 到 10000。如果您需要从 0 到 1 打造原型机,请参考:
低成本快速开发 LoRa 终端:从 0 到 1
Makerbot 公司基于 Arduino 设计了 3D 打印机,很明显,它将 Arduino 必需的所有元件集成到一个自己设计的开发板上。
基于 Arduino 设计 3D 打印机
Makerbot 公司 Arduino 3D 打印机
同样,一旦完成了 Arduino LoRa 终端的原型机。量产时,我们完全可以按需设计 PCB:提取必需的元器件(AVR单片机,LoRa 模块,传感器等),轻松制作理想尺寸的 PCB。虽然外形与 Arduino 开发板不同,但完全兼容。
制作与 Arduino 硬件兼容的 PCB 非常简单。事实上,Arduino 官方提供了电路图与 PCB 布局设计,供大家下载使用。
Arduino UNO 硬件开源资料
Arduino Pro Mini 硬件开源资料
根据行业经验,如果 LoRa 终端仅小批量生产(<100),最好的方案是选用合适的 Arduino 开发板(常见为 Arduino Pro Mini),因为定制 PCB 和焊接生产是一件“费时费力又容易出错”的工作。
当然,如果 LoRa 终端需要大批量生产(>1000),这才需要考虑定制 PCB—节省 Arduino 开发板上不需要的元器件。
所幸的是,如 1 介绍的,定制 Arduino 兼容的 PCB 唯一需要的是一个合适的 AVR 单片机,而它批量价仅 ¥3。
从 0 到 1
从 1 到 100
从 100 到 10000
如果 LoRa 终端长时间使用电池供电时,例如在远程监控的场景下,此时电池或太阳能是唯一的选择,功耗就变得很重要了。
降低功耗是一把双刃剑—越趋向理想化,开发代价越大。从易到难的实现办法如下:
Arduino UNO 工作电流为 48mA,而 Arduino Pro Mini 工作电流为 8mA,UNO 开发板的 USB 接口芯片,点亮的 LED 和 3.3V
稳压器消耗了 40mA。
同样的 Arduino Pro Mini 电路板,当供电从 9V -> 5V -> 3.3V 切换时,工作电流相应从 42mA -> 22mA -> 8mA。
亮着的 LED 会消耗 2.1mA,光敏电阻会花费 3.3mA 电流,传感器/执行器需要更大的电流。除了仔细设计硬件外,软件要在这些部件“不需要工作”时断开电源。
以下 2 种办法都能将 Arduino 功耗降到 1mA 以下,它们都让 Arduino 进入休眠,只是唤醒的办法不同。
使用 Narcoleptic 库是一件容易的事,对于延时 1 秒,相比 delay(1000) 只需要修改为 Narcoleptic.delay(1000)
设置休眠模式为 SLEEP_MODE_PWR_DOWN,类型为 LOW 的引脚中断可以唤醒 Arduino。
关闭不使用的 AVR 功能模块可以节省少量的电能,实验发现关掉 5V,16Mz 的 Arduino Pro Mini 的所有模块节约 1.5mA。
使用 Arduino 的 Prescaler 库可以降低时钟频率,频率与功耗的关系大致如下(1MHz是拐点):
16MHz=7.8mA,8MHz=5.4mA, 4MHz=4.0mA,2MHz=3.2MA, 1MHz=2.6mA
当然,降低频率将使 Arduino 运行更慢,这可能会成为一个问题,需要仔细考虑。
如下图所示(实物拍摄),ArduinoLoRa+ 的低功耗可达 1.4uA,这不仅是行业第一的超低功耗,而且达到了器件极限 ArduinoLoRa 休眠极限 1.4uA
如下图所示,2 节 5 号碱性电池容量约 2890mAH,因为温湿度短时间变化不大,设每 10 分钟采集,电池可工作近 6 年。
终端电池寿命计算器
内置 Bootloader 是 Arduino 开发板最大的优势之一,它通过串口即可实现 MCU 为自己编程,这也是 Arduino 开发板从来不需要“编程器”的原因。
批量生产中仍然可以保留 Bootloader,这样,使用简单的 2 根连线(RxD 与 TxD )即可实现产品烧录固件。
许多供应商销售已经装好 Arduino Bootloader 的 AVR 单片机,如果价格合适,这是最便捷的方式。
当然,也可以自己动手为 AVR 单片机烧录 Bootloader(俗称“烧裸片”),只需要采购一个烧录器,选择对应 AVR 型号和电气属性(3.3V or 5V, 8MHz or 16MHz),点击:Tools -> Burn Bootloader
如果用户需要最大限度地使用 AVR 闪存空间(Bootloader 占用 256B~4kB,具体取决于 AVR 类型),或者不想使用标准的 Arduino 方式中的 RxD 与 TxD的 2 根连线上传程序(比如该接口被占用),那么可以直接使用 ICSP 接口加载已经编译好的程序。这需要使用编程器,如 USBasb 或 USBtinyISP。
得益于 Arduino IDE 的封装技术,通过隐藏大量的技术细节和简化开发流程。它让聪明的“玩家”总是使用简洁,高效的代码,设法让 Arduino 去做更有趣,更复杂的事情。
升级固件是 LoRa 终端生命周期中重要的一环,可能的原因有:修复bug,添加功能,升级协议,安全补丁,优化性能。
如“瑞士军刀”般灵活的 Arduino IDE 为升级固件提供便利。
大部分情况下,LoRa 终端的 AVR 单片机保留了 Bootloader,升级固件只需要使用串口工具连接 PC,使用 Arduino IDE 上传即可。
如上节所介绍,也有少数情况,LoRa 终端的 AVR 单片机没有 Bootloader,这得需要编程器升级固件。所幸的是 Arduino IDE 支持对 AVR 单片机编程,在 Tools -> Programmer 中选择对应的编程器,点击 Sketch -> Upload Using Programmer 即可启动。
Arduino IDE 甚至提供实用程序加载到一块 Arduino 开发板,使它变为一个编程器,实现给 AVR 单片机升级固件。当手头缺少编程器,此方法也可以解燃眉之急。