范例
环境配置
Thonny配置
智能农业
LED
from machine import Pin
import time
LED=Pin(18,Pin.OUT)
KEY=Pin(0,Pin.IN,Pin.PULL_UP)
state=0
while True:
if KEY.value()==0:
time.sleep(0.5)
if KEY.value()==0:
state=not state
LED.value(state)
while not KEY.value():
pass
PWD
'''
呼吸灯PWM
'''
from machine import Pin,Timer,PWM
pwm=PWM(Pin(18),20000,0)
tag=0
duty=0
def setLED(t):
global duty,tag
print('duty')
print(duty)
if (tag == 0):
duty +=16
if(duty >=1023):
tag=1
else:
tag=0
else:
duty -=16
if(duty <=0):
tag=0
else:
tag=2
pwm.duty(duty)
tim=Timer(1)
tim.init(period=10,mode=Timer.PERIODIC,callback=setLED)
try:
while True:
pass
except:
tim.deinit()
pwm.deinit()
温湿度传感器
'''
温湿度传感器
'''
from machine import Pin
import dht
import time
sensor=dht.DHT11(Pin(16))
print('dht11_test')
while True:
time.sleep(2)
sensor.measure()
print("temp=",sensor.temperature(),"摄氏度")
print("humi=",sensor.humidity(),"%")
土壤湿度传感器
'''
土壤湿度传感器
'''
from machine import Pin,ADC
import time
adc_humi=ADC(Pin(35))
adc_humi.atten(ADC.ATTN_11DB)
adc_humi.width(ADC.WIDTH_9BIT)
while True:
humi=adc_humi.read()
print('土壤湿度',humi)
if humi <= 300:
print('土壤湿润')
else:
print('土壤干燥')
time.sleep(1)
光照强度感应
'''
光照强度感应
'''
from machine import I2C,Pin
import time
import bh1750
i2c=I2C(scl=Pin(4),sda=Pin(17),freq=100000)
while True:
bh_lux=bh1750.sample(i2c)
print("bh_lux",bh_lux)
time.sleep(5)
无线路由器连接
from machine import Pin
import time
import network
print('hi esp32-micropython')
LED=Pin(12,Pin.OUT)
count=0
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to wifi...')
wlan.connect('biosheep','********')
while not wlan.isconnected() and count < 20:
LED.value(not LED.value())
count +=1
time.sleep(0.5)
if wlan.isconnected():
LED.value(1)
print('ip address',wlan.ifconfig()[0])
else:
LED.value(0)
print('wifi connect fail')
阿里云
IoT Studio
连接设备
安装传感器
web应用
预览如下:
智能安防
声音传感器
from machine import Pin
import time
gan = Pin(2,Pin.IN)
sheng=Pin(22,Pin.IN)
while True:
value1 = gan.value()
print("磁场",value1)
value2 = sheng.value()
print("声音",value2)
time.sleep(1) #延时1秒,实现每1秒判断一次
电容触摸按键
from machine import Pin
import time
led = Pin(18,Pin.OUT) #在18脚外接一个led灯,也可利用板子自带led
touch = Pin(33,Pin.IN) #定义33脚为触摸脚
while True:
value = touch.value()
print(value) #打印出33脚感应的值
#若读取的值大于阀值,则为没触摸
if value == 0 :
led.value(0)
else:
led.value(1) #触摸则灯亮
time.sleep(1) #延时1秒,实现每1秒判断一次触摸状态
超声波传感器
'''
超声波检测
'''
from machine import Pin
import time
# HC-SR04超声波模块测距原理是:给模块1个最少10us的高电平,模块接受到高电平后开始发射8个40KHz的声波,
# echo脚会由0变为1,MCU开始计时,当超声波模块接收到返回的声波时,echo由1变为0,MCU停止计时,
# 这时间差就是测距总时间,在乘声音的传播速度340米/秒,除2就是距离。
#定义IO口模式,以及初始状态
trig = Pin(23,Pin.OUT)
echo = Pin(21, Pin.IN)
trig.off()
echo.off()
#构建函数
while True:
trig.on()
time.sleep_us(10)
trig.off()
while(echo.value() == 0):
pass
t1 = time.ticks_us()
while(echo.value() == 1):
pass
t2 = time.ticks_us()
t3 = time.ticks_diff(t2,t1)/10000
echo_dis=t3*340/2
print("echo_dis=",echo_dis)
time.sleep(1)
蜂鸣器
'''
蜂鸣器
日期:2021.05
作者:Ashton
'''
from machine import Pin, PWM
import time
Beep = PWM(Pin(5), freq=0, duty=512) #在同一语句下创建和配置PWM
#蜂鸣器发出频率 200Hz 响声
Beep.freq(200)
time.sleep_ms(1000)
#蜂鸣器发出频率 400Hz 响声
Beep.freq(400)
time.sleep_ms(1000)
#蜂鸣器发出频率 600Hz 响声
Beep.freq(600)
time.sleep_ms(1000)
#蜂鸣器发出频率 800Hz 响声
Beep.freq(800)
time.sleep_ms(1000)
#蜂鸣器发出频率 1000Hz 响声
Beep.freq(1000)
time.sleep_ms( 1000)
#停止
Beep.deinit()
智能家居
光敏电阻
'''
光敏传感器检测
'''
from machine import Pin,ADC
import time
#初始化ADC,Pin是35,开启11DB衰减,量程增至0-3.3V
adc_lux = ADC(Pin(34))
adc_lux.atten(ADC.ATTN_11DB) # set 11dB input attenuation (voltage range roughly 0.0v - 3.6v)
adc_lux.width(ADC.WIDTH_9BIT) # set 9 bit return values (returned range 0-511)
while True:
lux = adc_lux.read()
if 0 <= lux <= 270:
print('光亮较强')
else:
print('光亮较差')
time.sleep(1)
释热传感器
from machine import Pin
import time
Human = Pin(15,Pin.IN,Pin.PULL_UP) #构建人体红外对象
led = Pin(18,Pin.OUT) #构建 led 对象, GPIO1,输出
def fun(Human): #当检测到人时,板载LED灯亮起
print("有人")
led.value(1)
time.sleep(1)
led.value(0)
Human.irq(fun,Pin.IRQ_RISING) #定义中断,上升沿触发
烟雾浓度
智能物流
加速度传感器
from machine import I2C,Pin
import mpu6050
import time
i2c = I2C(scl=Pin(4), sda=Pin(17), freq=100000)
while True:
accelerometer = mpu6050.accel(i2c)
acc=accelerometer.get_values()
#print(accelerometer.get_values())
print("acc=",acc)
time.sleep(5)
振动传感器
from machine import Pin
import time
zhen = Pin(19,Pin.IN) #定义19脚为震动传感器对象
while True:
value = zhen.value()
print(value) #打印出19脚感应的值
if value==1:
print('有振动')
else:
print('无振动')
time.sleep(1) #延时1秒,实现每1秒判断一次触摸状态