Co można zrobić z pomocą ESP8266?
HTML-код
- Опубликовано: 16 июл 2024
- Cześć w tym filmie pokazuje kilka możliwości jakie daje mikrokontroler NodeMCU v3 wraz z modułem esp8266. Miłego oglądania :)
Link pozwalający NodeMCU v3 z esp8266 w Arduino IDE:
arduino.esp8266.com/stable/pac...
Jeśli link się nie wyświetla w całości to radzę w niego wejść i go skopiować z paska wyszukiwania.
Skrypty znajdują się w przypiętym komentarzu :)
0:00 - 0:13 - Początek
0:14 - 0:52 - Przygotowanie środowiska
0:53 - 1:36 - Pierwsze zastosowanie
1:37 - 3:17 - Drugie zastosowanie
3:18 - 4:45 - Trzecie zastosowanie
4:46 - 5:30 - Zakończenie Наука
Pierwszy skrypt
---------------------------
#include
#define Led5 15
#define Led4 13
#define Led3 12
#define Led2 14
#define Led1 02
bool led1,led2,led3,led4,led5;
// Zmienne do konfiguracji punktu dostępu
const char* ssid = "My_Serwer";
const char* password = "019812341";// musi się składać z co najmniej 8 znaków
// Utworzenie serwera webowego na porcie 80
WiFiServer server(80);
void setup() {
Serial.begin(115200);
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
pinMode(Led4, OUTPUT);
pinMode(Led5, OUTPUT);
delay(10);
// Ustawienia punktu dostępu
WiFi.softAP(ssid, password);
Serial.println();
Serial.print("Utworzono punkt dostępu: ");
Serial.println(ssid);
Serial.print("Adres IP: ");
Serial.println(WiFi.softAPIP());
// Uruchomienie serwera
server.begin();
Serial.println("Serwer rozpoczął pracę");
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
// Czekanie na dostęp klienta
while (!client.available()) {
delay(1);
}
// Odczyt żądania HTTP
String request = client.readStringUntil('
');
Serial.println(request);
client.flush();
if (request.indexOf("button_1") != -1)
{
led1 = !led1;
digitalWrite(Led1, led1);
}
else if (request.indexOf("button_2") != -1)
{
led2 = !led2;
digitalWrite(Led2, led2);
}
else if (request.indexOf("button_3") != -1)
{
led3 = !led3;
digitalWrite(Led3, led3);
}
else if (request.indexOf("button_4") != -1)
{
led4 = !led4;
digitalWrite(Led4, led4);
}
else if (request.indexOf("button_5") != -1)
{
led5 = !led5;
digitalWrite(Led5, led5);
}
// Odpowiedź na żądanie HTTP
// client.println("HTTP/1.1 200 OK");
// client.println("Content-Type: text/html");
//client.println("");
client.println("");
client.println("");
client.println("");
client.println("Sterowanie Diodami");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("body { background-color: #37434b; color: white; }");
client.println("#container { width: 700px; height: 500px; margin-left: auto; margin-right: auto; }");
client.println(".button { width: 100px; height: 100px; margin-left: 20px; margin-top: 250px; background-color: rgb(180, 180, 180); }");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("LED 1");
client.println("LED 2");
client.println("LED 3");
client.println("LED 4");
client.println("LED 5");
client.println("");
client.println("");
client.println("");
delay(1);
Serial.println("Klient rozłączony");
}
---------------------------
Drugi skrypt
---------------------------
#include
#define Led5 15
#define Led4 13
#define Led3 12
#define Led2 14
#define Led1 02
bool led1,led2,led3,led4,led5;
const char* ssid = "SSID";
const char* password = "Haslo_do_sieci";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
pinMode(Led4, OUTPUT);
pinMode(Led5, OUTPUT);
delay(10);
// Konfiguracja pinu diody jako wyjścia
// Łączenie się z siecią Wi-Fi
Serial.println();
Serial.println();
Serial.print("Łączenie się z ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Połączono z Wi-Fi");
Serial.print("Adres IP: ");
Serial.println(WiFi.localIP());
// Start serwera
server.begin();
Serial.println("Serwer startowy");
}
void loop() {
WiFiClient client = server.available(); // Sprawdzenie czy jest dostępny klient
if (client) {
Serial.println("Nowy klient");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '
') {
if (currentLine.length() == 0) {
client.println("");
client.println("");
client.println("");
client.println("Sterowanie Diodami");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("body { background-color: #37434b; color: white; }");
client.println("#container { width: 700px; height: 500px; margin-left: auto; margin-right: auto; }");
client.println(".button { width: 100px; height: 100px; margin-left: 20px; margin-top: 250px; background-color: rgb(180, 180, 180); }");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("LED 1");
client.println("LED 2");
client.println("LED 3");
client.println("LED 4");
client.println("LED 5");
client.println("");
client.println("");
client.println("");
break;
} else {
currentLine = "";
}
} else if (c != '
') {
currentLine += c;
}
// Sprawdzanie czy klient zażądał włączenia lub wyłączenia LED
if (currentLine.endsWith("button_1")) {
led1 = !led1;
digitalWrite(Led1, led1);
}
else if (currentLine.endsWith("button_2")) {
led2 = !led2;
digitalWrite(Led2, led2);
}
else if (currentLine.endsWith("button_3")) {
led3 = !led3;
digitalWrite(Led3, led3);
}
else if (currentLine.endsWith("button_4")) {
led4 = !led4;
digitalWrite(Led4, led4);
}
else if (currentLine.endsWith("button_5")) {
led5 = !led5;
digitalWrite(Led5, led5);
}
}
}
client.stop();
Serial.println("Klient rozłączony");
}
}
---------------------------
nie lepiej stworzyć githuba sobie?
@@krucafuks123 Będę musiał to zrobić 😅
Ewentualnie podaj tylko link do pastebin.
Tworzy się ciekawy kanał. Życzę sukcesów.
Dziękuję :)
8266 jako zewnętrzny mikrokontroler bez wifi nie jest zbyt dobrym rozwiązaniem. Ma mało zasobów w porównaniu z byle STM32. Myślę że tanią i świetną alternatywą są kontrolery RP2040 z dev biard pico W
Lub ESP32 :-)
@@marekjaglarz6880 wiadomka :)
Zapewne jestem pechowy - 8266 nigdy (kilka egzemplarzy) nie zadziałało mi poprawnie mimo zakupu z różnych źródeł.
Mam na myśli próby komunikacji i uruchomienia choćby w trybie mikrokontrolera sterowaniem wyjścia .
ESP 32 jako tako zależnie od sztuki i pochodzenia.
Nie miałem nigdy problemów z raspberry pi pico atmegami czy jakimkolwiek klonem arduino. .
nie mówię, że się znam, ale czy potrzebowałeś na każdą diodę opornika? wydawało mi się, że mogłoby działać z jednym.
ale ja z elektroniką jestem na bakier, więc może też nie działać ^^
Faktycznie istnieje taka możliwość, ale lepiej jest dać każdej diodzie oddzielny rezystor tym bardziej warto to zrobić jeśli diody są różnego koloru bo wtedy potrzebują różnych rezystorów.
W zależności od koloru, diody mają różne przedziały napięć i maksymalny prąd, przy którym działają poprawnie, inaczej można upalić. Rezystor ogranicza natężenie prądu, tym samym obniżając napięcie. Są kalkulatory, które wyliczą ci jaki dać rezystor do diody pod dane napięcie.
można by próbować zrobić repeater wifi i sprawdzić jakie są jego możliwość względem innych repeaterów komercyjnych (gotowców) xd
Tak, też o tym myślałem. Zapiszę sobie to do potencjalnych projektów na przyszłość. Dzięki😀
zadziała z esp 32- c6?
Na pewno da się osiągnąć taki sam rezultat, ale wymaga to innego skryptu i pobrania innego pakietu z płytkami bo ten nie ma w sobie esp 32 - c6.
@@InzynierNaukowy zrobisz kiedyś film na ten temat albo zrobisz jakiś projekt?
@@wojciechkorthals644 Obecnie nie mam tego w planach, ale nie wykluczam, że kiedyś zrobię coś z tą płytką.