Przedstawię tu przemysłową płytkę Lilygo T-Connect wyróżniającą się jednoczesnym wsparciem do trzech magistrali RS485 i jednej linii CAN. Zamówiłem ją z Chin za około 200 zł.
Otwieramy charakterystyczne pudełeczko i wyciągamy płytkę. Od razu rzuca się w oczy moduł ESP32-S3-WROOM-1 będący sercem T-Connect, tu w wersji N16R8, czyli z 16 MB Flash i 8 MB RAM.
W rogu mamy sekcję zasilania z przetwornicą obniżającą napięcie, co pozwala całości działać na napięciach 7-12 V DC, złącze USB C oraz QWIIC z UART. Nie ma tam konwertera USB na UART, gdyż ESP32-S3 wspiera sprzętowe USB. Dodatkowo mamy dwa rzędy goldpinów z wyprowadzonym GPIO, masą, 3.3 V i 5 V, oraz cztery diody APA102.
Moduły RS485 i CAN są wymienne - można je zdjąć z płytki.
RS485 obsługuje TD501D485H-A, a CAN TD501MCANFD, oba o izolacji do 2500 V.
Mapę pinów pokazuje grafika poniżej:
Wymiary:
GitHub projektu:
https://github.com/Xinyuan-LilyGO/T-Connect
Demo LED
Do tego typu projektów używam Visual Code z rozszerzeniem PlatformIO. PIO nie ma natywnie wgranych płytek z T-Connect, ale na ich repozytorium można pobrać brakujące pliki. Zawierają one konfiguracje płytek, pamięci Flash, itd. W tym przypadku mam wersję 16 MB. Poniżej plik, którego użyłem - dałem go do folderu boards:
Kod: JSON
Kolejnym plikiem do edycji jest platformio.ini, czyli konfiguracja projektu. Nazwałem go APA102 Blink, gdyż tymi czterema diodami chcę zamigać. Wybrałem tam odpowiednią platformę (espressif32 @6.5.0), wybrałem płytkę i partycje, oraz dodałem bibliotekę do obsługi LEDów - fastled/FastLED. Włączyłem tam też PSRAM i tryb USB.
Kod: Ini
Jak działa APA102? APA102 to indywidualnie adresowalny kolorowy LED z komunikacją SPI.
Definicje pinów, na razie tylko od APA102, umieściłem w pin_config.h:
Kod: C / C++
Zostało napisać właściwy program. Jest to zasadniczo przykład z FastLED, pokazujący prostą kolorową animację.
Kod: C / C++
Rezultatem jest ta prosta animacja:
Demo RS485
Drugą rzeczą którą chciałbym pokazać jest demko RS485. Zasadniczo jest one tutaj kluczowe, to po to właśnie ta płytka powstała. Na płytce mogą być aż 4 linie RS485, ale ESP32 ma tylko 3 sprzętowe kontrolery UART, więc jeden będzie nieaktywny. Zacząłem od wpisania do kodu pinów:
Kod: C / C++
Miejsca TD501MCANFD i TF501D485H można w razie czego zamienić, nie są one lutowane. RS485 to po prostu warstwa fizyczna UART, więc używamy tu normalnie klas HardwareSerial. Za pomocą begin ustawiamy baud oraz piny.
Kod: C / C++
Moje demko wysyła kolejno napisy przez pierwszy port i odbiera je z drugiego. Po odebraniu sprawdza, czy doszło to, co było oczekiwane. Trzeba jeszcze te dwa porty ze sobą połączyć:
Jak widać, wszystko działa. Dane są przesyłane poprawnie:
Uruchomienie magistrali CAN
Zasadniczo wszystko tak jak w temacie poniżej, jedynie ustawiamy odpowiednie piny:
Jak nawiązać połączenie CAN pomiędzy dwoma ESP32 na przykładzie LilyGO T-CAN485?
Podsumowanie
Bardzo fajna płytka, podoba mi się też ta modularność w przypadku CAN i RS485, choć troszkę szkoda, że ESP sprzętowo ma tylko trzy UART, więc nie uda się na raz mieć czterech RS485 aktywnych. Dodatkowo podoba mi się wygodnie wyprowadzone GPIO oraz aż cztery kolorowe diody LED, na nich można wygodnie pokazywać różne statusy pracy i błędów.
Czy widzicie zastosowanie dla płytki z aż trzema RS485?
Fajne? Ranking DIY Pomogłem? Kup mi kawę.