找回密码
 立即注册

微信扫码登录

搜索
查看: 8977|回复: 67

[硬件DIY] 玩转ESPHome之九 - - - - 太阳自动追踪控制器

  [复制链接]

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
发表于 2025-6-10 19:30:55 | 显示全部楼层 |阅读模式
本帖最后由 sorrypqa 于 2025-6-26 15:16 编辑

      第一版,主要用来验证方案和程序的可行性。


      这款控制器的最大特点是免调试,接线简单,不受刮风下雨等任何外部环境的影响,无需外挂一大堆各种玩具级别的光敏、光照传感器,这类传感器平时被日晒雨淋的,最容易出现异常

      它的主要工作原理是通电后,利用GPS获取控制器所在位置的时间和经纬度并储存在控制器里,以便下次开机时直接调用,然后计算出所在位置的太阳方位角和高度角,用来控制方位电机和仰角电机,到目前为止,控制器和程序运行都非常完美。


     关闭自动跟踪,它就是个单纯的伺服电机控制器,可以手动或者通过HA的自动化控制任意角度,可以用来
控制任意需要使用舵机的设备,比如动物的自动投食等,打开自动跟踪,它就是个太阳自动跟踪控制器

     打开自动跟踪功能后,无需任何复位等动作就能立刻实时追踪太阳的位置,并能在太阳低于地平线时自动返回日出位置,可以无网、无HA主机的情况下独立工作、如果由HA集中管理,能方便实现根据天气状况,比如风速大于XX公里/小时自动置于水平状态,减少背风.


     内置实时时钟,没有WIFI网络和HA服务器也可以正常独立工作。

     内置直流电压、电流、功率检测,用于实时了解太阳能电池板输出状态

     预留了I2C接口的OLED显示屏安装位置,可以用来显示时间、经纬度、电压、电流、功率等


   由于使用了LM5164DDAR和LM2576HVS-5.0/TR的DC-DC电源芯片,
   所以控制器支持工作电压10-60V,支持控制5V、12-60V的伺服电机。
   检测电压0-100V,电流0-30A



Screenshot_20250421-083743_Edge.jpg


GPS模块使用的是大夏龙雀的DX-GP10-A:

20250421_093648.jpg

目前测试用仰角和方位电机都是180°伺服电机

20250421_134409.jpg



SNAG-2025-6-10_0017.png


在完全没有校准的情况下,已经能以很少的误差全程跟踪太阳,而且这误差是来自电机和这支长筒的垂直度

SmartSelect_20250610-202523_WeChat.jpg

如需要最低成本测试此控制器的自动跟踪功能,可以买个几十元像下图类似的舵机云台:

SNAG-2025-6-11_0000.png

使用servo组件作为伺服电机控制:
servo:
  - id: elevation_servo
    output: pwm1_output #伺服器使用的输出组件的ID
    min_level: 3% #最小值(-100%)将映射到的PWM占空比。默认为3%。
    idle_level: 7.5% #空闲值(0%)将映射到的 PWM 占空比。这也是启动时伺服的状态。默认为7.5%。
    max_level: 12% #最大值(100%)将映射到的 PWM 占空比。默认为12.0%。
    restore: false #是否在启动时恢复伺服电机的状态。如果您有一个绝对伺服电机并且它在启动时回到其 0 位置,这将很有用。默认为false。
    auto_detach_time: 0s #达到目标值后伺服器分离的时间,如果设置为零,伺服器将不会分离。默认为0s。
    transition_length: 0s #完成一次完整移动所需的时间(-1.0 到 1.0)。这将有效限制伺服器的速度,值越大,伺服器移动的速度越慢。默认为0s。

  - id: azimuth_servo
    output: pwm2_output #伺服器使用的输出组件的ID
    min_level: 2.5% #最小值(-100%)将映射到的PWM占空比。默认为3%。
    idle_level: 7.5% #空闲值(0%)将映射到的 PWM 占空比。这也是启动时伺服的状态。默认为7.5%。
    max_level: 12.5% #最大值(100%)将映射到的 PWM 占空比。默认为12.0%。
    restore: false #是否在启动时恢复伺服电机的状态。如果您有一个绝对伺服电机并且它在启动时回到其 0 位置,这将很有用。默认为false。
    auto_detach_time: 0s #达到目标值后伺服器分离的时间,如果设置为零,伺服器将不会分离。默认为0s。
    transition_length: 0s #完成一次完整移动所需的时间(-1.0 到 1.0)。这将有效限制伺服器的速度,值越大,伺服器移动的速度越慢。默认为0s。


使用
number组件作为手动的方位和仰角控制:

number:
  - platform: template
    name: "A1.仰角控制"
    id: "elevation_servo_control"
    min_value: -100
    initial_value: 0
    max_value: 100
    step: 1
    optimistic: true
    set_action:
      then:
        - servo.write:
            id: "elevation_servo"
            level: !lambda 'return x / 100.0;'

  - platform: template
    name: "A2.方位控制"
    id: "azimuth_servo_control"
    min_value: -100
    initial_value: 0
    max_value: 100
    step: 1
    optimistic: true
    set_action:
      then:
        - servo.write:
            id: "azimuth_servo"
            level: !lambda 'return -x / 100.0;'

使用
GPS组件获取经度和纬度,
由于GPG需要一定数量的卫星信号,才能获取准确的位置信息,所以利用卫星数量作为条件,只有卫星数量大于6个时,才会把获取到的经纬度保存起来:

gps:
  uart_id: gps_uart #指定gps使用的串口
  latitude:
    name: "C1.纬度"
    id: "gps_latitude"
  longitude:
    name: "C2.经度"
    id: "gps_longitude"
  satellites:
    name: "C3.卫星数量"
    id: "gps_satellites"
    on_value:
      then:
        - if:
            condition:
              - lambda: 'return id(gps_satellites).state > 6 ;'
            then:
              - lambda: |-
                  id(sun_latitude_gl) = id(gps_latitude).state;
                  id(sun_longitude_gl) = id(gps_longitude).state;
                  id(sun_id).set_latitude(id(sun_latitude_gl));
                  id(sun_id).set_longitude(id(sun_longitude_gl));


游客,如果您要查看本帖隐藏内容请回复






















评分

参与人数 2金钱 +20 HASS币 +10 收起 理由
nosuperman + 10 + 10 感谢楼主分享!
shadowba + 10

查看全部评分

回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-10 19:47:40 | 显示全部楼层

手抖,点错发表了出去,哈哈~~!
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-10 22:55:46 | 显示全部楼层
innx 发表于 2025-6-10 22:54
666,我只用了6块5w的小板子放阳台,接了小夜灯用了好几年了电量也够

我想玩都没地方玩!
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-10 23:18:09 | 显示全部楼层
隔壁的王叔叔 发表于 2025-6-10 23:15
厉害,厉害,请问太阳方位角怎么算?

太阳组件:
https://www.esphome.io/components/sun.html
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-10 23:24:58 | 显示全部楼层
隔壁的王叔叔 发表于 2025-6-10 23:21
感谢大佬,可以根据这个方位角,来控制卷帘高度

想法不错!
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-11 06:31:27 | 显示全部楼层
bugensui 发表于 2025-6-11 01:18
这个具体的作用是干什么,我怎么没有看懂

对于太阳能电池板,自动对着太阳,发电效率会比固定式高很多,也可以作为普通的舵机控制器
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-11 11:20:48 | 显示全部楼层
kittyme 发表于 2025-6-11 11:14
厉害了,农村装光伏可以试试效果

哈哈~!一直有这想法,想等过两年回老家躺平过平淡日子时玩玩光伏发电
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-11 18:11:11 | 显示全部楼层
jjcs 发表于 2025-6-11 18:02
超级羡慕会画板的大佬,我只能用洞洞板

搞这类东西很烦,现在很少玩了,有时间都是玩游戏。
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-12 18:13:51 | 显示全部楼层
tanbobo 发表于 2025-6-12 18:12
现在嘉立创 没有免费卷了!

哦!是吗?
回复

使用道具 举报

61

主题

1533

回帖

7616

积分

元老级技术达人

积分
7616
金钱
6017
HASS币
60
 楼主| 发表于 2025-6-13 21:03:00 | 显示全部楼层
大道宽又长 发表于 2025-6-13 21:00
还有,这个月还用了一张

现在很少玩了,影响不大,而且20元打一次样也可以接受
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-8-15 03:04 , Processed in 0.532566 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表