You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ARM架构的Raspberry Pi Pico W创建嵌入式SSL证书对接GCP云函数

Raspberry Pi + GCP云函数实现LED闪烁:SSL证书与通信方案

一、SSL证书问题搞定

Raspberry Pi是ARM架构,但完全不需要专门的ARM微控制器SSL证书:

  • 不管你用Raspbian还是Ubuntu Server for ARM,系统自带的ca-certificates包已经包含Google的根CA证书,直接就能验证GCP所有服务的SSL证书,不用额外折腾。
  • 设备和GCP的身份认证,用GCP服务账号的JSON密钥就行,这比搞特殊证书靠谱多了。

二、具体实现步骤(推荐用Pub/Sub,避免公网IP问题)

1. GCP端操作

  • 先建个Pub/Sub主题,比如叫led-control-topic,用来传控制命令。
  • 给这个主题建个订阅,比如led-control-sub,Pi后面要订阅这个。
  • 创建云函数:触发方式选HTTP(方便你调用),函数里写逻辑——往刚才的Pub/Sub主题发消息,比如{"command": "blink"}。
  • 给Pi建个服务账号,授予pubsub.subscriber权限,下载JSON密钥文件到你的Pi上。

2. Raspberry Pi端操作

  • 装依赖:
    sudo apt update && sudo apt install python3-pip python3-gpiozero -y
    pip3 install google-cloud-pubsub
    
  • 把下载的JSON密钥放到Pi的某个地方(比如~/gcp-service-account.json),然后设环境变量:
    export GOOGLE_APPLICATION_CREDENTIALS="/home/pi/gcp-service-account.json"
    
  • 写个Python脚本(比如led_control.py):
    from google.cloud import pubsub_v1
    from gpiozero import LED
    from time import sleep
    import json
    
    # 选个LED引脚,比如BCM 18(对应物理引脚12)
    led = LED(18)
    
    # 初始化Pub/Sub订阅者
    subscriber = pubsub_v1.SubscriberClient()
    # 替换成你的GCP项目ID和订阅名
    subscription_path = subscriber.subscription_path("你的GCP项目ID", "led-control-sub")
    
    def handle_command(message):
        try:
            cmd_data = json.loads(message.data.decode("utf-8"))
            print(f"收到命令: {cmd_data}")
            if cmd_data.get("command") == "blink":
                # 闪烁3次
                for _ in range(3):
                    led.on()
                    sleep(1)
                    led.off()
                    sleep(1)
            # 确认消息已处理,避免重复接收
            message.ack()
        except Exception as e:
            print(f"处理命令出错: {e}")
            message.nack()
    
    # 启动订阅
    subscriber.subscribe(subscription_path, callback=handle_command)
    print("等待云端命令...按Ctrl+C退出")
    
    # 保持脚本运行
    while True:
        sleep(60)
    
  • 运行脚本:python3 led_control.py,要后台运行就用nohup python3 led_control.py &。

3. 测试

  • 调用云函数的HTTP地址,触发它发消息到Pub/Sub。
  • 看Pi上的LED是不是闪了,完美。

三、备选方案(云函数直接调用Pi)

如果你非要云函数主动发命令到Pi(不推荐,因为Pi可能没有固定公网IP):

  • 给Pi整个动态DNS,或者用GCP Cloud NAT把Pi放到公网能访问的地址。
  • 在Pi上搭个HTTPS服务:用Flask+Let's Encrypt免费证书,写个LED控制的接口,比如/api/blink。
  • 云函数里发HTTPS请求到这个接口,带上API密钥做身份验证,避免被瞎调用。

内容的提问来源于stack exchange,提问作者M K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:17:43