基于Arduino Nano ESP32構(gòu)建飛行報警LED鈴聲(單獨使用)
作為飛行員,在空中和地面上,在飛行和飛行前的許多方面保持“安全第一”是很重要的,其中之一就是避免碰撞。過去幾年,即使是小型航空、自由飛行的飛機,如滑翔機、滑翔傘、懸掛式滑翔機等,在未來的無人機中,也開始采用儀器來觀察和讓別人看到。天空將是擁擠的。
一種便宜但有效的儀器是LilyGo公司的T-Echo或T-Beam型號。這些LilyGo可以用來安裝各種軟件,我最喜歡的是M.Braner的SoftRF版本。SoftRF最初是由Linar Yusupov制作的,但其他一些人決定修改/改進他的項目。
工作原理:
當(dāng)你在空中時,LilyGo發(fā)送和接收其他飛行飛機的無線電數(shù)字?jǐn)?shù)據(jù),其中包含有關(guān)高度,速度,方向等信息;非常重要的是,你和周圍的其他飛機使用相同的通信協(xié)議,否則沒有正確或沒有警告交換!
如果LilyGo接收到正確的數(shù)據(jù),并且檢測到可能發(fā)生碰撞,它通過藍牙傳輸,并通過該電路接收到相對的nmea式警告:8個方向藍色LED中的1個將向您顯示被檢測飛機的相對位置(上方的LED顯示為12:00,表示它在正前方,右側(cè)的LED顯示為03:00,表示它在您的右側(cè)90°左右,下方的LED顯示為06:00,表示它在您的后方,等等)。另外,5個高度LED中的1個將向您顯示飛機的相對高度:中間紅色LED表示飛機距離您的高度在-50 +50米之間,白色LED表示飛機距離您的高度在+-51 +-150米之間,綠色LED表示飛機在您上方或下方超過+- 151米。這個獨立版本包括一個顯示器,以米為單位顯示相對距離和警告對象的飛機類型。
本項目使用LilyGo + SoftRF (Moshe Braner版本,使用MB158測試)實現(xiàn)藍牙- le連接;草圖通過LED指示燈電路連接LilyGo,通過藍牙- le接收nmea類碰撞警告句子,評估警告級別并使用蜂鳴器發(fā)出“嗶嗶”聲(3級);此外,8個led中的1個顯示相對方向,5個led中的1個顯示潛在碰撞飛機的相對高度;還有一個狀態(tài)LED顯示類似nmea的活動,還有一個Oled雙色顯示屏顯示更多信息。
組件列表:
?Arduino Nano ESP32, MCU帶藍牙BLE, 3.3V
?OLED 128x64雙色顯示屏I2C + 4引腳頭公母
?IC 74HC4067版本SOIC-24, 16通道多路復(fù)用SMD
?主動蜂鳴器3.3V
?2 x 220歐姆貼片電阻(尺寸1206)
?1個100nF貼片電容器(尺寸1206)
?1個10uF貼片電容器(尺寸1206)
?8 × 3mm LED藍光亮度(> 5000mcd)
?1 × 3mm LED紅光亮度(> 5000mcd)
?3 × 3mm LED綠光亮度(> 5000mcd)
?2 × 3mm LED白光亮度(> 5000mcd)
?2個JST-XH 2.5mm連接器(90°公,直母)
?1 x 200mA自復(fù)位保險絲貼片
?1個迷你開關(guān)
?3.7V 1350mA/h鋰離子電池(CT-3650)
?45x48mm雙面PCB
?約40個銅0.8mm鉚釘(作為過孔,焊接,連接PCB層)
?若干M2塑料墊片(6 × 5mm mm /f, 6 × 10mm f/f), 10 × 6mm M2螺釘,6 × 10mm M2螺釘,4 × 1mm環(huán)形墊片,10 × M2螺母
?3塑料盒部件(3D打印,見附件)
?簡單尼龍繩,可粘合尼龍搭扣,雙膠粘帶
?15cm黑線,15cm紅線,熱縮管,卡普頓隔離膠帶
?1 × 3mm紅色LED
?1個迷你USB PCB連接器
?2 x 10k歐姆1%貼片電阻(尺寸1206)
?1個4.7uF貼片電容(尺寸1206)
?1 x 4.7uF貼片電解電容器(尺寸1206)
?1 x 2.2k歐姆貼片電阻(尺寸1206)
?1 x 470歐姆貼片電阻(尺寸1206)
?MCP73831 SMD充電器IC
電路:
該電路以Arduino Nano ESP32單片機為核心,提供了通過藍牙- le方式連接LilyGO,驅(qū)動主動蜂鳴器和類似nmea的綠色LED,指示16通道74HC4067多路復(fù)用器驅(qū)動LED,驅(qū)動顯示。我在市場上發(fā)現(xiàn)74HC4067 IC有兩種格式,一種是非常小的SSOIP24,一種是較小的SOIC-24;讓我們?yōu)檫@個電路買一個小的和手工焊接。我有一個不愉快的經(jīng)歷,壞保險絲的電阻為1歐姆,而不是接近0(零)歐姆:有了這個電阻,電路在4.0V中損失約0.1V。
關(guān)于led,讓我們選擇3mm高效率的發(fā)光效果非常好(bbb50 5000mcd),功耗低,最大在2-6mA左右;我建議用藍色表示方向,紅/白/綠表示高度,綠色表示nmea式接收。充電器的紅色LED可以是正常的3mm LED。8環(huán)led是通過孔安裝,對于其他人,你必須彎曲和切割在適當(dāng)?shù)拈L度引腳。
盡管Nano ESP32手冊建議以最小6.0V為VIN引腳供電,但我在3.4V下進行了測試,取得了良好的結(jié)果,獲得了所需的3.3V,使用內(nèi)部穩(wěn)壓器為其余電路供電;BLE通信和一個LED閃爍時的功耗在110mA左右,建議安裝1350mA/h左右的3.7V Li-Ion電池;
電池通過MCP73831 IC通過mini-USB接口和周圍的一些組件進行充電。草圖提供了檢查電池電量,當(dāng)?shù)陀?.4v時,它會產(chǎn)生一些聲音提醒您盡快充電。如果你決定改變電池功率不同于1350mA/h,我建議根據(jù)充電率改變電阻R6。公式為:R6=1000000/mA,因此在本電路中,使用2.2K歐姆電阻,充電速率為455mA(1000000/455=2200歐姆)。較小的電池應(yīng)以較小的速率充電。我會計算充電電流大約是電池功率的1/3:即如果你安裝一個800mA/h的電池,你應(yīng)該計算800/3=267,所以1000000/267=3745歐姆(3900歐姆作為R6替代品是可以的)。
如果顯示器是雙色的就好了:他們出售128x64的顯示器,上面16行是黃色,剩下48行是青色;在這個項目中,顯示器顛倒工作,以青色表示距離,黃色表示飛機類型。當(dāng)然單色顯示也很好,可能是白色,這樣在白天更亮,可讀性更強。
印刷電路板(PCB):
您可以選擇制作45x48mm雙面PCB并焊接40個銅鉚釘作為過孔,就像我通常至少為第一個原型版本所做的那樣。即使大多數(shù)組件是SMD,也有很多孔要做。我的技術(shù)是通過“藍片和熨燙”的方式生產(chǎn)PCB,以及“蝕刻PCB與Press'n'Peel”。
藍色床單和熨燙?!(谷歌用我的評論回答…)
在PCB(印刷電路板)生產(chǎn)中,“藍片”和熨燙是指使用碳粉轉(zhuǎn)移技術(shù)創(chuàng)建原型或小型PCB的特定方法?!八{色紙張”是一種光滑的紙張,上面有一層可接受墨粉的涂層,通常用于激光打印機和復(fù)印機?!办贍C”部分是指使用家用熨斗將電路設(shè)計的碳粉圖像從藍片轉(zhuǎn)移到覆銅板上。
下面是這個過程的細分:
1. 設(shè)計和打?。菏褂肅AD軟件(即easyeda.com)創(chuàng)建電路設(shè)計,并使用激光打印機打印到藍色紙張上。墨粉附著在藍紙上的特殊涂層上。
2. 準(zhǔn)備工作:對覆銅板(通常為FR-4,單或雙銅層/s)進行清洗,以確保碳粉的良好附著力。
3. 轉(zhuǎn)?。簩⒂∷⒑玫乃{片面朝下放到PCB的銅表面上。熨斗用于加熱紙張,熔化碳粉并將其轉(zhuǎn)移到銅表面(只需將一張A4紙放在PCB/藍色板材和熱熨斗之間,讓它在上面停留5分鐘)。
4. 冷卻和去除:讓PCB冷卻(在熱熨燙5分鐘后,迅速將其置于水中)。然后小心地剝?nèi)セ蚪窦垼粝麓磴~片上線路的碳粉圖像(一些缺陷必須用適當(dāng)?shù)挠谰脴?biāo)記來糾正)。
5. 蝕刻:將PCB放置在蝕刻溶液(如氯化鐵)中,蝕刻掉未受保護的銅,留下由碳粉定義的所需電路圖案。
6. 涂飾:除去剩余的碳粉,然后用阻焊、鉆孔和其他涂飾步驟對電路板進行進一步處理。
這種調(diào)色劑轉(zhuǎn)移方法是一種相對便宜和容易獲得的方法,可以在家中或小批量生產(chǎn)pcb,特別是用于原型制作。
(為了連接PCB的兩個面,我建議在上下面之間做3或5個孔作為連接點)
藍牙- le怎么簡單又怎么困難?
正如我已經(jīng)說過的,經(jīng)典藍牙更容易管理,但這里我們必須使用藍牙- le,它與經(jīng)典藍牙完全不同,不兼容,所以忘記HC-05, HM-10或類似的模塊。
我認為我的代碼是簡單和線性足夠的可讀和可理解的部分關(guān)于藍牙。這里是一個簡短的描述。看看deviceConnect()函數(shù):首先是用BLE.scanForName(deviceName)找到并連接LilyGo (T-Echo或T-Beam),然后用peripheral.connect()連接它;接下來是執(zhí)行peripheral.discoverAttributes(),它似乎什么也不做,但對接下來的步驟是必需的?,F(xiàn)在我們必須使用peripheral.hasService(serUUID)驗證服務(wù)的存在性,并使用datasservice . hascharacteristic (charUUID)驗證其特性,然后使用datachcharacteristic .subscribe()訂閱它?;氐街餮h(huán)(),每次接收到數(shù)據(jù)時,我們都會在datachcharacteristic . valueupdated()中得到通知,因此我們必須使用datachcharacteristic . readvalue()進行讀取。
軟件代碼:
當(dāng)然,最困難的任務(wù)是藍牙- le連接,我真的更喜歡老式的經(jīng)典藍牙,簡單,容易,只需幾分鐘的編程就可以工作。不管怎樣,代碼已經(jīng)寫好并且運行良好。唯一包含的BLE管理庫是ArduinoBLE.h。
在開始時,草圖嘗試10次連接LilyGo,如果它已經(jīng)打開,只需要幾秒鐘,所以在第二次嘗試連接完成。然后,草圖等待帶有標(biāo)識頭“$PFLAU”和“$PFLAA”的類似nmea的句子。LilyGO甚至提供了這個電路不需要的其他句子。所有被接受的句子都是具有正確校驗和的句子。編制內(nèi)部表數(shù)據(jù)結(jié)構(gòu),將飛機數(shù)據(jù)、ID和類型組合在一起;從“$PFLAU”和“$PFLAA”句子中我們得到以下數(shù)據(jù)(其他數(shù)據(jù)字段未使用):
?int nmi_gps // GPS 0=無GPS定位,1=地面3D定位,2=空中GPS定位
?int nmi_alarm //告警級別0=none, 1=15-20" to impact, 2=10-15" to impact, 3=0-10" to impact
?int nmi_relBearing //相對沖擊方位,0=前方,180/-180=后方,-45=左側(cè),45=右側(cè),等等。
?int nmi_alarmType //報警類型0=none, 2=aircraft, 3=obstacle/zone, 4=traffic advisory, 10-FF other忽略
?int nmi_relVertical //以米為單位的相對垂直距離,正數(shù)=OVER,負數(shù)=BELOW
?long nml_relHorizontal //相對水平距離,單位為米
?字符串nms_ID_LAU //來自PFLAU句子的飛機ID
?字符串nms_ID_LAA //來自PFLAA句子的飛機ID
?int nmi_AcftType //飛機類型
?字符串nms_aircraftType //飛機類型描述(由函數(shù)生成)
我們可以設(shè)置3個警報級別:1=較低=較容易,2=中等,3=較高=較困難。草圖在第一級報警時播放1個電平和沒有太多快速開關(guān)led,在第二級播放2個電平和中等快速開關(guān)led,在第3級報警時播放3個電平和快速開關(guān)led。
LED狀態(tài)(無活動報警):
?全部關(guān)閉=電路關(guān)閉
?nmea-like on = LilyGO連接
?nmea-like 1“閃爍= nmea接收ok
?紅色5"閃爍=搜索LilyGO但未找到(嘗試10次)
?紅色0.5“閃爍= LilyGO在10次嘗試后未找到(再次嘗試搜索請重新啟動,關(guān)閉/打開電源)。
在LilyGO設(shè)置中,您必須激活藍牙NMEA-like輸出,然后使用計算機或手機查看他的廣播名稱,應(yīng)該是“SoftRF8605a6-LE”之類的東西,因此將名稱放在代碼中而不是我的,deviceName[] =“…”,保存,驗證并編譯它,通過Arduino在線云的方式傳輸草圖。云對正常使用是免費的,并且每天的編譯次數(shù)是有限的。要激活Arduino SerialMonitor上的調(diào)試代碼輸出,您必須將這行設(shè)置為“const boolean isDebug=true”。為了模擬不同級別的警告,當(dāng)你在家的時候,你必須取消226 - 290左右的注釋代碼行,它們將覆蓋nmea類句子,模擬警報,這樣你就可以聽到蜂鳴器并看到led工作;您可以更改警報內(nèi)的暫停更改行“prevTest=millis()+10000;”;在開始飛行之前,請記住注釋回模擬代碼的部分!
3D視圖圖片:
后蓋為最后一步:將電池插入后蓋,將開關(guān)插入后蓋,通過線環(huán),現(xiàn)在可以焊接開關(guān)與PCB點之間的電線。最后把所有放在一起,擰緊最后6 × 2mm螺釘。
現(xiàn)在是時候打開開關(guān),看到飛行警報開始與LED環(huán)做初始顯示,并嘗試通過藍牙連接LilyGo,你之前已經(jīng)打開;一會兒,你會在顯示器上看到實際的電池電壓。幾秒鐘后,BLE連接完成,你會看到nmea一樣的綠色LED閃爍:它工作了!
本文編譯自hackster.io