Ustatnia modyfikacja 9 września 2024 przez Olek

Szykuje się do instalacji małej przydomowej elektrowni wiatrowej. Aby dobrze ją dobrać, trzeba znać warunki, w jakich przyjdzie jej pracować. Dlatego postanowiłem dokonać pomiarów wiatru w docelowym miejscu (i wysokości), na której ma pracować turbina. Co prawda mam już pomiary z ostatnich dwóch lat ze stacji pogodowej. Niestety jest ona umieszczona około 4 metry nad poziomem, a docelowa turbina ma być na wysokości 12 metrów. Jak wiadomo, wzrost prędkości wiatru zwiększa się ze wysokości i dlatego te pomiary mogą być niewiarygodne.
Na znanym chińskim portalu zakupiłem dwa czujniki: prędkości i kierunku wiatru.
Czujniki komunikują się za pomocą magistrali szeregowej 485 i protokołu MODBUS. Jako sterownik posłużył mi esp32 i oprogramowanie zbudowane na znanym już narzędziu ESPHome. Za pomocą WiFi dane z automatu są przekazywane do Home Assistent-a, co pozwala na bieżąco obserwować i rejestrować pomiary. Było trochę problemów ze zmianą adresu jednego z czujników, ale od czego są pasjonaci HA, tym razem z Francji :).

Teraz pozostaje zainstalowanie czujników w docelowym miejscu. Pomysł i materiały są, czekam tylko na odpowiednią pogodę.

Okazuje się, że w moim przypadki to nie takie proste zainstalować na odpowiednim wysokości te czujniki, aby nie uszkodzić opierzenia komina, do którego chciałem przymocować maszt. Jest to tez trochę skomplikowana operacja dla jednej (czy dwóch osób) bez specjalistycznego sprzętu. Mam już co prawda koncepcje, ale aby wyeliminować jakieś błędy i niepotrzebny demontaż z wysokości, postanowiłem zainstalować i przetestować czujniki w łatwiej dostępnym miejscu. I tak zainstalowałem je tymczasowo na tarasie obok mojej obecnej stacji pogodowej. Przy okazji sprawdzę, jak się mają wskazania z obu tych urządzeń.

Kod/konfiguracja ESPHome

esphome:
  name: wiatr
  friendly_name: wiatr

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxx"

ota:
  password: "xxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  

  manual_ip:
    static_ip: 192.168.x.xxx
    gateway: 192.168.x.x
    subnet: 255.255.255.0  
    dns1: 192.168.x.x            

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "xxx"
    password: "xxx"

web_server:
  port: 80    
  
captive_portal:

uart:
    tx_pin: GPIO17
    rx_pin: GPIO16
    baud_rate: 4800
    stop_bits: 1

modbus:
#  uart_id: uart_0
  id: modbus1
  flow_control_pin: GPIO04

modbus_controller:
  - id: wiatr_kierunek
    address: 1
    modbus_id: modbus1
    command_throttle: 1000ms
    setup_priority: -10
    update_interval: 1s


  - id: wiatr_predkosc
    address: 2
    modbus_id: modbus1
    command_throttle: 1000ms
    setup_priority: -10
    update_interval: 600ms
  

sensor:  
  - platform: modbus_controller
    modbus_controller_id: wiatr_kierunek
    id:  wiatr_kierunek_x
    name: Kierunek wiatru x
    address: 0x0000
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0
    skip_updates: 1 
    icon: mdi:angle-acute

  - platform: modbus_controller
    modbus_controller_id:  wiatr_kierunek
    id: wiatr_kierunek_stopnie
    name: Kierunek wiatru stopnie
    address: 0x0001
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0
    unit_of_measurement: "°"
    skip_updates: 1 
    icon: mdi:compass-outline


  - platform: modbus_controller
    modbus_controller_id: wiatr_predkosc
    id: wiatr_predkosc_x
    name: Pędkość wiatru x
    address: 0x0000
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0
    skip_updates: 1
    icon: mdi:cog-clockwise

  - platform: template
    name: Pędkość wiatru m/s
    id: wiatr_predkosc_ms
    unit_of_measurement: "m/s"
    accuracy_decimals: 2
    update_interval: 1s
    icon: mdi:wind-power-outline
    lambda: return ( (id(wiatr_predkosc_x).state) / (10) );

  - platform: template
    name: Pędkość wiatru km/h
    id: wiatr_predkosc_kmh
    unit_of_measurement: km/h
    accuracy_decimals: 0
    update_interval: 1s
    icon: mdi:wind-power
    lambda: return ( (id(wiatr_predkosc_ms).state) * (3.6) );     

text_sensor:
  - platform: template
    name: Kierunek wiatru symbol
    id: wiatr_kierunek_symbol
#    unit_of_measurement: compass
    update_interval: 1s
    icon: mdi:compass-rose
    lambda: |-
      std::string val;
      switch (int(id(wiatr_kierunek_x).state))
      {
        case 0: val = "N"; break;
        case 1: val = "NE"; break;
        case 2: val = "E"; break;
        case 3: val = "SE"; break;
        case 4: val = "S"; break;
        case 5: val = "SW"; break;
        case 6: val = "W"; break;
        case 7: val = "NW"; break;
        default: val = '?';
      }
      return val;


#                                                       +-----------------+| 
#                                                       |    |  |  |  |    |
#                                              [  EN  ] |o                o| [GPIO23] [VSPI MOSI]
#                                              [  VP  ] |o                o| [GPIO22] [ I2C SCL ]
#                                              [  VN  ] |o  ESP-WROOM-32  o| [GPIO1 ] [UART O TX]
#                       [RTC_GPIO4] [ADC1 CH6] [GPIO34] |o                o| [GPIO3 ] [UART O RX]
#                       [RTC_GPIO5] [ADC1 CH7] [GPIO35] |o                o| [GPIO21] [ 12C SDA ]
#           [RTC_GPIO9] [ TOUCH9  ] [ADC1 CH4] [GPIO32] |o                o| [GPIO19] [VSPI MISO]
#           [RTC_GPIO8] [ TOUCH8  ] [ADC1 CH5] [GPIO33] |o     PIN 30     o| [GPIO18] [VSPI CLK ]  
#            [RTC_GPIO6] [  DAC1  ] [ADC2 CH8] [GPIO25] |o               #o| [GPIO5 ] [VSPI CSO ]  #####
#            [RTC_GPI07] [  DAC2  ] [ADC2 CH9] [GPIO26] |o   DEVKIT V1   #o| [GPIO17] [UART 2 TX]  #####
#           [RTC_GPIO17] [ TOUCH7 ] [ADC2 CH7] [GPIO27] |o               #o| [GPIO16] [UART 2 RX]  #####
#[RTC_GPIO16] [HSPI CLK] [ TOUCH6 ] [ADC2 CH6] [GPIO14] |o                o| [GPIO4 ] [ADC2 CHO ] [TOUCHO] [RTC_GPIO10] 
#[RTC_GPIO15] [HSPI MISO] [TOUCHS ] [ADC2 CH5] [GPIO12] |o                o| [GPIO2 ] [ADC2 CH2 ] [TOUCH2] [RTC_GPIO12]
#[RTC_GPIO14] [HSPI MOSI] [TOUCH4 ] [ADC2 CH4] [GPIO13] |o                o| [GPIO15] [ADC2 CH3 ] [TOUCH3] [HSPI CSO] [RTC_GPIO13]
#                                              [ GND  ] |o                o| [ GND  ]
#                                              [ VIN  ] |o                o| [ 3V3  ]
#                                                       |                  |
#                                                       |      |usb|       |
#                                                       +------|   |-------+
#
#
# pod adresem 2000 zapisany jest adres urządzenia: def 1; trzeba zmienić dla jednego na inny, w moim przypadku 2 to prędkościomierz
# pod adresem 2001 zapisany jest prędkość komunikacji; 1-4800; 2-9800; zostaliśmy przy 4800
#

Wreszcie mierniki doczekały się swojego pierwotnego położenia, czyli 4 metry nad kalenicą dachu.

Dodaj komentarz