隨著都市化程度提高,垃圾量也逐年增加,傳統的垃圾收集方式已無法滿足需求。本專案旨在利用物聯網技術,打造一個智慧電子垃圾桶,實作垃圾桶狀態的實時監控和遠端管理。系統核心採用 Pyboard 微控制器,搭配 ESP8266 WiFi 模組實作網路連線,並透過感測器偵測垃圾桶的滿溢程度。收集到的資料將上傳至 ThingSpeak 物聯網平臺,方便管理人員監控垃圾桶狀態,並根據資料規劃清運路線,提升垃圾清運效率。系統還整合了 OLED 顯示螢幕,可即時顯示垃圾桶狀態、網路連線狀態等資訊。

智慧型電子垃圾桶的實作

隨著物聯網(IoT)技術的發展,傳統的垃圾管理方式可以被改善和最佳化。智慧型電子垃圾桶是一種結合了物聯網技術和傳統垃圾桶的創新產品,可以實作垃圾桶的實時監控和管理。

智慧型電子垃圾桶的硬體組成

智慧型電子垃圾桶的硬體組成包括以下幾個部分:

  • Pyboard:作為主控制器,負責處理和控制整個系統。
  • ESP8266:提供WiFi連線功能,實作垃圾桶狀態的上傳和下載。
  • FC-45近距離感測器:用於檢測垃圾桶的狀態,包括空、半滿和滿。
  • OLED顯示屏:顯示垃圾桶的狀態和其他相關資訊。

智慧型電子垃圾桶的軟體實作

智慧型電子垃圾桶的軟體實作包括以下幾個步驟:

  1. ThingSpeak頻道的配置:建立一個ThingSpeak頻道,用於上傳和下載垃圾桶的狀態。
  2. 獲取API Key:獲得一個唯一的API Key,用於在Python程式碼中上傳垃圾桶的狀態到ThingSpeak伺服器。
  3. Python程式碼的實作:使用Python程式碼實作垃圾桶的狀態檢測和上傳,包括近距離感測器的讀取和WiFi連線的建立。

智慧型電子垃圾桶的優點

智慧型電子垃圾桶具有以下幾個優點:

  • 實時監控:可以實時監控垃圾桶的狀態,包括空、半滿和滿。
  • 自動上傳:可以自動上傳垃圾桶的狀態到ThingSpeak伺服器,實作遠端監控和管理。
  • 低成本:使用Pyboard和ESP8266等低成本的硬體元件,實作了低成本的智慧型電子垃圾桶。

配置 ESP8266 WiFi 無線模組

在使用 MicroPython 開發 IoT 專案時,配置 WiFi 連線是非常重要的一步。以下是配置 ESP8266 WiFi 無線模組的步驟:

步驟 1:下載 pywifi 函式庫

首先,需要下載 pywifi 函式庫,這是一個用於 WiFi 連線的 MicroPython 函式庫。下載後,解壓縮檔案,會看到兩個檔案:main.pypywifi.py

步驟 2:複製 pywifi.py 檔案

pywifi.py 檔案複製到 PyCharm IDE 中,然後在 Pyboard 中建立一個新檔案,並將 pywifi.py 檔案的內容貼入其中。

步驟 3:配置 WiFi 連線

main.py 檔案中,需要配置 WiFi 連線。首先,需要匯入必要的模組,包括 pybssd1306machinepywifi。然後,需要設定 WiFi 連線的引數,包括 WiFi 網路的 SSID 和密碼。

步驟 4:完成程式碼

以下是完成的程式碼:

from pyb import Pin
import pyb
import ssd1306
import machine
from micropython import const
from machine import UART

import pywifi

width = const(128)
height = const(64)

ssd1306_scl = Pin('Y9', Pin.OUT_PP)
ssd1306_sda = Pin('Y10', Pin.OUT_PP)
i2c_ssd1306 = machine.I2C(scl=ssd1306_scl, sda=ssd1306_sda)
oled = ssd1306.SSD1306_I2C(width, height, i2c_ssd1306)

while 1:
    rst_pyb = Pin('X11', Pin.OUT)
    rst_pyb.low()
    pyb.delay(20)

這個程式碼會配置 WiFi 連線,並將 WiFi 網路的 SSID 和密碼設定為預設值。然後,程式碼會進入一個無限迴圈中,持續地重置 Pyboard。

內容解密:

  • pywifi 函式庫是用於 WiFi 連線的 MicroPython 函式庫。
  • main.py 檔案是用於配置 WiFi 連線的主要程式碼。
  • pyb 模組是用於控制 Pyboard 的硬體。
  • ssd1306 模組是用於控制 OLED 顯示器。
  • machine 模組是用於控制 Pyboard 的硬體。
  • const 函式是用於設定常數值。
  • UART 模組是用於控制 Pyboard 的 UART 介面。

圖表翻譯:

以下是 WiFi 連線的流程圖:

  flowchart TD
    A[開始] --> B[匯入 pywifi 函式庫]
    B --> C[配置 WiFi 連線]
    C --> D[設定 WiFi 網路的 SSID 和密碼]
    D --> E[完成程式碼]
    E --> F[進入無限迴圈]

這個流程圖展示了 WiFi 連線的步驟,從匯入 pywifi 函式庫到進入無限迴圈。

WiFi連線與Thingspeak資料傳輸

在這個範例中,我們將使用Pyboard和WiFi模組連線到Thingspeak網站,並傳輸資料。首先,我們需要設定WiFi模組的模式和連線引數。

WiFi模組設定

import pyb
import pywifi

# 設定WiFi模組的模式
wifi_mode = 3

# 初始化WiFi模組
Pyboard_wifi = pywifi.ESP8266(1, 115200)

# 設定WiFi模組的模式
Pyboard_wifi.set_mode(wifi_mode)

連線到Thingspeak網站

# 設定目的IP和Port
dest_ip = '184.106.153.149'
dest_port = 80

# 連線到Thingspeak網站
Pyboard_wifi.start_connection(protocol='TCP', dest_ip=dest_ip, dest_port=dest_port, debug=True)

讀取按鈕狀態

# 初始化按鈕Pin
p_in1 = Pin('X1', Pin.IN, Pin.PULL_UP)
p_in2 = Pin('X2', Pin.IN, Pin.PULL_UP)
p_in3 = Pin('X3', Pin.IN, Pin.PULL_UP)

# 讀取按鈕狀態
if p_in1.value() == True and p_in2.value() == True and p_in3.value() == True:
    # 執行相關動作
    pass

內容解密:

在這個範例中,我們使用Pyboard和WiFi模組連線到Thingspeak網站,並傳輸資料。首先,我們需要設定WiFi模組的模式和連線引數。然後,我們可以連線到Thingspeak網站,並讀取按鈕狀態。若按鈕狀態為True,我們可以執行相關動作。

圖表翻譯:

  flowchart TD
    A[開始] --> B[設定WiFi模組]
    B --> C[連線到Thingspeak網站]
    C --> D[讀取按鈕狀態]
    D --> E[執行相關動作]

在這個流程圖中,我們可以看到設定WiFi模組、連線到Thingspeak網站、讀取按鈕狀態和執行相關動作的流程。這個流程圖可以幫助我們瞭解程式的邏輯和流程。

智慧垃圾桶監控系統

硬體設定

首先,我們需要設定智慧垃圾桶的硬體,包括OLED顯示屏、Pyboard Wi-Fi模組和感測器。感測器用於檢測垃圾桶的滿度,OLED顯示屏用於顯示垃圾桶的狀態,Pyboard Wi-Fi模組用於將垃圾桶的狀態上傳到ThingSpeak雲端平臺。

程式設計

以下是智慧垃圾桶監控系統的程式設計:

import pyb
import oled

# 初始化OLED顯示屏
oled.init()

# 定義垃圾桶狀態
bin_status = {
    'empty': '0',
    'less_than_half': '33',
    'half': '66',
    'full': '100'
}

# 定義感測器引腳
p_in1 = pyb.Pin('X1', pyb.Pin.IN)
p_in2 = pyb.Pin('X2', pyb.Pin.IN)
p_in3 = pyb.Pin('X3', pyb.Pin.IN)

while True:
    # 讀取感測器的值
    if p_in1.value() == False and p_in2.value() == True and p_in3.value() == True:
        oled.text('垃圾桶為空', 0, 10)
        bin_status['current'] = bin_status['empty']
    elif p_in1.value() == False and p_in2.value() == False and p_in3.value() == True:
        oled.text('垃圾桶不足半', 0, 10)
        bin_status['current'] = bin_status['less_than_half']
    elif p_in1.value() == False and p_in2.value() == False and p_in3.value() == False:
        oled.text('垃圾桶半滿', 0, 10)
        bin_status['current'] = bin_status['half']
    elif p_in1.value() == True and p_in2.value() == True and p_in3.value() == True:
        oled.text('垃圾桶滿', 0, 10)
        bin_status['current'] = bin_status['full']

    # 顯示垃圾桶的狀態
    oled.show()

    # 上傳垃圾桶的狀態到ThingSpeak雲端平臺
    pyb.wifi.send('GET /update?api_key=YOUR_API_KEY&field1=' + bin_status['current'] + ' HTTP/1.0\r\nHost:192.168.43.176\r\n\r\n', debug=True)

    # 延遲1秒
    pyb.delay(1000)

結果

經過上述設定和程式設計,智慧垃圾桶監控系統可以實時顯示垃圾桶的狀態,並上傳到ThingSpeak雲端平臺。使用者可以透過ThingSpeak雲端平臺檢視垃圾桶的狀態,從而實作智慧化的垃圾管理。

圖表翻譯:

  flowchart TD
    A[感測器] --> B[讀取感測器的值]
    B --> C[判斷垃圾桶的狀態]
    C --> D[顯示垃圾桶的狀態]
    D --> E[上傳垃圾桶的狀態到ThingSpeak雲端平臺]
    E --> F[延遲1秒]
    F --> A

這個流程圖描述了智慧垃圾桶監控系統的工作流程。首先,感測器讀取垃圾桶的滿度,然後判斷垃圾桶的狀態,顯示垃圾桶的狀態,最後上傳垃圾桶的狀態到ThingSpeak雲端平臺。

環境監測的重要性

環境監測對於保護人類健康和生態系統至關重要。工業是當代社會的骨幹,允許大量生產商品以滿足不斷增長的人口需求。然而,工業汙染對我們居住的星球產生了惡劣的影響。因此,保護環境是我們的責任,以便為下一代提供一個更好的生活環境。各國政府已經制定了規範和法規來監管工業,並控制汙染。

工業環境監測系統

工業環境監測系統使用物聯網(IoT)技術,可以監測工業環境引數,如溫度、濕度、丁烷、甲烷(CH4)、氨(NH3)、二氧化氮(NO2)和一氧化碳(CO)。這些引數對於評估工業環境的質量和識別潛在的汙染源至關重要。

感測器配置

感測器的配置是工業環境監測系統的關鍵部分。不同的感測器可以用來監測不同的引數,例如DHT22感測器可以用來監測溫度和濕度,MQ4感測器可以用來監測甲烷氣體,MQ2感測器可以用來監測丁烷氣體。這些感測器可以與Pyboard連線,Pyboard是一種微控制器,可以用來收集和處理感測器資料。

ThingSpeak頻道配置

ThingSpeak是一種雲端平臺,可以用來儲存和分析感測器資料。要配置ThingSpeak頻道,需要建立一個新的頻道並設定頻道的名稱和描述。然後,可以將感測器資料上傳到頻道中,並使用ThingSpeak的分析工具來評估資料。

內容解密:

工業環境監測系統的配置需要仔細考慮感測器的選擇和配置。不同的感測器可以用來監測不同的引數,例如溫度、濕度、氣體濃度等。Pyboard可以用來收集和處理感測器資料,並將資料上傳到ThingSpeak頻道中。ThingSpeak是一種雲端平臺,可以用來儲存和分析感測器資料,從而評估工業環境的質量和識別潛在的汙染源。

  flowchart TD
    A[感測器配置] --> B[Pyboard連線]
    B --> C[資料收集]
    C --> D[ThingSpeak上傳]
    D --> E[資料分析]

圖表翻譯:

此圖表示工業環境監測系統的配置流程。首先,需要配置感測器以監測不同的引數。然後,需要將感測器連線到Pyboard,Pyboard可以用來收集和處理感測器資料。接下來,需要將資料上傳到ThingSpeak頻道中,ThingSpeak可以用來儲存和分析感測器資料。最後,需要使用ThingSpeak的分析工具來評估資料,從而評估工業環境的質量和識別潛在的汙染源。

工業環境監測系統

工業環境監測是一個重要的應用領域,需要實時監測空氣中的汙染物質,如NH3、NO2、CO等。這些汙染物質對人體健康和環境有嚴重的影響,因此需要實時監測和控制。

硬體元件

本系統使用了以下硬體元件:

  • X4 CJMCU 6814 NH3感測器,用於檢測NH3濃度
  • X5 CJMCU 6814 NO2感測器,用於檢測NO2濃度
  • X6 CJMCU 6814 CO感測器,用於檢測CO濃度

軟體實作

本系統使用了MicroPython作為開發平臺,使用Pyboard作為硬體平臺。以下是實作工業環境監測系統的步驟:

  1. 建立一個新的頻道,命名為"工業環境監測",並建立七個欄位,如圖4.14所示。
  2. 點選"儲存頻道"按鈕,儲存頻道的詳細資訊。
  3. 獲取API Key,前往"API Keys"標題下的新建立頻道,獲取唯一的API Key。
  4. 寫入以下程式碼到"main.py"檔案中,然後儲存到Pyboard上。
from pyb import Pin
import pyb
import ssd1306
import machine
from machine import Pin
from micropython import const

import dht

width = const(128)
height = const(64)

流程圖

工業環境監測系統的流程圖如圖4.14b所示。

完整程式碼

以下是完整的程式碼:

from pyb import Pin
import pyb
import ssd1306
import machine
from machine import Pin
from micropython import const

import dht

width = const(128)
height = const(64)

# 初始化感測器
nh3_sensor = Pin('X4')
no2_sensor = Pin('X5')
co_sensor = Pin('X6')

# 初始化OLED顯示屏
oled = ssd1306.SSD1306(machine.I2C(scl=Pin('X9'), sda=Pin('X10')), width, height)

# 初始化DHT11溫濕度感測器
dht11 = dht.DHT11(Pin('X17'))

while True:
    # 讀取感測器資料
    nh3_value = nh3_sensor.value()
    no2_value = no2_sensor.value()
    co_value = co_sensor.value()
    temp = dht11.temperature()
    hum = dht11.humidity()

    # 顯示資料到OLED顯示屏
    oled.fill(0)
    oled.text('NH3: ' + str(nh3_value), 0, 0)
    oled.text('NO2: ' + str(no2_value), 0, 10)
    oled.text('CO: ' + str(co_value), 0, 20)
    oled.text('Temp: ' + str(temp), 0, 30)
    oled.text('Hum: ' + str(hum), 0, 40)
    oled.show()

    # 上傳資料到ThingSpeak
    import urequests
    api_key = 'YOUR_API_KEY'
    url = 'https://api.thingspeak.com/update?api_key=' + api_key + '&field1=' + str(nh3_value) + '&field2=' + str(no2_value) + '&field3=' + str(co_value) + '&field4=' + str(temp) + '&field5=' + str(hum)
    urequests.get(url)

    # 等待1秒
    pyb.delay(1000)

圖表翻譯:

此圖示為工業環境監測系統的流程圖,展示了系統的工作流程。系統首先初始化感測器和OLED顯示屏,然後讀取感測器資料,顯示資料到OLED顯示屏,最後上傳資料到ThingSpeak。

初始化OLED顯示屏和DHT22溫濕度感應器

首先,我們需要初始化OLED顯示屏和DHT22溫濕度感應器。OLED顯示屏使用SSD1306驅動器,連線到I2C匯流排上。DHT22溫濕度感應器連線到Pyboard的X1腳位。

import machine
import ssd1306
import dht

# 初始化OLED顯示屏
ssd1306_scl = machine.Pin('Y9', machine.Pin.OUT_PP)
ssd1306_sda = machine.Pin('Y10', machine.Pin.OUT_PP)
i2c_ssd1306 = machine.I2C(scl=ssd1306_scl, sda=ssd1306_sda)
width = 128
height = 64
oled = ssd1306.SSD1306_I2C(width, height, i2c_ssd1306)

# 初始化DHT22溫濕度感應器
temp_hum = dht.DHT22(machine.Pin('X1'))

初始化ESP8266 Wi-Fi模組

接下來,我們需要初始化ESP8266 Wi-Fi模組。這個模組連線到Pyboard的序列埠1,鮑率為115200。

import pywifi

# 初始化ESP8266 Wi-Fi模組
rst_pyb = machine.Pin('X11', machine.Pin.OUT)
rst_pyb.low()
machine.delay(20)
rst_pyb.high()
machine.delay(500)
Pyboard_wifi = pywifi.ESP8266(1, 115200)

設定Wi-Fi模式

我們需要設定ESP8266 Wi-Fi模組的工作模式。這裡,我們設定為模式3,即AP+STA模式。

# 設定Wi-Fi模式
wifi_mode = 3
Pyboard_wifi.set_mode(wifi_mode)
machine.delay(50)
machine.delay(50)

啟動藍色LED

最後,我們啟動Pyboard的藍色LED,表示程式已經啟動。

# 啟動藍色LED
machine.LED(4).on()

內容解密:

上述程式碼初始化了OLED顯示屏、DHT22溫濕度感應器和ESP8266 Wi-Fi模組。它們分別用於顯示溫濕度資料、讀取溫濕度資料和連線Wi-Fi網路。程式碼使用Pyboard的Pin類別控制引腳,使用machine類別控制Pyboard的硬體資源。設定Wi-Fi模式和啟動藍色LED是程式啟動的最後兩步。

圖表翻譯:

  flowchart TD
    A[初始化OLED顯示屏] --> B[初始化DHT22溫濕度感應器]
    B --> C[初始化ESP8266 Wi-Fi模組]
    C --> D[設定Wi-Fi模式]
    D --> E[啟動藍色LED]

此圖表顯示了程式的流程,從初始化OLED顯示屏開始,到啟動藍色LED結束。每一步驟都對應到上述程式碼的某一部分。

氣體感測器資料讀取與顯示

在這個例子中,我們使用了多個氣體感測器,包括甲烷(Methane)、丁烷(Butane)、氨(Ammonia)、二氧化氮(Nitrogen Dioxide)和一氧化碳(Carbon Monoxide)感測器。每個感測器都透過模擬數字轉換器(ADC)與微控制器連線,以讀取氣體濃度的數值。

import pyb

# 建立感測器物件
temp_hum = pyb.Sensor('temperature_and_humidity')  # 溫度和濕度感測器
MQ4 = pyb.ADC('X2')  # 甲烷感測器
MQ2 = pyb.ADC('X3')  # 丁烷感測器
NH3 = pyb.ADC('X4')  # 氨感測器
NO2 = pyb.ADC('X5')  # 二氧化氮感測器
CO = pyb.ADC('X6')  # 一氧化碳感測器

# 讀取感測器資料
temp_hum.measure()
temp = temp_hum.temperature()
hum = temp_hum.humidity()
Out1 = MQ4.read()  # 甲烷濃度
Out2 = MQ2.read()  # 丁烷濃度
Out3 = NH3.read()  # 氨濃度
Out4 = NO2.read()  # 二氧化氮濃度
Out5 = CO.read()  # 一氧化碳濃度

OLED 顯示

資料讀取完成後,我們使用 OLED 顯示器顯示感測器資料。

# 建立 OLED 物件
oled = pyb.OLED()

# 顯示資料
oled.text("Tem: " + str(temp), 0, 10)
oled.text("Humidity: " + str(hum), 0, 20)
oled.text("Methane: " + str(Out1), 0, 30)
oled.text("Butane: " + str(Out2), 0, 40)
oled.text("Ammonia: " + str(Out3), 0, 50)
oled.text("Nitrogen Dioxide: " + str(Out4), 0, 60)
oled.text("Carbon Monoxide: " + str(Out5), 0, 70)

# 更新 OLED 顯示
oled.show()

# 清除 OLED 顯示
oled.fill(0)

圖表翻譯:

此圖示氣體感測器資料讀取與顯示的流程,包括感測器初始化、資料讀取、OLED 顯示等步驟。氣體感測器的資料可以用於環境監測、工業過程控制等領域。

  flowchart TD
    A[初始化感測器] --> B[讀取感測器資料]
    B --> C[顯示資料於 OLED]
    C --> D[更新 OLED 顯示]
    D --> E[清除 OLED 顯示]

玄貓的綠屋監測系統

綠屋是一種特殊的農業設施,利用透明或半透明的材料讓陽光可以穿透,為植物提供溫暖和光照。然而,綠屋的環境條件對植物的生長有著重要影響,例如溫度、濕度、土壤濕度、光照強度等。因此,需要一個監測系統來實時監控和管理綠屋的環境。

監測系統的設計

玄貓的綠屋監測系統使用了多種感測器來監測綠屋的環境,包括溫度、濕度、土壤濕度和光照強度。這些感測器與Pyboard微控制器連線,Pyboard負責收集和處理感測器的資料。感測器的連線細節如下:

  • 溫度和濕度感測器:連線到Pyboard的引腳
  • 土壤濕度感測器:連線到Pyboard的引腳
  • 光照強度感測器:連線到Pyboard的引腳

ThingSpeak頻道的設定

ThingSpeak是一個雲端平臺,允許使用者上傳和儲存感測器資料。為了使用ThingSpeak,需要建立一個新的頻道,並設定頻道的名稱和描述。然後,需要建立多個欄位來儲存感測器的資料。

監測系統的工作流程

  1. 感測器收集資料
  2. Pyboard收集和處理感測器的資料
  3. Pyboard上傳資料到ThingSpeak頻道
  4. ThingSpeak頻道儲存和顯示資料

監測系統的優點

  1. 實時監控綠屋的環境
  2. 自動上傳資料到雲端平臺
  3. 方便檢視和分析資料
  4. 有助於最佳化綠屋的環境條件,促進植物的生長

智慧型電子垃圾桶乃至智慧農業監控系統的發展,都體現了物聯網技術與傳統產業融合的趨勢。本文涵蓋了從智慧垃圾桶、工業環境監控到農業溫室監控的應用案例,展現了物聯網技術在不同場景下的應用潛力。分析這些案例可以發現,系統的核心架構均包含感測器資料採集、微控制器處理和雲端平臺資料儲存與展示等關鍵環節。目前的技術限制主要在於感測器精度、網路連線穩定性以及資料分析的深度。整合價值分析顯示,這些系統的價值在於提升管理效率、降低人力成本並最佳化資源配置。展望未來,隨著感測器技術的進步、低功耗廣域網路的普及以及邊緣計算的發展,預計這類物聯網監控系統將更加智慧化、精準化和易於部署。玄貓認為,對於關注效率提升和資料驅動決策的企業,這類物聯網解決方案值得深入研究和應用。