Requisicao http via esp8266+arduino

Galera, estou fazendo um projeto em que basicamente eu preciso obter dados de um webservice.
não achei nenhum bom exemplo de como dar esse get no servidor e obter os dados.
alguem tem um codigo exemplo?
Grato !

2 curtidas

Salve, também estou interessado nisso :slight_smile:

1 curtida

eu também estou nessa tentativa seu obter algum sucesso nessa empreitada repasso para vcs.

Se vocês programarem o ESP8266 pela IDE do Arduino, podem usar o exemplo da biblioteca httpClient:


`/**

  • BasicHTTPClient.ino
  • Created on: 24.05.2015

*/

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#define USE_SERIAL Serial

ESP8266WiFiMulti WiFiMulti;

void setup() {

USE_SERIAL.begin(115200);

// USE_SERIAL.setDebugOutput(true);

USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();

for(uint8_t t = 4; t > 0; t--) {
    USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
    USE_SERIAL.flush();
    delay(1000);
}

WiFiMulti.addAP("SSID", "PASSWORD");

}

void loop() {
// wait for WiFi connection
if((WiFiMulti.run() == WL_CONNECTED)) {

    HTTPClient http;

    USE_SERIAL.print("[HTTP] begin...\n");
    // configure traged server and url
    //http.begin("192.168.1.12", 443, "/test.html", true, "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
    http.begin("192.168.1.12", 80, "/test.html"); //HTTP

    USE_SERIAL.print("[HTTP] GET...\n");
    // start connection and send HTTP header
    int httpCode = http.GET();
    if(httpCode) {
        // HTTP header has been send and Server response header has been handled
        USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);

        // file found at server
        if(httpCode == 200) {
            String payload = http.getString();
            USE_SERIAL.println(payload);
        }
    } else {
        USE_SERIAL.print("[HTTP] GET... failed, no connection or no HTTP server\n");
    }
}

delay(10000);

}

` Sinceramente, se vocês não estão utilizando mais de 1 pino analógico no Arduino, não vale a pena utilizar Arduino, porque o ESP8266 é um processador RISC de 80MHz independente, rodando um RTOS (Real Time Operating System).

No meu site (http://www.dobitaobyte.com.br) eu tenho muitos tutoriais dedicados a SP826, sugiro uma visita.

Se realmente vocês precisam utilizar vários pinos analógicos, então podem fzer interface com um Arduino Pro Mini (14 reais aproximadamente) ou um conversor AD (que custa entre 22 e 35 reais, por isso sugeri primeiro o Arduino pra ADC).

E por fim, se não estiverem fazendo leitura analógica, o ESP8266-01 tem 2 pinos de GPIO e o NodeMCU tem um monte. Ainda, tem o Wemos D1 e Wemos D1 mini. O Wemos D1 suporta inclusive alguns shields Arduino (atentem-se sempre ao nível lógico e corrente).

quer dizer que por exemplo no wemos d1 r2 so posso usar 4 portas pwm ???
quero comprolar 8 dispositivos com o wemos, mais quando adiciono as portas 2,3,4,5,6,7,8 a 5 6 7 e 8 dão erro, a placa fica resetando.

que posso fazer ???

Você pode fazer PWM em todos os pinos de IO. PWM é modulação de pulso, ele gera onda quadrada, é digital.

A forma de programar ESP8266 é diferente, deve-se por exemplo evitar delays. Fora isso, N razões podem estar fazendo seu ESP8266 reiniciar.

Faça um código básico, teste uma porta por vez, ainda que isso lhe tome tempo. Comprovado o funcionamento, vá implementando mais código.

O nível lógico do ESP é 3v3, os sensores devem ter o mesmo nível lógico. Se estiver alimentando todos esses dispositivos diretamente da MCU, certamente está faltando corrente, a alimentação deve ser externa.
Se precisar gerar sinal em nível lógico de 5V, você pode utilizar um expansor de I/O como o PCF8574, ou um conversor de nível lógico.
Enfim, tem muitas questões nessa sua dúvida. Se estiver controlando motor ou solenóide, deve ter todo o cuidado para não ter retorno no circuito. Etc.