471|1

143

帖子

4

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第3期】任务5:使用外部传感器 [复制链接]

 
任务5:使用外部传感器
这次任务需要使用外接的传感器。本次搭配了两个,分别是AHT20温湿度传感器,和光照传感器。
一个是I2C接口,另一个则是ADC接口,因此需要用排线将他们连接到扩展版
先是温湿度传感器,接到I2C的接口
然后就是光照了,接到模拟扣上
接下来先准备操作外部的温湿度传感器AHT20。要使用这个传感器,必须要增加对该器件的支持包。这次我换了另一个安装方式:下载到本地再安装
首先到如下连接:https://pypi.org/search/?q=aht20,搜多到aht20可以使用的MicroPython支持包,并下载
然后打开包管理器
选择从本地安装
选择前面下载好的指定格式的包文件
打开之后显示正在安装
安装完成之后可以在左侧的lib文件夹中看到ahtx0的包了
然后在程序中可以使用import进来该包
使用AHT20
此后就可以使用如下操作获取温度和湿度值了
当然,I2C部分还需要跟之前的OLED一样,需要在前面先定义好
接下来准备光照传感器,本次的Grove - Light Sensor v1.2 是一个光敏传感器,常用于测量环境光强度。它可以通过连接到Grove基板或直接连接到开发板上的相应引脚来使用,上面的传感器实际使用了GL5528,一个光敏电阻(光相关电阻)来检测光的强度。光敏电阻的电阻随光强的增加而减小。板载双OpAmp芯片LM358产生对应于光强的电压(即。基于电阻值)。输出信号为模拟值,光越亮,数值越大,不过该值仅反映光强度的近似趋势,它不表示确切的明亮程度,根据手册可以初定光敏电阻的最大值可以检测到约350Lux
这样就可以使用ADC采样了。
首先设定好ADC的引脚和采样参数
然后获取ADC的值,并转换为电阻值和光照度
最后还得增加OLED 部分,在其上面更新内容
有了上述的基本操作方法,下面就可以融合一下了,即每秒采样温度和湿度,以及光敏电阻并计算照度,然后在oled上更新显示
运行效果如下
在shell输出中也会看到打印的相应内容了
完整代码如下
from machine import Pin, SoftI2C, ADC
import ssd1306
import utime
import time
from ahtx0 import AHT20

i2c = SoftI2C(scl=Pin(7), sda=Pin(6))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

# 清空屏幕,并显示任务要求
oled.fill(0)
oled.text("Task 5:Sensor", 0, 0)
oled.text("Temp:", 0, 16)
oled.text("Humi:", 0, 32)
oled.text("Light:", 0, 48)
oled.show()

# aht20
aht = AHT20(i2c)

# 光照部分
adc = ADC(Pin(2))
adc.atten(ADC.ATTN_11DB)
adc.width(ADC.WIDTH_12BIT)  #4095

while True:
    temp = aht.temperature
    humi = aht.relative_humidity
    
    light_adc = adc.read()
    
    # 计算光照强度单位Lux
    light_lux = light_adc * 350 * 1.0 / 4095
    
    # 算出电阻值单位K
    light_res = (4095 - light_adc) * 10.0 / light_adc
    
    print("Temp(°):\n");
    print('{:.2f}'.format(temp))
    print("Humi(%):\n");
    print('{:.2f}'.format(humi))
    print("Light(lux)\n");
    print('{:.2f}'.format(light_lux))
    print("Light(K)\n");
    print('{:.2f}'.format(light_res))
    
    # 清除变化部分的内容
    oled.fill_rect(64,16,64,48,0) 
    oled.text('{:.2f}'.format(temp), 64, 16)
    oled.text('{:.2f}'.format(humi), 64, 32)
    oled.text('{:.2f}'.format(light_lux), 64, 48)
    oled.show()
    
    # 延时1秒
    time.sleep(1)

 

相关资料参考附件

 

Grove - AHT20 I2C Industrial Grade Temperature and Humidity Sensor.pdf

212.34 KB, 下载次数: 0

GROVE LIGHT SENSOR VER 1.2.pdf

220.42 KB, 下载次数: 1

micropython-ahtx0-0.1.2.tar.gz

3.31 KB, 下载次数: 1

最新回复

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来   详情 回复 发表于 2023-11-21 14:12
点赞 关注
 
 

回复
举报

755

帖子

5

TA的资源

纯净的硅(高级)

沙发
 

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表