創(chuàng)建可持續(xù)城市農(nóng)業(yè)的智能植物監(jiān)視器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我的項(xiàng)目旨在為可持續(xù)城市農(nóng)業(yè)創(chuàng)建一個(gè)智能植物監(jiān)視器,以促進(jìn)全球可持續(xù)城市農(nóng)業(yè)。
你的項(xiàng)目是關(guān)于什么的?
我們的項(xiàng)目“可持續(xù)城市農(nóng)業(yè)的智能植物監(jiān)視器”開(kāi)發(fā)了創(chuàng)新的解決方案,以解決新加坡城市園丁面臨的具體挑戰(zhàn)。我們的團(tuán)隊(duì)致力于最大限度地提高工廠維護(hù)效率,并提供旨在提高資源利用率的技術(shù)解決方案。
促使你創(chuàng)建這個(gè)項(xiàng)目的關(guān)鍵原因是什么?
這項(xiàng)工作背后的根本原因源于我支持可持續(xù)實(shí)踐的愿望,同時(shí)幫助緊湊的園丁發(fā)展更好的能力。新加坡為城市農(nóng)民提供了一個(gè)極具挑戰(zhàn)性的環(huán)境,因?yàn)樗Y(jié)合了非常有限的空間和不穩(wěn)定的氣候條件。我們的目標(biāo)是通過(guò)為園丁提供有效的工具來(lái)建立一個(gè)綠色和有彈性的城市。
它是如何工作的?
城市花園的實(shí)施得到了智能傳感器和物聯(lián)網(wǎng)設(shè)備的支持。智能傳感器通過(guò)qubitro收集有關(guān)土壤含水量的當(dāng)前數(shù)據(jù)以及包括光強(qiáng)度在內(nèi)的環(huán)境測(cè)量數(shù)據(jù)。園丁可以通過(guò)thingspeak訪問(wèn)平臺(tái)數(shù)據(jù)。該網(wǎng)站顯示了有關(guān)光照和濕度水平的數(shù)據(jù),以最佳地管理植物。
我們的項(xiàng)目操作在圖像和視頻中顯示,這些圖像和視頻展示了傳感器在現(xiàn)場(chǎng)的運(yùn)行情況,以及監(jiān)控期間的用戶(hù)界面。這些視覺(jué)效果展示了易用性以及對(duì)植物健康和資源效率的積極影響。
代碼
from m5stack import *
from m5ui import *
from uiflow import *
import time
from m5mqtt import M5mqtt
import json
import unit
setScreenColor(0x222222)
earth_7 = unit.get(unit.EARTH, unit.PORTB)
servo_5 = unit.get(unit.SERVO, unit.PORTA)
moisture = None
image0 = M5Img(110, 70, "res/droplet.png", True)
label0 = M5TextBox(22, 21, "Moisture Level:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
label1 = M5TextBox(234, 21, "Text", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
def buttonA_wasPressed():
global moisture
servo_5.write_angle(0)
wait(4)
servo_5.write_angle(90)
pass
btnA.wasPressed(buttonA_wasPressed)
label1.hide()
m5mqtt = M5mqtt('2ccd482d-ad87-4b64-9bc1-03be4c4d7112', 'broker.qubitro.com', 1883, '2ccd482d-ad87-4b64-9bc1-03be4c4d7112', '1739333691334022897aae6f2909ae3f1b23f3d4523f6ad7033c92b79b74d161fd38516ee6d6284d3af3a8d93c17337206b', 300)
m5mqtt.start()
while True:
moisture = earth_7.analogValue
m5mqtt.publish(str('2ccd482d-ad87-4b64-9bc1-03be4c4d7112'), str((json.dumps(({'Moisture':(earth_7.analogValue)})))), 0)
if moisture < 200:
speaker.tone(1800, 200)
rgb.setColorAll(0xff0000)
servo_5.write_angle(0)
label1.setText('Low')
image0.changeImg("res/default.jpg")
elif moisture >= 200 and moisture < 300:
rgb.setColorAll(0x3366ff)
label1.setText('Average')
else:
rgb.setColorAll(0x33cc00)
servo_5.write_angle(90)
image0.changeImg("res/default.jpg")
label1.setText('High')
wait(1)
wait_ms(2)
本文編譯自hackster.io