树莓派4用Python读取AS5600传感器遇ModuleNotFoundError求助
解决树莓派4读取AS5600的ModuleNotFoundError问题
问题根源
你用的AS5600脚本是针对MicroPython编写的,而树莓派默认运行标准Python(CPython)。machine是MicroPython专属的硬件控制模块,CPython环境下无法直接使用,所以安装machine或micropython-machine均无效。
解决方案
方案1:改用CPython兼容的AS5600驱动
直接用树莓派CPython支持的库实现读取,步骤如下:
- 开启树莓派I2C功能:
- 运行
sudo raspi-config,进入Interface Options -> I2C选择启用。 - 重启树莓派:
sudo reboot
- 运行
- 安装依赖库:
sudo apt-get install python3-smbus2 - 编写适配CPython的读取代码(示例):
import smbus2 import time AS5600_ADDR = 0x36 RAW_ANGLE_H = 0x0C RAW_ANGLE_L = 0x0D bus = smbus2.SMBus(1) # 树莓派4默认使用I2C总线1 def read_angle(): high_byte = bus.read_byte_data(AS5600_ADDR, RAW_ANGLE_H) low_byte = bus.read_byte_data(AS5600_ADDR, RAW_ANGLE_L) raw_angle = (high_byte << 8) | low_byte return (raw_angle / 4096) * 360 if __name__ == "__main__": try: while True: print(f"当前角度:{read_angle():.2f}°") time.sleep(0.5) except KeyboardInterrupt: print("程序终止") bus.close()
方案2:在树莓派上运行MicroPython
如果坚持使用原GitHub脚本,可在树莓派上刷入MicroPython:
- 下载对应固件:
wget https://micropython.org/download/rpi4/rpi4-20240602-v1.22.2.uf2 - 树莓派关机后按住BOOT键开机,此时会弹出U盘。
- 将下载的
uf2文件复制到该U盘,树莓派会自动重启刷入MicroPython。 - 用Thonny IDE或串口工具(如
picocom)连接树莓派,即可运行原脚本,此时machine模块可正常使用。
额外提示
- CPython和MicroPython是完全不同的运行环境,不要在CPython下安装MicroPython专属模块。
- 可通过
i2cdetect -y 1命令验证AS5600是否被识别(正常会显示36)。
内容的提问来源于stack exchange,提问作者Toni
相关产品推荐
相关产品推荐

