传感器应用

  • 1. 三轴加速度计MMA7660
  • 2. 温度传感器DS18B20
  • 3. 温湿度传感器DHT11
  • 4. 气压传感器BMP280

1. 三轴加速度计MMA7660

pyBoard中内置了一个三轴加速度计MMA7660,输出x,y,z三个轴的加速度,测量范围大概是-1.5g到1.5g。pyb中关于MMA7660的构造函数和使用方法如下所示:

示例代码为:

import pyb
from machine import Pin,I2C#初始化相关模块
accel = pyb.Accel()#测量结果
x = accel.x()
y = accel.y()
z = accel.z()

2. 温度传感器DS18B20

DS18B20是常用的温度传感器,它是单总线式传感器,连接原理图如下所示:

pyBoard中单总线模块文件是"onewire.py",DS18B20模块文件是"DS18X20.py",单总线模块的构造函数和使用方法为:

DS18B20的模块的构造函数和使用方法为:

温度传感器代码示例:

#引用相关模块
from pyb import delay
from machine import Pin,I2C
from onewire import OneWire
from ds18x20 import DS18X20#初始化DS18B20
ow= OneWire(Pin('X11')) #使能单总线
ds = DS18X20(ow)        #传感器是DS18B20
rom = ds.scan()         #扫描单总线上的传感器地址,支持多个传感器同时连接while True:ds.convert_temp()   #温度采集转换temp = ds.read_temp(rom[0]) #温度显示,rom[0]为第1个DS18B20

3. 温湿度传感器DHT11

DHT11也是常见的和常用的湿度传感器,其也是单总线传感器。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200203132102286.png?#pic_center =300x225#pic_center =500x)
pyBoard中dht11.py文件中的构造函数和使用方法为:

DHT11的示例代码为:

#引入相关模块
from pyb import delay
from machine import Pin,I2C
from dht import DHT11#创建DTH11对象dt
dt=DHT11(Pin('X12'))
delay(1000)          #首次启动停顿1秒然传感器稳定while True:dt.measure()         #温湿度采集te=dt.temperature()  #获取温度值dh=dt.humidity()     #获取湿度值

4. 气压传感器BMP280

BMP280是常用的气压传感器,我们需要编写BMP280的驱动文件“bmp280.py”,该模块文件中的构造函数和使用方法为:

BMP280的代码示例为:

import pyb
import bmp280
from machine import Pin,I2C#初始化BMP280,I2C接口2
BMP = bmp280.BMP280(I2C(2))#测量结果
Tem = BMP.getTemp()
Pre = BMP.getPress()
Alt = BMP.getAltitude()

bmp280.py中的代码为:


BMP280_I2C_ADDR = const(0x76)class BMP280():def __init__(self, i2c):self.i2c = i2cself.dig_T1 = self.get2Reg(0x88)self.dig_T2 = self.short(self.get2Reg(0x8A))self.dig_T3 = self.short(self.get2Reg(0x8C))self.dig_P1 = self.get2Reg(0x8E)self.dig_P2 = self.short(self.get2Reg(0x90))self.dig_P3 = self.short(self.get2Reg(0x92))self.dig_P4 = self.short(self.get2Reg(0x94))self.dig_P5 = self.short(self.get2Reg(0x96))self.dig_P6 = self.short(self.get2Reg(0x98))self.dig_P7 = self.short(self.get2Reg(0x9A))self.dig_P8 = self.short(self.get2Reg(0x9C))self.dig_P9 = self.short(self.get2Reg(0x9E))self.mode = 3self.osrs_p = 3self.osrs_t = 1self.setReg(0xF4, 0x2F)self.setReg(0xF5, 0x0C)self.filter = 3self.T = 0self.P = 0self.version = '1.0'def    short(self, dat):if dat > 32767:return dat - 65536else:return dat# set regdef    setReg(self, reg, dat):self.i2c.writeto(BMP280_I2C_ADDR, bytearray([reg, dat]))# get regdef getReg(self, reg):self.i2c.writeto(BMP280_I2C_ADDR, bytearray([reg]))t =   self.i2c.readfrom(BMP280_I2C_ADDR, 1)return t[0]# get two regdef    get2Reg(self, reg):self.i2c.writeto(BMP280_I2C_ADDR, bytearray([reg]))t =  self.i2c.readfrom(BMP280_I2C_ADDR, 2)return t[0] + t[1]*256def get(self):adc_T = (self.getReg(0xFA)<<12) + (self.getReg(0xFB)<<4) + (self.getReg(0xFC)>>4)var1 = (((adc_T>>3)-(self.dig_T1<<1))*self.dig_T2)>>11var2 = (((((adc_T>>4)-self.dig_T1)*((adc_T>>4) - self.dig_T1))>>12)*self.dig_T3)>>14t = var1+var2self.T = ((t * 5 + 128) >> 8)/100var1 = (t>>1) - 64000var2 = (((var1>>2) * (var1>>2)) >> 11 ) * self.dig_P6var2 = var2 + ((var1*self.dig_P5)<<1)var2 = (var2>>2)+(self.dig_P4<<16)var1 = (((self.dig_P3*((var1>>2)*(var1>>2))>>13)>>3) + (((self.dig_P2) * var1)>>1))>>18var1 = ((32768+var1)*self.dig_P1)>>15if var1 == 0:return  # avoid exception caused by division by zeroadc_P = (self.getReg(0xF7)<<12) + (self.getReg(0xF8)<<4) + (self.getReg(0xF9)>>4)p=((1048576-adc_P)-(var2>>12))*3125if p < 0x80000000:p = (p << 1) // var1else:p = (p // var1) * 2var1 = (self.dig_P9 * (((p>>3)*(p>>3))>>13))>>12var2 = (((p>>2)) * self.dig_P8)>>13self.P = p + ((var1 + var2 + self.dig_P7) >> 4)return [self.T, self.P]# get Temperature in Celsiusdef getTemp(self):self.get()return self.T# get Pressure in Padef getPress(self):self.get()return self.P# Calculating absolute altitudedef getAltitude(self):return '%.2f'%(44330*(1-(self.getPress()/101325)**(1/5.256)))# sleep modedef poweroff(self):self.setReg(0xF4, 0)# normal modedef poweron(self):self.setReg(0xF4, 0x2F)

探索MicroPython(四)--传感器应用相关推荐

  1. 由于开发者通过接口修改了菜单配置_Android SDK开发艺术探索(四)个性化配置...

    一.前言 本篇是Android SDK开发艺术探索系列的第四篇文章.介绍了通过流式API设计思想优雅地实现SDK的自定义选项配置需求. 目录概览: 一.前言 二.SDK自定义配置2.1.什么是自定义配 ...

  2. Docker在英雄联盟游戏中的实践探索(四)

    本文讲的是Docker在英雄联盟游戏中的实践探索(四),[编者的话]这篇博客是Riot的Docker实践系列博客的第四篇,主要讨论了如何添加一个基于Nginx的代理容器,以及如何用Compose来管理 ...

  3. android权限级别探索(四),Work Profile/Profile Owner的开启与功能

    一.什么是Work Profile   因为Work Profile在体验上与Device Owner和Device admin有很大的差别,所以在讲怎么开启profileOwner之前先讲一下什么是 ...

  4. 探索MicroPython(一)--基础介绍

    基础知识 1. MicroPython简介 2. 支持的微控制器平台 3. 开发套件简介 1. MicroPython简介 MicroPython是 Python 3编程语言的精简高效实现,包括Pyt ...

  5. Jetpack Compose 深入探索系列四: Compose UI

    通过 Compose runtime 集成 UI Compose UI 是一个 Kotlin 多平台框架.它提供了通过可组合函数发出 UI 的构建块和机制.除此之外,这个库还包括 Android 和 ...

  6. 前后端分离的探索(四)

    文桥,13级机械电子工程系,大四学生.在LSGO软件技术团队负责前端部分,本图文是介绍目前流行的前后端分离技术的第四篇(一共六篇),希望大家能够对这块有所了解.

  7. Android深度探索第四章感想

    第四章讲的是源代码的下载和编译.Android源代码中包含了很多东西,如内嵌在Android系统中的应用程序(拍照.计算器.日历.相册.拨号器等等)的源代码:Android SDK带的各种工具的源代码 ...

  8. 探索MicroPython(三)--基础操作示例

    基础操作示例 1. LED 2. 按键 3. GPIO 4. 外部中断 5. I2C总线 6. ADC 7. DAC 8. UART 1. LED pyBoard中一共有4个LED,分别是是LED(1 ...

  9. 探索MicroPython(二)--搭建开发环境

    搭建开发环境 1. 简述 2. 安装Python3 3. 安装Mu 4. 安装驱动 5. 更新固件 6. 运行程序 1. 简述 pyBoard上使用了STM32自身flash的一定空间作为U盘与电脑进 ...

最新文章

  1. 春运渡劫!Python给我抢回家的火车票
  2. Android游戏开发指南lt;一gt;背景地图
  3. html5 如何实现客户端验证上传文件的大小
  4. luogu P1007 独木桥
  5. 人工智能AI实战100讲(七)-原理+代码实战 | 双目视觉中的极线校正
  6. 学习 - java位运算符
  7. php里的utf-8编码,php – 修复损坏的UTF-8编码
  8. hashMap 底层原理+LinkedHashMap 底层原理+常见面试题
  9. 在HTML中插入回车换行
  10. DP练习(初级):ZigZag
  11. 诡异的dp(凸多边形分割):catalan数
  12. paip.日期时间操作以及时间戳uapi php java python 总结
  13. java ssm基于springboot的设备巡检系统
  14. 烂土豆 (ms16-075) 提权方法
  15. 解决google扩展程序已损坏的问题
  16. SameSite cookie 理解与设置
  17. 我们祝你虎虎生威! 百条春节短信奉送
  18. String.contains()方法
  19. (链表)Java 求解环形链表 II
  20. amp;quot;等java转义

热门文章

  1. yum install git Could not resolve host: ftp.twaren.net; Unknown error
  2. php mkdir用户,PHP mkdir()无写权限的问题解决方法
  3. 怎样让html中元素不被其他元素遮挡_Web前端开发之HTML元素
  4. 小程序的 rpx布局问题
  5. mysql参数之innodb_buffer_pool_size大小设置
  6. 坑:找到LoadRunner中Recording Options和 Run Time Settings配置选项确实的原因
  7. day05 数据类型
  8. vertical-align属性探究
  9. Debit and Credit Memo
  10. 两个getchar,一个getchar,getch的不同点 出现的不同情况