使用Arduino Nano驅動Lora模組

2021-10-03 05:56:07 字數 1847 閱讀 5567

射頻通訊晶元有很多種,但是一般在同樣功耗下,距離沒有lora遠;同等範圍下,沒有lora節能。

lora通訊只適用於低速率,高延時的場合,與wifi正好相反。

lora作為物聯網的一種通訊技術選型,正好是移動通訊網路,wifi的補充。

我使用乙個arduino nano 來驅動lora模組,另外加了乙個bmp085(i2c介面)氣壓感測器,乙個光敏電阻,乙個按鈕。

使用plantformio平台開發。(比arduino ide好用很多)

實現功能有:

一般串列埠模組連線相對簡單,與其他無線模組at指令不同(例如:藍芽模組、gprs模組),還需要對gpio口連線控制引腳完成狀態配置操作,我想這個是因為需要比達到比較快的切換速度。

spi口介面直接操作暫存器完成對晶元的操作和資料的傳送接收。優點是可以自定義自己的通訊協議,而且是要使用的是同種sx127x系列的晶元的模組都可以相互通訊。

串列埠模組內部實際是有乙個微控制器控制lora晶元,實現的自己的一套通訊協議,一般同乙個廠家的模組才可以互相通訊。

按鈕接到d3,使用中斷引腳

sck  <----> d13

miso <----> d12

mosi <----> d11

nss <----> d10

rest <----> d09

dio0 <----> d02 (中斷)

sda  <----> a4

scl <----> a5

led  <----> d06

key <----> d03

光敏 <----> a2

基於arduinosx1278驅動有(測試使用順序):

最終選用的是arduino-lora,使用radiolib 在實現雙向通行上遇到問題(c++功力不夠)。

arduino-lora最大的好處就是簡化了很多晶元引數的配置,如果業餘選手要配置好引數能夠實現兩個模組通訊是個艱鉅的挑戰,這也是串列埠lora模組的優勢,不用去關心複雜的通訊引數配置。

閱讀arduino-lora**,你會發現很多引數都有範圍判斷的預設值,如果設定超出範圍也不會出錯。

要實現模組連通,spi接線基本不會有問題。最重要的是nssrestdio0這三個不能接錯,對於arduino板dio0一定要接在有中斷的引腳上

dio0也稱irq引腳,在模組有資料接收,傳送完畢後會有乙個電平指示(高度微控制器,要接受資料或者資料傳送完畢),所以必須接到中斷引腳,普通gpio腳速度達不到。

const int cspin = 7;          // 也就是nss介面

const int resetpin = 6; // reset引腳

const int irqpin = 2; // 必須是中斷引腳,arduino nano只有2、3腳為中斷

初始化模組

lora.setpins(cspin, resetpin, irqpin);// set nss, reset, dio0 pin

if (!lora.begin(433e6))

使用arduino-lora的例子程式,如果接線正確,那麼arduino中燒入程式,會列印出sx1278的暫存器資訊。

參考鏈結

lorapingpang系統設計-許新天的部落格

MongoDB簡單使用 驅動

c 中可以通過官方的驅動mongodb.drvier來使用,使用nuget安裝即可。install package mongodb.driver bson文件操作 using mongodb.bson using mongodb.driver var client new mongoclient m...

資料驅動的使用

資料驅動 ddt 使用需要結合unittest pip install ddt 使用方法一 from ddt import ddt,data ddt class a unittest.testcase data 引數1,引數2,引數3。說明 引數型別可以為列表,字典,但是每個引數是以逗號分隔 def...

RT Thread SPI裝置驅動使用

1 註冊spi匯流排到系統中 int rt hw spi init void init board export rt hw spi init 這裡已經使用rt hw spi init自動將選擇的spi匯流排註冊到了系統中,所以不再需要手冊註冊。函式呼叫流程為 rt hw spi bus init ...