使用LoRa搭建一個雙向傳呼機(jī)
當(dāng)今的你,如果想使用無線發(fā)送數(shù)據(jù)已經(jīng)擁有了很多選擇:Wi-Fi,藍(lán)牙,Zigbee,以及蜂窩連接都是一些常用的選項。
但有一項比較新生的協(xié)議正在逐漸流行起來:基于LoRa的通信提供中距范圍內(nèi)(2公里至15公里)低功耗、低帶寬的通訊——其通訊距離取決于周圍環(huán)境的雜亂程度。
本文作者就自己動手做了一個基于LoRa的雙向傳呼機(jī),一起來看看~
LoRa源于迅猛發(fā)展的物聯(lián)網(wǎng),是使用分散光譜傳輸將遠(yuǎn)程傳感器和嵌入式設(shè)備連接到中心節(jié)點(diǎn)的技術(shù)。數(shù)據(jù)傳輸率通常在0.3-27kb/s,上限速率可達(dá)50kb/s:較慢的數(shù)據(jù)傳輸對應(yīng)著更長的傳輸距離。LoRa在最初版本專注于機(jī)器-機(jī)器通訊,但它極低的功耗吸引了喜歡鼓搗的人們?nèi)ラ_發(fā)其他應(yīng)用。
正如一部分人總是對嘗試新的硬件技術(shù)感興趣,我也想知道LoRa這項技術(shù)是否能用于人類間的通訊。數(shù)據(jù)傳輸?shù)乃俾蔬^低所以通話功能是不現(xiàn)實(shí)的,但有一種令人充滿敬意的設(shè)備怎么樣呢:我或許能做一只基于LoRa的雙向傳呼機(jī)。
雖然作為一名硬件工程師的我工作內(nèi)容包含天線分析,但我對射頻電路本身卻不太熟悉。因此第一步我訂購了兩個AI-Thinker的Ra-o2 LoRa模塊和兩個基于ATmega328的微控制器(即單片機(jī)),翻出我的面包板,搭建概念驗(yàn)證設(shè)計。不久之后,我就實(shí)現(xiàn)了在屏幕上顯示發(fā)送和接收到的字母和數(shù)字組成的字符串,使用的屏幕是一塊為Nokia手機(jī)設(shè)計的84*48像素的LCD屏。
當(dāng)然,你是不能拿一塊面包板直接去做場地測試的,所以我設(shè)計了一個印刷電路原型,這個原型機(jī)復(fù)制了我面包板的設(shè)計,還帶上了電池和一些控制按鈕。
場地測試時正好是德國的寒冬,我和一位伙伴可不想在戶外長距離跋涉,但我們證實(shí)了一公里開外的距離的通信可行。嚴(yán)寒的天氣也暴露出一個意料之外的問題:傳呼機(jī)中的一只用鎳氫電池供電,另一只則使用鋰離子電池。用鎳氫電池的一只在低溫中使用無虞,但鋰離子驅(qū)動的那只則由于電壓跌落導(dǎo)致了微控制器的重啟。
這只雙向傳呼機(jī)使用LoRa的低功耗廣播協(xié)議,有效傳輸距離在10公里至15公里。一個現(xiàn)成的LoRa接收器模塊適配在定制的PCB板上,同時附帶一個用戶友好的顯示屏以及導(dǎo)航控制。一個實(shí)時時鐘模塊負(fù)責(zé)追蹤當(dāng)?shù)貢r間。
接下來我們需要一個更精致的設(shè)計。
最明顯的升級體現(xiàn)在屏幕上,我用了一塊128*64像素分辨率的LCD屏。同時也對微處理器進(jìn)行了升級:我需要更多的算力,但也仍然想待在Arduino適配的生態(tài)中,所以我選擇了Atmel SAMD21 Cortex Mo,可以用一系列“后AVR(Automatic Voltage Regulation,自動電壓調(diào)整)”的Arduino微控制器驅(qū)動。
我還把AI-Thinker的模塊替換為更流行的RFM95W接收器。最終的設(shè)計還包含了一只用于靜音模式的傳呼機(jī)馬達(dá),一個用于操作的3向?qū)Ш介_關(guān),以及一個SD卡適配器。由于我天線分析的經(jīng)驗(yàn),PCB板二代迭代中大部分微調(diào)都專用于確保連接接收器到天線的走線要是最佳的50歐姆阻抗。傳輸線在PCB的另一邊使用了接地面,所以利用PCB的厚度計算后得出我需要一條1mm寬的走線。對于接地面連接天線基座和接收器模塊的方式我也多加調(diào)整,以便獲得最佳的高頻表現(xiàn)。
此外,我選擇了時髦的黑色作為PCB板阻焊層,結(jié)果產(chǎn)生了又一個意外結(jié)果。我用來貼片的回流焊機(jī)使用紅外加熱器,在我第一次貼片的時候,表面的黑色阻焊層受熱比我常用的綠色PCB板更快。結(jié)果就是焊點(diǎn)呈現(xiàn)出經(jīng)典過熱金-棕色污漬——我竟成了時尚的受害者!
在我進(jìn)行調(diào)整搞定一切組裝后,開始測試電路板,這時候我意識到開關(guān)按鈕控制存在一個問題:按下電源鍵時,電壓調(diào)節(jié)器開始向SAMD21的微處理器施加3.3V電壓。
其中存在一項安全功能,如果控制器未在2s內(nèi)收到來自處理器啟動的確認(rèn),就會中斷供電。但SAMD21需要2.5s才能做出應(yīng)答!我只好去查控制器規(guī)格書,發(fā)現(xiàn)了終極解決方案,規(guī)格書里一條說明表示該控制器可以通過調(diào)節(jié)參數(shù)實(shí)現(xiàn)10s等待。隨著新開關(guān)控制器的到位,我用熱風(fēng)槍把新部件固定到了相應(yīng)位置。
傳呼機(jī)平臺:Arduino適配的微處理器控制LoRa模塊,而用戶可以把任何現(xiàn)成的外圍設(shè)備,配合支持I2C協(xié)議的Arduino庫使用,外圍設(shè)備直接通過PCB板上的專用插座連接。
測試中還出現(xiàn)了另一個小問題:我把板載實(shí)時時鐘的數(shù)據(jù)線接反了,這是用來計當(dāng)?shù)貢r間,并通過I2C協(xié)議和SAMD21相連的。修好這個問題后,我的傳呼機(jī)正式完成,我將它命名為LoRaNicator。
因?yàn)橄啾染幊涛覍τ布O(shè)計更感興趣,整個系統(tǒng)軟件構(gòu)成十分基礎(chǔ),僅僅負(fù)責(zé)用戶間的文本信息交換。我希望其他人或許能夠?qū)oRaNicator當(dāng)作一個開源平臺,利用好這一低功耗、基礎(chǔ)構(gòu)造簡單的通訊方式,制作出更多更復(fù)雜的應(yīng)用。我也在嘗試讓LoRaNicator硬件擴(kuò)展變得更容易,通過一系列可外接I2C設(shè)備的外部針腳,讓它能夠連接諸如GPS單元或其他類型的傳感器。
相關(guān)報道:
https://spectrum.ieee.org/geek-life/hands-on/build-a-twoway-pager-with-lora
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。