这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】基于HomeAssistant与UNOWi-Fi的智能传感

共1条 1/1 1 跳转至

【换取手持数字示波器】基于HomeAssistant与UNOWi-Fi的智能传感器监测平台

助工
2025-02-01 17:51:50     打赏

感谢EEPW推出的“换取手持示波器”活动,本次分享的主题是:使用Arduino UNO R4 Wi-Fi搭配颜色传感器,并通过WIFI连接到Home Assistant,从而实现远程获取传感器信息。

接下来会介绍传感器采集,HomeAssistant平台搭建,MQTT协议的使用等诸多细节。


一、主控芯片:ArduinoUNO R4 WiFi简介

Arduino UNO R4 WiFi 将瑞萨电子的 RA4M1 微处理器与乐鑫的 ESP32-S3 相结合,为创客打造了一款一体化工具,具有增强的处理能力和多样化的全新外设。凭借其内置的 Wi-Fi® 和蓝牙®功能,UNO R4 WiFi 使制造商能够探索无限的创意可能性。此外,这款多功能板拥有方便的板载 12x8 LED 矩阵和 Qwiic 连接器。LED 矩阵是完全可编程的,可直接在电路板上制作视觉原型,为创新和释放创造力提供了充足的空间。通过 Qwiic 连接器,用户可以即插即用的方式创建项目。UNO R4 WiFi 为各个级别的创客提供了无与伦比的灵活性和可能性。

image.pngimage.png


二、系统框图

三、Home Assistant系统搭建

在HomeAssistant官网上下载VMWare版本的HAOS虚拟机,然后一路安装即可。

image.png

看到上述界面后,可以通过浏览器进入HA里面:

image.png


image.png


配置MQTT服务器:

image.png

添加MQTT客户端:

image.png

注册设备:https://www.home-assistant.io/integrations/sensor/

手势传感器:

homeassistant/sensor/APDS9960_GestureSensor/config
{
   "device_class":"frequency",
   "name":"GestureSensor",
   "state_topic":"homeassistant/APDS9960/state",
   "unit_of_measurement":"Lux",
   "value_template":"{{ value_json.GestureSensor}}",
   "unique_id":"GestureSensor_APDS9960",
   "device":{
       "identifiers":[
           "APDS9960"
       ],
       "name":"APDS9960-Adafruit"
   }
}
homeassistant/sensor/APDS9960_Light/config

然后发送:

{
   "device_class":"illuminance",
   "name":"Light",
   "state_topic":"homeassistant/APDS9960/state",
   "unit_of_measurement":"Lux",
   "value_template":"{{ value_json.Light}}",
   "unique_id":"Light_APDS9960",
   "device":{
       "identifiers":[
           "APDS9960"
       ],
       "name":"APDS9960-Adafruit"
   }
}


注册完设备后,在HA里面可以看到四个传感器:(下图中的数据是随机模拟值,后续会替代为真实传感器数据)

image.png


四、传感器数据采集

开发环境选择的是Arduino,首先安装驱动库。

image.png

首先进行APDS9960的初始化:


  Serial.println("Adafruit APDS9960 Init");


  if (!apds.begin(10, APDS9960_AGAIN_4X, 0x39, &Wire1)) {
    Serial.println("Error initializing APDS-9960 sensor.");
  }else{
    Serial.println("Successfully initializing APDS-9960 sensor.");
  }
 
  //gesture mode will be entered once proximity mode senses something close
  apds.enableProximity(true);
  //apds.enableGesture(true);

  //enable color sensign mode
  apds.enableColor(true);
  Serial.println("Sensor Enabled.");

接下来尝试分别获取颜色传感器数据:

void My_Read_APDS9960_Sensor(void) {
  Serial.println("Begin Read Color Data");
  //wait for color data to be ready
  while (!apds.colorDataReady()) {
    delay(5);
  }
  Serial.println("Read Color Data done");
  //get the data and print the different channels
  apds.getColorData(&r, &g, &b, &c);
  Serial.print("red: ");
  Serial.print(r);

  Serial.print(" green: ");
  Serial.print(g);

  Serial.print(" blue: ");
  Serial.print(b);

  Serial.print(" clear: ");
  Serial.println(c);
  Serial.println();
  delay(500);
  sprintf(rgbStr, "r:%d g:%d b:%d", r, g, b);
  ambientLux = apds.calculateLux(r, g, b);
  Serial.print("Ambient Lux = ");
  Serial.println(ambientLux);
}


五、发布数据到Home Assistant

发送传感器数据到HA,通过MQTT发布的方式。

      // send message, the Print interface can be used to set the message contents
      mqttClient.beginMessage(topic);
      mqttClient.print(", \"Light\": ");
      mqttClient.print(ambientLux);
      mqttClient.print(", \"RGB\": ");
      mqttClient.print(r);
      mqttClient.print("}");
      mqttClient.endMessage();


进入到HA,需要从浏览器里面输入:http://192.168.0.101:8123/

之后就可以在Overview里面看到前面创建的几个设备。

image.png

六、心得体验

通过本次项目,熟悉了HA搭建流程,传感器APDS9960颜色传感器使用方法,并且利用MQTT把数据发布到智能云端HOME ASSISTANT平台!

后续期待能够把手势传感器与距离传感器一起使用。开发更加有趣的内容!



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]