ArduinoLoRa 休眠定時器喚醒 5.5uA

提示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 號電池7 號電池 x 2 採購鏈接


鱷魚夾鱷魚夾 x 2 採購鏈接


杜邦線 x 8 採購鏈接

工具和軟件

Arduino IDEArduino IDE 下載鏈接


下載燒錄器下載器 採購鏈接


數字萬用表數字萬用表 採購鏈接


在這裏插入圖片描述USBasp燒錄器 採購鏈接

技術細節

改制 Arduino Pro Mini

改制 Arduino Pro Mini
如上圖所示,新購的 Arduino Pro Mini 需要卸掉 2 個器件:LDO(低壓差穩壓器)和電源指示燈處的 1k 電阻

關閉低電壓檢測

安裝 USBasp 驅動程序

  • 將 USBasp 插入 PC 的 USB 端口
  • 雙擊打開“zadig-2.3.exe”
  • 選擇“WinUSB”,點擊“Install Driver”
    WinUSB
    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

設置 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 開發板,並使用電池供電。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章