查看: 211|回复: 22

[MP动手做] MicroPython动手做(34)——通用传感器

[复制链接]
本帖最后由 驴友花雕 于 2020-6-25 07:44 编辑

1、什么是传感器?

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


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

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


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


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


0.jpg


驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 09:04:38

01-0.jpg

3、传感器的特点与作用

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

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

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

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

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

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 12:54:15

7、超声波传感器的入侵报警器

[Python] 纯文本查看 复制代码
#MicroPython动手做(34)——通用传感器的综合运用
#超声波传感器的入侵报警器

from hcsr04 import HCSR04
from mpython import *
import time
import music

hcsr04 = HCSR04(trigger_pin=Pin.P13, echo_pin=Pin.P14)



while True:
    oled.fill(0)
    oled.DispChar(" 超声波传感器入侵报警器", 0, 0, 1)
    oled.DispChar((''.join([str(x) for x in ["检测的距离:", str(hcsr04.distance_mm()), "mm"]])), 0, 16, 1)
    oled.show()
    rgb[1] = (int(0), int(102), int(0))
    rgb.write()
    time.sleep_ms(1)
    if hcsr04.distance_mm() < 200:
        oled.DispChar("     有人入侵!报警!", 0, 32, 1)
        oled.show()
        for count in range(3):
            rgb.fill((int(102), int(0), int(0)))
            rgb.write()
            time.sleep_ms(1)
            music.pitch(392, 500)
            time.sleep_ms(300)
            rgb.fill( (0, 0, 0) )
            rgb.write()
            time.sleep_ms(1)
            music.pitch(784, 500)
            time.sleep_ms(300)
    else:
        oled.fill_rect(0, 32, 128, 16, 0)
        oled.show()
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 09:36:52

出错信息如下:                                                                                    
Traceback (most recent call last):                                                         
  File "main.py", line 13, in <module>                                                     
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,在多个平台试了二天,未解决

09.jpg

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 08:49:39

本帖最后由 驴友花雕 于 2020-6-23 08:57 编辑



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



01.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 10:43:41

02.jpg

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

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 11:28:32

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() 获取测量的温湿度值。

03.jpg

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 13:21:33

[Python] 纯文本查看 复制代码
#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()

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 13:33:12

04.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 13:37:22

mPython X 实验图形编程

05.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 13:59:02

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 稳健性。多种设备工作选择带来了最高灵活性,可以在功耗、分辨率和滤波性能方面对设备进行优化。


06.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 14:03:46

本帖最后由 驴友花雕 于 2020-6-23 15:31 编辑

07.jpg

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)。


回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-23 15:31:31

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()
描述: 返回环境湿度,单位%
08.jpg

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 09:30:51

[Python] 纯文本查看 复制代码
#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)

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 09:51:23

mPython X 实验图形编程

10.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 10:07:56

11.jpg

6、 HC-SR04超声波测距传感器模块

HC-SR04
超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。超声波测距模块具有测距距离精确,能和SRF05,SRF02等超声波测距相媲美,测量距离 ** 2cm~450cm (实测:10cm~300cm)。

超声波测距模块有好多种类型,比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,超声波模块精度能到1cm。

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 10:13:02

12 (1).jpg

超声波模块工作原理——
1)采用IO触发测距,给至少10us的高电平信号。
2)模块自动发送8个40KHz的方波,自动检测是否有信号返回。
3)有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间。只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S) /2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。


12 (2).jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 10:17:21

13.jpg

超声波模块主要技术参数
1:使用电压:DC---5V   
2:静态电流:小于2mA      
3:电平输出:高5V     
4:电平输出:底0V         
5:感应角度:不大于15度   
6:探测距离:2cm-450cm
7:   高精度 可达0.2cm   
8:   接线方式:VCC、trig(控制端)、
echo(接收端)、 GND

使用说明:
1、此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。
2、测距时,被测物体的面积不少于05平方米且平面尽量要求平整,否则影响测量的结果。

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 11:40:24

HC-SR04超声波传感器测距实验

[Python] 纯文本查看 复制代码
#MicroPython动手做(34)——通用传感器的综合运用
#HC-SR04超声波传感器测距实验

from hcsr04 import HCSR04
from mpython import *
import music
import time

hcsr04 = HCSR04(trigger_pin=Pin.P13, echo_pin=Pin.P14)



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("超声波测距仪", 25, 10, 1)
    oled.DispChar((''.join([str(x) for x in ["测量距离:", str(hcsr04.distance_mm()), "mm"]])), 10, 28, 1)
    oled.show()
    time.sleep_ms(1000)




回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 11:44:06

19.gif
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-6-24 12:48:40

本帖最后由 驴友花雕 于 2020-6-24 12:58 编辑

mPython X 实验图形编程

20.jpg
回复

使用道具 举报

12下一页
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail