准备工作
闲着没事发个帖子,过年的时候买了个云服务器现在这服务器一年都是挺便宜的对于学生来说完美!拿来做了个树莓派的玩具
1 配置树莓派的开发环境,确保树莓派能够连接上网络。
2 准备一个云服务器,云服务器主要作为‘中介’,用于接收pyqt端的信号和发生信号给树莓派控制其io口的输入输出功能。多数云服务器都可以优先体验一个月,阿里云直达连接 。阿里云这里一年只要99是比较便宜的。
这里腾讯云也有一个月的体验体验时间,具体需要大家找一找。腾讯云直达连接。腾讯云这里也大差不差不会太贵。云服务器购买好就对其配置环境了。
3最后是在电脑上搭建运行PyQT5的环境了。这里使用的是pycharm,其他操作系统运行也是大差不差的。
树莓派环境搭建
首先要有一块树莓派,咸鱼三百多陶的一块,然后对树莓派烧入系统需要用到这些软件。第一个的用来格式化SD卡的,第二个软件就是烧系统的软件了这里第二个软件烧录是要有系统镜像文件的这个官方网站有提供可以在官网下载,然后确认SD卡没错就点击“Write”将系统写入SD卡上。
然后就是插入显示器等待开机了。如果没有显示器可以观看这个没有显示器远程树莓派
进行配置,开机后就有下面的界面啦。因为使用的python我这里使用Thonny Python IDE里面有语法高亮看着没那么累。
树莓派端程序设计
整个设计树莓派担任的功能是控制GPIO,我这里用的是LED
首先是要对树莓派的库进行配置,下面是要用到的三个库:
import RPi.GPIO as GPIO
import requests #这是Python用于发送HTTP请求的库。
import time
假设大家都是刚搭建好环境,下面就是在命令行窗口进行安装库的代码:第三条为了下载速度快点,使用了国内源。
sudo apt-get update
sudo apt-get install python3-rpi.gpio
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
然后就是对GPIO口进行配置了,下面是对其27。根据下图的参考图。
# 初始化GPIO
GPIO.setmode(GPIO.BCM)
LED_PIN = 27 # BCM27对应的GPIO.2
因为整体设计是pyqt端通过云服务器控制树莓派设备响应的这里就要配置云服务器的路由地址
LED_STATUS_URL =
"http://‘这里改成自己云服务器的ip地址以及端口用‘0.0.0.0:0000’形式’/get_led_status"
这行代码主要的功能是获取云服务器信号的
为了让led做出反应下面编写LED程序
def check_led(url, pin):#函数用于检查和设置led状态
try:
# 发送HTTP GET请求到指定的URL。
response = requests.get(url)
# 检查响应状态码是否为200,即HTTP请求是否成功。
if response.status_code == 200:
# 从响应中提取JSON数据,并获取'led_status'字段的值。
led_status = response.json()['led_status']
# 如果'led_status'的值是'on',则将GPIO引脚设置为高电平,点亮LED。
if led_status == 'on':
GPIO.output(pin, GPIO.HIGH)
print(f"LED at pin {pin} is ON")
else:
# 否则,将GPIO引脚设置为低电平,熄灭LED。
GPIO.output(pin, GPIO.LOW)
print(f"LED at pin {pin} is OFF")
else:
# 如果从服务器获取状态失败,则打印错误信息。
print(f"从服务器获取引脚的LED状态失败 {pin}")
except Exception as e:
# 如果在尝试过程中出现异常,则打印异常信息。
print(f"在获得引脚的LED状态时出错 {pin}: {e}")
try:
while True:
check_led_status(LED_STATUS_URL, LED_PIN)
time.sleep(5) # 轮询间隔,可根据需要调整
finally:
GPIO.cleanup() # 程序结束时清理GPIO资源
这里程序代码都写好了,将全部代码整合成smp.py。放到树莓派桌面上,最好不要直接用IDE运行。使用命令行窗口运行。右键选择复制路径,使用组合键ctrl+alt+t打开命令行窗口输入cd 粘贴复制的路(记住不要有文件哦)记得删掉,然后使用python3 smp.py回车运行。这里还需要运行服务器端运行才不会出错。