from machine import ADC, Pin
import math,time
import dht
import machine, onewire, ds18x20
def handle_interrupt(pin):
global motion
motion = True
global interrupt_pin
interrupt_pin = pin
def calculate_resistance():
value = adc.read()
voltage_ratio = value / (4095 - value)
return 10e3 * voltage_ratio
def calculate_lux(resistance):
return 10 * math.pow(rl10/resistance, 1/gamma)
motion = False
pir = Pin(15, Pin.IN)
pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
adc = ADC(Pin(14))
adc.atten(ADC.ATTN_11DB)
rl10 = 50e3 #LDR resistance at 10lux
gamma = 0.7 #log(Ra/Rb) / log(La/Lb)
sensor = dht.DHT22(Pin(4))
ds_pin = machine.Pin(2)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
while 1:
if motion:
resistance = calculate_resistance()
print('Lux:', round(calculate_lux(resistance),1))
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print('Temperature: %3.1f C' %temp)
print('Humidity: %3.1f %%' %hum)
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(ds_sensor.read_temp(rom))
time.sleep(5)
motion = FalseLoading
ds18b20
ds18b20