在這篇文章中,我們詳細介紹了我們構建智能冰箱庫存管理系統的旅程,該系統由Raspberry Pi 5和AI攝像頭提供支持。使用安裝在冰箱一側的超聲波傳感器,我們的系統可以確定何時開始產品檢測以及何時發送更新。通過我們定制的YOLOv8n模型(通過Roboflow導出為IMX500格式),攝像機可以識別關鍵產品——奶酪、可樂、雞蛋、番茄醬、牛奶、pittas和schnitzels——并根據它們在幀中的位置進行分類。生成的“進”和“出”列表通過帶SocketIO的Flask服務器實時傳輸到React儀表板,幫助您了解哪些庫存,哪些需要重新進貨。
"井然有序的冰箱,是健康生活的第一步。"——匿名
簡介
想象一下,打開你的冰箱,讓一個人工智能系統立即告訴你什么是可用的,什么是缺失的。我們的項目通過使用傳感器觸發器自動跟蹤冰箱庫存。當超聲波傳感器檢測到冰箱門在50厘米以內時,人工智能攝像頭就會開始分析產品放置。或者,使用PIR運動傳感器,攝像機在感應到運動時立即開始檢測,并在靜止5秒后發送更新。這種嵌入式AI和全棧開發的無縫集成,讓庫存管理變得毫不費力。
觀看示例:
觀察系統的運行,它會實時更新你的冰箱庫存。
硬件設置
我們的配置利用了傳感器和尖端人工智能的組合:
Raspberry Pi 5–加工中心。
AI攝像頭模塊——配備我們定制的YOLOv8n型號(出口到IMX500 ),用于檢測奶酪、可樂、雞蛋、番茄醬、牛奶、pittas和schnitzels等產品。
超聲波傳感器——安裝在冰箱側,測量到門的距離。當距離小于50厘米時,系統激活產品檢測。
PIR運動傳感器(備選)–當檢測到運動時觸發檢測,并在5秒鐘無運動后發送更新。
帶SocketIO的Flask服務器–處理實時通信。
React儀表板–顯示兩個列表:當前在冰箱中的物品和已過期的物品(用于補貨)。
連接示意圖:
下面是我們的Fritzing圖,說明傳感器和攝像頭的連接:

超聲波傳感器設置:
將傳感器放在冰箱側面,面向門。
傳感器持續監控距離。如果門是關著的(50厘米),系統開始捕捉幀進行分析。當門移開(> 50厘米)時,它觸發更新傳輸。
PIR運動傳感器設置(可選):
?安裝傳感器,檢測冰箱附近的運動。
?運動檢測時,攝像機開始產品識別。如果5秒鐘內沒有檢測到任何運動,將發送庫存更新。
如需詳細布線,請查看我們的Fritzing圖。
嵌入式深度學習和產品識別
我們系統的核心是一個使用定制訓練的YOLOv8n網絡的人工智能攝像機。該模型經過優化,并通過Roboflow導出為IMX500兼容格式,可識別我們的主要產品,并區分“進”一半(冰箱內)和“出”一半(被移除或缺失)的產品。
產品識別邏輯代碼片段
importcv2importnumpyasnp# Load the custom product detection model (YOLOv8n exported to IMX500)model = load_model('path_to_imx500_model')defdetect_products(frame): # Preprocess the frame for the model processed_frame = preprocess_frame(frame) # Run inference detections = model(processed_frame) # Parse detections and categorize into 'in' and 'out' in_products = [] out_products = [] fordetindetections: label = det['label'] x, y, w, h = det['bbox'] # Assume the frame is split vertically: left half is "IN", right half is "OUT" ifx + w /2< frame.shape[1] //?2:? ? ? ? ? ? in_products.append(label)? ? ? ? else:? ? ? ? ? ? out_products.append(label)? ? return?in_products, out_products# Helper functions: preprocess_frame() and load_model() are implemented elsewhere.
傳感器集成和socket通信
超聲波傳感器邏輯
超聲波傳感器測量傳感器和冰箱門之間的距離。當門在50厘米以內時,系統開始捕捉產品檢測幀。一旦門移開(距離超過50厘米),累積的“進”和“出”列表被發送到服務器。
importtimeimportsocketio# Initialize SocketIO clientsio = socketio.Client()sio.connect('http://your-ngrok-url')THRESHOLD =50 # Distance threshold in cmdefread_ultrasonic_sensor(): # Simulated sensor reading; replace with actual sensor logic. returnget_distance()defsensor_loop(): detecting =False in_list = [] out_list = [] whileTrue: distance = read_ultrasonic_sensor() ifdistance < THRESHOLD?and?not?detecting:? ? ? ? ? ? print("Fridge door detected! Starting inventory check...")? ? ? ? ? ? detecting =?True? ? ? ? ? ? # Capture frame for product detection (simulate camera capture)? ? ? ? ? ? frame = capture_frame() ?# Replace with actual camera capture logic? ? ? ? ? ? in_list, out_list = detect_products(frame)? ? ? ? elif?distance >= THRESHOLDanddetecting: print("Fridge door closed. Sending inventory data to server.") sio.emit('inventory_update', {'in': in_list,'out': out_list}) detecting =False in_list, out_list = [], [] time.sleep(0.5) # Adjust sensor polling interval# Run sensor_loop() on the Raspberry Pi to continuously monitor door status.
PIR運動傳感器(替代)邏輯
對于使用PIR傳感器的環境,攝像機在運動檢測時激活,如果5秒內沒有檢測到運動,則發送庫存更新。
defpir_sensor_loop(): detecting =False last_motion_time = time.time() in_list = [] out_list = [] whileTrue: motion_detected = read_pir_sensor() # Replace with actual sensor reading logic ifmotion_detected: last_motion_time = time.time() ifnotdetecting: print("Motion detected! Initiating product recognition...") detecting =True frame = capture_frame() # Capture frame using the AI camera in_list, out_list = detect_products(frame) elifdetectingand(time.time() - last_motion_time) >5: print("No motion for 5 seconds. Transmitting inventory update.") sio.emit('inventory_update', {'in': in_list,'out': out_list}) detecting =False in_list, out_list = [], [] time.sleep(0.5)
Flask+SocketIO服務器
我們的Flask服務器接收這些實時庫存更新,并將它們廣播給所有連接的客戶端,確保React儀表板顯示最新的數據。
fromflaskimportFlaskfromflask_socketioimportSocketIOapp = Flask(__name__)socketio = SocketIO(app, cors_allowed_origins="*")@socketio.on('inventory_update')defhandle_inventory_update(data): print("Received inventory update:", data) # Broadcast the update to connected dashboard clients socketio.emit('dashboard_update', data)if__name__ =='__main__': socketio.run(app, host='0.0.0.0', port=5000)
全棧集成(React儀表盤)
實時數據管道從Raspberry Pi通過我們的Flask服務器(通過ngrok公開)流向React儀表板。儀表板顯示兩個列表:冰箱中的產品和已取出的產品(用于補貨)。
React儀表板代碼片段
importReact, { useEffect, useState }from"react";importiofrom"socket.io-client";constsocket =io("http://your-ngrok-url");constFridgeInventory= () => { const[inventory, setInventory] =useState({in: [],out: [] }); useEffect(() =>{ socket.on("dashboard_update",(data) =>{ setInventory(data); }); return() =>{ socket.off("dashboard_update"); }; }, []); return(
Fridge Inventoryh2> In Fridgeh3> {inventory.in.map((item, index) => ( - {item}li> ))} ul> div>
Out for Restockingh3> {inventory.out.map((item, index) => ( - {item}li> ))} ul> div> div> );};exportdefaultFridgeInventory;
部署和故障排除
部署這樣的邊緣人工智能解決方案伴隨著挑戰:
傳感器校準:
微調超聲波傳感器的閾值(50厘米),并確保PIR傳感器(如果使用)放置正確。
網絡穩定性:
通過ngrok運行Flask服務器需要可靠的互聯網連接。監控連接質量和延遲。
模型優化:
利用輕量級框架,并確保您的定制產品識別模型針對實時推理進行了優化。
記錄和監控:
在傳感器環路和服務器中實施可靠的日志記錄,以快速診斷任何問題。
結論
該項目將嵌入式系統、深度學習和全棧開發結合在一起,創建了一個智能冰箱庫存管理解決方案。有了Raspberry Pi 5,一個使用定制YOLOv8n模型的人工智能攝像頭和傳感器觸發的檢測,你可以自動跟蹤你的冰箱里有什么,什么需要重新進貨-所有這些都是實時的。
準備好讓你的廚房自動化了嗎?分叉我們的存儲庫,設置您的Raspberry Pi,并開始以前所未有的方式管理您的冰箱庫存。祝您愉快,享受更智能、更有條理的廚房!
如有任何問題或反饋,請隨時聯系我們的GitHub知識庫或在上面提出問題。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
AI
+關注
關注
88
文章
34520
瀏覽量
276024
-
制冷系統
+關注
關注
8
文章
131
瀏覽量
19406
-
樹莓派
+關注
關注
121
文章
1963
瀏覽量
107080
發布評論請先 登錄
相關推薦
熱點推薦
[轉帖]冰箱制冷系統連接管道出現內漏故障
案例描述:送修的故障冰箱是一臺揚子牌bcd-202直冷式平背型電冰箱,,制冷系統連接管道出現內漏故障。本案例的故障部位是主蒸發器與副
發表于 03-02 16:46
電冰箱不制冷的原因?電冰箱不制冷怎么解決?
電冰箱不制冷的原因分析1、壓縮機內高壓輸出緩沖管斷裂,或固定此管的螺釘松動,造成高壓管不排氣,低壓管不吸氣,所以壓縮機雖運轉,但不制冷。2、制冷系統泄漏,
發表于 06-15 16:54
基于AI和大數據技術的冷凍水制冷系統
中國聯通河南分公司基于AI和大數據技術,針對數據中心的冷凍水制冷系統進行優化,重點解決數據中心高PUE、高能耗的問題,并結合實際情況制定了相應的優化方案。 1.1數據中心能耗分析 網絡演進
發表于 12-03 14:46
模糊控制的微型制冷系統
介紹一種利用半導體制冷片制成的微型制冷系統,在實際應用中可制成小型冰箱,在本系統中將采用模糊算法進行控制,使系統更加智能化。關鍵詞:半導體
發表于 05-31 16:22
?44次下載
In Fridgeh3> {inventory.in.map((item, index) => ( - {item}li> ))} ul> div>
Out for Restockingh3> {inventory.out.map((item, index) => ( - {item}li> ))} ul> div> div> );};exportdefaultFridgeInventory;
部署和故障排除
部署這樣的邊緣人工智能解決方案伴隨著挑戰:
傳感器校準:
微調超聲波傳感器的閾值(50厘米),并確保PIR傳感器(如果使用)放置正確。
網絡穩定性:
通過ngrok運行Flask服務器需要可靠的互聯網連接。監控連接質量和延遲。
模型優化:
利用輕量級框架,并確保您的定制產品識別模型針對實時推理進行了優化。
記錄和監控:
在傳感器環路和服務器中實施可靠的日志記錄,以快速診斷任何問題。
結論
該項目將嵌入式系統、深度學習和全棧開發結合在一起,創建了一個智能冰箱庫存管理解決方案。有了Raspberry Pi 5,一個使用定制YOLOv8n模型的人工智能攝像頭和傳感器觸發的檢測,你可以自動跟蹤你的冰箱里有什么,什么需要重新進貨-所有這些都是實時的。
準備好讓你的廚房自動化了嗎?分叉我們的存儲庫,設置您的Raspberry Pi,并開始以前所未有的方式管理您的冰箱庫存。祝您愉快,享受更智能、更有條理的廚房!
如有任何問題或反饋,請隨時聯系我們的GitHub知識庫或在上面提出問題。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
AI
+關注
關注
88
文章
34520
瀏覽量
276024
-
制冷系統
+關注
關注
8
文章
131
瀏覽量
19406
-
樹莓派
+關注
關注
121
文章
1963
瀏覽量
107080
Out for Restockingh3> {inventory.out.map((item, index) => ( - {item}li> ))} ul> div> div> );};exportdefaultFridgeInventory;
部署和故障排除
部署這樣的邊緣人工智能解決方案伴隨著挑戰:
傳感器校準:
微調超聲波傳感器的閾值(50厘米),并確保PIR傳感器(如果使用)放置正確。
網絡穩定性:
通過ngrok運行Flask服務器需要可靠的互聯網連接。監控連接質量和延遲。
模型優化:
利用輕量級框架,并確保您的定制產品識別模型針對實時推理進行了優化。
記錄和監控:
在傳感器環路和服務器中實施可靠的日志記錄,以快速診斷任何問題。
結論
該項目將嵌入式系統、深度學習和全棧開發結合在一起,創建了一個智能冰箱庫存管理解決方案。有了Raspberry Pi 5,一個使用定制YOLOv8n模型的人工智能攝像頭和傳感器觸發的檢測,你可以自動跟蹤你的冰箱里有什么,什么需要重新進貨-所有這些都是實時的。
準備好讓你的廚房自動化了嗎?分叉我們的存儲庫,設置您的Raspberry Pi,并開始以前所未有的方式管理您的冰箱庫存。祝您愉快,享受更智能、更有條理的廚房!
如有任何問題或反饋,請隨時聯系我們的GitHub知識庫或在上面提出問題。
部署和故障排除
部署這樣的邊緣人工智能解決方案伴隨著挑戰:
傳感器校準:
微調超聲波傳感器的閾值(50厘米),并確保PIR傳感器(如果使用)放置正確。
網絡穩定性:
通過ngrok運行Flask服務器需要可靠的互聯網連接。監控連接質量和延遲。
模型優化:
利用輕量級框架,并確保您的定制產品識別模型針對實時推理進行了優化。
記錄和監控:
在傳感器環路和服務器中實施可靠的日志記錄,以快速診斷任何問題。
結論
該項目將嵌入式系統、深度學習和全棧開發結合在一起,創建了一個智能冰箱庫存管理解決方案。有了Raspberry Pi 5,一個使用定制YOLOv8n模型的人工智能攝像頭和傳感器觸發的檢測,你可以自動跟蹤你的冰箱里有什么,什么需要重新進貨-所有這些都是實時的。
準備好讓你的廚房自動化了嗎?分叉我們的存儲庫,設置您的Raspberry Pi,并開始以前所未有的方式管理您的冰箱庫存。祝您愉快,享受更智能、更有條理的廚房!
如有任何問題或反饋,請隨時聯系我們的GitHub知識庫或在上面提出問題。
-
AI
+關注
關注
88文章
34520瀏覽量
276024 -
制冷系統
+關注
關注
8文章
131瀏覽量
19406 -
樹莓派
+關注
關注
121文章
1963瀏覽量
107080
發布評論請先 登錄
評論