資料介紹
描述
圣誕節(jié),我女兒收到了她祖父的“建立你自己的喂鳥器”。我認(rèn)為制作太陽能喂鳥器相機(jī)會(huì)是一個(gè)有趣的項(xiàng)目,這樣她就可以看到喂鳥器中的鳥兒!我以前在這里看到過一些圖像識(shí)別喂鳥器項(xiàng)目,但它們帶有相當(dāng)大的 Raspberry Pi SBC 和硬接線供電。我想我會(huì)試一試帶有低功率 MCU 的太陽能版本。隨著我對 Edge Impulse 越來越滿意,我想我也可以添加一些圖像識(shí)別功能!像往常一樣,我遇到了一些小問題,但總的來說,我對項(xiàng)目的結(jié)果感到滿意。
該項(xiàng)目從我 5 年的建筑開始,繪制和裝飾鳥屋。你可以在上面的照片中看到她的成品。一旦她的杰作完成,我就接手了。
我有一塊 1W 的太陽能電池板,還有太陽能充電器、Powerboost 和一塊 2500 mAh 的 3.7V 電池。我也有一個(gè) ESP32 攝像頭。這是一個(gè)相當(dāng)便宜的微控制器(USB 適配器約 10 美元),但用于圖像識(shí)別模型的內(nèi)存不多(約 520 kB),但是,它確實(shí)有 Wifi 與 ESP32-S!
因?yàn)槲乙盐锅B器放在離我家很遠(yuǎn)的地方,所以我想我需要一個(gè)外部 WiFi 天線來為 MCU 增加 WiFi 范圍。ESP-32 Cam 已經(jīng)有一個(gè) uFL 連接器,所以它只是即插即用,對吧?好吧,沒那么多……原來天線有 2 種設(shè)置:默認(rèn)的板載天線(帶 0 歐姆電阻)和外部天線。

Random Nerd Tutorials 有一個(gè)很棒的教程,介紹了我遵循的如何設(shè)置外部天線。使用我的基本設(shè)備(帶標(biāo)準(zhǔn)尖端的烙鐵,無放大倍數(shù)),卸下電阻器并放入外部天線的兩個(gè)焊盤之間的焊橋是一件很痛苦的事情。上圖是放大的,那些墊子很小。但是我搞定了!我建議你為你的烙鐵和一個(gè)放大鏡準(zhǔn)備一個(gè)很好的尖端來做到這一點(diǎn)。我發(fā)現(xiàn)大多數(shù)電路板都將板載天線作為默認(rèn)設(shè)置,因此如果您打算使用外部天線,則必須這樣做。
一旦我在 MCU 上配置和測試了外部天線,我在喂鳥器的側(cè)面鉆了一個(gè)孔,將天線電纜穿過食物儲(chǔ)存區(qū),我將把相機(jī)放在那里。我使用我找到的 3D 打印外殼安裝了相機(jī)(并且已經(jīng)在我當(dāng)?shù)氐膱D書館打印了!)和雙面膠帶安裝到喂鳥器的塑料外殼之一。然后我將太陽能電池板安裝在朝南的喂鳥器的屋頂上(因?yàn)槲以诒卑肭颍?/font>

我找到一個(gè)舊塑料容器,將太陽能充電器、Power boost 和電池放入一個(gè)整潔的包裝中。我在側(cè)面切了一些孔,以便將太陽能電池板的連接器和 USB 電纜連接到喂鳥器中的 ESP-32 凸輪。完成設(shè)置后,我使用一些雙面膠帶將其安裝到喂鳥器的底部。

然后是時(shí)候開始編碼了!我從 Arduino IDE 中的 ESP-32 庫附帶的 CameraWebServer 示例開始。我花了一些時(shí)間來了解它是如何工作的,然后我對其進(jìn)行了精簡以從網(wǎng)絡(luò)服務(wù)器中刪除許多功能。基本上,我希望能夠看到視頻的實(shí)時(shí)流,使用 Edge Impulse 模型對該視頻進(jìn)行推理,然后將任何鳥類照片保存到 ESP32 Cam 上的 SD 卡中。
在大多數(shù)情況下,編碼進(jìn)行得很好。了解 app_httpd.cpp 文件與 Arduino 草圖的關(guān)系有點(diǎn)棘手,但你花在其中的時(shí)間越多,它就越有意義。我也花了一點(diǎn)時(shí)間才知道網(wǎng)絡(luò)服務(wù)器的網(wǎng)頁是一個(gè)編碼數(shù)組。我使用Cyber?? Chef將數(shù)組解碼為 html,進(jìn)行更改,然后再次編碼回十六進(jìn)制格式。它讓我慢了一點(diǎn),但能夠弄清楚并繼續(xù)前進(jìn)。

現(xiàn)在我已經(jīng)啟動(dòng)并運(yùn)行了網(wǎng)絡(luò)服務(wù)器,是時(shí)候制作Edge Impulse模型了!我已經(jīng)公開了我的項(xiàng)目,所以你可以在這里看到它。我保持模型非常簡單。我從 kaggle下載了一個(gè)鳥類數(shù)據(jù)集,并過濾了我所在地區(qū)常見的鳥類。我在 Edge Impulse 中創(chuàng)建了一個(gè)由鳥類而非鳥類組成的數(shù)據(jù)集,每個(gè)類別大約有 1400 張圖像。由于 MCU 上的內(nèi)存限制,我必須保持模型簡單,因此必須使用二進(jìn)制分類器。我保持顏色 (RGB) 的脈沖,但我確實(shí)將分辨率降低到 48x48 以保持模型更小。不理想,但我必須做出權(quán)衡。

然后我訓(xùn)練了 50 個(gè) epoch,結(jié)果還不錯(cuò):

為了快速將模型組合在一起,這些是我可以接受的結(jié)果。還要注意 RAM 和閃存大小。足夠小,可以在 MCU 上運(yùn)行。
然后我將模型部署到 Arduino 庫。這是我真正欣賞 Arduino 生態(tài)系統(tǒng)的地方。Edge Impulse 可以輕松地以 Arduino 庫的形式導(dǎo)入模型。您只需像添加任何庫一樣添加它,然后在 Arduino 草圖中包含您的推理頭文件。Edge Impulse 的 Louis Moreau 有一個(gè)很好的教程,介紹了如何將 Edge Impulse 模型集成到 ESP-32 Cam 中。我花了很多時(shí)間研究他的代碼,看看它是如何工作的。
我的代碼有點(diǎn)長,所以我不會(huì)在文章中放很多片段,但你可以在我的 github上看到它。但一般流程是從 ESP-32 CAM 接收圖像(也稱為幀緩沖區(qū))。該幀緩沖區(qū)被轉(zhuǎn)換為 RGB888 格式,然后調(diào)整為 48 x 48 像素(邊緣脈沖模型所期望的大小)。一旦調(diào)整大小,緩沖區(qū)就會(huì)被分類。Edge Impulse 分類代碼實(shí)際上非常簡單:
//Perform Edge Impulse classification
void classify()
{
signal_t signal;
signal.total_length = EI_CLASSIFIER_INPUT_WIDTH * EI_CLASSIFIER_INPUT_WIDTH;
signal.get_data = &raw_feature_get_data;
// Feed signal to the classifier
EI_IMPULSE_ERROR res = run_classifier(&signal, &result, false /* debug */);
// Returned error variable "res" while data object.array in "result"
if (res != 0) {
Serial.printf("Error....returning\n");
return;
}
//bird found!
if(result.classification[0].value > 0.8)
{
ei_printf("**** Bird found with %f probability! ****\n", result.classification[0].value);
jpg_sent = true;
}
}
如果找到一只鳥,則會(huì)設(shè)置一個(gè)標(biāo)志,以便代碼可以將圖像保存到 SD 卡中。并且這個(gè)過程會(huì)重復(fù)!我讓這段代碼運(yùn)行了 6 個(gè)小時(shí),然后我讓 MCU 進(jìn)入深度睡眠狀態(tài),這樣我就可以給電池充電一點(diǎn)。我認(rèn)為 ESP32 Cam 的運(yùn)行功率約為 1W(~ 310 mA @ 3.3V),而我擁有的太陽能電池板只有 1W(并且由于損失和不完美的太陽,它可能是輸入的一半)所以我需要一些停機(jī)時(shí)間讓電池充電. 下面是在 Arduino 草圖的 loop() 方法中運(yùn)行的深度睡眠代碼。
//plan would be to wakeup during daylight, stay on for a certain period of time (6 hours), then go into deep sleep at night
//wakeTime is the amount of time that the camera is awake, if this time is exceeded by the run time, go to sleep
unsigned long wakeTime = 6 * ms_TO_S_FACTOR * s_TO_HOUR_FACTOR;
if(millis() > wakeTime) {
Serial.print("Time in ms: ");
Serial.print(String(millis()));
Serial.println(". Going to sleep now");
Serial.flush();
esp_deep_sleep_start();
}
我遇到麻煩的下一個(gè)領(lǐng)域是,將照片存儲(chǔ)到 SD 卡后如何查看它們?我看到的大多數(shù)教程只是從 ESP32 Cam 中取出 SD 卡并將其放入計(jì)算機(jī)中查看照片。每次我想看照片時(shí),我都不想去喂鳥器并嘗試取出 SD 卡。我認(rèn)為必須有一種方法可以使用 Wifi 來查看網(wǎng)絡(luò)服務(wù)器中的圖像。下班后我花了兩個(gè)晚上試圖找出一種方法,用我微薄的編碼技能來做這件事。我終于偶然發(fā)現(xiàn)了jameszah的 ESP32 SD 文件管理器。它很簡單,只需幾行就可以集成到我的代碼中,而且效果很好。它讓我在嘗試創(chuàng)建自己的時(shí)候省去了很多麻煩,所以謝謝詹姆斯!
一旦我設(shè)置了網(wǎng)絡(luò)服務(wù)器,我就可以從 SD 卡下載照片。成功!

當(dāng)我第一次使用它時(shí),我只是使用 millis() 來獲取文件名的唯一 ID。后來我了解到您可以使用 NTP 服務(wù)器來獲取當(dāng)前時(shí)間,因此我可以將日期時(shí)間添加到我的文件中。更容易閱讀和知道照片的拍攝時(shí)間!
相機(jī)在行動(dòng)!
以下是相機(jī)拍攝的一些示例快照。非常令人興奮!



總的來說,這是一個(gè)真正考驗(yàn)我的偉大項(xiàng)目。我喜歡它是一個(gè)獨(dú)立的系統(tǒng),它從太陽中獲取能量并將其存儲(chǔ)到電池中。這測試了我的系統(tǒng)工程技能,并迫使我考慮圍繞一個(gè)已經(jīng)建成的喂鳥器進(jìn)行設(shè)計(jì)。它在資源相當(dāng)有限的 MCU 上使用 Edge AI 模型對我進(jìn)行了測試。如果我能再做一次,如果可以的話,我會(huì)使用更大的太陽能電池板(可能 1.5-2W)和更大的電池(3 Ah)。
總的來說工作量很大,但我對結(jié)果很滿意。繼續(xù)我的下一個(gè)項(xiàng)目!!!
- 太陽能/相機(jī)桅桿測試箱開源設(shè)計(jì)
- 太陽能/風(fēng)能自持物聯(lián)網(wǎng)開源分享
- 非光學(xué)太陽能追蹤器開源分享
- 太陽能水蒸餾器開源分享
- 超級(jí)太陽能跟蹤器開源分享
- 智能喂鳥器開源解決方案
- 雙軸太陽能跟蹤器開源分享
- 使用物聯(lián)網(wǎng)警報(bào)的喂鳥器
- 太陽能MPPT開源分享
- 基于LABVIEW監(jiān)控系統(tǒng)的小型太陽能集熱系統(tǒng) 8次下載
- 形形色色的太陽能電池3類太陽能電池介紹
- 你了解哪些薄膜太陽能電池4大薄膜太陽能電池介紹
- 太陽能熱水控制器設(shè)計(jì) 20次下載
- 太陽能路燈與太陽能控制器的關(guān)系 39次下載
- 太陽能發(fā)電概述
- 太陽能發(fā)電原理是什么效應(yīng) 2448次閱讀
- 太陽能電池的基本工作原理 1.7w次閱讀
- 太陽能供電系統(tǒng)組成 3477次閱讀
- 如何才能制作太陽能電池 5910次閱讀
- 太陽能控制器怎么調(diào)時(shí)間 2w次閱讀
- 太陽能熱發(fā)電基本原理 3.8w次閱讀
- 太陽能硅片生產(chǎn)工藝分析_太陽能硅片有輻射有毒嗎 1.5w次閱讀
- 太陽能地暖的工作原理詳解 5.5w次閱讀
- 自制簡易實(shí)用的家用太陽能板 17.2w次閱讀
- 多晶硅太陽能板品牌_多晶硅太陽能板價(jià)格 7629次閱讀
- 薄膜太陽能電池前途在哪_薄膜太陽能電池有哪些 3.2w次閱讀
- 太陽能板工作的原理是什么 10.2w次閱讀
- 屋頂太陽能發(fā)電板利弊_太陽能板屋頂發(fā)電原理 7w次閱讀
- 太陽能板如何安裝_太陽能板安裝示意圖 19.4w次閱讀
- 太陽能原理 7027次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發(fā)板資料
- 34.89 MB | 1次下載 | 免費(fèi)
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
- 3.32 MB | 1次下載 | 免費(fèi)
- 8聯(lián)想A820t手機(jī)維修圖紙包括主板原理圖 尾板原理圖 點(diǎn)位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對照表詳細(xì)說明
- 0.50 MB | 94次下載 | 1 積分
- 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場效應(yīng)晶體管的數(shù)據(jù)手冊
- 0.11 MB | 28次下載 | 2 積分
- 8長虹液晶彩電LS29機(jī)芯的技術(shù)資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論