工程筆記本 / AIoT&邊緣運算

AIoT&邊緣運算

Arduino程式專題教學? 智慧物流!打造屬於你的 Smart Warehouse 系統(上篇) |使用 RaspberryPi Pico W

徐 豐智📅 2024-12-16👁 41
想了解智慧物流與倉儲系統是如何運作的嗎?在這支影片中,我們將教你使用 Raspberry Pi Pico 打造一個簡單又實用的智慧倉儲模型,結合程式設計與創意,讓你實作出智慧物流專題! 在這篇文章中,我們將分享如何利用Raspberry Pi PICO W 開發板,結合溫濕度感測器、OLED顯示器以及RFID讀取器,開發智慧倉儲應用的物聯網專案。這個專案不僅適合作為學習感測器偵測與程式開發,也可以實現在網頁顯示目前的倉儲環境監測、物品存取控制等實際應用功能。 文章大綱如下:
  1. 什麼是智慧倉儲(Smart Warehouse)?為什麼重要?
  2. 簡單介紹 Smart Warehouse 的概念:
  • 自動化分揀
  • 智能監控
  • 即時數據處理。
  1. 用 Raspberry Pi Pico W 實現智慧倉儲功能!
  • 硬體接線
  • 程式下載
  • 軟體環境設置及燒錄程式碼
  • 成果展示
 
撰寫/攝影 許鈺莨
時間 1小時 材料
  • Raspberry Pi Pico W 開發板
  • RK-Pico擴充板
  • DHT 22 溫溼度感測器
  • OLED 0.96吋顯示器
  • RC522 RFID讀取模組
購買連結: https://robotkingdom.com.tw/product/rk-aiot-education-kit-005-picow/
難度 2(滿分5)
   

什麼是智慧倉儲?為什麼重要?

智慧倉儲 (Smart Warehouse) 是一種融合高科技的倉庫管理方式,它利用先進的設備和技術,如感測器、自動化機器、人工智慧,來提高物流效率、降低出錯率。 為什麼智慧倉儲這麼重要呢?
  • 提高效率:人工處理貨物耗時又容易出錯,智慧倉儲可以讓包裹自動分揀,速度更快。
  • 降低成本:減少人力需求,降低營運成本。
  • 實時監控:貨物的存放、進出都能掌握得一清二楚,避免丟失或出錯。
  • 客製化需求:面對複雜的訂單需求,智慧倉儲能快速調整並滿足。
 

簡單介紹 Smart Warehouse 的概念

1、自動化分揀

想像一下,每一個包裹就像坐上過山車,經過感測器掃描後自動分送到正確的地方。這就是自動化分揀!透過感測器和輸送帶,智慧倉儲讓貨物流動更快、更準確。

2、智慧監控

智慧倉儲能隨時追蹤每一件貨物的位置,幫助管理人員實時掌控倉庫情況。如果有溫度、濕度要求的貨物(像是食品或藥品),智慧監控系統也能幫助保持最佳環境!

3、即時數據處理

貨物進出倉的數據能夠即時記錄和分析,讓倉儲管理更透明、更高效。 舉個例子:當某款熱門商品庫存即將不足時,系統會立即提醒補貨。  

用 Raspberry Pi Pico W 實現智慧倉儲功能!

  • 硬體接線
將Raspberry Pi Pico W 開發板接上RK-Pico擴充板後再接上RC522 RFID讀取模組、DHT22溫濕度模組、OLED顯示器等模組,為了方便讀者接線,故下列模組接線圖分別繪製。 RK-Pico擴充板接上RC522 RFID讀取模組   RK-Pico擴充板接上OLED顯示器   RK-Pico擴充板接上DHT22溫濕度模組  

程式下載

以下提供完整程式碼載點: https://reurl.cc/74RWQ9   程式開發是使用Arduino IDE 來開發,可以更好靈活的展示”網頁顯示”的功能,下列說明 ”網頁顯示” 的程式碼內容。 在物聯網應用中,實現動態網頁顯示感測器數據或設備狀態是非常實用的功能。本文將展示如何使用嵌入式系統生成即時更新的網頁,並提供使用者友好的介面來監控溫濕度與物品的狀態。   動態網頁顯示程式碼包含兩個主要部分:
  • generateHTML() 函式:動態生成 HTML 格式的網頁內容。
  • handleRoot() 函式:處理 HTTP 請求,將生成的 HTML 傳送給客戶端瀏覽器。
    generateHTML() 函式解析 這是一個負責生成 HTML 網頁內容的函式。它會根據溫度、濕度,以及物品的狀態動態調整網頁的顯示內容。  
String html = "<!DOCTYPE html><html>";
html += "<head><meta charset='UTF-8'><title>物品狀態監控</title>";
html += "<meta http-equiv='refresh' content='10'>";
html += "<style>";
html += "body { font-family: Arial; text-align: center; margin-top: 50px; }";
html += "h1 { font-size: 4em; }";
html += "p { font-size: 3em; }";
html += "</style></head><body>";
 
  • <!DOCTYPE html>:指定 HTML5 標準。
  • <meta charset='UTF-8'>:設定網頁編碼為 UTF-8,確保支援中文等多語言。
  • <meta http-equiv='refresh' content='10'>:讓網頁每 10 秒自動重新整理,實現數據的即時更新。
  • <style>:內嵌 CSS,簡單設計了網頁的排版樣式,讓內容居中並增加可讀性。
  動態數據顯示部分
html += "<h1>物品狀態監控系統</h1>";
html += "<p>溫度: " + String(currentTemp) + "°C</p>";
html += "<p>濕度: " + String(currentHumi) + "%</p>";
  • 使用變數 currentTemp 和 currentHumi 來顯示目前的溫度與濕度數據。
  • 透過 String() 函式將數值轉換為字串,便於與 HTML 結合。
  物品狀態顯示部分
if (itemPresent) {
    html += "<p style='color: green;'>物品狀態:已上架</p>";
    html += "<p>物品名稱: " + itemName + "</p>";
} else {
    html += "<p style='color: red;'>物品狀態:已下架</p>";
}
  • 根據布林變數 itemPresent 的值,決定顯示物品是否上架:
若物品上架,顯示綠色文字「已上架」,並顯示物品名稱(itemName)。 若物品未上架,顯示紅色文字「已下架」。   handleRoot() 函式解析
void handleRoot() {
  server.send(200, "text/html", generateHTML());
}
  • HTTP 伺服器回應處理:當用戶端發送 HTTP 請求到伺服器的根路徑(/)時,執行這個函式。
  • send():以 HTTP 200 狀態碼,指定內容類型為 "text/html",並傳送由 generateHTML() 函式生成的 HTML 網頁。
 
  • 軟體環境設置及如何上傳程式
程式是採用吉哥積木Blockly F2的Arduino IDE撰寫,有興趣的讀者可以到劉老師網站觀看。 Blockly F2 下載處及如何上傳程式可以看這篇教學網站: https://cavedu.gitbook.io/cavedu/rk005/cheng-shi-zhuan-xie-ruan-ti-xia-zai  

成果展示

     

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。