IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 树莓派 4B 使用拓展板的四声音传感器AO模块连接 -> 正文阅读

[嵌入式]树莓派 4B 使用拓展板的四声音传感器AO模块连接

RaspberryPi-Sensor-Board使用文档

?

RaspberryPi-Sensor-Board - emakefun文档中心 (test-doc-zh-cn.readthedocs.io)

特点

  • 支持8路ADC检测
  • 内置MCU
  • 支持树莓派 2B/3B/3B+/4/zero
  • 5.5x2.1DC头与接线端子供电
  • 外接传感器电压3V3与5V自由切换
  • 板载DC-DC降压芯片 宽电压输入:6~36V 电压输出:5V 最大电流输出: 3A

MCU规格

  • 工作电压:3.3V
  • MCU :STM32/STC8G
  • IO: 8路ADC检测
  • 与树莓派通信方式: I2C
  • I2C地址: 0x04

硬件概述

?

寄存器

????扩展板MCU I2C地址为0x04,寄存地址说明如下:

?

  • 0x10 ~ 0x17: 读取ADC原始数据

  • 0x20 ~ 0x27: 读取输入电压

  • 0x30 ~ 0x37: 读取输入电压与输出电压的比 输入电压/输出电压

读取ADC模拟值

????众所周知,Raspberry Pi中没有ADC,因此不能直接读取传感器的模拟值。在扩展板内置的MCU 的帮助下可以读取10位ADC这就意味着可以在树莓派上使用模拟传感器,且一共有8个可用的接口。

????模拟传感器将模拟电压输入10位模数转换器。模数转换器将模拟数据转换成数字数据后,通过I2C将数字数据输入到树莓派中。

???

在终端输入“sudo i2cdetect -y 1”命令即可扫描接在I2C总线上的所有I2C设备,并打印出该设备的I2C总线地址(这里使用的是PCF8591)0x48

import time
import RPi.GPIO as GPIO
import smbus

GPIO.setmode(GPIO.BCM)

address=0x48

delta=20

time_list=[0,0,0,0]
threshold=[0,0,0,0]
basic_value_1=[]
basic_value_2=[]
basic_value_3=[]
basic_value_4=[]

bus=smbus.SMBus(1)
def loop_print():
    flag1=0
    flag2=0
    flag3=0
    flag4=0
    while True:
        
        bus.write_byte(address,0x40)
        bus.write_byte(address,0x41)
        bus.write_byte(address,0x42)
        bus.write_byte(address,0x43)
        
        sound1=bus.read_byte_data(address,0x40)
        sound2=bus.read_byte_data(address,0x41)
        sound3=bus.read_byte_data(address,0x42)
        sound4=bus.read_byte_data(address,0x43)
        
        if sound1:
            print("the NO.1 power of the sound is %lf"%sound1)
            
            if len(basic_value_1)<=10:
                basic_value_1.append(sound1)
                if len(basic_value_1)==10:
                    value=0
                    for i in range(10):
                        value+=basic_value_1[i]
                    threshold[0]=(value/10)+delta
                    
            if 0 not in threshold:
                if sound1>threshold[0] and flag1==0:
                    time_list[0]=time.time_ns()/10**9
                    flag1=1
                    
            time.sleep(0.0)
            
        if sound2:
            print("the NO.2 power of the sound is %lf"%sound2)
            
            if len(basic_value_2)<=10:
                basic_value_2.append(sound2)
                if len(basic_value_2)==10:
                    value=0
                    for i in range(10):
                        value+=basic_value_2[i]
                    threshold[1]=(value/10)+delta
                    
            if 0 not in threshold:
                if sound2>threshold[1] and flag2==0:
                    time_list[1]=time.time_ns()/10**9
                    flag2=1
                    
            time.sleep(0.0)
        
        if sound3:
            print("the NO.3 power of the sound is %lf"%sound3)
            
            if len(basic_value_3)<=10:
                basic_value_3.append(sound3)
                if len(basic_value_3)==10:
                    value=0
                    for i in range(10):
                        value+=basic_value_3[i]
                    threshold[2]=(value/10)+delta
                    
            if 0 not in threshold:
                if sound3>threshold[2] and flag3==0:
                    time_list[2]=time.time_ns()/10**9
                    flag3=1
                    
            time.sleep(0.0)
            
        if sound4:
            print("the NO.4 power of the sound is %lf"%sound4)
            
            if len(basic_value_4)<=10:
                basic_value_4.append(sound4)
                if len(basic_value_4)==10:
                    value=0
                    for i in range(10):
                        value+=basic_value_4[i]
                    threshold[3]=(value/10)+delta
                    
            if 0 not in threshold:
                if sound4>threshold[3] and flag4==0:
                    time_list[3]=time.time_ns()/10**9
                    flag4=1
                    
            time.sleep(0.0)
        
        if (0 not in time_list) and (0 not in threshold):
            print(threshold)
            print(time_list)
            break

loop_print()

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:42:18  更:2022-07-21 21:42:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:30:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码