SAJ i falowniki, oznaczenia RS232 pinout

Dzień dobry
Znalazłem taki falownik SAJ, niestety nie ma loggera WIFI, znalazłem taki temat jak to zrobić na ESPHome: SAJ Solar Inverter and Home-Assistant .
Mam w instrukcji taki wygląd pinout:


Mój konwerter UART do RS232 wygląda tak:

Skomunikowałem się dwoma takimi konwerterami, ale konwerter musiałem podłączyć do PC przez konwerter UART/USB spinając TX z TX, potem od strony wtyczki dsub już na krzyż RX-TX + GND. Czyli analogicznie ESP połączyłem też TX-TX do niego.
Z falownika wziąłem GND i Vcc, VCC jest 7V, przetwornicą robię 3.3V i wprost zasila ESP Weemos D1 3.3V i VCC max3232. Niestety ESP nie znajduje nic ciekawego w inwerterze, mój model Sununo Plus 3K-M.
I tu pytanie, można multimetrem zweryfikować czy TX to TX i należy tu podłączyć RX, czy może tak ja w tym konwerterze RS232 na TTL, TX oznacza, że tu należy podłączyć TX?
Edit:
Jeszcze teraz zwróciłem uwagę, że on tam w tym projekcie podaje listę zakupów, ESP32 - ja użyłem Wemos D1 i pozmieniałem to w yaml, wgrało i działa OK,
adapter RS232 do UART, mam taki sam.
gender changer - ja sobie polutowałem wtyk męski
adapter null modem - może jednak powinienem podłączyć TX do TX od strony RS232?

Oznaczenia TX i RX zależą od funkcjonalności danego urządzenia.

Jeśli jest aktywne tzn. to jest jego port szeregowy to wtedy TX jest nadawaniem a RX odbiorem.

Jeśli urządzenie nie zawiera portu szeregowego - jest pasywne (np. konwerter mediów), to wtedy zwykle przez TX jest oznaczane przyłącze zewnętrznego TX (i to samo z RX).

Czasem te reguły są złamane przez fantazję producenta.

Zamiana RX z TX w RS232 ani w UART stosowanym w ESP nie jest niebezpieczna, po prostu przy niewłaściwym połączeniu nie będzie komunikacji.

UWAGA
Natomiast trzeba zwracać uwagę na poziomy napięć interfejsów - klasyczny RS232 dysponuje napięciami do ±25V co gwarantuje spalenie układów logiki TTL (5V) czy CMOS (3.3V lub w szczególnych wypadkach mniej), więc konwerter po drodze jest obowiązkowy.


Kwestia ESP

Wemos D1 (i jego klony na bazie ESP8266) ma na sztywno połączony jedyny wyprowadzony UART do mostka UART-USB, więc dobrze by było zmodyfikować płytkę, albo użyć ESP8266 na takiej płytce która nie ma mostka USB-UART (np. ESP-01 albo inna bez mostka).
Jeszcze jedno - niektóre mostki UART-USB nie blokują komunikacji jeśli nie są wpięte w USB, ale nie wychodź z takiego założenia, większość modeli blokuje.

Dodatkowo musisz wyłączyć logger na każdym ESP8266/8285.

Możesz też użyć jakieś ESP32, które ma wyprowadzone więcej niż 1 UART i wtedy użyj tego UARTa, którego producent płytki prototypowej nie użył do komunikacji z mostkiem USB.

1 polubienie

Dzięki za wiadomość, nie spotkałem się z blokowaniem UART w Wemos D1 mini gdy nie podłączam modułu przez USB. Ale jeszcze to sprawdzę. Mimo wszystko sprawdzę jeszcze z modułem ESP32, mam taki ESP32 C3 super mini, niektóre mają kiepski zasięg WIFI, dlatego wolałem WemosD1.
Jak wyłączyć logger? Tu faktycznie mam inaczej, Wemos nie łączył sie początkowo do WIFI i więc początek yaml zmodyfikowałem i mam teraz tak:

esphome:
  name: esphomed1say
  friendly_name: EsphomeD1Say

esp8266:
  board: d1_mini

# Enable logging
logger:

.....
web_server:
  port: 80

captive_portal:
time:
  - platform: sntp
    timezone: Europe/Warsaw  

uart:
  id: uart_bus
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 115200
  stop_bits: 1
  data_bits: 8
  parity: NONE
  #debug:
  #  direction: BOTH    

modbus:
  id: modbus0
  uart_id: uart_bus

modbus_controller:
  - id: saj
    ## the modbus device addr
    address: 0x1
itd...

W sumie to nie wiem który pin jest który w tym konwerterze RS232, podłączyłem na krzyż, więc to nie jest istotne który był który. Muszę to rozgryźć by nie podłączać losowo i mieć coś pewnego w tym układzie.

logger:
    baud_rate: 0

to zależy od użytego mostka, niektórym wystarcza samo zasilanie by zablokować komunikację na UARTcie

Niezły pomysł - on ma wyprowadzony UART bezpośrednio z MCU, domyślnie to GPIO20 i GPIO21 (ale to C3 więc można krosować na inne piny), a USB ma wpięte bezpośrednio w piny USB w MCU

1 polubienie

Ustaliłem tymczasem, że multimetrem da się ustalić TX/RX, TX ma -8.5V przy VCC 5V, albo -6.5V przy Vcc 3.4V, w inwerterze pin2 oznaczony jako TX jest faktycznie pinem TX i ma -5.5V, pin 3 RX ma 0V.
W konwerterze jest dokładnie to samo, trzeba skrosować, stąd pewnie ten adapter nul modem w pierwotnym projekcie.
Taki sam moduł ESP Wemos D1 używam z licznikiem VCX/APV i RS485, działa znakomicie, faktycznie miałem tam ustawione debug i baud na 0, niestety teraz to nie pomogło, dalej brak odpowiedzi z inwertera. W liczniku pamiętam musiałem aktywować i ustawić odpowiednio komunikację, tu nie widzę takich opcji do wyklikania w menu, choć jest modbus adres, jak słońce wróci to sprawdzę jeszcze tę opcję, może nie jest domyślna.

Edit:
Ostatecznie to zadziałało, z drugiego modułu zrobiłem sobie konwerter na USB, podłączyłem się laptopem z ustawieniami z obu stron 9600 (jest możliwość zmiany baud w SAJ przy opcji MODBUS, choć nie ma tego w instrukcji), podłączyłem się programem ModbusMaster64 ze strony modbus.pl, początkowo nic się nie udało bo sypał błędami typu niedozwolone wartości itp, ale jak mu wpisałem by czytał od adresu 0x100 (trzeba to podać dziesiętnie) i nie więcej niż długość 50 to zaczął gadać :D. Zrobiłem sobie inny konwerter, bo zauważyłem, że na tym drugim jest +5V na RX, inny Wemos D1, przestawiłem z powrotem na 115200 i też poszło, wróciłem do pierwszej płytki, podmieniłem konwerter i działa. Ale faktycznie ESP32 byłby lepszy, w ESP8266 raczej brakuje ram, wyskakiwały w logach czasem komunikaty że nie może alokować pamięci i się restartował, wywaliłem połowę zbędnych sensorów i działa OK. Dziękuję za pomoc.
Zostawię tu sobie jeszcze diagram, jakbym musiał to zrobić znowu za parę miesięcy to szybciej znajdę to z Google niż u siebie: