资讯动态

30秒上手 Python GPIO控制:python-periphery 让硬件驱动零门槛

发布时间:2026/8/24 7:02:05 来源:尧图企业网站定制
30秒上手 Python GPIO控制python-periphery 让硬件驱动零门槛【免费下载链接】python-peripheryA pure Python 2/3 library for peripheral I/O (GPIO, LED, PWM, SPI, I2C, MMIO, Serial) in Linux.项目地址: https://gitcode.com/gh_mirrors/py/python-peripherypython-periphery 是一个纯 Python 库帮你用几行代码就搞定 Linux 下的 GPIO、LED、PWM、SPI、I2C、MMIO 和串口通信。树莓派、BeagleBone 这类嵌入式开发板插上什么外设它就能让你直接读写不用再啃 sysfs 文件那些繁琐操作。为什么值得试纯 Python 实现没有 C 扩展pip一条命令装好不用折腾编译GPIO、LED、PWM、SPI、I2C、MMIO、Serial 7 类外设一次打包一个库全搞定Python 2/3 都兼容MIT 协议随便商用 一条命令装好先装库1 条命令搞定pip install python-periphery跑完没有报错就是装好了。如果离线环境装不了就克隆源码装git clone https://gitcode.com/gh_mirrors/py/python-periphery cd python-periphery python setup.py install实际用起来装完就能写代码了。这段代码打开开发板上的一根 GPIO 读电平、再驱动另一根输出取反值from periphery import GPIO gpio_in GPIO(/dev/gpiochip0, 10, in) # 10 号线设为输入 gpio_out GPIO(/dev/gpiochip0, 12, out) # 12 号线设为输出 value gpio_in.read() gpio_out.write(not value) gpio_in.close() gpio_out.close()跑完后12 号线的电平永远和 10 号线相反。用万用表量一下就能看到电平跟着翻了个面。能力总览能力一句话说明典型场景GPIO按线路号读写电平支持边沿事件按钮触发、继电器控制LED按名称开关系统 LED可调亮度状态指示灯PWM设频率和占空比调速、呼吸灯SPI按模式与速率收发字节接显示屏、传感器I2C对器件地址读写寄存器温湿度传感器、EEPROMMMIO直接读写硬件寄存器读板载 RTC、MAC 地址Serial打开串口收发数据接 USB 转串口模块场景实战翻转 GPIO 输出上面30秒跑通里那段代码就是这个场景的完整实现输入线接一个按钮或信号源输出线接继电器或蜂鸣器。GPIO()只传 2 个参数时走 sysfs 接口编号用 GPIO 号传 3 个参数第一个是/dev/gpiochipX时走字符设备接口编号是芯片内的线号。read()返回布尔值not value取反后写出去一个反相器就搭好了。调 LED 亮度这段代码打开两颗系统 LED一颗灭、一颗亮到一半from periphery import LED led0 LED(led0, False) # 打开并熄灭 led1 LED(led1, True) # 打开并点亮 led1.write(led1.max_brightness // 2) # 亮度调到 50% led0.close() led1.close()跑完肉眼可见 led0 灭、led1 半亮。max_brightness是每颗 LED 的满量程值拿它做除数代码在什么板子上都不会写死错亮度。用 PWM 调转速这段代码给 0 号芯片的 10 号通道设 1 kHz 频率、75% 占空比再动态降到 50%from periphery import PWM pwm PWM(0, 10) pwm.frequency 1e3 # 1 kHz pwm.duty_cycle 0.75 # 75% pwm.enable() pwm.duty_cycle 0.50 # 降到 50% pwm.close()占空比写多少电机转速、灯亮度就按多少比例走。改duty_cycle这一行就能实时调速不用重新初始化。新手最常踩的坑 ⚠️Q1GPIO 编号对不上输出没反应接口决定编号规则。GPIO(10, in)走 sysfs10 是 GPIO 号GPIO(/dev/gpiochip0, 10, in)走字符设备10 是芯片内线号。两套编号不通用先确认自己板子上引脚对应的到底是哪个号。Q2LED(led0)报 LookupErrorLED 名字是 Linux 分配的系统名不是你想的 led0 就一定存在。先跑cat /sys/class/leds/看看板上实际注册了哪些名字照着填就不会错。Q3PWM 或 MMIO 报 PermissionErrorsysfs PWM 和 MMIO 都要 root 权限加sudo python your_script.py再跑一次基本就过了。接下来去哪仓库内的 docs/ 目录放了全部 Sphinx 文档源码比如 docs/gpio.rst 是 GPIO 的完整 API 说明改完跑make html就能本地生成网页文档每个外设的实现都在 periphery/ 里想弄清 GPIO 怎么自动选接口直接看 periphery/gpio.py它按参数个数把请求分发给 cdev 或 sysfs 两条实现每个模块都配了可运行的测试在 tests/ 目录里比如 tests/test_gpio.py照着自己硬件改一改就是现成的联调脚本装好库挑一块板子把它加进你的下一个硬件项目吧。【免费下载链接】python-peripheryA pure Python 2/3 library for peripheral I/O (GPIO, LED, PWM, SPI, I2C, MMIO, Serial) in Linux.项目地址: https://gitcode.com/gh_mirrors/py/python-periphery创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价