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