在精準農業與物聯網技術快速發展的背景下,智慧水產養殖系統逐漸成為提升產能和效率的關鍵。本文介紹如何利用 Pyboard 微控制器結合 pH、濁度、TDS 和溫度感測器,建構一個低成本且高效的水質監控系統。透過 ESP8266 WiFi 模組,系統能將採集到的資料即時上傳至 ThingSpeak 物聯網平台,方便使用者遠端監控水質狀況,並可根據資料變化做出相應的調整,有效提升水產養殖的管理效率。此外,系統整合 OLED 顯示螢幕,可即時顯示各項水質引數,方便現場監控。
溫室監控系統與水產養殖監控系統的物聯網應用
溫室監控系統
溫室是用於種植花卉和蔬菜的設施。溫室在白天會因陽光照射而升溫,加熱植物、土壤和結構。溫室保護作物免受各種疾病的侵害,尤其是那些透過雨水濺到植物上的土傳疾病。溫室效應是一種對人類有益的自然現象。為了實作最佳的植物生長,必須持續監控和管理溫室環境,例如溫度、濕度、土壤濕度和光照強度等(Environmental and Pollution Science, 2019)。許多農民無法從溫室作物中獲利,因為他們無法控制影響植物發育和產量的兩個關鍵因素。溫室的溫度應保持在指定的水平。高濕度可能導致作物蒸騰和水蒸氣在各種溫室表面凝結。溫室監控和管理系統正是為瞭解決這些問題而設計的。本文將討論用於溫室環境監控的各種感測器的設計和實作,例如濕度、溫度、光照條件和土壤濕度。
系統實作
作者使用物聯網實作了溫室監控系統。所設計的系統監控溫度、濕度、水位和光照等引數。Pyboard與感測器的引腳連線詳情如表 1所示。溫度感測器和濕度感測器檢測溫度和濕度,土壤濕度感測器檢測水位,LDR感測器檢測光照。詳細的介面電路圖如圖 1所示。
| Pyboard | OLED | DHT22 | LDR | Moisture |
|---|---|---|---|---|
| Y9 | SCL | – | – | – |
| Y10 | SDA | – | – | – |
| X1 | – | Data | – | – |
| X2 | – | – | Output of circuit | – |
| X3 | – | – | – | Aout |
ThingSpeak頻道組態
建立頻道後,點選“新建頻道”按鈕,然後輸入要上傳到該頻道的資料的“名稱和描述”,如圖 2所示。在本應用中,作者將頻道命名為“Greenhouse Monitoring”,並建立了四個欄位,如**圖 2(a)**所示。然後,點選“儲存頻道”按鈕以儲存詳細資訊。**圖 2(b)**顯示了溫室監控系統的流程圖。
程式碼實作
# 完整程式碼(main.py)
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)
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)
temp_hum = dht.DHT22(Pin('X1'))
while True:
# 重置Pyboard WiFi模組
rst_pyb = Pin('X11', Pin.OUT)
rst_pyb.low()
pyb.delay(20)
rst_pyb.high()
pyb.delay(500)
Pyboard_wifi = pywifi.ESP8266(1, 115200)
wifi_mode = 3
Pyboard_wifi.set_mode(wifi_mode)
pyb.delay(50)
Pyboard_wifi.connect(ssid='AndroidAP93E9', psk='uxbm0411')
pyb.delay(50)
# 讀取感測器資料
temp_hum.measure()
temp = temp_hum.temperature()
hum = temp_hum.humidity()
LDR = pyb.ADC('X2')
Out1 = LDR.read()
Moisture = pyb.ADC('X3')
Out2 = Moisture.read()
mois = ((Out2 - 3700) * (100 - 1) / (1300 - 3700) + 1)
# 在OLED顯示屏上顯示資料
oled.text("Tem: " + str(temp), 0, 10)
oled.text("Humidity:" + str(hum), 0, 20)
oled.text("Light:" + str(Out1), 0, 30)
oled.text("Moist-sense:" + str(Out2), 0, 40)
oled.text("Moisture %:" + str(mois), 0, 50)
oled.show()
oled.fill(0)
pyb.delay(1000)
# 將資料上傳到ThingSpeak
Pyboard_wifi.start_connection(protocol='TCP', dest_ip='184.106.153.149', dest_port=80, debug=True)
Pyboard_wifi.send('GET https://api.thingspeak.com/update?api_key=E3SLU3MT69BN8G3V&field1=' + str(temp) + '&field2=' + str(hum) + '&field3=' + str(Out1) + '&field4=' + str(mois) + ' HTTP/1.0\r\nHost: 192.168.43.176\r\n\r\n', debug=True)
pyb.delay(1000)
程式碼解密:
- 初始化設定: 程式首先匯入必要的模組並初始化OLED顯示屏。
- 感測器資料讀取: 使用DHT22感測器讀取溫度和濕度,使用ADC讀取LDR和土壤濕度感測器的資料。
- 資料顯示: 將讀取到的資料顯示在OLED顯示屏上。
- 資料上傳: 使用WiFi模組將資料上傳到ThingSpeak雲平台。
水產養殖監控系統
水產養殖是一種快速發展的食物生產方式,成功地增加了魚類別和貝類別的產量,有助於養活世界不斷增長的人口。水產養殖是許多人的主要生存手段,是社會一大階層的主要收入來源。然而,這種食物生產方式面臨著諸多問題,包括成本上升、政府監管趨嚴和水資源有限。這些困難使得開發更複雜的監控和餵養裝置成為必要,以提供嚴格控制和長期的生長條件。水產養殖,也稱為水產養殖業,是指在受控的水生環境中繁殖、飼養和收穫魚類別、海藻、藻類別和其他生物。水產養殖是為人類提供高品質蛋白質最可靠和低環境影響的過程之一。
系統實作
作者使用物聯網實作了水產養殖監控系統。所設計的系統監控濁度、水溫、pH值和總溶解固體(TDS)等引數。Pyboard與感測器的引腳連線詳情如表 2所示。詳細的介面電路圖如圖 3所示。Grove—PH感測器檢測水的pH值,濁度感測器檢測水的濁度,TDS感測器檢測水的TDS,溫度感測器(DS18B20)檢測水溫。
| Pyboard | OLED | Turbidity | pH | TDS | DS18B20 |
|---|---|---|---|---|---|
| Y9 | SCL | – | – | – | – |
| Y10 | SDA | – | – | – | – |
| Y11 | – | Output of circuit | – | – | – |
| Y12 | – | – | SIG | – | – |
| X7 | – | – | – | Aout | – |
| X8 | – | – | – | – | Sensor output |
ThingSpeak頻道組態
建立頻道後,點選“新建頻道”按鈕,然後輸入要上傳到該頻道的資料的“名稱和描述”,如圖 4所示。在本應用中,作者將頻道命名為“Aquaculture Monitoring”,並建立了四個欄位,如**圖 4(a)**所示。然後,點選“儲存頻道”按鈕以儲存詳細資訊。**圖 4(b)**顯示了水產養殖監控系統的流程圖。
智慧水產養殖監控系統實作與 ThingSpeak 雲端整合
在現代水產養殖業中,水質監測是確保養殖環境穩定的關鍵因素。本文將介紹如何利用 Pyboard 開發板結合多種感測器,實作智慧水產養殖監控系統,並將資料上傳至 ThingSpeak 雲端進行遠端監控。
系統硬體架構
本系統採用 Pyboard 作為主控單元,搭配多個感測器進行水質引數的監測,包括:
- pH 感測器
- 濁度感測器
- TDS 感測器
- 溫度感測器(DS18B20)
此外,系統還整合了 OLED 顯示螢幕,用於本地顯示水質引數,以及 ESP8266 WiFi 模組,用於將資料上傳至 ThingSpeak 雲端。
軟體實作
初始化設定
首先,需要初始化 Pyboard 並設定相關的硬體介面。程式碼如下:
import time
import ssd1306
import machine
from pyb import Pin
from micropython import const
import pyb
import onewire
import ds18x20
# OLED 初始化
width = const(128)
height = const(64)
ssd1306_scl = Pin('Y9', Pin.OUT_PP)
ssd1306_sda = Pin('X10', Pin.OUT_PP)
i2c_ssd1306 = machine.I2C(scl=ssd1306_scl, sda=ssd1306_sda)
oled = ssd1306.SSD1306_I2C(width, height, i2c_ssd1306)
# WiFi 初始化
Pyboard_wifi = pywifi.ESP8266(1, 115200)
wifi_mode = 3
Pyboard_wifi.set_mode(wifi_mode)
Pyboard_wifi.connect(ssid='Your_SSID', psk='Your_PASSWORD')
感測器資料讀取
系統透過 ADC 介面讀取 pH、濁度及 TDS 感測器的資料,並透過 OneWire 協定讀取 DS18B20 溫度感測器的資料。
# 感測器資料讀取
adc = pyb.ADC('Y12') # pH 感測器
adc1 = pyb.ADC('Y11') # 濁度感測器
adc2 = pyb.ADC('X8') # TDS 感測器
ds_pin = Pin('X7') # 溫度感測器
# pH 值計算
sensorSum = 0
for i in range(50):
sensorValue = adc.read()
sensorSum += sensorValue
sensorValue = sensorSum / 50
ph = 7 - 1000 * (sensorValue - 372) * 3.3 / 59.16 / 4095
# 濁度計算
val1 = adc1.read()
scaled_value = (val1 - 60) * (0.2 - 5) / (2200 - 60) + 5
# TDS 計算
V = val2 * (3.3 / 4095.0)
tdsValue = (133.42 / V * V * V - 255.86 * V * V + 857.39 * V) * 0.5
# 溫度讀取
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
ds_sensor.convert_temp()
time.sleep(1)
for rom in roms:
temp = ds_sensor.read_temp(rom)
#### 內容解密:
此段程式碼負責讀取各個感測器的資料,並進行必要的計算轉換。pH 值是透過平均多個取樣值後計算得出,而濁度和 TDS 值則是根據感測器的特性進行換算。溫度資料則是直接透過 DS18B20 感測器讀取。
OLED 顯示與資料上傳
系統將讀取到的水質引數顯示在 OLED 螢幕上,並透過 ESP8266 將資料上傳至 ThingSpeak。
# OLED 顯示
oled.fill(0)
oled.text("Ph:" + str(ph), 0, 0)
oled.text("Turbidity:" + str(scaled_value), 0, 10)
oled.text("TDS:" + str(tdsValue), 0, 20)
oled.text("Temp:" + str(temp), 0, 30)
oled.show()
# ThingSpeak 資料上傳
Pyboard_wifi.start_connection(protocol='TCP', dest_ip='184.106.153.149', dest_port=80, debug=True)
Pyboard_wifi.send('GET https://api.thingspeak.com/update?api_key=YOUR_API_KEY&field1=' + str(ph) +
'&field2=' + str(scaled_value) + '&field3=' + str(tdsValue) + '&field4=' + str(temp) +
' HTTP/1.0\r\nHost: api.thingspeak.com\r\n\r\n', debug=True)
#### 內容解密:
此段程式碼首先清除 OLED 螢幕內容,並顯示最新的水質引數。接著,透過 ESP8266 建立 TCP 連線,將水質資料上傳至 ThingSpeak。其中 YOUR_API_KEY 需要替換為實際的 ThingSpeak API 金鑰。
未來可進一步擴充套件系統功能,例如:
- 增加更多水質引數的監測,如溶解氧、氨氮等。
- 結合自動化控制系統,實作水質引數的自動調節。
- 利用更先進的通訊技術,如 LoRaWAN 或 NB-IoT,提升系統的覆寫範圍和穩定性。
練習題
- 使用 Pyboard 控制八個 LED 燈的閃爍。
- 設計一個系統,使用 ESP32 控制六個家電裝置,並在 OLED 螢幕上顯示其狀態。
- 結合溫度感測器和繼電器,實作溫度超過閾值時自動開啟風扇的功能。
- 為兩個房間分別安裝溫度感測器和風扇,設計一個系統監控各房間溫度並自動控制風扇。
- 利用濁度感測器和 ESP32,設計一個監測水質潔淨度的系統,當濁度超過閾值時發出警示。
- 將多個 IR 感測器整合至 e-waste bin 系統,精確監控垃圾桶狀態並將資料上傳至 ThingSpeak。
- 結合更多工業感測器,擴充套件環境監測系統的功能。