構建一個2.4GHz無線網(wǎng)絡分析儀,可兼作遠程(LoRa)收發(fā)器
快速預覽
呈現(xiàn)DualCast !我最新的(也是最先進的)項目。它是一種緊湊型無線設備,除了能夠通過LoRa技術發(fā)送915MHz AES-128加密的遠程命令外,還能夠分析2.4GHz Wi-Fi網(wǎng)絡上的實時流量。(默認設置下最高可達一公里!)
翻轉180°以激活Wi-Fi模式。
此外,它還配備了許多傳感器,如用于大氣傳感的BME280,用于方向檢測的BMI323,以及用于快速精確測量0-6米距離的VL53L4CX激光雷達。(我只是想,“為什么不呢?”)
我對激光雷達印象非常深刻,因為它比我在智能手表項目中使用的激光雷達有了很好的升級。與室內卷尺相比,我已經(jīng)能夠得到基本相同的距離測量值。它還附帶了許多額外的數(shù)據(jù),以確保您擁有總測量精度所需的一切,例如環(huán)境光,公差等(所有來自ST VL53L4CX SDK的真實數(shù)據(jù)!)
該設備作為Wi-Fi-LoRa混合設備的雙廣播功能也使其能夠在各種無線環(huán)境中發(fā)揮作用。在分析器模式下,您可以簡單地掃描活動2.4GHz網(wǎng)絡,然后選擇您想要分析的網(wǎng)絡。從那里,您可以監(jiān)聽實時信標或數(shù)據(jù)幀,以分析RSSI、活動設備mac、目標mac、幀長度和數(shù)據(jù)速率。
這在分析誰在與網(wǎng)絡通信時非常有用(以防你擔心鄰居竊取了你的Wi-Fi),或者在識別網(wǎng)絡流量以確定最快的網(wǎng)絡時非常有用。如果你只是想在家里找到一個信號強度最好的地方來設置你的桌面,它也很有用。稍后我將詳細介紹其工作原理。
完成后,只需將DualCast翻轉180度(字面意思),使其進入LoRa模式。在這種模式下,您可以與自己的天氣或其他傳感器站,調度命令(鎖/開鎖,開/關燈等)或任何其他應用程序通信,其中獨立的遠程信號將是有用的。您可以將其視為物聯(lián)網(wǎng)指揮中心,您可以在其中安全地與所有其他自定義設備進行通信。只需單擊要發(fā)送的命令。(最多255!)
為了方便您,我還構建了一個定制的LoRa接收器(開源),用于解密由DualCast發(fā)送給它的AES-128遠程信號,并執(zhí)行您希望它執(zhí)行的任何任務。但最好的部分是,您可以使用它,而無需觸及源代碼的一行!
默認情況下,這是通過基本gpio實現(xiàn)的。在DualCast(發(fā)射器)上,只需簡單地發(fā)送一個號碼。然后,這個數(shù)字將根據(jù)您輸入的唯一密鑰進行加密,以確保只有您可以發(fā)送命令。當接收方收到消息時,它將使用相同的密鑰(您事先告訴它)對其進行解密,然后將相應的gpio設置為高(對應于您以二進制形式發(fā)送的數(shù)字)。從那里,只需將Arduino, ESP32 DevKit或其他任何東西連接到gpio,當該序列變高時,讓它執(zhí)行您的命令。EZPZ !我將在本文后面詳細介紹它是如何工作的。這里是Arduino草圖示例。
不過,如果你更喜歡直接使用接收器,那也完全沒問題!出于這個原因,我已經(jīng)為UART, I2C和PWM斷開了引腳,以將其與您想要的任何接口連接。此外,如果你需要的話,它還可以很容易地連接到農村命令的電池上。
但是如果你想做一對多廣播呢?不用擔心,只需讓您的其他接收器使用相同的鍵,并讓每個接收器偵聽它們正在等待的唯一命令。(例如:廚房里的監(jiān)聽器監(jiān)聽的是5,而臥室里的監(jiān)聽器監(jiān)聽的是28。)
經(jīng)過一整天的發(fā)送命令/收集傳感器數(shù)據(jù)和探索無線世界后,DualCast上內置的鋰離子聚合物(LiPo)電池可以通過USB-C電纜安全輕松地充電,就像接收器上一樣。
當然,像我所有的其他項目一樣,如果您想根據(jù)自己的需求進行編輯,DualCast是完全開源的。出于這個原因,我還添加了一些額外的gpio,它們可以用于您可能需要的任何不同目的。
現(xiàn)在讓我們來看看這個項目是如何工作的!
工作的概念
這個項目的大腦是一個STM32H563微控制器(MCU)。它的工作是與印刷電路板(PCB)上的所有各種傳感器/ ic通信,將所有東西集成在一起,使設備工作。
為了使這更容易,STM32運行的是FreeRTOS,這是一個基于線程的操作系統(tǒng),使管理一切更加直接和清晰。
為了處理這個項目的無線分析儀方面,我還包括一個ESP32-C6,它通過UART與STM32通信?;旧?,發(fā)生的事情是STM32將首先啟用ESP32,然后發(fā)出請求。ESP32完成請求,然后將結果發(fā)送回STM32。從那里,STM32重新禁用ESP32,然后處理和顯示數(shù)據(jù)。
如果您想知道為什么ESP32不只是整體運行而不是STM32,這是因為ESP32比STM32更耗電,所以最好不要一直運行它。也只是沒有足夠的引腳在ESP32上能夠處理一切。
對于通過LoRa發(fā)送和接收,我使用SX1262,這是一個很酷的Sub-GHz LoRa收發(fā)器。為了與它通信,我使用SPI,因為它本身支持它。這就是使DualCast能夠進行超遠距離獨立傳輸?shù)脑?
為了執(zhí)行加密,我使用AES-128-CBC,它代表具有Cypher塊鏈的高級加密標準(128位)。
其工作原理是為每個設備(發(fā)送器和接收器)分配相同的16字節(jié)長的私鑰。(這通常是隨機生成的,然后預編程到接收器中,然后在接收器中輸入DualCast。)在發(fā)送消息之前,將為每條消息隨機生成一個公共的16字節(jié)IV(初始化向量),然后用于進一步加密消息,確保每次的唯一性。然后,加密的消息將與唯一的IV一起發(fā)送。接收方隨后接收該消息,從消息中提取唯一的IV,然后使用該消息和私鑰解密負載。
不用說,通過暴力破解加密基本上是不可能的,有2^128種不同的可能性(3.402e+38)。這是一個很大的數(shù)字!(假設你的16字節(jié)加密密鑰在不經(jīng)意間被人提起后不會泄露出去。)
為了幫助保持這個秘密,DualCast也默認隱藏在LCD上。這樣,無論何時你只是想發(fā)送一些東西,而不是主動地弄亂鑰匙,你都不必擔心有人在路過時看到它,或者有人在你周圍錄音。
我這次使用的酷顯示器是通過SPI通信的ST7789VI 2.4“TFT LCD(液晶顯示器)。為了管理它,我運行了LVGL,這是一個基于C編程語言的很棒的圖形庫。
DualCast如何分析網(wǎng)絡
因此,我在前面提到,DualCast可以識別活躍的網(wǎng)絡用戶(以及許多其他功能)。這是真的!無線網(wǎng)絡的工作原理是利用你的設備和路由器之間的持續(xù)通信流。這種以“數(shù)據(jù)包”形式來回傳遞的通信,除了數(shù)據(jù)長度等其他信息外,總是包含一些識別發(fā)送和接收設備的信息(它們的MAC地址)。
DualCast利用這些信息來收集和統(tǒng)計活動的網(wǎng)絡用戶,方法是監(jiān)聽這些數(shù)據(jù)包,并在聽到它們(它們唯一的MAC地址)時進行記錄。有了這些信息,您就能夠確定誰以及有多少人正在與網(wǎng)絡交換數(shù)據(jù)。此外,您還將獲得一些有用的信息,例如它們相對于您的RSSI(信號強度)和它們的幀長度(每個數(shù)據(jù)包發(fā)送的數(shù)據(jù)量)。雖然,就像我說的,設備被記錄為它們的MAC地址,這意味著你只能看到它們的具體地址。(你不會看到“約翰·史密斯在iPhone 10上很活躍?!?然而,這也有很多好處。
首先,大多數(shù)連接到熟悉網(wǎng)絡(WPA2+)的用戶將始終使用相同的MAC地址(固定Wi-Fi地址是iphone的默認設置)。這引入了許多有趣的應用程序,例如確定某人在哪里(但不是以一種不好的方式)。比如說,你開了一家咖啡店,想要確定你有多少回頭客。當顧客連接到你的咖啡店Wi-Fi網(wǎng)絡時,他們將與它交換通信,他們的地址可以被聽到。然后你可以通過聽這個來了解有多少客戶是回頭客,他們在不同的日子聽到了相同的MAC地址。很整潔!不過,他們的MAC地址后面總是有一層安全保護,所以你永遠不會知道他們是誰,只知道他們在那里。(除非你把他們所有人的手機都拿走,查一下他們的MAC地址。)
在此基礎上,從iOS 11開始,即使是iphone /掃描儀應用程序也不允許顯示設備MAC地址。但DualCast可以!如果你的鄰居偷了你的Wi-Fi怎么辦?好吧,如果你注意到你的網(wǎng)絡上有一個奇怪的MAC地址,你可以去他們家,要求看他們手機的“Wi-Fi地址”(MAC)。不過,這個奇怪的MAC也有可能是一個智能烘干機或使用Wi-Fi的東西,所以也許不要走得太遠,哈哈。如果你有一個孩子,想知道他們是否在睡覺后還在使用手機,那么一個更好的應用程序可能是。你所要做的就是在獲取設備MAC地址之前的某個時間去他們手機上的“About”,然后如果你看到過多的數(shù)據(jù)包從該MAC地址發(fā)送出去,你就會知道出了什么事。
因此,到目前為止我一直提到的是數(shù)據(jù)幀(包含在設備和路由器之間來回發(fā)送的數(shù)據(jù)的數(shù)據(jù)包)。但是DualCast也可以分析信標幀!信標幀是僅由路由器發(fā)出的數(shù)據(jù)包,它宣布設備可以連接到一個網(wǎng)絡。
信標幀不那么令人興奮,但有一個非常有用的應用程序。因為是路由器將這些數(shù)據(jù)包發(fā)送出去,所以接收到的RSSI(信號強度)將與路由器相關。這意味著你將能夠使用它們來確定最佳信號強度的位置,這對于找到設置桌面的完美位置非常有用!(或者其他什么。)
你可以做的另一個很酷的實驗是在你的手機或個人電腦上產生一些網(wǎng)絡流量,然后使用DualCast來檢查它。例如,在這樣做的過程中,我了解到一些有趣的信息,比如什么時候發(fā)送和持有數(shù)據(jù)包,以及發(fā)送的數(shù)量是多少。例如,像一個簡單的網(wǎng)絡頁面這樣的東西可能并不總是觸發(fā)一個數(shù)據(jù)包被“嗅探”(檢測),但我通常在加載YouTube視頻或流媒體音樂時總能看到一堆數(shù)據(jù)包。
甚至有一次,我在播放YouTube時沒有看到任何網(wǎng)絡流量,因為我的電腦聲稱它連接到我選擇分析的網(wǎng)絡。雖然,事實證明我的電腦對我撒謊,實際上連接到一個不同的網(wǎng)絡,只是顯示錯誤的SSID。有趣!
使用DualCast,我還注意到數(shù)據(jù)幀只有在緩沖新視頻(小灰色條)時才會被發(fā)送到YouTube上,而且通常是大量的??紤]到在使用Spotify這樣的音樂服務時,數(shù)據(jù)幀幾乎是不斷發(fā)送的,我認為這非常簡潔。
了解硬件
這是完整的項目原理圖供您參考。
DualCast:
LoRa接收機:
讓我們來分析一下。我將只討論主要的DualCast原理圖,因為接收器基本上只是一些小改動的副本。
要設置STM32H563或任何MCU,您應該首先查看數(shù)據(jù)表。從那里,您可以導航到電源部分,找出哪里需要哪種去耦電容器,然后進入晶體規(guī)格頁面。在我的情況下,一個8MHz晶體工作得很好,因為它在建議的范圍內。除此之外,我還在I2C線路上添加了一些上拉電阻(必需的),并在BOOT和RST引腳上添加了所需的上拉/下拉電阻,以確定默認啟動狀態(tài)。USB引腳上的0歐姆電阻只有在上傳到STM32時才能放置,因為USB也與ESP32-C6共享。
說到ESP32-C6,讓我們看看下一個!
和前面一樣,第一步是檢查數(shù)據(jù)表。然而,pressif (ESP32背后的公司)也有這個神奇的開發(fā)頁面,詳細介紹了原理圖所需的一切。在設計布局時也有一個PCB設計指南頁面。也就是說,我不會在這里解釋太多,因為所有需要的東西都包含在這些鏈接中。你應該去看看!
由于這個復雜的匹配網(wǎng)絡,SX1262的原理圖可能是最困難的。在數(shù)據(jù)表中,提到了一個匹配的網(wǎng)絡,但沒有真正的大小或具體,因為它取決于你廣播的頻率(基于地區(qū)的變化)。為了獲得您所在位置的正確值(在我的情況下,在美國為915MHz),我查找了SX1262文檔頁面。
從那里,有大量的信息。為了避免通讀所有內容,我對參考設計說明、PCB設計指南和915MHz參考設計示例最感興趣。根據(jù)示例(因為它與我的區(qū)域匹配),我復制了所有內容,并使用包含的BOM對組件進行了大小調整。
太棒了!在驗證我正確移動了所有東西之后,我只是為50歐姆天線添加了天線pi匹配網(wǎng)絡(因為參考設計無法預測我使用的天線),一個額外的ESD保護二極管,并連接了引腳。更多關于匹配的信息請點擊這里。
現(xiàn)在讓我們繼續(xù)剩下的。
我對USB-C連接器電路做了一個小小的改變,我現(xiàn)在使用的是這個很酷的ESD保護IC,而不是單個的二極管(它們很小)。這只是使它更容易組裝。
對于LiPo充電電路,我只是使用了BQ24的典型設置。工作好了!R14和R15設置充電終止和速度,R16有一個熱敏電阻,以防電池太熱。然后只是一對去耦電容器,以確保穩(wěn)定的電壓。
對于激光雷達,我同樣有一些去耦電容(數(shù)據(jù)表推薦的尺寸),然后是兩個上拉電阻,一個用于設置設備默認啟用,另一個用于設置設備默認啟用。右邊的兩個連接器只是因為它需要垂直安裝到PCB上,因此需要單獨連接。
我還應該注意到,在這里,激光雷達的測量不是在一條直線上采取像可能暗示的激光!這種激光雷達利用表面視場(FOV)來探測被發(fā)送回它的紅外光,以便進行距離測量。(激光只是輔助瞄準。)這意味著激光雷達最適合測量物體的距離,在這個物體上可以容納完整的視場。我還應該提到環(huán)境光在距離測量精度中起作用,所以我可能不會推薦它在陽光明媚的日子里在室外使用,因為傳感器將很難區(qū)分發(fā)射的紅外光和太陽的紅外光。
BMI323, BME280和TPS穩(wěn)壓器不需要太多解釋,我基本上只是連接引腳并添加推薦的去耦電容器,以確保穩(wěn)定的電源。我還應該提到,內部BME280在通電一段時間后會由于周圍組件而加熱一些,所以我建議只相信第一次打開它時的溫度測量。(準確來說,是在它有時間加熱之前。)
對于打開/關閉瞄準輔助激光和觸覺電機,我只是使用兩個mosfet,每個mosfet上都有一個下拉電阻,以確保它們在不主動驅動時完全關閉。這只是作為一個更強大的開/關,因為當MCU引腳走高時,它將允許電流從負載流向地。
優(yōu)化LoRa
在這里,我將進一步解釋DualCast上的LoRa功能是如何工作的,以及如何最大化其范圍。
如前所述,LoRa傳輸由SX1262處理,其默認有效載荷大小為915MHz時的80字節(jié)。(64B用于密文,16B用于IV. 915MHz是美國的亞千兆赫無線電頻段,無需許可。)
LoRa的基本參數(shù)如下:
SF9:擴展因子決定有多少個符號代表一個數(shù)據(jù)符號。較低的SF (SF7)可以讓您發(fā)送更多的數(shù)據(jù),但在較短的范圍內,而較高的SF(如SF12)以較低的數(shù)據(jù)速率和較長的空中時間為代價增加范圍和靈敏度。(發(fā)送和接收東西需要更長的時間。)
BW125:設置通道帶寬(125 kHz)。更寬的帶寬允許更高的數(shù)據(jù)速率,但通常會降低靈敏度。
CR4/5:編碼速率用于FEC (Forward Error Correction)。它表示對于每4位有用數(shù)據(jù),額外增加一位用于糾錯(4/5)。更高的FEC(更多的錯誤位)提高了噪聲條件下的可靠性,但降低了數(shù)據(jù)吞吐量。
LDRO:當符號持續(xù)時間較長時,通過補償時鐘漂移使用低數(shù)據(jù)速率優(yōu)化。在這種情況下,它被禁用,因為125 kHz帶寬的當前設置(SF9)不需要它。(在沒有必要的情況下已經(jīng)足夠快了。)這可能應該打開任何高于SF10的東西。
作為默認設置,我使用SF9和上面的其他設置,因為它們是范圍和播出時間之間的一個很好的折衷。如果在發(fā)送和接收內容之間有多秒的延遲,那么DualCast就不會那么酷了。
圖表來自Absar Ahmar的ResearchGate研究。
單獨計算80字節(jié)。
452ms最終有點短(消息在最后被切斷),所以我最終使用了475ms,我覺得這對于等待時間來說是合理的,同時也保持了一些穩(wěn)定的范圍。
(475ms接收命令,475ms接收回執(zhí)。所以如果你說的是往返,就像從傳感器請求數(shù)據(jù)一樣,這是950毫秒。)
Albert Potsch的語義學者研究圖。注意:這些范圍值將根據(jù)您發(fā)送的位置而改變很多!(如果你在農村或城市等地)
這些數(shù)據(jù)在DualCast上得到了驗證,因為我在一個城市試驗時得到了類似的值。雖然,我認為如果你在一個安靜的地區(qū)(沒有干擾信號),在接收器的視線范圍內使用它,你可能會達到~5公里。
然而,也就是說,也許您希望將數(shù)據(jù)進一步發(fā)送到您構建的傳感器集線器,或者475ms對于您所需的快速通信來說太長了。不用擔心,只要更新這些設置,但你認為適合最大化的范圍和數(shù)據(jù)速率為您的應用程序!源代碼可以在這里找到。只需要知道您需要更新接收器以匹配!
如果您想進一步探索設置,也可以在這里找到SX1262數(shù)據(jù)表。
DualCast 5 ghz
如果你喜歡這個項目,但對它不能分析5GHz的Wi-Fi網(wǎng)絡(只有2.4GHz)感到失望,我有一些好消息。該項目使用了ESP32-C6,因為它是速訊發(fā)布的最新Wi-Fi soc之一,盡管他們目前還沒有任何具有5GHz功能的芯片。
然而,隨著ESP32-C5將于今年晚些時候向市場發(fā)布,這種情況將在未來發(fā)生變化,ESP32-C5將包含5GHz功能。
如果你想讓我做這個項目的第二個版本,能夠用ESP32-C5分析5GHz網(wǎng)絡,除了一些其他很酷的功能,如集成的藍牙和基于Wi-Fi的命令發(fā)送,請考慮支持這個項目,因為它會激勵我繼續(xù)追求它。你可以通過成為Plus會員來支持我的工作(在那里你也會得到所有這些額外的津貼),或者從我的商店購買DualCast設備。這當然有很長的路要走,因為我不使用廣告,這些項目的原型制作可能非常昂貴和耗時。非常感謝您的支持!
為了讓這個項目工作,我們做了一些不同的修改:
構建電路板
來看看pcb吧!(印刷電路板)
左下角的小PCB被斷開,并在頂部重新定位用于激光雷達。
為此,我用KiCad(免費)做了一個四層的設計:
?信號
?地面
?電源
?信號
我還在頂部和底部信號層添加了額外的地面傾瀉物,它們可以幫助隔離各種信號并增加耦合。
DualCast板的Gerber/制造文件可以在這里找到。
接收板的Gerber/制造文件可以在這里找到。(點擊“下載原始文件”。)
可編輯的STEP和KiCad PCB文件在這里提供給plus訂閱者。想成為付費用戶嗎?只要5美元,我將非常感謝您的支持!
零件清單(BOM)的DualCast與指示符可以在這里找到,并提供CPL,如果需要。
接收器的BOM可以在這里找到。
像往常一樣,我知道訂購零件看起來很痛苦,但實際上并沒有那么糟糕,因為您從一個項目訂購的幾乎所有零件都可以重復使用。想想你會從一些實踐經(jīng)驗中學到多少東西!
如果您有興趣了解更多關于嵌入式系統(tǒng)(PCB設計),請查看YouTube上的Robert Feranec和Phil 's Lab。他們是很棒的設計師,我從他們身上學到了很多東西。
為了實際構建DualCast和接收器,我們需要PCB制造商來生產電路板。為此,我使用了PCBWay!
他們總是有出色的質量,還提供許多其他服務,如CNC加工,3d打印和PCB組裝。它們還具有九種不同的阻焊顏色可供選擇和三種不同的絲印,這非常適合定制。(我甚至相信他們現(xiàn)在有多色阻焊板!)我選擇我的是藍色的,因為我喜歡這個顏色,它提供了一個纖細的阻焊間隙,但你可以自由地選擇你的是任何你喜歡的顏色!
因為我是用KiCad設計的,我甚至不需要離開我的設計軟件來檢查,這要感謝他們方便的插件!如果沒有,你可以去PCBWay.com,點擊快速訂購PCB,并上傳電路板的Gerber文件。或者,你也可以去這里,我保存在我的收藏夾欄里。我建議在結帳時點擊模板選項,使手工組裝更容易!
其他所有內容都可以保留為默認值,除非您想要進行任何特定的調整。(如:無鉛表面光潔度、去除產品編號等)
注意:您需要為主DualCast PCB和接收器執(zhí)行此操作!
大約一周半后,pcb到達時,它們看起來棒極了!
作為一個必須經(jīng)過多次修改才能最終獲得正確設計的人,我總是看到它們到達時感到特別興奮。
要組裝它,首先將PCB膠帶下來,然后使用模板應用錫膏。
有了一個好的粘貼層(如果需要嘗試幾次也沒關系),你就可以開始放置組件了。BOM包含部件標識符,可作為參考表使用。
注意:確保所有部件(特別是ic)的方向是正確的,因為pin1并不總是在這個設計的左上角。尋找PCB上的星號作為引腳標記。如果你看不出來,你可以用這張紙。(這個是給接收者的。)此外,確保STM32正確對齊,因為它是凹孔,標記pin1,而不是文本方向!
完成后,您可以輕輕地將PCB放在加熱板上以熔化漿糊。我通常在取下之前讓我的加熱到225攝氏度(取決于你的錫膏的熔化溫度)。
史詩!如果您想使用LoRa功能,您也必須為接收器執(zhí)行此操作。
之后,彈出所有的通孔(THT)組件,如天線連接器,按鈕,電源開關和觸覺電機,并焊接它們。
之后,小心地斷開激光雷達并將其焊接在頂部。盡量使其垂直于板,以獲得最理想的性能。
太棒了!
這就是PCB組裝的全部內容!不過,在組裝其余部分之前,我建議首先上傳代碼(下面的編程說明)作為測試,以確保一切正常工作。如果一切如預期(LCD亮起等),那么您可以繼續(xù)進行組裝部分。
編程
在本節(jié)中,我將解釋如何編程DualCast和接收器,以便您可以開始在項目中使用它們。正如我之前提到的,我在這里用C編程,使用CubeIDE編寫STM32,使用ESP-IDF編寫ESP32。這主要是因為需要編寫大量代碼,我希望能夠利用FreeRTOS、LVGL和其他基于c的驅動程序。
這就是說,然而,我也知道你們中的許多人可能不熟悉這些開發(fā)框架,所以我想我應該解釋一種更簡單的方法來編程板,而不必進入“包含”混亂,這將從ide本身閃爍。
如果您想走這條路,您只需閃爍預編譯的elf/bin文件,這將是最終代碼的精確副本(這很好)。然而,我應該注意的是,這并不意味著您的接收方加密密鑰將不是唯一的,因為它將是默認的。這對DualCast來說無關緊要,因為UI允許您自己輸入它,但您將輸入它以匹配默認的接收方鍵。對于大多數(shù)應用程序來說,這應該沒問題,也會工作得很好,但要知道,這確實意味著,如果有人真的想要,他們可以通過使用默認密鑰來破解加密,如果你身邊的其他人也使用默認密鑰,可能會有一些串擾。(注意:任何從我的商店購買的DualCast接收器都會自動設置一個唯一的密鑰供您使用,該密鑰將隨接收器一起發(fā)送。)
如果您想避免這種情況,您也可以安裝CubeIDE并復制接收器源代碼。然后,將加密密鑰更改為唯一的密鑰(位于main.c中)。再次強調,這只適用于接收方!預編譯的代碼對于DualCast本身來說是很好的。如果您有包含錯誤,只需右鍵單擊未包含的文件,然后單擊“添加/刪除包含路徑”,然后同時選擇“調試”和“發(fā)布”,單擊“確定”。要上傳代碼,點擊綠色的“播放”按鈕。(我還將在不久的將來發(fā)布一個如何使用CubeIDE的STM32完整教程。)如果你有迫切的問題,網(wǎng)上也有很多關于使用CubeIDE的信息。注意:您還需要一個ST-Link來上傳,我將在本節(jié)后面解釋連接它。
好的,現(xiàn)在我將解釋如何上傳DualCast本身的預編譯代碼,如果您愿意,也可以上傳接收器。(不過請注意我剛才說的!)
重要提示:請確保在沒有連接指定天線的情況下,不要發(fā)送任何無線命令(Wi-Fi或LoRa) !如果你告訴任何一個IC在沒有連接天線的情況下發(fā)送一些東西(上傳后你開始點擊按鈕),仔細計算的阻抗將會混亂,你可能會因為反射射頻而損壞無線電,導致更小的范圍和更差的無線性能。出于這個原因,我建議現(xiàn)在連接兩個天線,以防你上傳后誤按了什么。(左上角為LoRa的黃色波段915MHz;紫色波段2.4GHz的Wi-Fi在右下角。)
要上傳到DualCast,您需要CubeProgrammer和ESP32 flash下載工具。您需要這兩個,因為DualCast使用STM32和ESP32,需要分別上傳。
關于安裝和使用CubeProgrammer的所有必要信息都可以在我的OpenTemp項目中找到。唯一的區(qū)別是您需要刷新DualCast。.elf文件(點擊“下載原始文件”),而不是opentempp .elf。此外,您還需要確保PCB上的STM32連接了USB跳線!這可以用一個0歐姆電阻來完成,或者只是用一些焊料橋接它。
要閃爍到ESP32,你所需要做的就是去這里下載expressf最新的Flash下載工具。然后,點擊可執(zhí)行文件(.exe),輸入芯片信息。(如果您感興趣,我也有一個ESP-IDF教程。)
之后,下載這四個預構建文件:(單擊“下載原始文件”)。
?bootloader.bin
?partition-table.bin
?app-template.bin
然后將flash_args文件中的地址復制到flash工具中。(你的和我的一樣。)
確保它們像上面一樣被選中并且是綠色的!
太棒了!然后將ESP32置于引導加載程序模式(按住BOOT >按RST >釋放BOOT),選擇COM端口,然后點擊啟動。
作為一個重要的注意事項:現(xiàn)在您需要確保通過放置0歐姆電阻或用焊料橋接連接在PCB上選擇ESP32的跳線。ESP32的USB線需要連接,而STM32的USB線不需要連接。此外,ESP32僅在DualCast處于Wi-Fi模式時啟用!這意味著您需要在上電時將PCB顛倒,然后通過USB連接。
現(xiàn)在已經(jīng)成功設置了DualCast,讓我們回到上傳到接收器的問題。
正如我之前所說,要上傳到它,你需要一個ST-Link。這基本上只是一個調試器/上傳器,所有stm32都支持。這里需要它,因為在STM32U0上默認檢查NBOOT_SEL位,這意味著您不能使用USB進行第一次上傳。
不用擔心,st - link非常便宜且易于訪問,如果您想在將來的項目中進行調試,無論如何都必須獲得一個。我個人使用的是ST-Linkv3,但也有更便宜的版本,也可以很好地工作。
應該注意的是,這些是接收器上相應的引腳,您將連接到ST-Link:
?SWC -串行線時鐘(SWCLK)
?串行線數(shù)據(jù)輸入/輸出(SWDIO)
?SWO—串行線輸出(通常用于打印語句和實時值)
?RST -復位
?3V3 - 3.3V參考電壓
?GND -接地
當一切都連接好后,可以使用CubeIDE和源代碼上載帶有自定義加密密鑰的代碼(如本節(jié)開頭所討論的),或者使用帶有默認密鑰的預編譯.elf文件上載代碼。如果您選擇使用預編譯文件,請遵循與上傳到DualCast時相同的步驟,只是選擇ST-Link而不是USB并使用DualCast- rx。精靈文件。在使用ST-Link時,你也不需要按住任何按鈕,所以一旦連接上,你就可以繼續(xù)上傳程序。如果你想要額外的保護,以防有人試圖讀取/逆向工程的密鑰從接收器的閃存,你也可以啟用RDP,這將鎖定內存。
這是它!
就像我之前提到的,如果您想要進行任何編輯、驗證安全性等,也可以在空閑時隨意翻查源代碼,以使這個項目完全符合您的愿望。您甚至可以添加一個解鎖pin,以增加安全性萬一你失去了它。
使用接收器
在這里,我將進入一些細節(jié),設置接收器的多功能用途,無論你想要使用這個項目!
注意:如果你想要添加存在檢測,gpio上面的6個引腳是用于連接激光雷達的。
正如我前面提到的,這個接收器所做的就是接收從DualCast發(fā)送的信號(一個數(shù)字),然后將相應的gpio設置為高電平以匹配二進制信號。由于有5個gpio,這個范圍從0-31(2^5 - 1),這意味著可能有31個不同的命令可以接收(不包括0)。如果你不熟悉二進制,可以在這里找到十進制數(shù)字的二進制等效列表。
因此,使用接收器所需要做的就是將接收器上的5個gpio連接到您熟悉的任何使用(Arduino UNO, ESP32等),然后監(jiān)視這些引腳以獲取相應的命令。當您正在尋找的命令被接收時,您可以讓它在Arduino IDE中做任何事情,這可能比在CubeIDE中使用C更舒適(盡管如果您愿意,您可以直接修改接收器源代碼)。為了幫助簡化這個過程,我還創(chuàng)建了一個基本的Arduino接收器草圖供參考。
有了這個,你將能夠使用LoRa接收器的任何自定義項目,你想要和它很容易地與您的DualCast通信!
使用DualCast
在這里,我將解釋所有不同的按鈕做什么,以及如何像專業(yè)人士一樣使用DualCast !如果你剛到這里,使用接收器的信息在上面^。我將繼續(xù)標記按鈕如下,使一切更容易解釋。
好吧,重要的先說。在直立時打開DualCast(如上所述)將使其進入LoRa模式。在這里,您有以下按鈕選項:
按鈕1將顯示您的加密/解密密鑰并迭代所選的十六進制字符。
按鈕2將顯示您的加密/解密密鑰,并更改當前選擇的十六進制字符。
使用這兩個按鈕來更新您的密鑰,每次選擇并更改一個字符。
按鈕4將添加4到底部的所有數(shù)字命令。這兩個用于更改要發(fā)送給接收者的號碼(作為命令)。例如,如果接收器正在監(jiān)聽2、8或12等,您可以在這里更新范圍。
按鈕5-8只會發(fā)送上面的數(shù)字。例如,如果按鈕5上面有一個1,當你按下按鈕5時,它將發(fā)送一個1。
這兩個用于更改要發(fā)送給接收者的號碼(作為命令)。例如,如果接收器正在監(jiān)聽2、8或12等,您可以在這里更新范圍。
打開Wi-Fi模式!要將其置于此模式,只需關閉DualCast,將其翻轉180度,然后再打開即可。
要啟動Wi-Fi掃描,只需選擇任何TOP按鈕(1-4)。如果你選擇一個底部的,程序將崩潰,你需要電源循環(huán)重置它。我還應該注意到,如果你開始掃描,幾秒鐘后什么也沒有顯示,那么這意味著周圍沒有2.4GHz的網(wǎng)絡可以分析。試著搬到別的地方,再試一次。作為一個很好的測試,如果你有一部iPhone,你可以打開一個熱點,選擇“最大兼容性”(使其兼容2.4GHz),它將在DualCast上可見。從那里,你可以用你的電腦連接到熱點,然后看到你的電腦或其他設備發(fā)送的所有數(shù)據(jù)幀,這非常簡潔。(產生一些流量!)
開始掃描后:
按鈕5將向上滾動一個網(wǎng)絡。
按鈕6將向下滾動一個網(wǎng)絡。
按鈕7將選擇您當前滾動到的網(wǎng)絡(頂部的網(wǎng)絡)。
作為一個有用的標識符,屏幕右上方的數(shù)字是當前設置要選擇的網(wǎng)絡。
在使用按鈕7選擇給定的網(wǎng)絡之后,DualCast將被過濾為僅偵聽來自該網(wǎng)絡的數(shù)據(jù)包。現(xiàn)在唯一仍然活動的按鈕是按鈕8,您可以使用它在數(shù)據(jù)幀和信標幀之間進行切換。
太棒了!現(xiàn)在唯一的東西就是激光雷達了。它很容易選擇,你所要做的就是按住按鈕4,然后按住按鈕3,同時按住它(并在LoRa模式/垂直方向下)打開VL53L4X激光雷達。在這種模式下,您可以獲得當前測量的距離以及一些額外的數(shù)據(jù),以確保測量精度,如環(huán)境光,公差,最小和最大。
要退出激光雷達模式,只需循環(huán)電源。如果你忘記了這些按鈕的作用,在DualCast上還有一個內置的QR碼,可以很容易地通過按住按鈕4和按住按鈕2來訪問(在LoRa模式下),類似于激活激光雷達(但左邊有一個按鈕)。
本文編譯自hackster.io