Pico 智能家居:家庭助理和 Raspberry Pi Pico 打造智能生活

我计划使用 Pico 和 Home Assistant 创建一个智能中心,以实现家庭自动化,并使用 Zigbee、蓝牙

转发: Pico Smart Home: Home Assistant and Raspberry Pi Pico for Smart Living


项目介绍

PICO智能家居


1. 简介

我计划使用 Pico 和 Home Assistant 创建一个智能中心,以实现家庭自动化,并使用 Zigbee、蓝牙、IR 和其他功能与其他 HA 设备集成。

image.png

这次我想介绍一下环境搭建的基本方面。

device_info.png

我将使用 Arduino 作为开发工具,使用 Raspberry Pi Pico 板作为硬件。 此外,我将利用 Pico Bricks 开发套件来集成各种类型的设备。 Pico Bricks 使用方便,无需单独购买和连接组件。 它还提供了一种添加和集成其他设备的简单方法。

Pico Bricks 和 Home Assistant RP2040 都使用 Pico W,这是一款基于 Wi-Fi 的板。 但是,如果您想使用有线以太网,则可以将其更改为 W5100S-EVB-Pico 板 (WIZnet)。 该板提供对有线以太网连接的支持。

W5100S-EVB-PICO

Pico Bricks

Arduino


2. 家庭助理设置

- 安装家庭助理

由于Linux是首选操作系统,因此如果您想在Windows PC上设置服务器,则需要使用虚拟机。 Home Assistant官方网站提供了必要的文件和手册,允许您根据自己的具体环境进行配置。

Home Assistant

我正在使用 VMware 进行虚拟化。

对于 VMware,下页提供了包含图像的详细教程。 请参阅它以获取指导。

Install VMware

安装完成后看到提示就说明安装成功了!

*屏幕上显示的 IP 地址将被设置为 MQTT Broker IP。

image.png

我们尝试在浏览器中输入 http://homeassistant.local:8123/ 来访问该页面。

- 添加用户

现在,让我们继续添加用户帐户。 此处设置的用户 ID 和密码将直接用于 MQTT 通信。

[设置>人员>用户>添加用户]  http://homeassistant.local:8123/config/users

image.png

如果您没有看到“用户”选项卡,请转到“配置文件设置”,然后选择“启用高级模式”

[配置文件>高级模式>启用]  http://homeassistant.local:8123/profile

image.png

-  MQTT 设置

接下来,转到附加商店,搜索 MQTT,然后添加 Mosquitto 代理。

[附加>附加商店] http://homeassistant.local:8123/hassio/store

image.png


3. Arduino设置

- 适用于 W5100S-EVB-Pico 的 Arduino

设置 W5100S-EVB-Pico 的环境。 请按照本网站的说明进行操作

W5100S-EVB-Pico with the Arduino IDE

让我们使用 Arduino 库管理器安装必要的库。 在此步骤中,我们将安装 Home Assistant 和 MQTT 库。

[草图>包含库>管理库>家庭助理集成]

[草图>包含库>管理库>MQTTPubSubClient]

image.png

完成这些步骤后,您应该具备基本功能。 当您继续开发时,请确保安装一路上可能需要的任何其他库。


4. LED开关控制

让我们使用此示例进行简单的基本功能测试。https://github.com/wiznetmaker/RP2040-HAT-HOMEASSISTANT-C/blob/main/examples/led_switch/led_switch.ino

现在基本设置已完成,让我们验证基本功能。 您可以参考下页的 Arduino 示例来获取指导。

W5100-EVB-Pico: GitHub - WIZnet-ArduinoEthernet/Ethernet: [WIZnet Modified] Ethernet Library for Arduino

家庭助理:GitHub - dawidchyrzynski/arduino-home-assistant: ArduinoHA allows to integrate an Arduino/ESP based device with Home Assistant using MQTT.

- 设置MQTT信息

输入 Home Assistant MQTT 通信所需的信息。

#define BROKER_ADDR         IPAddress(192, 168, 11, 103)
#define BROKER_USERNAME     "scarlet_pico" 
#define BROKER_PASSWORD     "1234"

- 以太网信息

另外,请提供W5100S的控制引脚信息。

请注意,Pico Bricks 的引脚 20 用于蜂鸣器功能,因此如果您想使用蜂鸣器功能,请相应修改引脚设置和硬件

#define ETH_SPI_CS_PIN    17
#define ETH_RESET_PIN     20

- 硬件信息

另请配置 LED 和按钮引脚

#define LED_PIN             7
#define BUTTON_PIN          10

如果您想更改按钮检查时间,请修改下面的'define'语句。 当前按钮检查时间设置为 0.1 秒。

#define DEBOUNCE_TIME       100

- 家庭助理设备信息

让我们在 Home Assistant 中注册该设备。 完成编码并且系统正常运行后,它将自动注册在家庭助理页面上。 此处,HASwitch 的参数(在本例中为scalet_pico_led)是唯一ID。

HAMqtt HA_mqtt(client, device);
HASwitch led("scalet_pico_led");

注册一个回调函数,以便在订阅 MQTT 消息时执行命令。

led.onCommand(onSwitchCommand);
led.setName("Scarlet Pico LED");

从Arduino编译并上传固件,并在Home Assistant页面检查设备是否注册成功。 在设备信息页面上,您应该看到设备的配置名称和唯一 ID。

[设置 > 设备和服务 > 实体]   http://homeassistant.local:8123/config/entities

image.png

当您点击该图标时,将显示开关屏幕,当您移动开关时,LED 将亮起。

led_switch.png

这涵盖了基本功能。 事实上,我已经完成了开发,可以根据按钮输入控制 LED 并将其与 Home Assistant 集成。 但是,附加配置似乎存在问题,因为 Home Assistant 上的设备注册无法正常工作。 让我根据剩余的信息提供一个概述。 我将在下一个项目中再次解释它。

- 使用按钮控制 LED

将 LED 配置为根据自动化页面中的按钮操作闪烁

[设置 > 自动化和场景 > 创建自动化]

 http://homeassistant.local:8123/config/automation/dashboard

在触发器配置中,选择【设备】,然后选择打开配置的按钮开关。

在操作配置中,选择[设备],然后选择打开配置的LED开关。

image.png

以下是将 Pico 上的按钮用作切换按钮的代码。

buttonState = digitalRead(BUTTON_PIN);

  if (buttonState == HIGH && lastButtonState == LOW) {

    ledState =! ledState;
    setLedStateButton(ledState);
  }
  lastButtonState = buttonState;

LED 状态通过 MQTT Publish 发送。 LED 控制仅通过 Home Assistant 开关完成。 该按钮仅用作输入设备。 这种方法确保即使添加额外的设备,控制状态也不会发生冲突。

文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值