ESP8266

....nie pasujące gdzie indziej...
Awatar użytkownika
tOmki
Posty: 965
Rejestracja: niedziela 09 mar 2008, 02:20
Lokalizacja: Słupsk

Post autor: tOmki »

Awatar użytkownika
tOmki
Posty: 965
Rejestracja: niedziela 09 mar 2008, 02:20
Lokalizacja: Słupsk

Post autor: tOmki »

Arduino IDE Support for the ESP8266
http://hackaday.com/2015/03/28/arduino- ... e-esp8266/
Awatar użytkownika
rafalzaq
Posty: 588
Rejestracja: piątek 28 lut 2014, 19:33
Lokalizacja: Gliwice

Post autor: rafalzaq »

Czyli podłączam moduł do komputera jakąś przejściówką UART na USB i mogę go programować jak arduino? Nie trzeba wgrywać jakiegoś innego firmwaru? Obsługa czujników temperatury już jest. Muszę kupić moduł z wyprowadzonymi pinami.
Marcin S.
Posty: 435
Rejestracja: piątek 12 wrz 2008, 10:11

Post autor: Marcin S. »

Co do podłączenia - tak. Programować możesz w C lub Lua. Programowanie w C oznacza wgrywanie firmware'u za każdym razem. W Lua - ładujesz skrypt.
Powodzenia
M.
PS. Nowy SDK się pojawił na stronie bbs.espressif.com
Marcin S.
Posty: 435
Rejestracja: piątek 12 wrz 2008, 10:11

Post autor: Marcin S. »

Niektórzy mają obsesję albo i nie, ostrzec zawsze można:

http://www.esp8266.com/viewtopic.php?f=32&t=2360

W skrócie: jest podejrzenie, że ESP8266 bez wiedzy i zgody programisty łączy się z dziwnymi adresami. Śledztwo trwa.

Pzdr.
M.
Awatar użytkownika
rafalzaq
Posty: 588
Rejestracja: piątek 28 lut 2014, 19:33
Lokalizacja: Gliwice

Post autor: rafalzaq »

Wersja pod arduino szybko się rozwija. Poprzednio był wadliwy instalator i nie działo się zainstalować. Znalazłem potrzebne pliki w innym miejscu, ale nie dało się nic wgrać bo niby brakowało jakiegoś configa. Zobaczymy jak teraz będzie. Tylko strasznie wolno się ściąga.
Awatar użytkownika
rafalzaq
Posty: 588
Rejestracja: piątek 28 lut 2014, 19:33
Lokalizacja: Gliwice

Post autor: rafalzaq »

Najnowsza wersja arduino działa. http://www.arduinesp.com/download Udało mi się uruchomić przykład Blink. Mam tylko tanią przejściówkę bez wyprowadzonych pinów RTS i DTR, więc dolutowałem krótkie przewody i goldpiny. Ładnie może nie wygląda, ale działa.
Awatar użytkownika
tOmki
Posty: 965
Rejestracja: niedziela 09 mar 2008, 02:20
Lokalizacja: Słupsk

Post autor: tOmki »

W końcu trafiłem na fajny soft - ESPEasy - www.esp8266.nu
W sam raz nadaje się do domoticza.
Awatar użytkownika
artur_n
Posty: 874
Rejestracja: niedziela 03 mar 2013, 17:37
Lokalizacja: Jarosław

Post autor: artur_n »

Panowie są wśród nas programiści?

Mam kod na sterowanie przekaźnikami oraz DHT22 i potrzebuje zabezpieczyć to przed nieautoryzowanym dostępem.

Wszelkie moje próby dołączenie przykładowego kodu z Arduino IDE kończy się błędami w kompilacji.

Proszę o pomoc w dołączeniu zabezpieczenia. Zainteresowanej osobie wyślę mój dotychczasowy kod.

Pozdrawiam
Artur
Everybody lies...
ptja
Posty: 2414
Rejestracja: poniedziałek 31 gru 2012, 12:44
Lokalizacja: Łódź

Post autor: ptja »

Wrzucaj, pogłówkujemy :) Każdego z nas może to spotkać kiedyś.
Napisz, jakiej wersji IDE używasz (gdyby od tego zależała możliwość powtórzenia błędu).
--
pozdrawiam,
Jarek Andrzejewski
Awatar użytkownika
artur_n
Posty: 874
Rejestracja: niedziela 03 mar 2013, 17:37
Lokalizacja: Jarosław

Post autor: artur_n »

Używam Arduino 1.6.11
Zabezpieczenie jakie mnie interesuje to np. użytkownik i hasło przy próbie wyświetlenia www.

Kod:

Kod: Zaznacz cały

#include <ESP8266WiFi.h>
#include "DHT.h"

#define DHTPIN 2     // definicja pinu w którym podpięty jest DHT22
#define DHTTYPE DHT22   // definicja modelu czujnika AM2302
DHT dht&#40;DHTPIN, DHTTYPE&#41;;


const char* ssid = "coś";        //SSID WiFI
const char* password = "coś";   //hasło WiFi

String readStrings = "";

int pin1 = 14; // GPIO 14 &#40;D5&#41;
int pin2 = 12; // GPIO 12 &#40;D6&#41;
int pin3 = 13; // GPIO 13 &#40;D7&#41;
int pin4 = 15; // GPIO 15 &#40;D8&#41;

WiFiServer server&#40;82&#41;;            //port nasłuchu
IPAddress ip&#40;192, 168, 1, 50&#41;;    //IP
IPAddress gateway&#40;192,168,1,1&#41;;   //brama
IPAddress subnet&#40;255,255,255,0&#41;;  //maska podsieci

void setup&#40;&#41; &#123;
  Serial.begin&#40;115200&#41;; 	// prędkość portu szeregowego
  delay&#40;10&#41;;
  
    dht.begin&#40;&#41;;


  pinMode&#40;pin1, OUTPUT&#41;; //pin1 ustawiony jako wyjście
  pinMode&#40;pin2, OUTPUT&#41;; //pin2 ustawiony jako wyjście
  pinMode&#40;pin3, OUTPUT&#41;; //pin3 ustawiony jako wyjście
  pinMode&#40;pin4, OUTPUT&#41;; //pin4 ustawiony jako wyjście

  // Połączenie z siecią WiFi
  Serial.println&#40;&#41;;
  Serial.println&#40;&#41;;
  Serial.print&#40;"Connecting to "&#41;;
  Serial.println&#40;ssid&#41;;

  WiFi.begin&#40;ssid, password&#41;;
  WiFi.config&#40;ip,gateway,subnet&#41;;
  
  while &#40;WiFi.status&#40;&#41; != WL_CONNECTED&#41; &#123;
    delay&#40;500&#41;;
    Serial.print&#40;"."&#41;;
  &#125;
  Serial.println&#40;""&#41;;
  Serial.println&#40;"WiFi connected"&#41;;

  // Start serwera wwww
  server.begin&#40;&#41;;
  Serial.println&#40;"Server started"&#41;;

  // Pokaż adres IP przez port szeregowy
  Serial.println&#40;WiFi.localIP&#40;&#41;&#41;;

&#125;

void loop&#40;&#41; &#123;

  
  // put your main code here, to run repeatedly&#58;
  WiFiClient client = server.available&#40;&#41;;

  if &#40;client&#41; &#123;
    Serial.println&#40;"Yes client"&#41;;

    while &#40;client.connected&#40;&#41;&#41; &#123;
      if &#40;client.available&#40;&#41;&#41; &#123;
        char c = client.read&#40;&#41;;

// Odczyt temperatury oraz wilgotności
  // Sensor readings may also be up to 2 seconds 'old' &#40;its a very slow sensor&#41;
  float h = dht.readHumidity&#40;&#41;;
  // Odczyt temperatury w stopniach Celciusz
  float t = dht.readTemperature&#40;&#41;;
  // Odczyt temperatury w stopniach Fahrenheit &#40;isFahrenheit = true&#41;
  float f = dht.readTemperature&#40;true&#41;;

  // Sprawdzenie odczytu i ewenualne ponowienie pomiaru
        if &#40;readStrings.length&#40;&#41; < 100&#41; &#123;
          readStrings += c;
        &#125;

        if &#40;c == '\n'&#41; &#123;
          Serial.println&#40;readStrings&#41;;
          client.print&#40;"HTTP/1.1 200 OK\r\n"&#41;; //wyślij nową stronę
          client.print&#40;"Content-Type&#58; text/html\r\n\r\n"&#41;;
          client.print&#40;"<!DOCTYPE HTML>\r\n"&#41;;
          client.print&#40;"<HTML>\r\n"&#41;;//html tag
          client.print&#40;"<HEAD>\r\n"&#41;; //
          //            client.print&#40;"<meta http-equiv='refresh' content='10'/>\r\n"&#41;;
          client.print&#40;"<meta name='apple-mobile-web-app-capable' content='yes' />\r\n"&#41;;
          client.print&#40;"<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />\r\n"&#41;;
          //client.print&#40;"<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> />\r\n"&#41;;
          client.print&#40;"<link rel='stylesheet' type='text/css' href='http&#58;//relay.paranoja.us/style.css' />\r\n"&#41;;
          client.print&#40;"<TITLE>Home Automation</TITLE>\r\n"&#41;;
          client.print&#40;"</HEAD>\r\n"&#41;;
          client.print&#40;"<BODY>\r\n"&#41;;
          client.print&#40;"<H1>Inteligentny dom by artur_n</H1>\r\n"&#41;;
          client.print&#40;"<hr />\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<H2>Build Using Nodemcuv1 Arduino</H2>\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<p><b>Brama garazowa Agatka</b></p><br />\r\n"&#41;;
          client.print&#40;"<a href=\"/?button1on\"><font color = \"green\">Brama nr_1   </font></a>\r\n"&#41;;   //przycisk nr 1 część w komentarzu, przycisk działa na zasadzie włącz i wyłącz czas załączenia 0,2s
         // client.print&#40;"<a href=\"/?button1off\"><font color = \"red\">OFF  </font></a><br />\r\n"&#41;;
                    client.print&#40;"<br />\r\n"&#41;;

         /*  if &#40;digitalRead&#40;14&#41;&#41;
         &#123; 
           client.print&#40;"Relay 1 is ON"&#41;;
                  client.print&#40;"<br />\r\n"&#41;;

         &#125;
         else
          &#123;
            client.print&#40;"Relay 1 is OFF"&#41;;
                client.print&#40;"<br />\r\n"&#41;;

        &#125;*/
          client.print&#40;"<p><b>Relay 2</b></p>"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<a href=\"/?button2on\"><font color = \"green\">ON   </font></a>\r\n"&#41;;         //przycisk nr 2
          client.print&#40;"<a href=\"/?button2off\"><font color = \"red\">OFF  </font></a><br />\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;

         /*  if &#40;digitalRead&#40;12&#41;&#41;
         &#123; 
            client.print&#40;"Relay 2 is ON"&#41;;
                  client.print&#40;"<br />\r\n"&#41;;

         &#125;
          else
          &#123;
            client.print&#40;"Relay 2 is OFF"&#41;;
                client.print&#40;"<br />\r\n"&#41;;

        &#125;*/
          client.print&#40;"<p><b>Relay 3</b></p>"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<a href=\"/?button3on\"><font color = \"green\">ON   </font></a>\r\n"&#41;;       //przycisk nr 3
          client.print&#40;"<a href=\"/?button3off\"><font color = \"red\">OFF  </font></a><br />\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;

        /*  if &#40;digitalRead&#40;13&#41;&#41;
         &#123; 
           client.print&#40;"Relay 3 is ON"&#41;;
                  client.print&#40;"<br />\r\n"&#41;;

         &#125;
          else
          &#123;
            client.print&#40;"Relay 3 is OFF"&#41;;
                client.print&#40;"<br />\r\n"&#41;;

        &#125;*/
          client.print&#40;"<p><b>Relay 4</b></p>"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<a href=\"/?button4on\"><font color = \"green\">ON   </font></a>\r\n"&#41;;       //przycisk nr 4
          client.print&#40;"<a href=\"/?button4off\"><font color = \"red\">OFF  </font></a><br />\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;

     /*     if &#40;digitalRead&#40;15&#41;&#41;
         &#123; 
           client.print&#40;"Relay 4 is ON"&#41;;
                  client.print&#40;"<br />\r\n"&#41;;

         &#125;
          else
          &#123;
            client.print&#40;"Relay 4 is OFF"&#41;;
                client.print&#40;"<br />\r\n"&#41;;

        &#125; */
          client.print&#40;"<p><b>All Relays</b></p>"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"<a href=\"/?buttonallon\"><font color = \"green\">ALL ON   </font></a>\r\n"&#41;;       //wszystkie przyciski
          client.print&#40;"<a href=\"/?buttonalloff\"><font color = \"red\">ALL OFF  </font></a><br />\r\n"&#41;;
                    client.print&#40;"<br />\r\n"&#41;;

                    client.print&#40;"<hr />\r\n"&#41;;

  // Wskaźnik temperatury w F
  float hif = dht.computeHeatIndex&#40;f, h&#41;;
  // Wskaźnik temp. w C &#40;isFahreheit = false&#41;
  float hic = dht.computeHeatIndex&#40;t, h, false&#41;;
          client.print&#40;"<br />\r\n"&#41;;

  client.print&#40;"Wilgotnosc&#58; "&#41;;         //wolgotność powietrza DHT22
  client.print&#40;h&#41;;
  client.print&#40;" %\t"&#41;;
            client.print&#40;"<br />\r\n"&#41;;
            client.print&#40;"<br />\r\n"&#41;;

  client.print&#40;"Temperatura&#58; "&#41;;      //temperatura DHT22
  client.print&#40;t&#41;;
  client.print&#40;" *C, "&#41;;
  client.print&#40;f&#41;;
  client.print&#40;" *F\t"&#41;;
            client.print&#40;"<br />\r\n"&#41;;
            client.print&#40;"<br />\r\n"&#41;;

  client.print&#40;"Heat index&#58; "&#41;;
  client.print&#40;hic&#41;;
  client.print&#40;" *C, "&#41;;
  client.print&#40;hif&#41;;
  client.println&#40;" *F"&#41;;

 
          client.print&#40;"<br />\r\n"&#41;;
          client.print&#40;"</BODY>\r\n"&#41;;
          client.print&#40;"</HTML>\n"&#41;;

          delay&#40;1&#41;;

          client.stop&#40;&#41;;                                        //czytaj opis przycisku przy www
          if &#40;readStrings.indexOf&#40;"?button1on"&#41; > 0&#41; &#123;
            Serial.println&#40;"1 on"&#41;;
            digitalWrite&#40;pin1, HIGH&#41;;
            delay &#40;75&#41; ;                                      //odczekaj
            digitalWrite&#40;pin1, LOW&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button1off"&#41; > 0&#41; &#123;
            Serial.println&#40;"1 off"&#41;;
            digitalWrite&#40;pin1, HIGH&#41;;
          &#125;

          if &#40;readStrings.indexOf&#40;"?button2on"&#41; > 0&#41; &#123;
            Serial.println&#40;"2 on"&#41;;
            digitalWrite&#40;pin2, LOW&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button2off"&#41; > 0&#41; &#123;
            Serial.println&#40;"2 off"&#41;;
            digitalWrite&#40;pin2, HIGH&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button3on"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin3, LOW&#41;;
            Serial.println&#40;"3 on"&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button3off"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin3, HIGH&#41;;
            Serial.println&#40;"3 off"&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button4on"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin4, LOW&#41;;
            Serial.println&#40;"4 on"&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?button4off"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin4, HIGH&#41;;
            Serial.println&#40;"4 off"&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?buttonallon"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin1, LOW&#41;;
            digitalWrite&#40;pin2, LOW&#41;;
            digitalWrite&#40;pin3, LOW&#41;;
            digitalWrite&#40;pin4, LOW&#41;;
          &#125;
          if &#40;readStrings.indexOf&#40;"?buttonalloff"&#41; > 0&#41; &#123;
            digitalWrite&#40;pin1, HIGH&#41;;
            digitalWrite&#40;pin2, HIGH&#41;;
            digitalWrite&#40;pin3, HIGH&#41;;
            digitalWrite&#40;pin4, HIGH&#41;;
          &#125;
          readStrings = "";
        &#125;//if&#40;c == '\n'&#41;
      &#125;//if&#40;client.available&#40;&#41;&#41;
    &#125;//while&#40;client.connected&#40;&#41;&#41;
  &#125;//if&#40;client&#41;
&#125;//void loop&#40;&#41;
Everybody lies...
ptja
Posty: 2414
Rejestracja: poniedziałek 31 gru 2012, 12:44
Lokalizacja: Łódź

Post autor: ptja »

Które biblioteki są potrzebne do dostarczenia plików związanych z tymi dwoma plikami nagłówkowymi?

Kod: Zaznacz cały

#include <ESP8266WiFi.h>
#include "DHT.h"
--
pozdrawiam,
Jarek Andrzejewski
Awatar użytkownika
artur_n
Posty: 874
Rejestracja: niedziela 03 mar 2013, 17:37
Lokalizacja: Jarosław

Post autor: artur_n »

W przykładach Arduino IDE jest tako kod:

Kod: Zaznacz cały

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include <ESP8266WebServer.h>

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

ESP8266WebServer server&#40;80&#41;;

const char* www_username = "admin";
const char* www_password = "esp8266";

void setup&#40;&#41; &#123;
  Serial.begin&#40;115200&#41;;
  WiFi.mode&#40;WIFI_STA&#41;;
  WiFi.begin&#40;ssid, password&#41;;
  if&#40;WiFi.waitForConnectResult&#40;&#41; != WL_CONNECTED&#41; &#123;
    Serial.println&#40;"WiFi Connect Failed! Rebooting..."&#41;;
    delay&#40;1000&#41;;
    ESP.restart&#40;&#41;;
  &#125;
  ArduinoOTA.begin&#40;&#41;;

  server.on&#40;"/", &#91;&#93;&#40;&#41;&#123;
    if&#40;!server.authenticate&#40;www_username, www_password&#41;&#41;
      return server.requestAuthentication&#40;&#41;;
    server.send&#40;200, "text/plain", "Login OK"&#41;;
  &#125;&#41;;
  server.begin&#40;&#41;;

  Serial.print&#40;"Open http&#58;//"&#41;;
  Serial.print&#40;WiFi.localIP&#40;&#41;&#41;;
  Serial.println&#40;"/ in your browser to see it working"&#41;;
&#125;

void loop&#40;&#41; &#123;
  ArduinoOTA.handle&#40;&#41;;
  server.handleClient&#40;&#41;;
&#125;
Działa on zadowalająco ale nie potrafię do dodać do swojego kodu.
Everybody lies...
ptja
Posty: 2414
Rejestracja: poniedziałek 31 gru 2012, 12:44
Lokalizacja: Łódź

Post autor: ptja »

Skoro nie piszesz nic o wymaganych komponentach (żebym mógł to samodzielnie skompilować), to może choć podaj komunikat błędu?

BTW: ja bym wyniósł zarządzanie hasłami poza moduł (tzn. nie zapisywałbym ich na stałe w kodzie, a weryfikował w innej maszynie).
--
pozdrawiam,
Jarek Andrzejewski
Awatar użytkownika
artur_n
Posty: 874
Rejestracja: niedziela 03 mar 2013, 17:37
Lokalizacja: Jarosław

Post autor: artur_n »

Przyjacielu nie znam się zbytnio na tym ale doinstalowałem do standardowego programu biblioteki:

-Adafruit ESP8266
-DHT sensor library

i chyba to wszystko.
Everybody lies...
ODPOWIEDZ