【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用

知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1、什么是传感器?
传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。

国家标准GB7665-87对传感器下的定义是:“能感受规定的被测量并按照一定的规律(数学函数法则)转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。

中国物联网校企联盟认为,传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。”

“传感器”在新韦式大词典中定义为:“从一个系统接受功率,通常以另一种形式将功率送到第二个系统中的器件”。

物联网设备中那些常见的传感器见下图

在这里插入图片描述
2、在物联网架构中——各种传感器组成了基础的感知层

感知层包括了与环境交互的传感器,执行器和边缘设备等。感知层是物联网的皮肤和五官,用于识别物体、感知物体、采集信息、自动控制,比如装在空调上的温度传感器识别到了室内温度高于30度,把这个信息收集后,自动打开了空调进行制冷;这个层面涉及到的是各种识别技术、信息采集技术、控制技术。而且这些技术是交叉使用的的,各种感知有些是单一的,有些则是综合的,比如机器人就是整合了各种感知系统。 这一层最常见的就是各种传感器,用于替代或者延展人类的感官完成对物理世界的感知,也包括企业信息化过程中用到的RFID以及二维码技术。

在这里插入图片描述
3、传感器的特点与作用

传感器的特点
微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。微型化是建立在微电子机械系统(MEMS)技术基础上的,已成功应用在硅器件上做成硅压力传感器(芯片级应用)。传感器不仅促进了传统产业的改造和更新换代,而且还可能建立新型工业,从而成为21世纪新的经济增长点。

传感器的作用
人们为了从外界获取信息,必须借助于感觉器官。而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。新技术革命的到来,世界开始进入信息时代。在利用信息的过程中,首先要解决的就是要获取准确可靠的信息,而传感器是获取自然和生产领域中信息的主要途径与手段。

在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。

在基础学科研究中,传感器更具有突出的地位。现代科学技术的发展,进入了许多新领域:例如在宏观上要观察上千光年的茫茫宇宙,微观上要观察小到fm的粒子世界,纵向上要观察长达数十万年的天体演化,短到 s的瞬间反应。此外,还出现了对深化物质认识、开拓新能源、新材料等具有重要作用的各种极端技术研究,如超高温、超低温、超高压、超高真空、超强磁场、超弱磁场等等。显然,要获取大量人类感官无法直接获取的信息,没有相适应的传感器是不可能的。许多基础科学研究的障碍,首先就在于对象信息的获取存在困难,而一些新机理和高灵敏度的检测传感器的出现,往往会导致该领域内的突破。一些传感器的发展,往往是一些边缘学科开发的先驱。

传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统,几乎每一个现代化项目,都离不开各种各样的传感器。由此可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。

在这里插入图片描述

4、DHT11温湿度传感器

DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

DHT11模块描述
1、可以检测周围环境的湿度和温度
2、传感器采用DHT11
3、湿度测量范围:20%-95%(0度-50度范围)湿度测量误差:±5%
4、温度测量范围:0度-50度 温度测量误差:±2度
5、工作电压3.3V-5V
6、输出形式 数字输出
7、设有固定螺栓孔,方便安装
8、小板PCB尺寸:3.2cm*1.4cm
9、电源指示灯(红色)
10、每套重量约为8g

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第1张图片
DHT11数字温湿度传感器和掌控板连接需要借助掌控扩展版,在掌控扩展版中DHT11可使用的引脚有P0/1/8/9/13/14/15/16,在这里使用引脚P13。将掌控板插在掌控宝扩展板上,通过双母头杜邦线将DHT11和扩展板进行连接,DHT11上的“+”连接扩展板的电源口“V”,“-”连接扩展板的地线口“G”,“out”连接扩展板的引脚“13”。

使用前,导入mpython模块和DHT11类:

from mpython import *
from dht import DHT11

实例化DHT11类,并设置mPython引脚P0:

dht=DHT11(Pin(Pin.P0))

DHT11测量并返回温湿度数据:

dht.measure()
dht.temperature()
dht.humidity()

注解
dht.measure() 为DHT11测量温湿度数据指令,测量后使用 dht.temperature() 、 dht.humidity() 获取测量的温湿度值。

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第2张图片
#MicroPython动手做(34)——通用传感器的综合运用
#DHT11温湿度传感器

#MicroPython动手做(34)——通用传感器的综合运用
#DHT11温湿度传感器

from mpython import *
import network
import ntptime
import time
import music
from machine import Timer
import dht

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

dht11 = dht.DHT11(Pin(Pin.P15))

tim13 = Timer(13)

def timer13_tick(_):
    try: dht11.measure()
    except: pass

tim13.init(period=1000, mode=Timer.PERIODIC, callback=timer13_tick)


ntptime.settime(8, "time.windows.com")
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
music.play('E5:1')
while True:
    oled.fill(0)
    oled.DispChar("温湿度表", 0, 0, 1)
    oled.DispChar((''.join([str(x) for x in [time.localtime()[1], "月", time.localtime()[2], "日", time.localtime()[3], "时", time.localtime()[4], "分", time.localtime()[5], "秒 "]])), 0, 14, 1)
    oled.DispChar((str("温度:") + str(dht11.temperature())), 0, 30, 1)
    oled.DispChar((str("湿度:") + str(dht11.humidity())), 0, 44, 1)
    oled.show()

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第3张图片

mPython X 实验图形编程

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第4张图片
5、BMP280气压传感器

BMP280是博世最新推出的数字气压传感器,具有卓越的性能和低廉的价格,相对精度为±0.12 hPa(相当于±1米),传感器功耗仅有2.7μA。BMP280具有业界最小封装,采用极其紧凑的8引脚金属盖LGA封装,占位面积仅为2.0×2.5mm2,封装高度为0.95 mm。包括有压力和温度测量功能。该气压传感器支持SPI和IIC通信接口,相比上一代的BMP180,精度已有相当大的提升,非常适合应用于低成本的多旋翼飞行器飞行控制器上,价格仅有目前流行的MS5611的四分之一。传感器模块它的小尺寸和2.74μA@ 1Hz的低功耗允许在电池驱动的设备中实现。门内导航,医疗保健以及GPS改进的新兴应用需要高相对精度和低TCO。得益于小尺寸和低功耗特性,这种器件可用在如移动电话、GPS 模块或手表等电池供电型设备中。与上代产品相同,BMP180、BMP280 也基于Bosch 成熟的压阻式压力传感器技术,具有高确度和线性度,以及长期稳定性和很高的 EMC 稳健性。多种设备工作选择带来了最高灵活性,可以在功耗、分辨率和滤波性能方面对设备进行优化。

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第5张图片

BMP280技术规格
1、气压工作范围 300 hPa 至 1100 hPa(海拔9000米~-500米)
2、工作温度范围 -40°C 至 +85°C
3、相对的绝对精度 ±0.12 hPa(典型值)
4、平均测量时间 5.5 ms
5、工作电压 VDD 1.71 V 至 3.6 V
6、电源电压 VDDIO 1.2 V 至 3.6 V
7、I2C 和串行外设接口 (SPI)
8、平均电流消耗典型值(1Hz数据刷新率):2.74μA(超低功耗模式);睡眠模式下的平均电流消耗:0.1μA
9、封装规格 2.0 mm x 2.5 mm x 0.95 mm,8 引脚 LGA,全金属封装

BMP280硬件连接(掌控宝需要打开电源开关)
注意的是这块板子的额定电压是3.3v,且同时支持两种连接方式: I²C 和 SPI ,这里的连接方式是 I²C,模块接入掌控拓展板的P19(SCL)和P20(SDA)。

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第6张图片

bme280环境传感器指令

bme280是一款集成温度、湿度、气压,三位一体的环境传感器,具有高精度,多功能,小尺寸等特点

温度检测范围:-40℃~+85℃,分辨率0.1℃,误差±0.5℃
湿度检测范围:0~100%RH,分辨率0.1%RH,误差±2%RH
压力检测范围:300~1100hPa
湿度测量响应时间:1s

bme280.temperature()

描述: 返回温度值,单位摄氏度

../_images/bme280.png
bme280.pressure()

描述: 返回大气压值,单位Pa

bme280.humidity()

描述: 返回环境湿度,单位%

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第7张图片
#MicroPython动手做(34)——通用传感器的综合运用
#BMP280气压温度传感器

#MicroPython动手做(34)——通用传感器的综合运用
#BMP280气压温度传感器

from mpython import *
import music
import time


music.play('D5:1')
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
while True:
    oled.fill(0)
    oled.DispChar("气压温度计", 0, 0, 1)
    oled.DispChar((''.join([str(x) for x in ["温度:", round(bme280.temperature(), 1), " 度"]])), 0, 15, 1)
    oled.DispChar((''.join([str(x) for x in ["湿度:", round(bme280.humidity(), 1), " %"]])), 0, 30, 1)
    oled.DispChar((''.join([str(x) for x in ["气压:", round(bme280.pressure(), 1), " 帕"]])), 0, 45, 1)
    oled.show()
    time.sleep(2)

出错信息如下:

Traceback (most recent call last):
File “main.py”, line 13, in
NameError: name ‘bme280’ isn’t defined
MicroPython v2.0.1-3-g312406c-dirty on 2020-01-16; mpython with ESP32
Type “help()” for more information.

好像是未定义bme280,在多个平台试了二天,未解决

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第8张图片

mPython X 实验图形编程

【雕爷学编程】 MicroPython动手做(34)——通用传感器的综合运用_第9张图片

你可能感兴趣的:(MicroPython动手做,人工智能,嵌入式硬件,物联网,单片机,python,通用传感器)