决定玩玩吃灰多年的树莓派的外设控制,听闻Python甚好,因此就来个一步到位 从编写到部署到开机运行
硬件清单:
树莓派 4B x1(未涨价前 还没成为理财产品前 420元购入)
电阻1K x2 (并联500欧用,可以再小些,树莓派 单口不超过16mA ,总口和不超过50mA下进行 )
Led x1 (橙色 小只)
杜邦线 公转母 x2
面包板 x1
软件清单:
(直接安装在树莓派系统下,后续复杂程序考虑交叉编译)
Python环境(最新Raspbian系统自带)
VS Code (跨平台的越来越香了)
一、安装相应库
a、VS Code 安装Python扩展
b、安装Python控制 树莓派IO库 - RPi
(最新Raspbian系统自带)
二、编写代码
import RPi.GPIO as GPIO
import time
try:
while True:
GPIO.setmode(GPIO.BOARD) #
GPIO.setup(12, GPIO.OUT)
GPIO.output(12, True)
time.sleep(1)
GPIO.output(12, False)
time.sleep(1)
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
print("Keyboard interrupt")
except:
print("some error")
finally:
print("clean up")
GPIO.cleanup() # cleanup all GPIO
执行程序会发现命令行卡住,以为什么问题,其实Led已经开始闪了 我没注意到。
此处注意程序结束时的端口释放,测试在终端使用Ctrl +C进行停止操作是可以避免出现 端口被使用的Warnning,但一般人不这么操作。。
三、部署
1、下载Pyinstall
和Windows部署生成exe一样, 可以使用Pyinstall生成, 只是直接使用pip安装的Pyinstall无法生成,网上也说不建议这种方式,因此手动下载Pyinstall 3.4进行命令行生成。
2.打开终端,cd到下载的压缩包(这里是桌面),解压文件:
$cd Desktop
$tar -zxvf PyInstaller-3.4
3、处理(官方处理方法 不处理会出错)
$cd bootloader
$python ./waf distclean all
4.打包文件:
$python /home/pi/Desktop/PyInstaller-3.4/pyinstaller.py -F -w /home/pi/Desktop/<你的文件名>.py
(-w 是不打开终端窗口 最后的路径是你自己Python’文件的路径)
5、生成的文件在Pyinstall 目录里 你的文件名/dist
四、开机运行
其实开机运行不一定需要打包文件,直接执行py文件可以的,因为这里推荐使用的是使用服务的形式启动。
网上查找有三种方式,使用服务的形式比较稳定。
这里直接编写实现代码,原理详情见文末-《树莓派笔记10:测试几种开机自启动的方法》
1、创建Auto_Start_Test服务文件
cd /etc/init.d
sudo touch Auto_Start_Test
2、写入bash脚本内容
#!/bin/bash
### BEGIN INIT INFO
# Provides: Auto_Start_Test
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Auto Start Test
# Descrption: This service is used to test auto start service
### END INIT INFO
case "$1" in
start)
echo "Stat"
/home/pi/Auto_Start_Demo.py&
;;
stop)
echo "Stop"
killall Auto_Start_Demo.py
exit 1
;;
*)
echo "Usage:service Auto_Start_Test start|stop"
exit 1
;;
esac
exit 0
3、开放权限
sudo chmod 777 Auto_Start_Test
4、 将该服务添加到自启动项
sudo chmod 777 Auto_Start_Test
5、手动测试
启动服务sudo service Auto_Start_Test start
停止服务sudo service Auto_Start_Test stop
总结:此贴为总结帖子,基本参考网上帖子进行总结记录,建议查找资料过程中保持自己的判断力,集思广益,
参考文档:
树莓派安装VS Code
python使用树莓派控制led灯-新手项
在树莓派上用python控制LED
树莓派 Learning 003 — GPIO 001 — 点亮LED
GPIO: Warning Channel already in use 端口已被使用处理
树莓派(Raspbian系统)中使用pyinstaller封装Python代码为可执行程序
pip命令安装 pyinstaller失败解决办法
树莓派笔记10:测试几种开机自启动的方法
书籍 —《树莓派Python编程指南》