Módulos ESP8266

Projetos na área da eletrónica.
Avatar do Utilizador
exhit
Rookie Maker
Rookie Maker
Mensagens: 286
Registado: 09 mai 2018, 14:52
Enviou: 92 vezes
Agradecimento recebido: 112 vezes

23 out 2018, 12:38

É melhor criar este tópico. Fica já e vai-se falando.

Estas placas são fáceis de ligar à NET e o meu primeiro teste com um LED e a app de telemóvel Blynk a controlar o LED foi muito simples.


Links úteis:

"Visivel apenas para utilizadores registados"
"Visivel apenas para utilizadores registados"
Última edição por exhit em 23 out 2018, 13:59, editado 2 vezes no total.
Avatar do Utilizador
diogoc
Equipa Moderadores
Equipa Moderadores
Mensagens: 150
Registado: 31 mai 2018, 14:32
Enviou: 16 vezes
Agradecimento recebido: 108 vezes

23 out 2018, 13:29

Nem precisas de uma aplicação para telemóvel.
Com meia dúzia de linhas de código pode-se criar um web server e controlar um output através do browser.

"Visivel apenas para utilizadores registados"
Estes utilizadores agradeceram ao autor diogoc pela mensagem:
exhit (23 out 2018, 13:57)
Classificação: 12.5%
Avatar do Utilizador
diogoc
Equipa Moderadores
Equipa Moderadores
Mensagens: 150
Registado: 31 mai 2018, 14:32
Enviou: 16 vezes
Agradecimento recebido: 108 vezes

23 out 2018, 15:33

Exemplo das capacidades desta mini placa.
Controlo wifi de uma impressora 3D feito pelo Luc.
Este firmware já é usado de origem nas placas Azteeg mini.

"Visivel apenas para utilizadores registados"

Em conjunto com a interface gráfica
"Visivel apenas para utilizadores registados"
Avatar do Utilizador
weed2all
Experienced Maker
Experienced Maker
Mensagens: 420
Registado: 03 jul 2018, 17:01
Localização: Parede
Enviou: 108 vezes
Agradecimento recebido: 127 vezes

27 out 2018, 16:15

Controle de reles com app android atraves da internet de casa!!isso e que queria...ja tenho umas versoes de reles wifi mas o ficheiro init.lua faz um ap wifi separado e para controlar tenho que ligar o tlm a aquele ap...
https://www.thingiverse.com/weed2all/about
Avatar do Utilizador
diogoc
Equipa Moderadores
Equipa Moderadores
Mensagens: 150
Registado: 31 mai 2018, 14:32
Enviou: 16 vezes
Agradecimento recebido: 108 vezes

29 out 2018, 10:37

Já experimentaste o firmware Tasmota?
"Visivel apenas para utilizadores registados"
Avatar do Utilizador
exhit
Rookie Maker
Rookie Maker
Mensagens: 286
Registado: 09 mai 2018, 14:52
Enviou: 92 vezes
Agradecimento recebido: 112 vezes

02 nov 2018, 00:44

"Visivel apenas para utilizadores registados" Escreveu: "Visivel apenas para utilizadores registados"
23 out 2018, 13:29
Nem precisas de uma aplicação para telemóvel.
Com meia dúzia de linhas de código pode-se criar um web server e controlar um output através do browser.

"Visivel apenas para utilizadores registados"
Tenho andado a brincar com o ESP-8266 e experimentei este link. Juntei também a library CheapStepper, que funciona com este motor, mas no entanto, ao inserir o FOR que corre o motor ao IF do pin 5, ele quebra o servidor.
Avatar do Utilizador
diogoc
Equipa Moderadores
Equipa Moderadores
Mensagens: 150
Registado: 31 mai 2018, 14:32
Enviou: 16 vezes
Agradecimento recebido: 108 vezes

02 nov 2018, 10:58

Esse ciclo FOR pode ser bloqueante ou estar a demorar muito tempo e por isso não faz o refresh do servidor.
Estes utilizadores agradeceram ao autor diogoc pela mensagem:
exhit (02 nov 2018, 16:28)
Classificação: 12.5%
Avatar do Utilizador
exhit
Rookie Maker
Rookie Maker
Mensagens: 286
Registado: 09 mai 2018, 14:52
Enviou: 92 vezes
Agradecimento recebido: 112 vezes

02 nov 2018, 16:22

Calculei isso... Quer dizer que, em cada step que dá, o código avança... apenas no FOR. Meu Deus :lol:

Alguma dica de como resolver? Não sou ás na programação e irei tentar resolver, mas pouparia tempo. Será que a library está construida de modo a poder correr o código e o resto do programa avançar?
Avatar do Utilizador
diogoc
Equipa Moderadores
Equipa Moderadores
Mensagens: 150
Registado: 31 mai 2018, 14:32
Enviou: 16 vezes
Agradecimento recebido: 108 vezes

02 nov 2018, 17:15

Põe aí o código que tens para ver como estás a fazer
Avatar do Utilizador
exhit
Rookie Maker
Rookie Maker
Mensagens: 286
Registado: 09 mai 2018, 14:52
Enviou: 92 vezes
Agradecimento recebido: 112 vezes

02 nov 2018, 21:57

Antes de mais, estou a usar esta biblioteca: "Visivel apenas para utilizadores registados"

Mas já consegui meter a funcionar. Eu sei que algumas linhas de código não fazem sentido, mas vêm do copy paste anterior e não tenho paciência para limpar se isto é apenas um teste. :)

Código: "Visivel apenas para utilizadores registados"

#include <ESP8266WiFi.h>
#include <CheapStepper.h>

// Motor - declaração
CheapStepper stepper;
boolean moveClockwise = true;

// Replace with your network credentials
const char* ssid     = "MMWIFI";
const char* password = "mambojambo";

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String mDirection = "true";

void setup() {
  Serial.begin(115200);

  stepper.step(moveClockwise);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            // turns the motor true or false
            if (header.indexOf("GET /motor/true") >= 0) {
              Serial.println("Motor True");
              mDirection = "true";

              stepper.moveTo(moveClockwise, 2048);
              moveClockwise = !moveClockwise;
            } else if (header.indexOf("GET /motor/false") >= 0){
              Serial.println("Motor False");
              mDirection = "false";

              stepper.moveTo(moveClockwise, 0);
              moveClockwise = !moveClockwise; 
            } 
            
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");

            // CSS
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            
            // Web Page Heading
            client.println("<body><h1>ESP8266 101</h1>");
            
            client.println("<p>Motor Direction: " + mDirection + "</p>");
            // If the output5State is off, it displays the ON button       
            if (mDirection=="false") {
              client.println("<p><a href=\"/motor/true\"><button class=\"button\">TRUE</button></a></p>");
            } else {
              client.println("<p><a href=\"/motor/false\"><button class=\"button button2\">FALSE</button></a></p>");
            }
            client.println("</body></html>");
            
            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}
Responder