Actions

KAmod ESP32 POW RS485 EANT (PL): Difference between revisions

From Kamamilabs.com - Wiki

 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
__jzpdf__
__jzpdf__
====== Opis ======
==== Opis ====
<b>KAmod ESP32 POW RS485 EANT (U.FL) - Płytka ewaluacyjna z modułem Wi-Fi typu ESP32-WROOM-32U, interfejsem RS485 oraz wydajnym układem zasilania.</b> <br> <br>
<b>KAmod ESP32 POW RS485 EANT (U.FL) - Płytka ewaluacyjna z modułem Wi-Fi typu ESP32-WROOM-32U, interfejsem RS485 oraz wydajnym układem zasilania.</b> <br> <br>
Na płytce KAmod ESP32 POW RS485 EANT znajduje się moduł ESP32-WROOM-32U, który umożliwia komunikację w sieci bezprzewodowej Wi-Fi 2,4 GHz i jest wyposażony w złącze U.FL do podłączenia zewnętrznej anteny. Na płytce został umieszczony kompletny konwerter USB-UART ze złączem USB-C, dzięki czemu moduł ESP32 można wygodnie programować. Kolejną funkcjonalnością jest blok interfejsu RS485, który jest stosowany w automatyce domowej i przemysłowej i realizuje komunikację poprzez 2-żyłową skrętkę np. w standardzie MODBUS. Płytkę uzupełnia wydajny układ zasilania, który pracuje przy napięciu wejściowym z zakresu od 8 do 32 V, a dostarcza stabilizowanych napięć 5 V oraz 3,3 V o znacznej wydajności prądowej. Konstrukcja płytki odpowiada SBC rodziny Raspberry Pi - ma wymiary 85x56 mm, a na charakterystycznym, 40-stykowym złączu zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające.
Na płytce KAmod ESP32 POW RS485 EANT znajduje się moduł ESP32-WROOM-32U, który umożliwia komunikację w sieci bezprzewodowej Wi-Fi 2,4 GHz i jest wyposażony w złącze U.FL do podłączenia zewnętrznej anteny. Na płytce został umieszczony kompletny konwerter USB-UART ze złączem USB-C, dzięki czemu moduł ESP32 można wygodnie programować. Kolejną funkcjonalnością jest blok interfejsu RS485, który jest stosowany w automatyce domowej i przemysłowej i realizuje komunikację poprzez 2-żyłową skrętkę np. w standardzie MODBUS. Płytkę uzupełnia wydajny układ zasilania, który pracuje przy napięciu wejściowym z zakresu od 8 do 32 V, a dostarcza stabilizowanych napięć 5 V oraz 3,3 V o znacznej wydajności prądowej. Konstrukcja płytki odpowiada SBC rodziny Raspberry Pi - ma wymiary 85x56 mm, a na charakterystycznym, 40-stykowym złączu zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające.
<center>
<center>
[[File:KAmod_ESP_U.FL_1.jpg|none|900px|thumb|center]]
[[File:KAmod_ESP_UFL_1.jpg|none|900px|thumb|center]]
</center>
</center>


===== Podstawowe parametry =====
==== Podstawowe parametry ====
* Moduł ESP32-WROOM-32U umożliwiający komunikację w sieci Wi-Fi w paśmie 2,4 GHz, wyposażony w złącze antenowe U.FL (IPX)
* Moduł ESP32-WROOM-32U umożliwiający komunikację w sieci Wi-Fi w paśmie 2,4 GHz, wyposażony w złącze antenowe U.FL (IPX)
* Zintegrowany konwerter UART-USB ze złączem USB-C umożliwiający programowanie układu ESP32
* Zintegrowany konwerter UART-USB ze złączem USB-C umożliwiający programowanie układu ESP32
Line 18: Line 18:
* Na 40-stykowe złącze w standardzie Raspberry Pi zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające
* Na 40-stykowe złącze w standardzie Raspberry Pi zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające
* Wymiary płytki: 85x56 mm, wysokość ok. 20 mm
* Wymiary płytki: 85x56 mm, wysokość ok. 20 mm
 
<br><br>
===== Wyposażenie standardowe =====
==== Wyposażenie standardowe ====
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
Line 35: Line 35:
</center>
</center>
<center>
<center>
[[File:foto.jpg|none|900px|thumb|center]]
[[File:KAmod_ESP_U.FL_2.jpg|none|900px|thumb|center]]
</center>
</center>
 
<br><br>
===== Schemat elektryczny =====
==== Schemat elektryczny ====
Moduł ESP32 <br>
Moduł ESP32 <br>
<center>
<center>
[[File:KAmodESP32_POW_485_ESP32.jpg|none|1000px|thumb|center]]
[[File:KAmodESP32_POW_485_EANT_ESP32.png|none|1000px|thumb|center]]
</center>
</center>


Line 79: Line 79:
</center>
</center>


=====Złącze zasilania=====
====Złącze zasilania====
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
Line 98: Line 98:


:* <b>+</b> - styk nr 2 jest wejściem dodatniego bieguna zasilania.
:* <b>+</b> - styk nr 2 jest wejściem dodatniego bieguna zasilania.
Dołączenie zasilania o parametrach wystarczających do uzyskania napięcia 3,3 V będzie sygnalizowane świeceniem diody LED D3. Nie należy dołączać napięcia o wartości powyżej 34 V. Moduł zawiera zabezpieczenie przeciw-przepięciowe, które odłączy zasilanie przy napięciu wyższym od ok. 34 V.
Dołączenie zasilania o parametrach wystarczających do uzyskania napięcia 3,3 V będzie sygnalizowane świeceniem diody LED D3. Nie należy dołączać napięcia o wartości powyżej 34 V. Moduł zawiera zabezpieczenie przeciw-przepięciowe, które odłączy zasilanie przy napięciu wyższym od ok. 34 V.<br><br>
Dołączone źródło zasilania powinno mieć odpowiednią moc. Aby moduł mógł działać z zachowaniem wszystkich parametrów (5,1 V/ 5 A), moc źródła zasilania nie powinna być mniejsza niż 30 W. Dołączenie zasilania o niższej mocy będzie skutkowało niższą wartością maksymalnego prądu w obwodzie napięcia 5 V oraz 3,3 V.
Dołączone źródło zasilania powinno mieć odpowiednią moc. Aby moduł mógł działać z zachowaniem wszystkich parametrów (5,1 V/ 5 A), moc źródła zasilania nie powinna być mniejsza niż 30 W. Dołączenie zasilania o niższej mocy będzie skutkowało niższą wartością maksymalnego prądu w obwodzie napięcia 5 V oraz 3,3 V.


<center>
<center>
[[File:KAmodESP32_POW_485_PWR.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_pwr.png|none|800px|thumb|center]]
</center>
</center>
<br>


===== Interfejs RS485=====
==== Interfejs RS485====


<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Złącze
! style="text-align: center;"|'''Złącze'''
! style="text-align: center;"|Funkcja
! style="text-align: center;"|'''Funkcja'''
|-
|-
| style="text-align: center;"|<b>POW&485</b>
| style="text-align: center;"|<b>POW&485</b>
Line 120: Line 121:
|}
|}
</center>
</center>
Na płytce KAmod ESP32 POW RS485 został zaimplementowany kompletny obwód interfejsu RS485 wraz z elementami zabezpieczającymi przed przepięciami. W roli sterownika zastosowano układ ST485, który umożliwia dołączenie maksymalnie 64 urządzeń, pracuje w trybie half-duplex, realizuje komunikację z maksymalną prędkością 1 Mbps. Wysyłanie danych na magistralę jest sygnalizowane miganiem diody LED D4. <br><br>
Na płytce KAmod ESP32 POW RS485 EANT został zaimplementowany kompletny obwód interfejsu RS485 wraz z elementami zabezpieczającymi przed przepięciami. W roli sterownika zastosowano układ ST485, który umożliwia dołączenie maksymalnie 64 urządzeń, pracuje w trybie half-duplex, realizuje komunikację z maksymalną prędkością 1 Mbps. Wysyłanie danych na magistralę jest sygnalizowane miganiem diody LED D4. <br><br>
Połączenie interfejsu RS485 z modułem ESP32 jest następujące:
Połączenie interfejsu RS485 z modułem ESP32 jest następujące:
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Sygnał RS485
! style="text-align: center;"|'''Sygnał RS485'''
! style="text-align: center;"|Wyprowadzenie modułu ESP32
! style="text-align: center;"|'''Wyprowadzenie modułu ESP32'''
|-
| style="text-align: center;"|
RO (odczyt z magistrali RS485)
| style="text-align: center;"|
GPIO27
|-
|-
| style="text-align: left;"|
| style="text-align: center;"|
:* RO (odczyt z magistrali RS485)
DI (wysyłanie na magistralę RS485)
:* DI (wysyłanie na magistralę RS485)
| style="text-align: center;"|
:* DE/RE (sterowanie kierunkiem komuniakcji;H – nadawanie/L - odczyt)
GPIO25
| style="text-align: left;"|
|-
:* GPIO27
| style="text-align: center;"|
:* GPIO25
DE/RE (sterowanie kierunkiem komuniakcji;H – nadawanie/L - odczyt)
:* GPIO26
| style="text-align: center;"|
GPIO26
|}
|}
</center>
</center>
Line 143: Line 150:
:* <b>A+</b>, styk nr 4, dodatni biegun magistrali RS485.
:* <b>A+</b>, styk nr 4, dodatni biegun magistrali RS485.
Należy także zapewnić połączenie wszystkich urządzeń w magistrali do wspólnej masy/uziemienia.
Należy także zapewnić połączenie wszystkich urządzeń w magistrali do wspólnej masy/uziemienia.
Specyfikacja magistrali RS485 wymaga, aby wszystkie połączenia tworzyły linię bez rozgałęzień i pętli, a na jej końcach należy dołączyć rezystory 120 Ω, które pełnią rolę tzw. terminatorów magistrali. Na płytce KAmod ESP32 POW RS485 znajduje się odpowiedni rezystor, który można dołączyć do magistrali zakładając zworkę na szpilki oznaczone <b>120R</b>.
Specyfikacja magistrali RS485 wymaga, aby wszystkie połączenia tworzyły linię bez rozgałęzień i pętli, a na jej końcach należy dołączyć rezystory 120 Ω, które pełnią rolę tzw. terminatorów magistrali. Na płytce KAmod ESP32 POW RS485 EANT znajduje się odpowiedni rezystor, który można dołączyć do magistrali zakładając zworkę na szpilki oznaczone <b>120R</b>.


<center>
<center>
[[File:KAmodESP32_POW_485_RS.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_RS.png|none|800px|thumb|center]]
</center>
</center>
<br><br>


=====Interfejs USB=====
====Interfejs USB====
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Złącze
! style="text-align: center;"|'''Złącze'''
! style="text-align: center;"|Funkcja
! style="text-align: center;"|'''Funkcja'''
|-
|-
| style="text-align: center;"|<b>P1</b>
| style="text-align: center;"|<b>P1</b>
Line 171: Line 179:
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Sygnał kontrolera CH340
! style="text-align: center;"|'''Sygnał kontrolera CH340'''
! style="text-align: center;"|Wyprowadzenie modułu ESP32
! style="text-align: center;"|'''Wyprowadzenie modułu ESP32'''
|-
| style="text-align: center;"|
TXD (wyjście danych)
| style="text-align: center;"|
GPIO03 (UART0 RXD)
|-
| style="text-align: center;"|
RXD (wejście danych)
| style="text-align: center;"|
GPIO01 (UART0 TXD)
|-
|-
| style="text-align: left;"|
| style="text-align: center;"|
:* TXD (wyjście danych)
DTR (wyście kontroli transmisji)
:* RXD (wejście danych)
| style="text-align: center;"|
:* DTR (wyście kontroli transmisji)
EN (Chip Power-up)
:* RTS (wyjście kontroli transmisji)
|-
| style="text-align: left;"|
| style="text-align: center;"|
:* GPIO03 (UART0 RXD)
RTS (wyjście kontroli transmisji)
:* GPIO01 (UART0 TXD)
| style="text-align: center;"|
:* EN (Chip Power-up)
GPIO0 (Boot Select)
:* GPIO0 (Boot Select)
|}
|}
</center>
</center>
Line 190: Line 207:
Złącze USB-C może służyć jako alternatywne wejście zasilania dla płytki KAmod ESP32 POW RS485, jednak wtedy parametry obwodów zasilania nie będą spełnione. Napięcie na linii 5 V, będzie niższe i będzie wynosiło ok. 4,5 V; napięcie na linii 3,3 V nie powinno się zmienić; wydajność prądowa napięć 5 V oraz 3,3 V będzie dużo niższa i będzie zależała od zastosowanego zasilania na złączu USB-C.
Złącze USB-C może służyć jako alternatywne wejście zasilania dla płytki KAmod ESP32 POW RS485, jednak wtedy parametry obwodów zasilania nie będą spełnione. Napięcie na linii 5 V, będzie niższe i będzie wynosiło ok. 4,5 V; napięcie na linii 3,3 V nie powinno się zmienić; wydajność prądowa napięć 5 V oraz 3,3 V będzie dużo niższa i będzie zależała od zastosowanego zasilania na złączu USB-C.
<center>
<center>
[[File:KAmodESP32_POW_485_USB.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_USB.png|none|850px|thumb|center]]
</center>
Na dolnej stronie płytki ewaluacyjnej (bottom) znajduje się zworka SMD oznaczona jako JP3 – DGB. Jest ona połączona z wyprowadzeniem GPIO15 modułu ESP32 (poprzez rezystor 10k). Standardowo jest połączona do padu numer 1 (masa zasilania GND) i powoduje wyciszenie komunikatów systemowych tzw. Debugging Log. Aby włączyć wysyłanie komunikatów systemowych należy przeciąć ostrym narzędziem powierzchnię płytki pomiędzy padami 1-2 JP3 oraz nanieść kroplę spoiwa lutowniczego, które połączy pady po przeciwnej stronie - pady 2-3 (do napięcia 3,3 V). Nie wolno połączyć padów 2-3, bez wcześniejszego rozdzielenia padów 1-2.
<center>
[[File:KAmod_ESP32_POW_RS485_EANT_DBG.png|none|700px|thumb|center]]
</center>
</center>
<br><br>


=====Przyciski resetowania i programowania=====
====Przyciski resetowania i programowania====
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Komponent
! style="text-align: center;"|'''Komponent'''
! style="text-align: center;"|Funkcja
! style="text-align: center;"|'''Funkcja'''
|-
| style="text-align: left;"|
Przycisk SW1 – <b>PROG</b>
| style="text-align: left;"|
Uruchamia tryb programowania poprzez UART (tylko w momencie restartu modułu ESP32)
|-
|-
| style="text-align: left;"|
| style="text-align: left;"|
:* Przycisk SW1 – <b>PROG</b>
Przycisk SW2 – <b>RESET</b>
:* Przycisk SW2 – <b>RESET</b>
| style="text-align: left;"|
| style="text-align: left;"|
:* Uruchamia tryb programowania poprzez UART (tylko w momencie restartu modułu ESP32)
Powoduje restart modułu ESP32
:* Powoduje restart modułu ESP32
|}
|}
</center>
</center>
Line 213: Line 238:


<center>
<center>
[[File:KAmodESP32_POW_485_PRG.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_SW.png|none|750px|thumb|center]]
</center>
</center>
<br><br>


=====Kontrolki sygnalizacyjne=====
====Kontrolki sygnalizacyjne====
<center>
<center>
{| class="wikitable"  style="width: 1000px;"
{| class="wikitable"  style="width: 1000px;"
|-
|-
! style="text-align: center;"|Komponent                      
! style="text-align: center;"|'''Komponent'''               
! style="text-align: center;"|Funkcja
! style="text-align: center;"|'''Funkcja'''
|-
| style="text-align: center;"|
<b><span style="color: green>D3</span>- USB TXD</b>
| style="text-align: left;"|
Miganie diody D3 oznacza przesyłanie danych z USB do modułu ESP32
|-
| style="text-align: center;"|
<b><span style="color: red>D4</span>- <b>LED 485</b>
| style="text-align: left;"|
Miganie diody D4 oznacza wysyłanie danych na magistralę RS485
|-
| style="text-align: center;"|
<b><span style="color: green>D5</span>- <b>LED 3.3V</b>
| style="text-align: left;"|
Świecenie diody D5 oznacza działanie obwodu zasilania i obecność napięcia 3,3 V
|-
|-
| style="text-align: center;"|
<b><span style="color: orange>D6</span>- <b>LED IO-2</b>
| style="text-align: left;"|
| style="text-align: left;"|
:*<span style="color: green>D3</span>- <b>USB TXD</b>
Dioda D6 jest dołączona do wyprowadzenia GPIO2 modułu ESP32 i jej świecenie może być wyzwalane programowo
:*<span style="color: red>D4</span>- <b>LED 485</b>
:*<span style="color: green>D5</span>- <b>LED 3.3V</b>
:*<span style="color: orange>D6</span>- <b>LED IO-2</b>
| style="text-align: left;"|
:* Miganie diody D3 oznacza przesyłanie danych z USB do modułu ESP32
:* Miganie diody D4 oznacza wysyłanie danych na magistralę RS485
:* Świecenie diody D5 oznacza działanie obwodu zasilania i obecność napięcia 3,3 V
:* Dioda D6 jest dołączona do wyprowadzenia GPIO2 modułu ESP32 i jej świecenie może być wyzwalane programowo
|}
|}
</center>
</center>
 
<br>
Na płytce KAmod ESP32 POW RS485 znajdują się 4 diody LED, które sygnalizują działanie różnych komponentów – zgodnie z powyższą tabelą.<br><br>
Na płytce KAmod ESP32 POW RS485 znajdują się 4 diody LED, które sygnalizują działanie różnych komponentów – zgodnie z powyższą tabelą.<br><br>
Dioda D6 (LED IO-2) jest dołączona do wyprowadzenia GPIO2 modułu ESP32. Jej zaświecenie wymaga programowego ustawienia stanu wysokiego na wyprowadzeniu GPIO2
Dioda D6 (LED IO-2) jest dołączona do wyprowadzenia GPIO2 modułu ESP32. Jej zaświecenie wymaga programowego ustawienia stanu wysokiego na wyprowadzeniu GPIO2


<center>
<center>
[[File:KAmodESP32_POW_485_LEDs.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_LED.png|none|800px|thumb|center]]
</center>
</center>
<br><br>


=====Złącze GPIO w standardzie RPi=====
====Złącze GPIO w standardzie RPi====
Złącze GPIO (J1) w standardzie Raspberry Pi zawiera 40 szpilek, do których doprowadzone są linie zasilania 5 V, 3,3 V, GND oraz wyprowadzenia GPIO modułu ESP32. Wyprowadzenia interfejsów UART (TXD, RXD), I2C (SDA, SCL) oraz SPI (MOSI, MISO, SCLK, CS0) zostały rozmieszczone tak, jak ma to miejsce w płytkach rodziny Raspberry Pi.<br><br>
Złącze GPIO (J1) w standardzie Raspberry Pi zawiera 40 szpilek, do których doprowadzone są linie zasilania 5 V, 3,3 V, GND oraz wyprowadzenia GPIO modułu ESP32. Wyprowadzenia interfejsów UART (TXD, RXD), I2C (SDA, SCL) oraz SPI (MOSI, MISO, SCLK, CS0) zostały rozmieszczone tak, jak ma to miejsce w płytkach rodziny Raspberry Pi.<br><br>
Dokładny opis wyprowadzeń oraz ich funkcje pokazuje rysunek i tabela poniżej:
Dokładny opis wyprowadzeń oraz ich funkcje pokazuje rysunek i tabela poniżej:


<center>
<center>
[[File:KAmodESP32_POW_485_GPIO_RPI.jpg|none|850px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_GPIO_RPI.png|none|850px|thumb|center]]
</center>
</center>
Opis wyprowadzeń został również naniesiony na spodzie płytki KAmod ESP32 POW RS485:
Opis wyprowadzeń został również naniesiony na spodzie płytki KAmod ESP32 POW RS485:
<center>
<center>
[[File:KAmodESP32_POW_485_GPIO_PIN.jpg|none|600px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_GPIO_PIN.png|none|750px|thumb|center]]
</center>
 
<center>
[[File:KAmodESP32_POW_485_4.jpg|none|750px|thumb|center]]
</center>
</center>


Line 265: Line 297:
:*Porty GPIO 32 i 32 zostały dostosowane do funkcjonalności magistrali I2C i zawierają rezystory podciągające pull-up 2,2k.
:*Porty GPIO 32 i 32 zostały dostosowane do funkcjonalności magistrali I2C i zawierają rezystory podciągające pull-up 2,2k.
:* Porty GPIO1 oraz GPIO3 pełnią funkcję interfejsu UART i zostały połączone do modułu konwertera USB-UART oraz równolegle do złącza GPIO J2. Interfejs UART wysyła/odczytuje dane do/z złącza GPIO J2 oraz konwertera USB-UART jednocześnie.
:* Porty GPIO1 oraz GPIO3 pełnią funkcję interfejsu UART i zostały połączone do modułu konwertera USB-UART oraz równolegle do złącza GPIO J2. Interfejs UART wysyła/odczytuje dane do/z złącza GPIO J2 oraz konwertera USB-UART jednocześnie.
<br><br>
====Złącze antenowe====
Na płytce modułu ESP32-WROOM-32U znajduje się złącze typu U.FL (IPX), do którego należy dołączyć antenę przeznaczoną do Wi-Fi w paśmie 2,4 GHz.
<center>
[[File:KAmod_ESP32_POW_RS485_EANT_ANT.png|none|750px|thumb|center]]
</center>
<center>
[[File:WiFi_ANT.jpg|none|800px|thumb|center]]
</center>


=====Wymiary=====
====Wymiary====
Wymiary płytki KAmod ESP32 POW RS485 to 81x56 mm. Wysokość maksymalna wynosi ok. 20 mm. Na płytce znajdują się 4 otwory montażowe o średnicy 3 mm rozmieszczone podobnie jak na płytkach z rodziny Raspberry Pi.
Wymiary płytki KAmod ESP32 POW RS485 EANT to 85x56 mm. Wysokość maksymalna wynosi ok. 20 mm. Na płytce znajdują się 4 otwory montażowe o średnicy 3 mm rozmieszczone podobnie jak na płytkach z rodziny Raspberry Pi.
<center>
<center>
[[File:KAmodESP32_POW_485_WYMIARY.jpg|none|1000px|thumb|center]]
[[File:KAmod_ESP32_POW_RS485_EANT_wym.png|none|900px|thumb|center]]
</center>
</center>
<br><br>


=====Program testowy=====
====Program testowy====
Kod programu testowego znajduje się poniżej, można go skompilować w środowisku Arduino.<br><br>
Kod programu testowego znajduje się poniżej, można go skompilować w środowisku Arduino.<br><br>
<syntaxhighlight lang="arduino" line>
<syntaxhighlight lang="arduino" line>
Line 280: Line 323:
#include <HardwareSerial.h>
#include <HardwareSerial.h>


//LED
#define LED_PIN 2  
#define LED_PIN 2  


Line 335: Line 377:
   }
   }
}
}
void loop() {
void loop() {
  NetworkClient client = server.accept();
NetworkClient client = server.accept();


  if (client) {
if (client) {
    Serial.println("********New Client********");
  Serial.println("********New Client********");


    String currentLine = "";
  String currentLine = "";
    while (client.connected()) {
  while (client.connected()) {
      if (client.available()) {
  if (client.available()) {
        char c = client.read();
    char c = client.read();
        Serial.write(c);
    Serial.write(c);
        if (c == '\n') {
    if (c == '\n') {


          if (currentLine.length() == 0) {
    if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
      client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
      client.println("Content-type:text/html");
            client.println();
      client.println();
            client.print("<H1>Click <a href=\"/H\">here</a> to turn ON the LED.<br><br>");
      client.print("Click <a href=\"/H\">here</a> to turn ON the LED.<br>");
            client.print("Click <a href=\"/L\">here</a> to turn OFF the LED.<br><br>");
      client.print("Click <a href=\"/L\">here</a> to turn OFF the LED.<br>");
            client.print("Click <a href=\"/RS485\">here</a> to write to RS485.<br><br></H1>");
      client.print("Click <a href=\"/RS485\">here</a> to write to RS485.<br>");
            client.println();
      client.println();
            break;
      break;
          } else {
    } else {
            currentLine = "";
      currentLine = "";
          }
    }
        } else if (c != '\r') {
    } else if (c != '\r') {
          currentLine += c;
    currentLine += c;
        }
    }


        //if (currentLine.endsWith("GET /H")) {
    //if (currentLine.endsWith("GET /H")) {
        if (currentLine.indexOf("GET /H") >= 0) {
    if (currentLine.indexOf("GET /H") >= 0) {
          digitalWrite(LED_PIN, HIGH);
    digitalWrite(LED_PIN, HIGH);
        }
    }
        //if (currentLine.endsWith("GET /L")) {
    //if (currentLine.endsWith("GET /L")) {
        if (currentLine.indexOf("GET /L") >= 0) {
    if (currentLine.indexOf("GET /L") >= 0) {
          digitalWrite(LED_PIN, LOW);
    digitalWrite(LED_PIN, LOW);
        }
    }
        if (currentLine.endsWith("GET /RS485")) {
    if (currentLine.endsWith("GET /RS485")) {
          RS485Port.println("You send message via RS485");
    RS485Port.println("You send message via RS485");
        }
      }
     }
     }
    client.stop();
  }
    Serial.println("********Client Disconnected********");
  } else {
    RS485Port.println("Tick...");
    delay(1000);
   }
   }
  client.stop();
  Serial.println("********Client Disconnected********");
} else {
  RS485Port.println("Tick...");
  delay(1000);
}
}
}


</syntaxhighlight>
</syntaxhighlight>
Line 417: Line 461:
IPAddress AP_GATEWAY_IP(192, 168, 1, 254);
IPAddress AP_GATEWAY_IP(192, 168, 1, 254);
IPAddress AP_NETWORK_MASK(255, 255, 255, 0);
IPAddress AP_NETWORK_MASK(255, 255, 255, 0);
WiFi.softAPConfig(AP_LOCAL_IP, AP_GATEWAY_IP, AP_NETWORK_MASK);
WiFi.softAPConfig(AP_LOCAL_IP, AP_GATEWAY_IP, AP_NETWORK_MASK);
if (!WiFi.softAP(ssid, password)) {
  if (!WiFi.softAP(ssid, password)) {
log_e("Soft AP creation failed.");
    log_e("Soft AP creation failed.");
while (1);
    while (1);
}
  }
IPAddress myIP = WiFi.softAPIP();
  IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
  Serial.print("AP IP address: ");
Serial.println(myIP);
  Serial.println(myIP);
Serial.print("AP Mac Address: ");
  Serial.print("AP Mac Address: ");
Serial.println(WiFi.softAPmacAddress());
  Serial.println(WiFi.softAPmacAddress());
server.begin();
  server.begin();
 
</syntaxhighlight>
</syntaxhighlight>


Line 437: Line 483:
</center>
</center>


=====Linki=====
====Linki====
*[https://github.com/KAMAMI-Labs/KAmodESP32-POW-RS485.git Przykładowy projekt]
*[https://wiki.kamamilabs.com/images/6/6a/KAmod_ESP32_POW_485_EANT_3d.zip Model CAD (STEP)]
*[https://wiki.kamamilabs.com/images/b/b0/XL4015-Xlsemi.pdf Karta katalogowa układu XL4015]
*[https://wiki.kamamilabs.com/images/b/b0/XL4015-Xlsemi.pdf Karta katalogowa układu XL4015]
*[https://wiki.kamamilabs.com/images/2/29/CH340DS1.PDF Karta katalogowa układu CH340]
*[https://wiki.kamamilabs.com/images/2/29/CH340DS1.PDF Karta katalogowa układu CH340]
*[https://download.kamami.pl/p1179653-esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf Karta katalogowa układu ESP32]
*[https://download.kamami.pl/p1179653-esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf Karta katalogowa układu ESP32]
*[https://download.kamami.pl/p103134-st1s10.pdf Karta katalogowa układu STS10]
*[https://download.kamami.pl/p103134-st1s10.pdf Karta katalogowa układu STS10]

Latest revision as of 17:10, 14 October 2025

Opis

KAmod ESP32 POW RS485 EANT (U.FL) - Płytka ewaluacyjna z modułem Wi-Fi typu ESP32-WROOM-32U, interfejsem RS485 oraz wydajnym układem zasilania.

Na płytce KAmod ESP32 POW RS485 EANT znajduje się moduł ESP32-WROOM-32U, który umożliwia komunikację w sieci bezprzewodowej Wi-Fi 2,4 GHz i jest wyposażony w złącze U.FL do podłączenia zewnętrznej anteny. Na płytce został umieszczony kompletny konwerter USB-UART ze złączem USB-C, dzięki czemu moduł ESP32 można wygodnie programować. Kolejną funkcjonalnością jest blok interfejsu RS485, który jest stosowany w automatyce domowej i przemysłowej i realizuje komunikację poprzez 2-żyłową skrętkę np. w standardzie MODBUS. Płytkę uzupełnia wydajny układ zasilania, który pracuje przy napięciu wejściowym z zakresu od 8 do 32 V, a dostarcza stabilizowanych napięć 5 V oraz 3,3 V o znacznej wydajności prądowej. Konstrukcja płytki odpowiada SBC rodziny Raspberry Pi - ma wymiary 85x56 mm, a na charakterystycznym, 40-stykowym złączu zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające.

Podstawowe parametry

  • Moduł ESP32-WROOM-32U umożliwiający komunikację w sieci Wi-Fi w paśmie 2,4 GHz, wyposażony w złącze antenowe U.FL (IPX)
  • Zintegrowany konwerter UART-USB ze złączem USB-C umożliwiający programowanie układu ESP32
  • Interfejs RS485 do komunikacji Half-duplex z maksymalną szybkością 1 Mbps
  • Maksymalna liczba urządzeń dołączonych do magistrali RS485: 64
  • Dostosowany do napięcia zasilającego z zakresu 8...32 V
  • Dostarcza stabilizowanego napięcia 5,1 V o prądzie ciągłym do 3 A i krótkotrwałym do wartości 5 A
  • Dostarcza stabilizowanego napięcia 3,3 V o prądzie ciągłym do 1 A i krótkotrwałym do wartości 2 A
  • Zabezpieczenie przepięciowe, przeciążeniowe oraz termiczne
  • Na 40-stykowe złącze w standardzie Raspberry Pi zostały wyprowadzone wszystkie istotne porty I/O oraz napięcia zasilające
  • Wymiary płytki: 85x56 mm, wysokość ok. 20 mm



Wyposażenie standardowe

Kod Opis
KAmod ESP32 POW RS485 EANT (U.FL) Zmontowany i uruchomiony moduł
Antena Antena Wi-Fi ze złączem U.FL



Schemat elektryczny

Moduł ESP32

Elementy odpowiedzialne za funkcje resetu i programowania

Złącze GPIO

Interfejs RS485

Diody sygnalizacyjne

Interfejs USB-UART

Blok zasilania o napięciu 5 V

Blok zasilania o napięciu 3 V

Złącze zasilania

Złącze Funkcja
POW&485

Phoenix MC3,81 mm

  • Doprowadza zasilanie do modułu
  • Złącze interfejsu RS485

Złącze POW&485 (J3) pozwala na dołączenie napięcia stałego (DC) z zakresu 8...32 V, z którego jest wytwarzane napięcie 5,1 V do zasilania wszystkich komponentów płytki. Dołączając napięcie do złącza POW&485 należy zwrócić uwagę na jego prawidłową polaryzację. Oznaczenie na spodzie płytki: POWER --|+ wskazuje prawidłową biegunowość zasilania:

  • -- - styk nr 1 to masa, ujemny biegun zasilania (GND),
  • + - styk nr 2 jest wejściem dodatniego bieguna zasilania.

Dołączenie zasilania o parametrach wystarczających do uzyskania napięcia 3,3 V będzie sygnalizowane świeceniem diody LED D3. Nie należy dołączać napięcia o wartości powyżej 34 V. Moduł zawiera zabezpieczenie przeciw-przepięciowe, które odłączy zasilanie przy napięciu wyższym od ok. 34 V.

Dołączone źródło zasilania powinno mieć odpowiednią moc. Aby moduł mógł działać z zachowaniem wszystkich parametrów (5,1 V/ 5 A), moc źródła zasilania nie powinna być mniejsza niż 30 W. Dołączenie zasilania o niższej mocy będzie skutkowało niższą wartością maksymalnego prądu w obwodzie napięcia 5 V oraz 3,3 V.


Interfejs RS485

Złącze Funkcja
POW&485

Phoenix MC 3,81 mm

  • Doprowadza zasilanie do modułu
  • Złącze interfejsu RS485

Na płytce KAmod ESP32 POW RS485 EANT został zaimplementowany kompletny obwód interfejsu RS485 wraz z elementami zabezpieczającymi przed przepięciami. W roli sterownika zastosowano układ ST485, który umożliwia dołączenie maksymalnie 64 urządzeń, pracuje w trybie half-duplex, realizuje komunikację z maksymalną prędkością 1 Mbps. Wysyłanie danych na magistralę jest sygnalizowane miganiem diody LED D4.

Połączenie interfejsu RS485 z modułem ESP32 jest następujące:

Sygnał RS485 Wyprowadzenie modułu ESP32

RO (odczyt z magistrali RS485)

GPIO27

DI (wysyłanie na magistralę RS485)

GPIO25

DE/RE (sterowanie kierunkiem komuniakcji;H – nadawanie/L - odczyt)

GPIO26

Medium transmisyjnym jest 2-żyłowa skrętka, którą należy dołączyć do złącza POW&485 (J3):

  • B-, styk nr 3, ujemny biegun magistrali RS485,
  • A+, styk nr 4, dodatni biegun magistrali RS485.

Należy także zapewnić połączenie wszystkich urządzeń w magistrali do wspólnej masy/uziemienia. Specyfikacja magistrali RS485 wymaga, aby wszystkie połączenia tworzyły linię bez rozgałęzień i pętli, a na jej końcach należy dołączyć rezystory 120 Ω, które pełnią rolę tzw. terminatorów magistrali. Na płytce KAmod ESP32 POW RS485 EANT znajduje się odpowiedni rezystor, który można dołączyć do magistrali zakładając zworkę na szpilki oznaczone 120R.



Interfejs USB

Złącze Funkcja
P1

USB-C

  • Realizuje funkcję konwertera USB-UART
  • Umożliwia programowanie modułu ESP32
  • Jest alternatywnym wejściem zasilania

Złącze P1 typu USB-C jest połączone z kontrolerem typu CH340, który realizuje funkcje konwertera USB-UART. Interfejs UART może być używany w docelowej aplikacji, ale służy także do programowania modułu ESP32. Proces programowania może przebiegać całkowicie automatycznie, ponieważ kontroler CH340 steruje kluczowymi wyprowadzeniami modułu ESP32 (GPIO0Boot Select oraz EN - Chip Power-up).

Połączenia sygnałów pomiędzy CH340 i ESP32 są następujące:

Sygnał kontrolera CH340 Wyprowadzenie modułu ESP32

TXD (wyjście danych)

GPIO03 (UART0 RXD)

RXD (wejście danych)

GPIO01 (UART0 TXD)

DTR (wyście kontroli transmisji)

EN (Chip Power-up)

RTS (wyjście kontroli transmisji)

GPIO0 (Boot Select)

Do linii TXD jest dołączona dioda LED (D3), która sygnalizuje odbieranie danych z interfejsu USB. W przypadku użycia w docelowej aplikacji konwertera USB-UART należy zadbać o to, aby linie DTR oraz RTS pozostały nieobsługiwane (Handshaking: None).

Złącze USB-C może służyć jako alternatywne wejście zasilania dla płytki KAmod ESP32 POW RS485, jednak wtedy parametry obwodów zasilania nie będą spełnione. Napięcie na linii 5 V, będzie niższe i będzie wynosiło ok. 4,5 V; napięcie na linii 3,3 V nie powinno się zmienić; wydajność prądowa napięć 5 V oraz 3,3 V będzie dużo niższa i będzie zależała od zastosowanego zasilania na złączu USB-C.

Na dolnej stronie płytki ewaluacyjnej (bottom) znajduje się zworka SMD oznaczona jako JP3 – DGB. Jest ona połączona z wyprowadzeniem GPIO15 modułu ESP32 (poprzez rezystor 10k). Standardowo jest połączona do padu numer 1 (masa zasilania GND) i powoduje wyciszenie komunikatów systemowych tzw. Debugging Log. Aby włączyć wysyłanie komunikatów systemowych należy przeciąć ostrym narzędziem powierzchnię płytki pomiędzy padami 1-2 JP3 oraz nanieść kroplę spoiwa lutowniczego, które połączy pady po przeciwnej stronie - pady 2-3 (do napięcia 3,3 V). Nie wolno połączyć padów 2-3, bez wcześniejszego rozdzielenia padów 1-2.



Przyciski resetowania i programowania

Komponent Funkcja

Przycisk SW1 – PROG

Uruchamia tryb programowania poprzez UART (tylko w momencie restartu modułu ESP32)

Przycisk SW2 – RESET

Powoduje restart modułu ESP32

Przycisk RESET umożliwia wykonanie restartu modułu ESP32. Jest połączony z linią EN (Chip Power-up). modułu ESP32.

Przycisk PROG pozwala wprowadzić moduł ESP32 w tryb programowania. Należy wtedy nacisnąć przycisk RESET, następnie, trzymając wciśnięty RESET, przytrzymać przycisk PROG i wtedy zwolnić RESET, jednocześnie trzymając jeszcze przez chwilę wciśnięty PROG. Funkcjonalność ta może być przydatna, gdy z jakiegoś powodu tryb programowania nie będzie uruchamiany automatycznie poprzez konwerter USB-UART.



Kontrolki sygnalizacyjne

Komponent Funkcja

D3- USB TXD

Miganie diody D3 oznacza przesyłanie danych z USB do modułu ESP32

D4- LED 485

Miganie diody D4 oznacza wysyłanie danych na magistralę RS485

D5- LED 3.3V

Świecenie diody D5 oznacza działanie obwodu zasilania i obecność napięcia 3,3 V

D6- LED IO-2

Dioda D6 jest dołączona do wyprowadzenia GPIO2 modułu ESP32 i jej świecenie może być wyzwalane programowo


Na płytce KAmod ESP32 POW RS485 znajdują się 4 diody LED, które sygnalizują działanie różnych komponentów – zgodnie z powyższą tabelą.

Dioda D6 (LED IO-2) jest dołączona do wyprowadzenia GPIO2 modułu ESP32. Jej zaświecenie wymaga programowego ustawienia stanu wysokiego na wyprowadzeniu GPIO2



Złącze GPIO w standardzie RPi

Złącze GPIO (J1) w standardzie Raspberry Pi zawiera 40 szpilek, do których doprowadzone są linie zasilania 5 V, 3,3 V, GND oraz wyprowadzenia GPIO modułu ESP32. Wyprowadzenia interfejsów UART (TXD, RXD), I2C (SDA, SCL) oraz SPI (MOSI, MISO, SCLK, CS0) zostały rozmieszczone tak, jak ma to miejsce w płytkach rodziny Raspberry Pi.

Dokładny opis wyprowadzeń oraz ich funkcje pokazuje rysunek i tabela poniżej:

Opis wyprowadzeń został również naniesiony na spodzie płytki KAmod ESP32 POW RS485:

Uwagi dotyczące sygnałów wyprowadzonych na złącze GPIO

  • Porty GPIO 34, 35, 36 i 39 modułu ESP32 mogą pracować wyłącznie jako wejścia cyfrowe lub analogowe – zostały one oznaczone symbolem IN.
  • Porty GPIO 34 i 35 zostały wyposażone w rezystory podciągające pull-up 10k.
  • Porty GPIO 36 i 39 zostały wyposażone w dzielniki napięcia (100k/10k), dzięki czemu można do nich dołączyć napięcie o maksymalnej wartosci 35 V.
  • Porty GPIO 32 i 32 zostały dostosowane do funkcjonalności magistrali I2C i zawierają rezystory podciągające pull-up 2,2k.
  • Porty GPIO1 oraz GPIO3 pełnią funkcję interfejsu UART i zostały połączone do modułu konwertera USB-UART oraz równolegle do złącza GPIO J2. Interfejs UART wysyła/odczytuje dane do/z złącza GPIO J2 oraz konwertera USB-UART jednocześnie.



Złącze antenowe

Na płytce modułu ESP32-WROOM-32U znajduje się złącze typu U.FL (IPX), do którego należy dołączyć antenę przeznaczoną do Wi-Fi w paśmie 2,4 GHz.

Wymiary

Wymiary płytki KAmod ESP32 POW RS485 EANT to 85x56 mm. Wysokość maksymalna wynosi ok. 20 mm. Na płytce znajdują się 4 otwory montażowe o średnicy 3 mm rozmieszczone podobnie jak na płytkach z rodziny Raspberry Pi.



Program testowy

Kod programu testowego znajduje się poniżej, można go skompilować w środowisku Arduino.

#include <WiFi.h>
#include <NetworkClient.h>
#include <WiFiAP.h>
#include <HardwareSerial.h>

#define LED_PIN 2 

//Server
const char *ssid = "KAmodESP32";
const char *password = "12345678";
NetworkServer server(80);

IPAddress AP_LOCAL_IP(192, 168, 1, 1);
IPAddress AP_GATEWAY_IP(192, 168, 1, 254);
IPAddress AP_NETWORK_MASK(255, 255, 255, 0);

//RS485
#define RS485_RXD 27 //RO PIN
#define RS485_TXD 25 //DI PIN
#define RS485_RE_DE 26 //RE & DE PIN
#define RX_BUFF_SIZE 64
HardwareSerial RS485Port(2);

void setup() {
  //Serial
  Serial.begin(115200);
  Serial.println("Hello. Configuring access point...");

  //Server
  WiFi.softAPConfig(AP_LOCAL_IP, AP_GATEWAY_IP, AP_NETWORK_MASK);
  if (!WiFi.softAP(ssid, password)) {
    log_e("Soft AP creation failed.");
    while (1);
  }
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Serial.print("AP Mac Address: ");
  Serial.println(WiFi.softAPmacAddress());
  server.begin();

  //RS485
  //pinMode(RS485_RE_DE, OUTPUT);
  //digitalWrite(RS485_RE_DE, LOW);
  RS485Port.setPins(RS485_RXD, RS485_TXD, RS485_RE_DE);
  RS485Port.setHwFlowCtrlMode(UART_HW_FLOWCTRL_CTS);
  RS485Port.setMode(UART_MODE_RS485_HALF_DUPLEX);
  RS485Port.begin(115200, SERIAL_8N1, RS485_RXD, RS485_TXD);
  RS485Port.println("RS485 Hello");

  //LED
  pinMode(LED_PIN, OUTPUT);
  for(int i=0; i<10; i++){
    digitalWrite(LED_PIN, HIGH);
    delay(200);
    digitalWrite(LED_PIN, LOW);
    delay(200);
  }
}
void loop() {
 NetworkClient client = server.accept();

 if (client) {
  Serial.println("********New Client********");

  String currentLine = "";
  while (client.connected()) {
   if (client.available()) {
    char c = client.read();
    Serial.write(c);
    if (c == '\n') {

     if (currentLine.length() == 0) {
      client.println("HTTP/1.1 200 OK");
      client.println("Content-type:text/html");
      client.println();
      client.print("Click <a href=\"/H\">here</a> to turn ON the LED.<br>");
      client.print("Click <a href=\"/L\">here</a> to turn OFF the LED.<br>");
      client.print("Click <a href=\"/RS485\">here</a> to write to RS485.<br>");
      client.println();
      break;
     } else {
      currentLine = "";
     }
    } else if (c != '\r') {
     currentLine += c;
    }

    //if (currentLine.endsWith("GET /H")) {
    if (currentLine.indexOf("GET /H") >= 0) {
     digitalWrite(LED_PIN, HIGH);
    }
    //if (currentLine.endsWith("GET /L")) {
    if (currentLine.indexOf("GET /L") >= 0) {
     digitalWrite(LED_PIN, LOW);
    }
    if (currentLine.endsWith("GET /RS485")) {
     RS485Port.println("You send message via RS485");
    }
   }
  }
  client.stop();
  Serial.println("********Client Disconnected********");
 } else {
  RS485Port.println("Tick...");
  delay(1000);
 }
}


Program testowy konfiguruje sprzętowy interfejs UART 2 do pracy jako interfejs RS485 ze sprzętowym sterowaniem kierunkiem transmisji:

#define RS485_RXD 27 //RO PIN
#define RS485_TXD 25 //DI PIN
#define RS485_RE_DE 26 //RE & DE PIN
#define RX_BUFF_SIZE 64
HardwareSerial RS485Port(2);
...
RS485Port.setPins(RS485_RXD, RS485_TXD, RS485_RE_DE);
RS485Port.setHwFlowCtrlMode(UART_HW_FLOWCTRL_CTS);
RS485Port.setMode(UART_MODE_RS485_HALF_DUPLEX);
RS485Port.begin(115200, SERIAL_8N1, RS485_RXD, RS485_TXD);
RS485Port.println("RS485 Hello");



Ponadto program testowy uruchamia moduł ESP32 w trybie access pointa oraz w roli serwera www:

const char *ssid = "KAmodESP32";
const char *password = "12345678";
NetworkServer server(80);
IPAddress AP_LOCAL_IP(192, 168, 1, 1);
IPAddress AP_GATEWAY_IP(192, 168, 1, 254);
IPAddress AP_NETWORK_MASK(255, 255, 255, 0);

WiFi.softAPConfig(AP_LOCAL_IP, AP_GATEWAY_IP, AP_NETWORK_MASK);
  if (!WiFi.softAP(ssid, password)) {
    log_e("Soft AP creation failed.");
    while (1);
  }
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Serial.print("AP Mac Address: ");
  Serial.println(WiFi.softAPmacAddress());
  server.begin();


Po uruchomieniu programu testowego powstanie sieć Wi-Fi o nazwie (SSID): KAmodESP32 z hasłem: 12345678. Za pomocą smartfona należy dołączyć się do tej sieci, a następnie w przeglądarce internetowej wpisać adres IP strony: 192, 168, 1, 1. Wyświetli się bardzo prosta strona www, która pozwoli sterować diodą LED D6 lub wysłać prosty komunikat poprzez interfejs RS485:

Linki