Ahojte,
takže po nedělním úsilí hlásím úspěch a chtěl bych s Vámi podělit o výsledný kód pro vytvoření AP+Web serveru pomocí ESP Wifi.
Kód: Vybrat vše
/*
Arduino Due - ESP 8266 WiFi Module
Serial (Tx/Rx) communicate to PC via USB
Serial3 (Tx3/Rx3) connect to ESP8266
Tx3 - ESP8266 Rx
Rx3 - ESP8266 Tx
ESP8266 CH_PD Connect to ESP8266 VCC
*/
#define ASCII_0 48
#define ESP8266 Serial3
String SSID = "MUJAP";
String PASSWORD = "ESP123456789";
int Led = 13;
String strHTML;
String strHTMLstart = "<!doctype html>\
<html>\
<head>\
<title>Stranka WIFI</title>\
</head>\
<body>\
<H1><center>Ahoj Lidi je to na WIFI</center></H1>";
String strHTMLend ="</body>\
</html>";
void htlmcode(){
strHTML = "";
strHTML = strHTMLstart + millis() + strHTMLend;
}
void setup() {
pinMode(13,OUTPUT);
Serial.begin(115200);
ESP8266.begin(115200);
//Wait Serial Monitor to start
while(!Serial);
Serial.println("--- Start ---");
sendESP8266Data("AT+RST", 500);
Serial.println("");
sendESP8266Data("AT+CWQAP", 500);
sendESP8266Data("AT+CIPMUX=1", 500);
sendESP8266Data("AT+CWMODE=3", 500);
sendESP8266Data("AT+CIFSR", 500);
sendESP8266Data("AT+CIPSERVER=1,80", 500);
sendESP8266Data("AT+CWSAP=\"" + SSID + "\",\"" + PASSWORD + "\",8,2", 500);
Serial.println("Server setup finish");
}
void loop(){
digitalWrite(Led, LOW);
delay(500);
digitalWrite(Led, HIGH);
delay(500);
if(ESP8266.available())
{
Serial.println("Something received");
delay(1000);
if(ESP8266.find("+IPD,"))
{
String action;
Serial.println("+IPD, found");
int connectionId = ESP8266.read()-ASCII_0;
Serial.println("connectionId: " + String(connectionId));
htlmcode();
sendHTTPResponse(connectionId, strHTML);
//Close TCP/UDP
String cmdCIPCLOSE = "AT+CIPCLOSE=";
cmdCIPCLOSE += connectionId;
sendESP8266Cmdln(cmdCIPCLOSE, 1000);
}
}
}
void sendHTTPResponse(int id, String content)
{
String response;
response = "HTTP/1.1 200 OK\r\n";
response += "Content-Type: text/html; charset=UTF-8\r\n";
response += "Content-Length: ";
response += content.length();
response += "\r\n";
response +="Connection: close\r\n\r\n";
response += content;
String cmd = "AT+CIPSEND=";
cmd += id;
cmd += ",";
cmd += response.length();
Serial.println("--- AT+CIPSEND ---");
sendESP8266Cmdln(cmd, 1000);
Serial.println("--- data ---");
sendESP8266Data(response, 1000);
}
void sendESP8266Cmdln(String cmd, int waitTime)
{
ESP8266.println(cmd);
delay(waitTime);
while(Serial3.available()) Serial.write(Serial3.read());
}
void sendESP8266Data(String data, int waitTime)
{
ESP8266.println(data);
delay(waitTime);
while(Serial3.available()) Serial.write(Serial3.read());
}
Měl bych ještě jeden dotaz. Uvedený kód je dělaný na 2560 + Wifi modul ESP8266, samotná deska 2560 je ale pro samotné použití v praxi příliš "kvalitní" tak jsem ji chtěl nahradit např. jen Deskou Leonardo
https://www.aliexpress.com/item/2pcs-lo ... 809cfb1791, která by stačila a pomocí ní bych ovládal Wifi modul. Ještě jsem ale na netu našel tuto desku
https://www.aliexpress.com/item/Lua-Nod ... 0db99e0253 která by měla jít i programovat, pamět by měla stačit a ovládání 6 led taky snad zvládne. Je v jeho programování nějaký zásadní rozdíl oproti 2560 (o rozdílu programování WIFi části vím)?
K sestavě by měl jít ještě připojit tento modul
https://www.aliexpress.com/item/RFM69CW ... 32028.html ale ten ještě musím nastudovat jak se používá, kdyby měl někdo nějaký typ na tutorial v cz tak se zlobit nebudu.
Ještě jednou dík za pomoc s AP