当前位置: 首页 > news >正文

树莓派传感器扩展板资料


买的树莓派扩展板。但资料在浏览器没法打开。特抄过来,方便查看。​​​​​​​

树莓派传感器扩展板是由深圳市易创空间科技有限公司专门为方便树莓派外接传感器而设计。

本扩展板适用于 Raspberry Pi Zero/Zero W/Zero WH/A+/B+/2B/3B/3B+/4B。

可以通过5.5-2.1mm的DC头或者接线柱可以给树莓派供电。

预留了RF24L01模块,HC-SR04超声波模块,I2C接口,UART接口,支持8路ADC。

同时空出摄像头和 DIP 显示屏排线接口。

raspberrypi_sensor_board

特点

  • 内置10bit ADC MCU,支持8路ADC检测,ADC值范围为0 ~ 1023
  • 支持树莓派 2B/3B/3B+/4B/zero
  • 5.5x2.1DC头与接线端子外部供电。
  • 外接传感器供电电压3V3与5V切换
  • 板载DC-DC降压芯片 宽电压输入:5~36V 电压输出:5V 最大电流输出: 5A ,可以给树莓派直接供电

MCU规格

  • 工作电压:3.3V和5V 根据跳线帽选择 ADC检查电压
  • 与树莓派通信方式: I2C 速率 1~400K
  • I2C地址: 0x24,背面可以配置地址
  • IO: 8路ADC检测 对应引脚A0~A7
  • 8路扩展模式支持ADC输入,GPIO,PWM(只A1-A2支持),

寄存器

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

  • 0x01寄存器为模式设置

    如下模式可以设置

    命令模式功能描述
    0x01输入上拉
    9x02输入下拉
    0x04浮空输入模式
    0x08输出模式可把引脚配置为高低电平输出模式,然后使引脚输出高电平或者低电平
    0x10ADC模式可把引脚配置为ADC模式,然后读取引脚的ADC值,精度10位,ADC值范围为0 ~ 1023
    0x20PWM输出模式可配置扩展板的PWM输出频率(1 ~ 10000Hz),然后把引脚为PWM输出模式,再配置引脚PWM输出的占空比(12位精度:0 ~ 4095),然后使引脚输出PWM,可用于驱动舵机
  • 0x10 ~ 0x17: 读取ADC原始数据

  • 0x20 ~ 0x27: 读取输入电压,单位是mv

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

  • 0x40 ~ 0x47: 读取或者是设置A0-A7的数字值

  • 0x51 ~ 0x52: 设置A1-A2的PWM占空比

  • 0x61 ~ 0x62: 设置A1-A2的PWM的频率

树莓派I2C库安装

    打开树莓派终端输入"sudo raspi-config"命令,然后按照下图顺序依次操作即可。

本地图片

本地图片

本地图片

本地图片

    以上就是开启树莓派I2C,接下来我们安装树莓I2C库在终端输入“sudo apt-get install i2c-tools”,输入完成后就可以看到正在下载I2C库,安装完成之后可以在终端输入“sudo i2cdetect -l”检测是否安装正确,若出现类似于下面的信息就说明安装正常。

本地图片

    在终端输入“sudo i2cdetect -y 1”命令即可扫描接在I2C总线上的所有I2C设备,并打印出该设备的I2C总线地址,且我们的扩展板的I2C地址为0x24。

本地图片

!!! 编辑config.txt文件设置树莓派IIC总线速度

sudo nano /boot/config.txt点击复制错误复制

查找包含“dtparam=i2c_arm=on”的行,添加“,i2c_arm_baudrate=100000”,其中100000是新设置的速度(100kbit /s),注意i2c前面的逗号。完整代码如下:

dtparam=i2c_arm=on,i2c_arm_baudrate=100000点击复制错误复制

这样可以启用I2C总线的同时,也完成了新波特率的设置。编辑完成后,使用CTRL-X,然后选择Y,再按下回车键,保存文件并退出。

本地图片

重新启动树莓派,使新的设置生效:

sudo reboot点击复制错误复制

读取ADC模拟值

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

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

Python 代码

from sensor_expansion_board_i2c import IoExpansionBoardI2c
from smbus2 import SMBus
import time# 初始化I2C总线
i2c_bus = 1  # 树莓派上的I2C总线号,通常是1
i2c_address = 0x24  # I2C设备地址# 创建IoExpansionBoardI2c对象
io_expansion_board_i2c = IoExpansionBoardI2c(i2c_bus, i2c_address)# 设置引脚7为ADC模式
io_expansion_board_i2c[7].mode = IoExpansionBoardI2c.ADC_MODE# 循环读取ADC值
try:while True:adc_value = io_expansion_board_i2c[7].adc_valueprint(adc_value)time.sleep(1)  # 延时1秒
except KeyboardInterrupt:# print("程序已停止")pass

C++ 代码

#include <chrono>
#include <iostream>
#include <thread>#include "gpio_expansion_board.h"// 创建 GpioExpansionBoard 实例
GpioExpansionBoard gpio_expansion_board;int main() {std::cout << "Setup" << std::endl;// 配置E0为ADC模式if (!gpio_expansion_board.SetGpioMode(GpioExpansionBoard::kGpioPinE0, GpioExpansionBoard::kAdc)) {std::cerr << "Failed to set GPIO mode for E0" << std::endl;return -1;}while (true) {// 读取E0的ADC值并打印uint16_t adc_value = gpio_expansion_board.GetGpioAdcValue(GpioExpansionBoard::kGpioPinE0);std::cout << "ADC value: " << adc_value << std::endl;// 延时100毫秒std::this_thread::sleep_for(std::chrono::milliseconds(100));}return 0;
}

如果在生成当前文件时出现以下错误:

本地图片

如果出现这种问题时请修改生成命令入下图设置:

        Compile        gcc -Wall -c "%f"

        Build        gcc -Wall -o "%e" -lwiringPi "%f"

        Lint        cppcheck --language=c --enable=warning,style --template=gcc "%f"

picture9.png

本地图片

PWM输出

树莓派原本的硬件pwm只有GPIO1 GPIO26 GIPIO23 GPIO24对应的WiringPi就是1,26,23,24但是不同库支持的输出不一样,使用和树莓派本身的硬件资源冲突,比如声卡,定时器等。所以本扩展板外扩2路pwm可以很好解决这个问题。但是只有A1和A2两个引脚支持

舵机控制

有了PWM的支持,那么我们也可以将此pwm扩展成驱动舵机的接口


文章转载自:

http://YLfPrDFS.syynx.cn
http://zNSaKKIy.syynx.cn
http://0hgnMiZX.syynx.cn
http://eCzXUSbN.syynx.cn
http://Y7XOQi1Q.syynx.cn
http://mcTpyl5h.syynx.cn
http://0CJpZgb6.syynx.cn
http://gGrZ85Wx.syynx.cn
http://ah35afQG.syynx.cn
http://CI8pXFU5.syynx.cn
http://E184yVCA.syynx.cn
http://tv5yYyUU.syynx.cn
http://XpLKhKir.syynx.cn
http://kH0kiKaP.syynx.cn
http://21Nv5l7i.syynx.cn
http://eoduzI8N.syynx.cn
http://zp3ygro9.syynx.cn
http://AQWbeXUu.syynx.cn
http://nkkSoy5w.syynx.cn
http://np3LVJob.syynx.cn
http://K2q1Z9TL.syynx.cn
http://NRWSK4Je.syynx.cn
http://ceX184zo.syynx.cn
http://KqT2Rt5Q.syynx.cn
http://7FhTYHQS.syynx.cn
http://fWUMFtEs.syynx.cn
http://Z6zmGULC.syynx.cn
http://ZnuqeF0O.syynx.cn
http://FZDGhJKL.syynx.cn
http://4uWVz6CU.syynx.cn
http://www.dtcms.com/a/368835.html

相关文章:

  • setup函数相关【3】
  • 基于单片机坐姿提醒系统/久坐提醒设计
  • 请求超过Spring线程池的最大线程(处理逻辑)
  • 使用buildroot交叉编译swupdate 记录
  • PyTorch 中的循环神经网络 (RNN/LSTM):时序数据处理实战指南
  • Preprocessing Model in MPC 7 - Matrix Triples and Convolutions Lookup Tables
  • 职场突围:我的转岗反思录
  • Nature Electronics 用于解码疲劳水平的眼睑软体磁弹性传感器
  • 【AI产品思路】AI 原型设计工具横评:产品经理视角下的 v0、Bolt 与 Lovable
  • 如何使用宝塔API批量操作Windows目录文件:从获取文件列表到删除文件的完整示例
  • 极大似然估计与概率图模型:统计建模的黄金组合
  • K8S删除命名空间卡住一直Terminating状态
  • 【清爽加速】Windows 11 Pro 24H2-Emmy精简系统
  • Overleaf教程+Latex教程
  • 获取DLL动态库的版本信息(dumpbin.exe)
  • AI时代企业获取精准流量与实现增长的GEO新引擎
  • 基于单片机老人居家环境健康检测/身体健康检测设计
  • Qt---字节数据处理QByteArray
  • 无字母数字命令执行
  • nestjs 缓存配置及防抖拦截器
  • 高等数学知识补充:三角函数
  • 论文Review Registration VGICP | ICRA2021 | 经典VGICP论文
  • 遇到 Git 提示大文件无法上传确实让人头疼
  • 基于单片机雏鸡家禽孵化系统/孵化环境监测设计
  • Docling将pdf转markdown以及与AI生态集成
  • GD32入门到实战35--485实现OTA
  • 别再看人形机器人了!真正干活的机器人还有这些!
  • C++编程——异步处理、事件驱动编程和策略模式
  • 【分享】AgileTC测试用例管理平台使用分享
  • cargs: 一个轻量级跨平台命令行参数解析库