Stránka 2 z 3

Re: Wifi webserver

Napsal: 16 říj 2017, 17:23
od colos3453
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();
  }

Re: Wifi webserver

Napsal: 20 říj 2017, 15:56
od SkullKeep
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

Re: Wifi webserver

Napsal: 20 říj 2017, 18:01
od jankop
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.

Re: Wifi webserver

Napsal: 21 říj 2017, 14:03
od Arnost
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.

Re: Wifi webserver

Napsal: 21 říj 2017, 15:17
od SkullKeep
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);

Re: Wifi webserver

Napsal: 22 říj 2017, 11:56
od colos3453
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

Re: Wifi webserver

Napsal: 22 říj 2017, 12:12
od SkullKeep
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");
}

Re: Wifi webserver

Napsal: 23 říj 2017, 08:46
od Wojta
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.

Re: Wifi webserver

Napsal: 23 říj 2017, 16:08
od Arnost
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

Re: Wifi webserver

Napsal: 23 říj 2017, 16:46
od SkullKeep
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.