print("Project Temperature in Server Room")
print("By: Nazmi Roslam")
print("Date: 29/4/2024")
# Import libraries
import oled_library
import servo_motor
from machine import Pin, SoftI2C, PWM, ADC
import dht
from utime import sleep
# Pin declaration
oled_pin = SoftI2C(scl=Pin(22), sda=Pin(21))
dht_pin = Pin(4, Pin.IN, Pin.OUT)
RED_LED = Pin(13, Pin.OUT)
YELLOW_LED = Pin(12, Pin.OUT)
Buzzer_Pin = PWM(Pin(2, Pin.OUT))
servo_pin = Pin(5, Pin.OUT)
Photoresistor_Pin = ADC(Pin(35))
# Create objects
skrin = oled_library.SSD1306_I2C(width=128, height=64, i2c=oled_pin)
dht_sensor = dht.DHT22(dht_pin)
door_alarms = servo_motor.Servo(pin=servo_pin)
# Main program loop
while True:
skrin.fill(0)
skrin.text("Temperature", 5, 10, 1)
skrin.text("Server Room", 20, 20, 1)
RED_LED.off()
YELLOW_LED.off()
Buzzer_Pin.duty(0)
try:
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
light = Photoresistor_Pin.read()
print("Light intensity:", light)
if light > 500:
print("Fire detected!")
skrin.text("Fire Detected", 10, 40, 1)
YELLOW_LED.on()
Buzzer_Pin.duty(150)
door_alarms.move(angle=0)
sleep(2)
continue
if 61 <= temperature <= 71 and 8 <= humidity <= 80:
skrin.text("Normal Range Temp", 10, 40, 1)
door_alarms.move(angle=90)
elif temperature > 71 or humidity < 8 or humidity > 80:
if temperature > 71:
skrin.text("Danger High Temp", 10, 40, 1)
elif humidity < 8:
skrin.text("Low Humidity Warning", 10, 40, 1)
elif humidity > 80:
skrin.text("High Humidity Warning", 10, 40, 1)
RED_LED.on()
Buzzer_Pin.duty(150)
door_alarms.move(angle=0)
elif temperature < 61:
skrin.text("Alert Temp Drop", 10, 40, 1)
RED_LED.on()
Buzzer_Pin.duty(150)
door_alarms.move(angle=0)
skrin.text("Temp: {:.1f}C".format(temperature), 10, 50, 1)
skrin.text("Humidity: {:.1f}%".format(humidity), 10, 60, 1)
except OSError as error:
print("Failed to read DHT22:", error)
skrin.text("Sensor Error", 10, 80, 1)
skrin.show()
sleep(1)
Loading
esp32-devkit-v1
esp32-devkit-v1