852|6

115

帖子

8

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第2期】+任务4:自由扩展【加速度传感器LIS3DH】 [复制链接]

 

#硬件准备

  • Adafruit ESP32-S3 TFT Feather 作为主控,刷入支持Ciruitpyhton固件

  • ST的G-Sensor(加速度传感器)LIS3DH,选择了Grove的扩展小板

  • Seeed Studio Grove 3轴数字加速度计(LIS3DHTR)基于LIS3DHTR芯片,具有多个量程和接口选择。这个三轴加速度计支持I (2)C、SPI和ADC GPIO接口。这允许在连接开发板时进行选择。这个加速计还可以监测周围的温度。

传感器和ESP32-S3的接口选择了I2C,采用杜邦线将其链接即可。

#软件程序

  • 简单测试LIS3DH的驱动和功能,在adafruit-circuitpython-bundle-8.x-mpy-20230815文件包内即可找到对应的代码。 ##库
  • 需要将LIS3DH的库文件(adafruit_lis3dh.mpy),拷入lib文件夹 ##示例程序
  • 在example文件夹下有例程:lis3dh_adc.py、lis3dh_tap.py、lis3dh_simpletest.py、lis3dh_spinner.py、lis3dh_spinner_advanced.py,其中ADC例程是获取传感器模拟raw data/mv电压值,lis3dh_simpletest.py获取得到换算后的加速度值(即adc值/adc分辨率*量程)、lis3dh_tap.py例程则结合传感器的中断输出进行TAP单击/双击检测,另外两个是稍微复杂的指尖陀螺应用(加速度传感器+幻彩灯) ##测试代码
  • 采用simpletest即可进行功能测试
  1. import time
  2. import board
  3. import busio
  4. import adafruit_lis3dh
  5. # Hardware I2C setup. Use the CircuitPlayground built-in accelerometer if available;
  6. # otherwise check I2C pins.
  7. if hasattr(board, "ACCELEROMETER_SCL"):
  8. i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)
  9. lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19)
  10. else:
  11. i2c = board.I2C()# uses board.SCL and board.SDA
  12. # i2c = board.STEMMA_I2C()# For using the built-in STEMMA QT connector on a microcontroller
  13. lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c)
  14. # Hardware SPI setup:
  15. # spi = board.SPI()
  16. # cs = digitalio.DigitalInOut(board.D5)# Set to correct CS pin!
  17. # lis3dh = adafruit_lis3dh.LIS3DH_SPI(spi, cs)
  18. # PyGamer or MatrixPortal I2C Setup:
  19. # i2c = board.I2C()# uses board.SCL and board.SDA
  20. # lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19)
  21. # Set range of accelerometer (can be RANGE_2_G, RANGE_4_G, RANGE_8_G or RANGE_16_G).
  22. lis3dh.range = adafruit_lis3dh.RANGE_2_G
  23. # Loop forever printing accelerometer values
  24. while True:
  25. # Read accelerometer values (in m / s ^ 2).Returns a 3-tuple of x, y,
  26. # z axis values.Divide them by 9.806 to convert to Gs.
  27. x, y, z = [
  28. value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration
  29. ]
  30. print("x = %0.3f G, y = %0.3f G, z = %0.3f G" % (x, y, z))
  31. # Small delay to keep things responsive but give time for interrupt processing.
  32. time.sleep(0.1)

#调试

  • 可以旋转变动各轴的位置,检查xyz的输出加速度值,从而判断传感器是否工作正常,传感器硬件是否正常,软件驱动是否配置正常。
  • 下一步,争取将几个模块融合一个综合的应用任务。

最新回复

要是有个新的硬件不包含,怎么写驱动文件啊     详情 回复 发表于 2023-9-6 15:33
点赞 关注
 
 

回复
举报

7145

帖子

11

TA的资源

版主

沙发
 
  • 可以旋转变动各轴的位置,检查xyz的输出加速度值,从而判断传感器是否工作正常,传感器硬件是否正常,软件驱动是否配置正常。
  • 看输出,驱动正常了。
 
 
 

回复

7350

帖子

2

TA的资源

版主

板凳
 

TAP单击/双击检测中断检测,在micropython是怎么监测中断的?

点评

sensor本身有状态寄存器,也可以配置为中断输出。  详情 回复 发表于 2023-9-7 10:49
 
 
 

回复

6713

帖子

10

TA的资源

版主

4
 

这个就是Adafruit ESP32-S3 TFT Feather得配套硬件之一吗?

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

6713

帖子

10

TA的资源

版主

5
 

要是有个新的硬件不包含,怎么写驱动文件啊  

点评

好问题!。。。因为.mpy也是py文件的代码编译得到的,所以就是通过python去编写这个库,也是可以的。例如,增加xxSensor找不到现成的驱动,可以调用busio/I2C的接口,然后透过python代码去把寄存器的操作等配置起来  详情 回复 发表于 2023-9-7 10:50
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

115

帖子

8

TA的资源

一粒金砂(高级)

6
 
wangerxian 发表于 2023-9-5 17:00 TAP单击/双击检测中断检测,在micropython是怎么监测中断的?

sensor本身有状态寄存器,也可以配置为中断输出。

 
 
 

回复

115

帖子

8

TA的资源

一粒金砂(高级)

7
 
秦天qintian0303 发表于 2023-9-6 15:33 要是有个新的硬件不包含,怎么写驱动文件啊  

好问题!。。。因为.mpy也是py文件的代码编译得到的,所以就是通过python去编写这个库,也是可以的。例如,增加xxSensor找不到现成的驱动,可以调用busio/I2C的接口,然后透过python代码去把寄存器的操作等配置起来就可以了。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表