Package: haas-python-adxl34x
HaaS Python介绍HaaS Python是阿里云IoT团队最新研发的一套低代码编程框架，兼容MicroPython编程规范，依托HaaS平台软硬件积木提供AI、支付、蓝牙配网、云连接、UI等物联网场景常用的能力，从而解决了物联网应用开发难的问题。有了Python轻应用框架，物联网编程不再局限于专业软件开发人员，一般的技术员也可以快速实现复杂的物联网需求。
更多HaaS Python介绍和开发资料见HaaS Python官网,创意案例,硬件积木HaaS Python is a set of low-code programming frameworks newly developed by Alibaba Cloud IoT team. It is compatible with MicroPython programming specifications. It relies on the hardware and software building blocks of the HaaS platform to provide capabilities commonly used in IoT scenarios such as AI, payment, Bluetooth network configuration, cloud connection, and UI. Solve the difficult problem of IoT application development. With the Python light application framework, IoT programming is no longer limited to professional software developers, and general technicians can quickly implement complex IoT requirements.
For more HaaS Python introduction and development materials, seeHaaS Python official website,Creative Case,Hardware Building Blocks安装方法在HaaS Python官网下载开发板对应的固件，并完成固件烧录Download the firmware corresponding to the development board atHaaS Python websiteand complete the firmware burning在开发板上运行以下命令完成安装和使用,如果您在使用过程中遇到问题，欢迎在github上向我们提交issue，我们的工程师会及时解答Run the following commands on the development board to complete the installation and use. If you encounter problems during use, please submit an issue to us ongithub, Our engineers will answer in timeimport upip
upip.install("haas-python-adxl34x")
import haas-python-adxl34x3轴加速度传感器 - ADXL345一、产品简介ADXL345是一款完整的3轴加速度测量系统，可选择的测量范围有士2g，士4g，士8g或士16g。它既能测量运动或冲击导致的动态加速度，也能测量静止加速度，例如重力加速度，这样的特性让它可作为倾斜传感器使用。该传感器还具备单击 /双击探测，自由落体探测，并允许用户设置一个加速度阀值，当加速度值超过设定阀值后可以产生一个信号输出。所有这些功能都可以映射到2个中断上。主控板可以通过I2C或SPI和该模块进行通信，本文中的驱动仅提供通过I2C接口和它进行通信，该传感器模组管脚定义及I2C模式下的典型电路请参考下图。名称说明GND地线VCC电源正极CSSPI模式下片选信号INT1中断1引脚INT2中断2引脚SDOSPI模式下数据输出引脚SCLI2C模式下时钟线SDAI2C模式下数据线二、ADXL345芯片技术参数工作电压：2.0v~3.6v功耗：40~145uA，待机模式仅0.1uA分辨率：13位三轴加速度计可编程范围：士2g，士4g，士8g或士16g可变量程工作温度：-40°C～+85°C通信接口：400KHz I2C或2MHz SPI加速度计噪声：100μg/√Hz片上16位ADC用户可编程中断封装尺寸：LGA 3mm5mm1mm三、软件接口ADXL345加速度传感器HaaS Python驱动：下载地址ADXL345(i2cObj) - 创建ADXL345驱动对象函数原型：gyroDev = ADXL345(i2cObj)参数说明：参数类型必选参数？说明i2cObjI2C是调用此函数前需确保i2cObj对象已经处于open状态返回值：执行成功，返回ADXL345对象；创建失败，抛出Exception示例代码：fromdriverimportI2C# 驱动库importadxl34x# ADXL345加速度计传感器驱动库# 初始化I2C类型的设备i2cObj=I2C()i2cObj.open("adxl345")# 按照board.json中名为"adxl345"的设备节点的配置参数（主设备I2C端口号，从设备地址，总线频率等）初始化I2C类型设备对象print("ADXL345 inited!")gyroDev=adxl34x.ADXL345(i2cObj)# 初始化ADXL345传感器对象i2cObj.close()# 关闭I2C设备delgyroDev# 删除ADXL345设备对象输出：ADXL345 inited!getAcceleration - 创建ADXL345驱动对象函数原型：ADXL345.getAcceleration()参数说明：无返回值：x,y,x三个方向的加速度值，格式：(xa, ya, za)，单位：m/s²。参数类型说明xaintX轴方向的加速度yaintX轴方向的加速度zaintX轴方向的加速度示例代码：fromdriverimportI2C# 驱动库importadxl34x# ADXL345加速度计传感器驱动库# 初始化I2C类型的设备i2cObj=I2C()i2cObj.open("adxl345")# 按照board.json中名为"adxl345"的设备节点的配置参数（主设备I2C端口号，从设备地址，总线频率等）初始化I2C类型设备对象print("ADXL345 inited!")gyroDev=adxl34x.ADXL345(i2cObj)# 初始化ADXL345传感器对象xa,ya,za=gyroDev.getAcceleration()print("acceleration:",xa,ya,za)i2cObj.close()# 关闭I2C设备delgyroDev# 删除ADXL345设备对象输出：分别代表x,y,z三个方向的实际加速度测量值ADXL345 inited!
acceleration: <xx> <yy> <zz>五、通信协议主控芯片和ADXL345传感器之间通信所用命令字如下表所示：序号寄存器功能说明命令字宏定义10x0读取ADC采样结果ADS1x15_POINTER_CONVERSION20x1设定ADC采样参数- 目标通道- 增益- 测量模式- 单次/连续测量模式- 测量速率等ADS1x15_POINTER_CONFIG30x2设定阈值的低8位ADS1x15_POINTER_LOW_THRESHOLD40x3设定阈值的高8位ADS1x15_POINTER_HIGH_THRESHOLD实际控制此传感器的流程可参考如下伪代码。设定ADC量测的参数并读取量测结果通过I2C向ADS1x15_POINTER_CONFIG寄存器写入ADC量测的参数（目标通道、增益、测量模式、测量速率）
    等待ADC采样结束（时间为一个采样周期（1/采样周期）+一个很小的偏差，如0.1ms）
    通过I2C发送读取ADS11x5的ADS1x15_POINTER_CONVERSION寄存器值的指令
    将测量结果转换成实际电压测量的数字结果转化为实际电压算法请参考驱动中的readVoltage函数的实现六、工作原理ADXL34x传感器属于微型机电系统传感器，主要由硅晶片上的微机械结构组成。该结构由多晶硅弹簧悬挂，当在X，Y和/或Z轴上受到加速度时，它可以在任何方向上平滑偏转。挠曲会导致固定板和连接到悬挂结构的板之间的电容发生变化。每个轴上的电容变化都会转换为与该轴上的加速度成比例的输出电压。该传感器便是通过对此电压进行采样从而再计算的得出每个方向上的加速度。ADXL34x传感器的系统框图如下图所示：参考文献及购买链接[1]ADXL345 ADC转换器[2]购买链接