发作品
标准版

多功能采集中心(/doge

2.5k
0
0
0
简介:一个菜鸡版本的小型家庭监控中心,努力填坑中……
开源协议:GPL 3.0
创建时间:2021-02-17 15:00:04更新时间:2023-05-26 16:28:57

描述

项目说明:

这是作为菜鸡项目主使用立创EDA的第一份答卷,虽然缺陷很多…但有了立创EDA的辅助这些就都是小问题啦~ 

应用场景:智能家居、环境监测。

功能介绍:可直接使用220V接入、可检测环境空气质量、可检测环境温湿度、环境光、附带了一个 4位的LED数码管显示、一个 0.96 inch的OLED显示。

开源协议:GPL-3.0

设计方案与选型:

本作品具备实用性、个性化、综合化等优点。制作过程简单易懂,适合个人DIY。

空气质量检测原本选用CCS811,经测试发现会出现数据异常的问题,后更换为SGP30。(可能是走线亦或者程序问题?)

环境光检测使用了BH1750传感器

温湿度检测采用 HTU21D + DS18B20

数码管驱动采用 TM1637

Oled采用了SSD1306

且为了实现手机端远程开关灯(电脑、空调等……) 添加了一个带有光耦隔离的继电器用于驱动。

设计过程:

硬件方面:直接参考厂家给出的datasheet,绘制完成后记得使用DRC。

软件方面:使用HomeAssistant中的ESPHOME作为平台,直接构建。

实物展示:

运行效果:

程序:

注:此处为了对接HomeAssistant平台,直接使用了ESPHOME进行编程。当然也可以使用乐鑫官方的ESP-IDF进行开发,这里不再赘述了(/现在使用过程中很稳定,没有出现离谱Bug……所以偷懒就不写ESP-IDF啦

esphome:
  name: esp32s_timer
  platform: ESP32
  board: esp-wrover-kit
wifi:
  ssid: !secret wifi_ssid     ##利用HASS的secret选项进行加密
  password: !secret wifi_password
  manual_ip:                   ## 指定设备的IP地址
    static_ip: 192.168.50.170  ## 改成你想要设定的地址  
    gateway: 192.168.50.1      ## 设备网关
    subnet: 255.255.255.0      ## 子网掩码
# Enable logging
logger:
# Enable Home Assistant API
api:
  password: "333"
ota:
  password: "333"
web_server:  ## 这个是web控制,添加了这2行,就可以打开设备ip,有控制页面
  port: 80
  
i2c:
  - id: bus_a
    sda: 21
    scl: 22
    scan: false
  
font:
  - file: "comicbd.ttf"
    id: my_font
    size: 11
dallas:
  - pin: GPIO27
  
sensor:
  - platform: bh1750
    i2c_id: bus_a
    name: "BH1750 Illuminance"
    id: bh1
    address: 0x23
    measurement_time: 69
    update_interval: 10s
    
  - platform: htu21d
    i2c_id: bus_a
    temperature:
      name: "htu21d Temperature"
      id: temperature
    humidity:
      name: "htu21d Humidity"
      id: humidity
    update_interval: 10s
    
  - platform: sgp30
    i2c_id: bus_a
    eco2:
      name: "SGP30 eCO2"
      id: sgp30_1
      accuracy_decimals: 1
    tvoc:
      name: "SGP30 TVOC"
      id: sgp30_2
      accuracy_decimals: 1
    address: 0x58
    update_interval: 10s
  
  - platform: dallas
    address: 0xDE0220764FA6FF28
    name: "DS18B20 Temperature"
    id: ds18b20
    
  - platform: wifi_signal
    name: "X_Bedroom WiFi Signal Sensor"
    update_interval: 10s
switch:
  - platform: gpio            ## 设备类型为GPIO
    name: "X_Bedroom_Light"       ## 名称可以自定义
    pin: GPIO16                ## 使用GPIO-0
    id: relay                 ## 可自定义
    inverted: yes             ## 翻转输出,即低电平触发
    
  - platform: gpio            ## 设备类型为GPIO
    name: "Timer_C"       ## 名称可以自定义
    pin: GPIO17                ## 使用GPIO-0
    id: relay_2                 ## 可自定义
    inverted: yes             ## 翻转输出,即低电平触发
time:
  - platform: homeassistant
    id: homeassistant_time
display:
  - platform: tm1637
    clk_pin: GPIO25
    dio_pin: GPIO26
    update_interval: 500ms
    intensity: 3
    lambda: |-
      static int i = 0;
      i++;
      if ((i % 2) == 0)
        it.strftime("%H.%M", id(homeassistant_time).now());
      else
        it.strftime("%H%M", id(homeassistant_time).now());
         
   - platform: ssd1306_i2c
    i2c_id: bus_a
    model: "SSD1306 128x64"
    address: 0x3C
    brightness: 0.3
    lambda: |-
      it.strftime(0, 0, id(my_font), "%Y-%m-%d %H:%M %w", id(homeassistant_time).now());
      it.printf(0, 12, id(my_font), "eCO2: %.1f ppm", id(sgp30_1).state);
      it.printf(0, 24, id(my_font), "TVOC: %.1f ppb", id(sgp30_2).state);
      it.printf(0, 36, id(my_font), "T: %.1f°C", id(temperature).state);
      it.printf(69, 36, id(my_font), "T: %.1f°C", id(ds18b20).state);
      it.printf(0, 48, id(my_font), "L: %.1f lm", id(bh1).state);
      it.printf(69, 48, id(my_font), "H: %.1f%%", id(humidity).state);

 

问题总结:

数码管的时分分隔符只显示一个? 用Arduino编程也是如此,不知道为啥?希望有大佬解惑

 

2023/04/02 :参看原理图后发现这两个点的端口不是同一个,点亮的时候顺序不一致,可能是此原因

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉
工程成员
全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程