提示1:銳米所有 LoRa 產品嚴格遵循國標標準的 LoRaWAN 協議。
提示2:您可以免費複製,修改和商用本項目,請註明銳米原創。
提示3:如果您有其他 LoRa 需求或建議,歡迎聯繫銳米 [email protected]
運行效果
LoRa 模塊入網後將自動休眠,Arduino Pro Mini 上電後休眠,將電流表串聯在上述電路中測量值爲 5.5uA。定時器每隔 4 秒喚醒 Arduino 閃爍 LED 電流增大,隨後又進入休眠。
ArduinoLoRa 休眠定時器喚醒 5.5uA 演示視頻
低功耗是核心技術
超過 80% 的 LoRa 終端將由電池供電,這樣一來,低功耗將是一個核心的技術挑戰,一旦電能耗盡設備將“罷工”,在某些場合電能意味着 LoRa 終端的壽命。
ArduinoLoRa+ 是銳米推出的低成本快速開發 LoRa 終端方案,即使開啓“定時器”精準喚醒,它也能達到令人滿意的低功耗(5.5uA),延長電池續航能力。
下面,逐步解密 ArduinoLoRa+ 定時器喚醒低功耗是如何實現的。
組件和材料
LoRa 開發板 x 1 採購鏈接
Arduino Pro Mini x 1 採購鏈接
電池盒 x 1 採購鏈接
7 號電池 x 2 採購鏈接
鱷魚夾 x 2 採購鏈接
杜邦線 x 8 採購鏈接
工具和軟件
Arduino IDE 下載鏈接
下載器 採購鏈接
數字萬用表 採購鏈接
USBasp燒錄器 採購鏈接
技術細節
改制 Arduino Pro Mini
如上圖所示,新購的 Arduino Pro Mini 需要卸掉 2 個器件:LDO(低壓差穩壓器)和電源指示燈處的 1k 電阻。
關閉低電壓檢測
安裝 USBasp 驅動程序
- 將 USBasp 插入 PC 的 USB 端口
- 雙擊打開“zadig-2.3.exe”
- 選擇“WinUSB”,點擊“Install Driver”
USBasp驅動程序 下載鏈接
Arduino Pro Mini 連接 USBasp
Arduino Pro Mini | 杜邦線 | USBasp |
---|---|---|
GND | 黑 | GND |
RST | 黃 | RST |
VCC | 紅 | VCC |
13 | 綠 | SCK |
12 | 白 | MISO |
11 | 藍 | MOSI |
- USBasp 的跳線 JP21(正視絲印,從左至右) 連接 1 和 2 引腳時 VCC=3.3V,用於連接 Arduino Pro Mini;連接 2 和 3 引腳時 VCC=5V,用於連接 Arduino UNO
Arduino Pro Mini 基於 ISP 下載的 6 引腳 參考鏈接
設置熔絲位,關閉低電壓檢測
- 徽標+R鍵運行,輸入“cmd”,回車,進入命令行終端
- 切換到 avrdude 路徑:cd C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
- 關閉低電壓檢測:avrdude -c usbasp -p m328p -U efuse:w:0xFF:m -C …/etc/avrdude.conf
燒錄 Arduino 休眠喚醒代碼
按下表連接 Arduino Pro Mini 和 下載燒錄器
Arduino | 杜邦線 | 下載燒錄器 |
---|---|---|
VCC | 紅 | 3.3 |
GND | 黑 | GND |
RXD | 綠 | TXD |
TXD | 黃 | RXD |
DTR | 棕 | DTR |
設置 Arduino IDE
添加 Narcoleptic 低功耗定時器庫
使用 Arduino IDE 打開工程,點擊"Sketch -> Include Library -> Add .ZIP Library…"
Narcoleptic 軟件庫 下載鏈接
編譯和燒錄下述休眠定時器喚醒代碼
#include <Narcoleptic.h>
void setup ()
{
// disable ADC
ADCSRA = 0;
} // end of setup
void loop ()
{
flash();
lowpwrDelay(4000); // During this time power consumption is minimised
}
void flash()
{
pinMode(LED_BUILTIN, OUTPUT);
for (byte count = 0; count < 10; ++count)
{
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(50); // wait for 200ms
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(50); // wait for 200ms
}
pinMode(LED_BUILTIN, INPUT);
}
void lowpwrDelay(long milliseconds)
{
while(milliseconds > 0)
{
if(milliseconds > 8000)
{
milliseconds -= 8000;
Narcoleptic.delay(8000);
}
else
{
Narcoleptic.delay(milliseconds);
break;
}//if
}//while
}
硬件接線
如下圖所示,使用杜邦線連接 Arduino Pro Mini 和 LoRa 開發板,並使用電池供電。