Mile zaskoczony nowym procesorem od Espressif tj.ESP32 C3 i jego implementacjami w ciekawe moduły dla IoT postanowiłem poprogramować go sobie trochę. Poczta dostarczyła właśnie świeżą partię modułów ESP32 C3 Super Mini, jest więc okazja do ich przetestowania. Stary dobry ESP8266 znam już na pamięć. Nowy ESP ma swoją specyfikę, którą trzeba poznać by kompilator Arduino IDE nie pluł czerwonymi komunikatami o błędach. W tym celu należałoby prześledzić kilka internetowych przykładów. Ale, że lenistwo to piękna męska cecha mocno wspierająca postęp technologiczny ludzkości, postanowiłem zwalić tę robotę na sztuczną inteligencję.
Dziś mały odprysk możliwości AI w obszarze mocno związanym z tym blogiem - w dziedzinie programowania.
Koniec końców przyszedł czas by przyjrzeć się bliżej tematowi, który już dziś rozpala niektóre ludzkie umysły do czerwoności - na AI czyli sztuczną inteligencję. AI udostępniona jest od jakiegoś czasu wszystkim za darmo lub za niewielkie miesięczne opłaty - tylko 20 dolarów. To, że jest to kolejna technologiczna rewolucja naszych czasów po Internecie i komórkach nikt już chyba nie ma wątpliwości. Pytanie brzmi - jak bardzo zmieni się nasz świat, który znamy i na ile my odnajdziemy się w tym nowym świecie.
Zadanie nr 1
Wygeneruj kod Arduino IDE dla ESP32 C3 który przesyła dane z łącza szeregowego RS do odbiorcy WiFi
#include <WiFi.h>
#include <WiFiClient.h>
// Parametry WiFi
const char* ssid = "Twoje_SSID";
const char* password = "Twoje_Haslo";
// Serwer TCP
WiFiServer wifiServer(80);
void setup() {
Serial.begin(115200); // Inicjalizacja Serial dla debugowania
Serial1.begin(9600, SERIAL_8N1, RXD_PIN, TXD_PIN); // Inicjalizacja Serial1 dla RS-232 (ustaw odpowiednie piny)
// Połączenie z WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Łączenie z WiFi...");
}
Serial.println("Połączono z WiFi");
wifiServer.begin(); // Start serwera TCP
}
void loop() {
WiFiClient client = wifiServer.available(); // Sprawdź czy klient jest dostępny
if (client) {
Serial.println("Nowy klient");
// Pętla obsługująca klienta
while (client.connected()) {
if (Serial1.available()) {
// Przeczytaj z RS-232 i wyślij do klienta TCP
char c = Serial1.read();
client.write(c);
}
if (client.available()) {
// Przeczytaj od klienta TCP i wyślij do RS-232
char c = client.read();
Serial1.write(c);
}
}
client.stop(); // Zakończ połączenie z klientem
Serial.println("Klient rozłączony");
}
}
Wyjaśnienie kodu
Inicjalizacja i Połączenie WiFi: Kod rozpoczyna się od połączenia z siecią WiFi.
Uruchomienie Serwera TCP: Następnie uruchamiany jest serwer TCP na porcie 80.
Komunikacja Szeregowa RS-232: Serial1 jest używany do komunikacji szeregowej RS-232. Musisz określić piny RX i TX odpowiednie dla twojego ESP32-C3.
Przesyłanie danych: Kod odczytuje dane z RS-232 i przesyła je do klienta TCP, a także odczytuje dane od klienta TCP i przesyła je do RS-232.
Warto zauważyć:
Musisz zastąpić Twoje_SSID i Twoje_Haslo odpowiednimi danymi dostępu do sieci WiFi.
Piny RX i TX muszą zostać skonfigurowane zgodnie z twoim połączeniem RS-232 na ESP32-C3.
Port TCP (w tym przypadku 80) można zmienić według potrzeb.
Ten kod jest podstawowym przykładem i może wymagać dostosowania do konkretnego zastosowania, w tym obsługi błędów, konfiguracji parametrów połączenia RS-232, oraz bezpieczeństwa sieciowego.
----------------
DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); Serial.println("DHT22 test!"); dht.begin(); } void loop() { delay(2000); // Poczekaj 2 sekundy między odczytami float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); // Sprawdź, czy odczyt z czujnika był udany if (isnan(humidity) || isnan(temperature)) { Serial.println("Błąd odczytu z czujnika DHT!"); return; } Serial.print("Wilgotność: "); Serial.print(humidity); Serial.print("%\tTemperatura: "); Serial.println(temperature); }
Wczytaj powyższy kod do swojego projektu w Arduino IDE, wybierając odpowiednią płytę (ESP32-C3) i port w menu "Tools".
Uruchom monitor szeregowy (Serial Monitor) za pomocą przycisku w prawym górnym rogu Arduino IDE, aby zobaczyć odczyty wilgotności i temperatury.
Upewnij się, że poprawnie podłączyłeś czujnik DHT22 do płytki ESP32-C3 i używasz poprawnego pinu w kodzie (w przykładzie jest to pin 2). Jeśli używasz innego pinu, dostosuj wartość DHTPIN w kodzie.
Powyższy kod odczytuje wilgotność i temperaturę co 2 sekundy i wysyła wyniki do monitora szeregowego. Możesz dostosować częstotliwość odczytu według własnych potrzeb.
------------
Serial.println("Using lower level function:"); Serial.println(esp_get_idf_version());delay(5000); // Poczekaj 5 sekund przed kolejnym odczytem }
Brak komentarzy:
Prześlij komentarz