Wifi webserver

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
colos3453
Příspěvky: 3
Registrován: 15 říj 2017, 11:58
Reputation: 0

Re: Wifi webserver

Příspěvek od colos3453 » 16 říj 2017, 17:23

Tu je. Jsem opravdu začátečník tak úplně ještě nechápu logiku arduino desek. Děkuji za ochotu.

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <DallasTemperature.h>

const char *ssid = "Test";
const char *password = "";

ESP8266WebServer server(80);

OneWire oneWire(D2); 
DallasTemperature ds18b20(&oneWire);

void handleRoot() {
	ds18b20.requestTemperatures();   
  server.send(200,"teplota je:"(ds18b20.getTempCByIndex(0))"°C");
}

void setup() {
	delay(1000);
	Serial.begin(115200);
	Serial.println();
	Serial.print("Configuring access point...");
	WiFi.softAP(ssid, password);

	IPAddress myIP = WiFi.softAPIP();
	Serial.print("AP IP address: ");
	Serial.println(myIP);
	server.on("/", handleRoot);
	server.begin();
	Serial.println("HTTP server started");
}

void loop() {
	server.handleClient();
  }

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Wifi webserver

Příspěvek od SkullKeep » 20 říj 2017, 15:56

No z toho co jsem si cetl nevim jestli by ti fungoval web a pripojeni na wifi. Na teto strance snad najdes to co hledas --> https://github.com/shihyu/Arduino/blob/ ... rduino.ino
:twisted: :?: :arrow: :geek: P. Q. M.

jankop
Příspěvky: 1030
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Wifi webserver

Příspěvek od jankop » 20 říj 2017, 18:01

Jak se říká:" Jeden vo voze, druhej vo koze!" :D
Je opravdu nutné rozlišovat použití ESP8266 jako wifi shield, kdy ho řídím třeba AT příkazy z Arduina, nebo situaci, kdy používám ESP8266 jako Arduino a nahrávám kód přímo do něj.
Tazatel prezentuje program pro ARDUINO ESP8266 a odpovídající poukazuje na řízení "wifi shieldu" přes AT příkazy. Jsou to dvě naprosto rozdílné věci.

Arnost
Příspěvky: 22
Registrován: 05 říj 2017, 21:15
Reputation: 0

Re: Wifi webserver

Příspěvek od Arnost » 21 říj 2017, 14:03

Já bych chtěl vytvořit to AP+Webserver pomocí AT příkazů odesílaných z 2560. Na stránku jsem se díval ale bohužel výsledek bez úspěchu.

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Wifi webserver

Příspěvek od SkullKeep » 21 říj 2017, 15:17

Pardon tak sem se snad tedka trefil toto je snad ono --> https://circuits4you.com/2016/12/16/esp ... server-ap/. Kdyz jsem to cetl je tam stejny kod jak mas ty akorat je tam navic radek:

Kód: Vybrat vše

  WiFi.mode(WIFI_AP);           //Only Access point 
ktery bych dal mezi:

Kód: Vybrat vše

 	Serial.print("Configuring access point...");
	WiFi.softAP(ssid, password);
Pak by to vypadalo asi takhle:

Kód: Vybrat vše

	Serial.print("Configuring access point...");
	WiFi.mode(WIFI_AP); 
	WiFi.softAP(ssid, password);
:twisted: :?: :arrow: :geek: P. Q. M.

colos3453
Příspěvky: 3
Registrován: 15 říj 2017, 11:58
Reputation: 0

Re: Wifi webserver

Příspěvek od colos3453 » 22 říj 2017, 11:56

No já se k tomu acces pointu normálně můžu připojit, ale nevidím tam tu teplotu. To je to, na co nemůžu přijít jak udělat. Jednoduchý AP, který by mi odesílal teplotu

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Wifi webserver

Příspěvek od SkullKeep » 22 říj 2017, 12:12

Jestli nemas chybu v :

Kód: Vybrat vše

void handleRoot() {
	ds18b20.requestTemperatures();   
  server.send(200,"teplota je:"(ds18b20.getTempCByIndex(0))"°C");
}\
a nemel by se spis podobat

Kód: Vybrat vše

void handleRoot() {
  server.send(200, "text/plain", "hello from esp8266!");
}
a vypadat

Kód: Vybrat vše

void handleRoot() {
	ds18b20.requestTemperatures();   
  server.send(200,"text/plain","teplota je:"+(ds18b20.getTempCByIndex(0))+"°C");
}
:twisted: :?: :arrow: :geek: P. Q. M.

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: Wifi webserver

Příspěvek od Wojta » 23 říj 2017, 08:46

Přesně jak píšeš, chybí plusy. Taky bych se nebránil převodu té teploty na string, bůh ví jak si to bude esp server interpretovat... Možná ti z toho vypadnou jen charaktery ASCII podle čísel v té teplotě pokud to nepřevedeš na string.

Arnost
Příspěvky: 22
Registrován: 05 říj 2017, 21:15
Reputation: 0

Re: Wifi webserver

Příspěvek od Arnost » 23 říj 2017, 16:08

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 modulhttps://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

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Wifi webserver

Příspěvek od SkullKeep » 23 říj 2017, 16:46

No v zasade to je uplne jiny modul to je ESP8266 jeho novejsi bracha ESP32. A musis pridat par knihoven nahore. A 6 diod zvladne levou zadni.
:twisted: :?: :arrow: :geek: P. Q. M.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 20 hostů