射頻通訊晶元有很多種,但是一般在同樣功耗下,距離沒有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
基於arduino
的sx1278
驅動有(測試使用順序):
最終選用的是arduino-lora,使用radiolib 在實現雙向通行上遇到問題(c++功力不夠)。
arduino-lora最大的好處就是簡化了很多晶元引數的配置,如果業餘選手要配置好引數能夠實現兩個模組通訊是個艱鉅的挑戰,這也是串列埠lora模組的優勢,不用去關心複雜的通訊引數配置。
閱讀arduino-lora**,你會發現很多引數都有範圍判斷的預設值,如果設定超出範圍也不會出錯。
要實現模組連通,spi接線基本不會有問題。最重要的是nss
、rest
、dio0
這三個不能接錯,對於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 ...