Licznik kontrakton ESP-01S

  1. Poczekam aż dojdzie mi programator do ESP. Próbowałem już wszystkiego, dwóch USB TTL, Arduino mega Clone nawet NodeMCU. Nawet próbowałem tasmotizer ale mi błąd md5 na końcu wywala

Opcja 2. wymaga jedynie użycia przeglądarki Chrome lub Edge i np. win10 (oczywiście musisz najpierw mieć sterowniki portu szeregowego, ale chyba masz? i skonfigurowanego SSL).

Możesz użyć np. opcji 3. która wymaga po prostu podpięcia mostka USB-UART bezpośrednio do komputera na którym masz ESPHome (jeśli to addon w HA to chodzi o komputer na którym pracuje HAOS generic, a jeśli HAOS jest odpalony jako VM, to oczywiście musisz w hoście udostępnić port do VM w której pracuje HAOS OVA, generalnie jeśli flashujesz ze sprzętu na którym masz VM to wygodnie jest wyprowadzić sobie przyciski RESET i GPIO0, bo przy odpinaniu mostka z portu USB jego port szeregowy znika i jest to upierdliwe).

Ale mnie intryguje coś innego - inny moduł już skutecznie sflaszowałeś (skoro jest online), więc zrób to tak samo jak tamten.

Zasadniczo nie istnieje coś takiego jak “programator dla ESP” bo taka konstrukcja nie jest naprawdę potrzebna, tak naprawdę potrzebny jest mostek USB-UART (i co ciekawsze w przypadku “dedykowanych” konstrukcji dla ESP-01 sprzedają kolejny strzał w kolano :stuck_out_tongue: właśnie jako “programator” tu masz opis jak go uzdatnić do użytku).

Tamten to wemos D1. Właśnie robię wszystko dokładnie tak samo a je…ne ESP01 nie chce ruszyć

Pokaż jakie masz te mostki USB - UART, bo naprawdę nic innego nie potrzeba.

Wemos D1 ma bodajże układ eliminujący konieczność ręcznego podania GPIO0 do masy.

Zbudowany tak jak na schemscie takim jak tu
https://evertdekker.com/?p=1107

Jak to mówią - “prowadził ślepy kulawego” . :stuck_out_tongue: Widzę @szopen , że uparłeś się

  • kibicuje Wam już od rana :+1:

Połączenie jest rzeczywiście banalne… ciekawe czy skrzyżował Rx Tx?

Hmm o tym pisałem gdzieś na początku…
Oczywiście niektóre chińskie mostki mają opis odwrotnie i wtedy się łączy wbrew logice.

Jak mam taki problem to sprawdzam tak:
Podłączam cały układ (esp i mostek) w trybie normalnej pracy do USB, odpalam dowolny terminal i włączam zasilanie.
Po włączeniu esp zawsze wyrzuci coś na terminal, nawet jakieś pojawiające się śmieci świadczą o prawidłowym podłączeniu Rx Tx.
Jeśli nie pojawi się nic, to zamieniam piny i ponawiam próbę.

1 polubienie

Jakbym źle podłączył to nie połączył by się. A on się łączy, kasuje, flashuje… A potem kupa

… że tak zapytam, likwidujesz potem połączenie GPIO0 do masy i resetujesz układ?

Jak nie masz pewności co do sprawności układu to wgraj na próbę tasmotę i sprawdź czy działa… zawęzi to zakres poszukiwań.

Przy flash tasmota dostaję błąd MD5 na końcu

ok… tematu nie było, nie ma co mnożyć kłopotów :blush:

I dlatego gdzieś tam pisałem, żebyś wrzucił swój ostateczny kod - przejrzę i wgram go u siebie w sprawny moduł.
W życiu nie używałem metody z flashowaniem z przeglądarki (i jej nie użyję, bo nie mam jak :stuck_out_tongue: ).


Na tym etapie powinniśmy wrócić do samego początku - użyłeś wspólnego kodu z innym urządzeniem w swojej sieci, a nie zmieniłeś substitutions: więc właściwie to powinieneś wrzucić kod obu urządzeń, aby ktokolwiek mógł znaleźć potencjalne błędy (myślę, że sporo można wyciachać z tej konfiguracji, bo jest pełna “upiększaczy”, dodanych przez oryginalnego autora właśnie w celu upublicznienia projektu).

Bo chłopaki z Nabucasa wymyślili zajebisty trik umożliwiający używanie niewolnego kodu w konstrukcjach ESPHome bez łamania licencji - po prostu piki binarne nie są dostępne, a każdy kompiluje na własną rękę (a w ten sposób się nie da legalnie umieścić niektórych funkcji np. w Tasmota, które jest publikowane przede wszystkim jako binarne wsady, oczywiście Tasmota w kodzie źródłowym może zawierać takie “gadżety”, ale zakomentowane by nie łamać licencji np. Bosch’a).


Kolejna kwestia - masz multimetr i możesz zmierzyć napięcie zasilania modułu w trakcie jego pracy/flashowania?
(błędy md5 przy flashowaniu w tasmota mogą sugerować problemy z zasilaniem - to wcale nie musi oznaczać uwalonej kostki flash)

Ale w tym nowym interfejsie wszystko sam robi. Dodając nowe urządzenia wrzuca im config do tej samej sieci. Dopiero potem dodajesz kod jak urządzenia mają pracować. Ale po pierwszym etapie urządzenie pojawia się on-line i już możemy przez ota edytować. Robiłem tam dodając NodeMCU.

Pierwszy kod to głów na Wemos D1

---
# Home Assistant Glow
#
# Read your electricity meter by means of the pulse LED on your 
# meter, useful if you do not have a serial port (P1).
#
substitutions:
  device_name: home-assistant-glow
  friendly_name: T-CUP
  device_description: "Measure your energy consumption with the pulse LED on your smart meter"
  pulse_pin: GPIO12
  status_led: GPIO5

  # imp/kWh rate ⬇ #
  pulse_rate: '1000'

  # Webserver credentials ⬇ #
  web_username: 'glow'
  web_password: 'esphome'

dashboard_import:
  package_import_url: github://klaasnicolaas/home-assistant-glow/home_assistant_glow.yaml

esphome:
  name: t-cup-power-meter
  project:
    name: "klaasnicolaas.home_assistant_glow"
    version: "3.0.0"
  platform: esp8266
  board: d1_mini

# WiFi credentials #
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "T-Cup-Power-Meter"
    password: "LWCdg5gRDTpX"

captive_portal:

# Enable logging
logger:

# Enable improv over serial
improv_serial:

# Enable Home Assistant API
api:
  services:
    - service: reset_total_energy
      then:
        - button.press:
            id: button_reset_total

ota:
  safe_mode: true
  reboot_timeout: 10min
  num_attempts: 5
  password: "30da82cf9cc3e89924a9c0302638b84d"

web_server:
  port: 80
  auth:
    username: '${web_username}'
    password: '${web_password}'

output:
  # - platform: gpio
  #   pin: GPIO5
  #   id: output_blue
  - platform: gpio
    pin: GPIO2
    id: output_red
  - platform: gpio
    pin: GPIO4
    id: output_green

light:
  - platform: binary
    internal: true
    id: led_red
    name: Red
    output: output_red

# Status LED for connection
status_led:
  pin:
    # Blue LED
    number: ${status_led}

button:
  - platform: restart
    name: "Restart - Glow"
  - platform: template
    name: "Reset - Total Energy"
    id: button_reset_total
    on_press:
      - pulse_meter.set_total_pulses:
          id: sensor_energy_pulse_meter
          value: 0

# Sensors for ESP version and WIFI information
text_sensor:
  - platform: version
    hide_timestamp: true
    name: '${friendly_name} - ESPHome Version'
  - platform: wifi_info
    ip_address:
      name: '${friendly_name} - IP Address'
      icon: mdi:wifi
    ssid:
      name: '${friendly_name} - Connected SSID'
      icon: mdi:wifi-strength-2

sensor:
  # WiFi signal
  - platform: wifi_signal
    name: "${friendly_name} - WiFi Signal"
    update_interval: 120s

  # Pulse meter
  - platform: pulse_meter
    name: '${friendly_name} - Power Consumption'
    id: sensor_energy_pulse_meter
    unit_of_measurement: 'W'
    state_class: measurement
    device_class: power
    icon: mdi:flash-outline
    accuracy_decimals: 0
    pin: ${pulse_pin}
    # internal_filter: 100ms
    on_value:
      then:
        - light.turn_on:
            id: led_red
        - delay: 0.5s
        - light.turn_off:
            id: led_red
    filters:
      # multiply value = (60 / imp value) * 1000
      # - multiply: 60
      - lambda: return x * ((60.0 / ${pulse_rate}) * 1000.0);
    total:
      name: '${friendly_name} - Total Energy'
      id: sensor_total_energy
      unit_of_measurement: 'kWh'
      icon: mdi:circle-slice-3
      state_class: total_increasing
      device_class: energy
      accuracy_decimals: 3
      filters:
        # multiply value = 1 / imp value
        # - multiply: 0.001
        - lambda: return x * (1.0 / ${pulse_rate});
  # Total day useage
  - platform: total_daily_energy
    name: '${friendly_name} - Daily Energy'
    id: sensor_total_daily_energy
    power_id: sensor_energy_pulse_meter
    unit_of_measurement: 'kWh'
    icon: mdi:circle-slice-3
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 3
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001

# Enable time component to reset energy at midnight
time:
  - platform: sntp
    id: my_time

A tu drugi kod po dodaniu ESP01

esphome:
  name: water-meter

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "9c1fb79eeb5addd375ba91dd9fbdf749"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Water-Meter Fallback Hotspot"
    password: "2YCTWsG54npF"

captive_portal:

Teraz tak,
Ten mi idzie https://allegro.pl/oferta/esp8266-esp-01-programator-arduino-11199204837

Taki mam https://allegro.pl/oferta/konwerter-ftdi-ft232rl-usb-ttl-rs232-przewod-1m-10173027746

I coś takiego tylko z przełącznikiem 5V - 3.3V https://allegro.pl/oferta/ch340g-ttl-konwerter-usb-rs232-pro-mini-arduino-8753972260

Tego z kabelkiem nie możesz używać, On jest tylko 5V i podłączenie jego grozi ubiciem ESP

Ten drugi po przełączeniu na 3.3V nie będzie się różnił od programatora na który czekasz.

Ja to wiem. Aż takim amatorem nie jestem :wink:. Zamówiłem dlatego że nie podobają mi się napięcia na tym mostku, niskie są. Spróbuje jeszcze na drugim ESP 01. Może ten jest uszkodzony.

Ale zasilanie robiłem osobno z 3.3V, masy spięte razem. Nawet tak robiłem

I dalej to samo.

No niestety jeszcze nie miałem okazji, ale może zobaczę (aż mi się nie chce wierzyć, że nie można zrobić tego normalnie “po staremu”).

Ten drugi kod jest teraz tak krótki, że MUSI zadziałać (choć w ramach upraszczania wywaliłbym jeszcze z niego hasło do OTA, no chyba że się boisz, że ktoś wewnątrz twojego LAN mógłby znienacka wgrać do sprzętu jakiś inny FW).

Istotnie w końcu ktoś wyprodukował “programatory” dedykowane do ESP-01 (jakkolwiek nie ma tam żadnego cudu techniki - wciąż jest to zwykły mostek USB-UART + możliwość ustawienia kliku GPIO we właściwych dla nich stanach na czas programowania, a chyba podstawową wartością dodaną jest złącze, bo ESP-01 nie pasuje do breadboardów).

Co do FTDI to sprawdziłeś czy on w ogóle działa? np. zwierając jego TX z RX i sprawdzając w terminalu czy echo wraca? - generalnie taką metodą można sprawdzić w podstawowym zakresie każdy mostek UART
(taka anegdotka - kilka lat temu mostki UART FTDI były dość masowo podrabiane i FTDI wypuściło sterownik, który potrafił uszkodzić przynajmniej niektóre podróbki, no i oczywiście żadne z nich nie działały na oficjalnym sterowniku).
Używałem swoją drogą do programowania ESP m.in. takiego zabytka ze złączem mini-USB i przełącznikiem napięć 3,3V/5V (bo sam mostek FTDI był kiedyś chyba jedynym takim wypasem, że umożliwia przełączanie napięć bez specjalnej ilości elementów zewnętrznych, no i faktycznie zmienia się nie tylko zasilanie, ale i poziom sygnałów, czego nie można powiedzieć o niektórych chinolach opartych na innych układach, oczywiście tylko o ile producent zamontował odpowiednią zworkę :stuck_out_tongue: a na tym co pokazałeś w ofercie sklepu jest jakiś “biedak” bez takiej opcji - ta obudowa się otwiera?).

Natomiast ten ostatni to zwykły CH340 i nie powinno być z nim żadnych problemów, szczególnie, że ma zworkę wyboru napięcia (i wypada ustawić ją w pozycji 3,3V) niestety z powodu tej zworki nie można sobie z niego podebrać zasilania dla układu (tj. być może można, ale nie będę tego sugerował, bo do programowania ESP potrzeba zasilania zdolnego do obciążenia rzędu 0,5A w trakcie programowania - realnie raczej nie przekracza 0,3A ale potrzebne są kondensatory by wygładzić piki obciążenia).

Po prostu lepiej gdybyś zrobił ich czytelne zdjęcia, a nie wstawiał linki do sklepów które się nie postarały, by zdjęcia były jakkolwiek użyteczne (i np. nie prezentują istotnych opisów na PCB czy użytych elementów).

Będę w domu to wrzucę. Ja mam trochę inny niż ten ostatni, nie umiałem znaleźć a ten był najbardziej zbliżony. Nie mam zworki do wyboru napięć ale przełącznik z boku. Ale nie podobają mi się jego napięcia. Na 5V dawał coś koło 4.5V a na 3.3V coś koło 2.8. więc myślę że z niego to już pożytku nie będzie bo pewnie kontroler napięcia zrobił papa

Bardzo istotna uwaga, jest takie zagrożenie, teoretycznie można zjarać układ.
Choć ESP flashowałem już dosłownie “kijem od szczotki” i jak dotąd żaden nie spłonął (UART0 ma tolerancję logiki 5V, mimo tego, że w podstawowej dokumentacji się o tym słowem nie zająknęli, czego nie mogę powiedzieć o wszystkich innych GPIO; najważniejsze byleby nie przegiąć z napięciem zasilającym SoC - tu się trzeba trzymać maksimum 3,6V a optymalnie gdy jest to zalecane 3,3V).

Może to kwestia portu USB, w który go wpinasz, nie jest to specjalnie istotne, te napięcia wciąż mieszczą się w zakresie tolerancji logiki 3,3V, po prostu ESP zasilaj z czegoś innego, pamiętając by masy były ze sobą połączone.


I jeszcze coś na bis - zakładam, że masz drugi egzemplarz ESP-01 (skoro fota jest z nieotwartym woreczkiem) - rzadko, ale jednak trafiają się fabrycznie wadliwe egzemplarze, więc skorzystaj z drugiego egzemplarza.

1 polubienie

Dobra ruszuło na drugim esp, czyli pierwszy w kosz.

@szopen dzięki za wytrwałość i cieprliwość

teraz bawię się skeczem żeby impulsy liczył i teraz który pin wybrać. Jeśli chcę do masy to GIPO0 i GPIO2 odpadają bo w przypadku restartu nie wstanie gdy LOW.

Myślę że najlepiej dać kontrakton między GPIO3 i VCC

Nie znam dokumentacji na pamięć, ale zasadniczo

  • albo wejście podciągasz do dołu (rezystor pull-down = do masy) i kontaktron między GPIO, a zasilaniem
  • albo wejście podciągasz do góry (rezystor pull-up czyli do zasilania) i kontaktron dajesz miedzy GPIO, a masą
  • większość GPIO (tych które są akurat niewyprowadzone w ESP-01) ma możliwość programowego włączenia pull-up lub pull-down (ale nie wszystkie piny mają taką możliwość! bo to nie jest tak do końca “programowe” - po prostu jest aktywowany sprzęt zawarty w SoC, który istnieje na jednych GPIO, a na innych nie) i tu taka uwaga - te dedykowane dla UART0 jeśli mnie pamięć nie myli nie mają takiego ułatwienia - sprawdź to w dokumentacji (jestem “starym dziadem” i nie wszystko pamiętam, mimo że kopałem po tej dokumentacji już nie raz, a nie jest to dziedzina, którą się zajmuję zawodowo).