richeeeeeeeeWin Thura NaingJIngjieHaoran
Published

Sustainable technology in Urban Farming

Our aim is to design a low-cost smart watering system, which creates an eco-friendly, efficient and healthy growing environment for plants.

BeginnerShowcase (no instructions)92
Sustainable technology in Urban Farming

Things used in this project

Story

Read more

Custom parts and enclosures

QR code application

M5stack Application

Schematics

Main Flowchart

Secondary Flowchart

block diagram

CIRCUIT DIAGRAM

Code

Main Code

Python
from m5stack import *
from m5ui import *
from uiflow import *
import time
import unit
remoteInit()
import machine

setScreenColor(0x222222)
env2_0 = unit.get(unit.ENV2, unit.PORTA)
earth_0 = unit.get(unit.EARTH, unit.PORTB)


var_mositure = None
Temp = None
Humi = None



label2 = M5TextBox(210, 87, "label2", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label3 = M5TextBox(19, 139, "Temperature Status", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label4 = M5TextBox(59, 170, "label4", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label7 = M5TextBox(36, 17, "Temperature Reading:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label0 = M5TextBox(210, 16, "label0", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label8 = M5TextBox(59, 53, "Humidity Reading:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label9 = M5TextBox(59, 87, "Moisture Reading:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label1 = M5TextBox(210, 53, "label1", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label5 = M5TextBox(218, 139, "Soil Status", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label6 = M5TextBox(230, 170, "label6", lcd.FONT_Default, 0xFFFFFF, rotate=0)


# Describe this function...
def Sensors():
  global var_mositure, Temp, Humi
  var_mositure = earth_0.analogValue
  Humi = env2_0.humidity
  Temp = env2_0.temperature
  label0.setText(str(Temp))
  label1.setText(str(Humi))
  label2.setText(str(var_mositure))

# Describe this function...
def Temperature_Check():
  global var_mositure, Temp, Humi
  if Temp > 30:
    rgb.setColorAll(0xff0000)
    label4.setText('Too hot')
  elif Temp < 20:
    rgb.setColorAll(0x33cc00)
    label4.setText('Too cold')
  else:
    label4.setText('Okay')
    rgb.setColorAll(0x66ff99)
  wait(0.5)

# Describe this function...
def Moisture_Check():
  global var_mositure, Temp, Humi
  if var_mositure < 10:
    speaker.tone(1800, 200)
    label6.setText('Need Water')
  else:
    label6.setText('Okay')



def gauge_Temperature_callback():
  global var_mositure, Temp, Humi, env2_0, earth_0, Moisture_Check, Sensors, Temperature_Check 
  return Temp
def gauge_Moisture_callback():
  global var_mositure, Temp, Humi, env2_0, earth_0, Moisture_Check, Sensors, Temperature_Check 
  return var_mositure
def gauge_Humidity_callback():
  global var_mositure, Temp, Humi, env2_0, earth_0, Moisture_Check, Sensors, Temperature_Check 
  return Humi
rgb.setColorAll(0x66ff99)
label4.setText('Okay')
label6.setText('Okay')
while True:
  Sensors()
  wait(0.5)
  Temperature_Check()
  Moisture_Check()
  wait_ms(2)

Secondary Code

Python
from m5stack import *
from m5ui import *
from uiflow import *
from servo import Servo
import time
import unit


setScreenColor(0x222222)
pahub_0 = unit.get(unit.PAHUB, unit.PORTA, 0x70)
pbhub_0 = unit.get(unit.PBHUB, unit.PAHUB0)
rfid_0 = unit.get(unit.RFID, unit.PAHUB1)
rgb_0 = unit.get(unit.RGB, unit.PORTB)


light_intensity = None
card_num = None



label0 = M5TextBox(61, 126, "label0", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label1 = M5TextBox(180, 40, "RFID Status", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label2 = M5TextBox(203, 84, "label2", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label3 = M5TextBox(186, 126, "RGB Color", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label4 = M5TextBox(203, 166, "label4", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label5 = M5TextBox(46, 84, "Light Reading:", lcd.FONT_Default, 0xFFFFFF, rotate=0)


# Describe this function...
def Light():
  global light_intensity, card_num
  if light_intensity > 3800:
    rgb_0.setBrightness(20)
  else:
    rgb_0.setBrightness(0)

# Describe this function...
def Detect_Card():
  global light_intensity, card_num
  if rfid_0.isCardOn():
    label2.setText('Card is Found')
    if (rfid_0.readUid()) == card_num:
      speaker.tone(500, 200)
      rgb.setColorAll(0x33ff33)
      servo0.write_angle(90)
      wait(4)
      servo0.write_angle(180)
    else:
      label2.setText('Not recognised')
      speaker.sing(448, 4)
      wait(2)
  else:
    label2.setText('None')
    rgb.setColorAll(0xff0000)

# Describe this function...
def Choose_RGB_Color():
  global light_intensity, card_num
  if btnA.wasPressed():
    rgb_0.setColorFrom(1, 3, 0xff0000)
    label4.setText('Red')
  elif btnB.wasPressed():
    rgb_0.setColorFrom(1, 3, 0x33ffff)
    label4.setText('Blue')
  elif btnC.wasPressed():
    rgb_0.setColorFrom(1, 3, 0xffffff)
    label4.setText('white')



servo0 = Servo(17,50,500,2500,180)
servo0.write_angle(180)
rgb_0.setColorFrom(1, 3, 0xff0000)
rgb_0.setBrightness(0)
rgb.setColorAll(0xff0000)
label4.setText('Red')
while True:
  card_num = 'e0e61b4f52'
  light_intensity = pbhub_0.analogRead(0)
  label0.setText(str(light_intensity))
  Detect_Card()
  Light()
  Choose_RGB_Color()
  wait_ms(2)

Credits

richeeeeeeee
1 project • 1 follower
Win Thura Naing
0 projects • 1 follower
JIngjie
0 projects • 2 followers
Haoran
0 projects • 0 followers

Comments