Ir ao conteúdo
  • Cadastre-se
aphawk

ESP8266 - A Pequena Maravilha para Comunicação WIFI

Recommended Posts

Oi pessoal boa tarde. Alguem tem uma macete de aumentar o alcance do nodemcu com antena externa???? precisaria dessa gambiarra. Finalmentee achei um projeto de walkie talkie com o node e queria testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal bom dia. Alguém sabe usar os pinos RX e tx do esp8266 para ascender leds usar buttons? Etc. Tô enroscado num projeto aqui e precisava usar elles. Ou alguma forma de ter entradas adicionais com aquelas taruguinhas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Papibakigrafo você conseguiu salvar o SSID e senha na eeprom do esp?

 

Estive pensando, precisava de uma maneira de inserir o login, senha e IP do esp depois de ja ter carregado o codigo nele. Pra ele ficar configuravel em qualquer lugar, sem precisar do codigo e tal..

 

Estou pensando na possibilidade de fazer uma plaquinha com ldc e um arduino... conversar com o esp via serial e assim "inserir" esses valores dentro do esp que irá gravar na eeprom. ou sera que tem como fazer com um software qualquer que estabeleça um comunicação serial e usar o proprio conector micro usb do nodemcu??

 

O que me dizem??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, boa noite.. vocês teriam um macete do nodemcu baixar o proprio código e compilar através de uma página web? ja viram algo assim antes? Mas tem que ser pela ide do arduino,rs.

Editado por lucianolcoa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este tópico está bem parado (o Clube do Hardware está meio parado), mas eu quero ver se movimento isto aqui um pouco.

 

O que estou fazendo é estudando o ESP32, tenho alguns para brincar, mas estou evoluindo bem devagar, por falta de tempo para me dedicar. Mas o que eu andei encontrando no youtube foram algumas coisas bem interessantes, que no final estão reacendendo o meu interesse, como por exemplo, um pequeno tutorial para utilizar de forma controlada os dois núcleos no ESP32 -

 

(nunca tinha programado antes fazendo isso e estou achando interessante), o que o ESP32 tem mais interessante é ser dual-core, além do bluetooth. O autor é um suíço com um sotaque um pouco forte no inglês mas cuja dicção é ótima, já assisti muita coisa dele, ele faz muita coisa interessante no ESP32 e ESP8266.

 

E o que eu venho observando é que a informação sobre o ESP32 está ficando mais detalhada e as bibliotecas estão começando a ficar úteis e mais completas. Eu normalmente aprendo pelos exemplos, mas estou dando umas cabeçadas com as bibliotecas do BME280 (a Adafruit_BME280.h por exemplo) e toda vez que chego nesta linha do programa (status = bme.begin();) o ESP32 para a execução do programa (mas não trava pois as interrupções continuam rodando), o que será que pode estar acontecendo ?

 

Vai abaixo um programa simples em que estou testando e aprendendo como programar o ESP32, e onde aconteceu o problema com a biblioteca Adafruit_BME280.h .

 

/* ESP32 takes a large current pulse to get started, so won't work with a USB programmer PSU, need a direct power feed at 3.3V
   ESP32 in Deep Sleep takes 0.0056mA or 5.6uA, giving a typical battery life with a 2600mAh battery of : 220 days at 15-min update intervals
 Typical battery capacities:
   AAA 1200 (Alkaline) or  800–1000 (NiMH) 
   AA 2700 (alkaline) or 3000 (Lithium-Rechargeable) or 1700–2900 (NiMH) 
   C 8000 (alkaline) or 4500–6000 (NiMH) 
   D 12000 (alkaline) or 2200–12000 (NiMH) or 19000 (Lithium-Primary) 3.6V 
   9V Transistor 565 (alkaline) or 175–300 (NiMH)
   6V Lantern 26000 (alkaline) 
   CR2032 240 (Lithium-Primary) 3.6V 
   CR2016 90 (Lithium-Primary) 3.6V 
   4 Farad Cap 1 (loses 1 volt in 1 hour at 1mA)
   
*/
#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_BME280.h> 
// baixar lib <Adafruit_Sensor.h> de https://github.com/adafruit/Adafruit_Sensor
// para que a lib <Adafruit_BME280.h> funcione

#ifdef __cplusplus
extern "C" {
#endif

uint8_t temprature_sens_read(); // define sensor de temperatura interno do ESP32
//uint8_t g_phyFuns;

#ifdef __cplusplus
}
#endif

#define ADC_input_pin 36 // also known as SVP ADC-0 or SVN Pin-39 
#define Led_Azul 2 // Pino GPIO-02 ligado ao led azul da placa
#define pressure_offset 1.95 // Compensates for this location being 20M asl  


WiFiClient client; // wifi client object


uint8_t temp_farenheit;
float temp_celsius;

uint32_t freeheap;
uint32_t flashChipSize = ESP.getFlashChipSize();
uint32_t flashChipSpeed = ESP.getFlashChipSpeed();

uint32_t hora_ant;

float VBat;
boolean Status_LED = HIGH;

hw_timer_t * timer0 = NULL; // cria timer0
portMUX_TYPE timerMux0 = portMUX_INITIALIZER_UNLOCKED; // para multiplos timers
//boolean flag_timer0 = false;

void Pisca() {
  portENTER_CRITICAL_ISR(&timerMux0); // para multiplos timers
  
  //Status_LED = 1 - Status_LED; // comuta Led_Azul
  Status_LED = !Status_LED; // comuta Led_Azul
  digitalWrite(Led_Azul, Status_LED);
  
  portEXIT_CRITICAL_ISR(&timerMux0); // para multiplos timers
}


const char *ssid     = "MEU_WIFI";
const char *password = "Minha Senha";

char ThingSpeakAddress[] = "api.thingspeak.com";      // Thingspeak address
String api_key           = "***********";  // Thingspeak API WRITE Key for your channel

//const int UpdateInterval = 10 * 60 * 1000000;  // e.g. 10 * 60 * 1000000; for a 10-Min update interval (10-mins x 60-secs * 1000000uS)
const int UpdateInterval = 30 * 1000000;  // e.g. 30 * 1000000; para 30 segundos de intervalo de atualização (30-secs * 1000000uS)

Adafruit_BME280 bme;

void setup() {
  Serial.begin(230400);
  
  pinMode(Led_Azul, OUTPUT);      // configura o pino do Led_Azul como saída
  timer0 = timerBegin(0, 80, true); // Timer0, frequência dividido por 80
  timerAttachInterrupt(timer0, &Pisca, true);
  timerAlarmWrite(timer0, 49999, true);// microssegundos (50000 - 1)
  timerAlarmEnable(timer0);
  
  
  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  //WiFi.mode(WIFI_STA);
    //WiFi.disconnect();
  //delay(100);
    
  WiFi.begin(ssid, password);
  Serial.println();
  Serial.println("Start WiFi");
  while (WiFi.status() != WL_CONNECTED ) {Serial.print("."); delay(500); }
  
  timerAlarmDisable(timer0);
  timerAlarmWrite(timer0, 499999, true);// microssegundos (500000 - 1)
  timerAlarmEnable(timer0);
  
  Serial.println();
  Serial.println("Conectado a " + String(ssid));
  
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  
  Wire.begin(17,16); // (sda,scl) 
  Serial.println("Wire.begin(17,16);");
  
  bool status;
    
  // default settings
  status = bme.begin();
  Serial.println("status = bme.begin();");
  
  if (!status) {
  //if (!bme.begin(BME280_ADDRESS)) {
    Serial.println("Could not find a sensor, check wiring!");
  } 
  else {
    Serial.println("Found a sensor continuing");
    while (isnan(bme.readPressure())) {};//Serial.println(bme.readPressure());}
  }

  float temperature = bme.readTemperature(); // 3 example variables, ideally supplied by a sensor, see my examples for the BMP180, BME280 or DS18B20
  float humidity    = bme.readHumidity();
  float pressure    = bme.readPressure() / 100.0F + pressure_offset; // Result is in hPA
  float VBat        = float(analogRead(ADC_input_pin)) / 4096.0f * 3.3 * 2;    // (dividido por 2 ) Usando ADC0
  
  temp_farenheit = temprature_sens_read();
  temp_celsius = ( temp_farenheit - 32 ) / 1.8;
  
  Serial.print("Memória Livre = "); Serial.print(freeheap);
  Serial.print(" ESP32 - Tamanho da memória flash = " + String(flashChipSize) + " bytes");
  Serial.println(" ESP32 - Velocidade da memória flash = " + String(flashChipSpeed) + " Hz");
  Serial.println(" Bateria/USB = " + String(VBat) + "V  Temperatura ESP32 = " + String(temp_celsius) + "°C");
  Serial.println("Temperatura = " + String(temperature) + "°C umidade = " + String(humidity) + "% Pressão = " + String(pressure) + "hPa Tensão " + String(VBat) + "V Temperatura ESP12 =" + String(temp_celsius) + "°C");
  
  
  UpdateThingSpeak("field1=" + String(temperature) + "&field2=" + String(humidity) + "&field3=" + String(pressure) + "&field4=" + String(VBat) + "&field5=" + String(temp_celsius)); //Send the data as text
  
  
  esp_deep_sleep_enable_timer_wakeup(UpdateInterval);
  BME280_Sleep();
  Serial.println("Going to sleep now...");
  esp_deep_sleep_start();
}

void loop() {
  //Do nothing as it will never get here!
}

void UpdateThingSpeak(String DataForUpload) {
  WiFiClient client;
  if (!client.connect(ThingSpeakAddress, 80)) {
     Serial.println("connection failed");
     return;
  }
  else
  {
    Serial.println(DataForUpload);
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + api_key + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(DataForUpload.length());
    client.print("\n\n");
    client.print(DataForUpload);
  }
  client.stop();
}

void BME280_Sleep() {
  //Serial.println("BME280 to Sleep mode");
  Wire.beginTransmission(0x76); // Check your I2C address, they vary, could be 0x77
  Wire.write((uint8_t)BME280_REGISTER_CONTROL);
  Wire.write((uint8_t)0b00);
  Wire.endTransmission();
}

E alguém sabe porque a temporização das interrupções no ESP32 não são tão precisas como no ESP8266, normalmente eu perco quase um microssegundo no ESP32, no ESP é sempre exato, em mais de 6 casas decimais, parece que as interrupções no ESP32 funcionam diferente do ESP8266, alguém sabe o porque ? Na minha rotina de teste (e aprendizado) eu adianto em 1 uSeg na interrupção para tentar compensar este erro, mas o resultando não é perfeito (ainda tenho muito que aprender), o erro é desprezível, mas vai se acumulando sempre.

Editado por Intrudera6

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal,

 

Encontrei no site da ANATEL o número de homologação do ESP-12F, um dos módulos que carregam o ESP8266. Os documentos da homologação podem ser achados aqui.

 

Quem realizou a homologação foi uma das fabricantes, a Shenzen Anxinke Technology Co., Ltd.. O endereço eletrônico deles pode ser acessado aqui: ai-thinker (o site é da china, mas creio que haja uma versão em inglês)

 

A pergunta: como eu posso usar esse número de homologação? Posso comprar qualquer módulo e colar a etiqueta da ANATEL por cima? Ou só terei sucesso se entrar diretamente em contato com o fabricante?

 

Infelizmente, não encontrei nenhuma loja que vendesse esse ESP-12F com certificação ANATEL (um exemplo é a Raspberry Pi certificada que a Felipeflop vende).

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@lucianolcoa , esses terminais também são GPIOs, você só precisa descobrir qual é o número do GPIO (google responde fácil), desativar a porta serial do ESP em código (google responde fácil também) e configurar os GPIOs como entrada ou saída. Pra te deixar um pouco a frente das coisas, olhe este link com calma. Está em inglês, mas não é sempre mais fácil achar as coisas em inglês? Tradutor nele se for o caso.

 

http://www.instructables.com/id/How-to-use-the-ESP8266-01-pins/

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 24/11/2017 às 09:10, passoswell disse:

@lucianolcoa , esses terminais também são GPIOs, você só precisa descobrir qual é o número do GPIO (google responde fácil), desativar a porta serial do ESP em código (google responde fácil também) e configurar os GPIOs como entrada ou saída. Pra te deixar um pouco a frente das coisas, olhe este link com calma. Está em inglês, mas não é sempre mais fácil achar as coisas em inglês? Tradutor nele se for o caso.

 

http://www.instructables.com/id/How-to-use-the-ESP8266-01-pins/

Puxa nem lembrava mais disso ahsuashuas... Tava querendo fazer push buttons no void setup com o esp8266 mas desisti por que por algum motivo esquisito ele não "excita" os botões mesmo declarando no setup. Não é que nem o nodemcu. E eu precisava disso pra criar uma configuração de bot. Mas acabei "contornando" este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Silva Magalhaes Eras que não venho aqui. Nem lembrava mais desse código. No meu blog pessoal (que não mexo mais também) fiz um carrinho controlado por acess point. lá tem o código mastigado, com login e senha. Mas tem que fuçar no "void setup()"

http://eletronicaeutilidades.blogspot.com.br/2017/04/robo-controlado-por-wi-fi-usando-o.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá luciano.

rapaz sou iniciante estou aprendendo agora .

peços desculpas por incomodar .

nao estou achando login e senha no seu bolg.

eu gostaria muito de montar esse projeto seu.

gentileza pode dar uma ajuda 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/07/2017 às 14:52, rodrigocirilo disse:

@Papibakigrafo você conseguiu salvar o SSID e senha na eeprom do esp?

 

Estive pensando, precisava de uma maneira de inserir o login, senha e IP do esp depois de ja ter carregado o codigo nele. Pra ele ficar configuravel em qualquer lugar, sem precisar do codigo e tal..

 

Estou pensando na possibilidade de fazer uma plaquinha com ldc e um arduino... conversar com o esp via serial e assim "inserir" esses valores dentro do esp que irá gravar na eeprom. ou sera que tem como fazer com um software qualquer que estabeleça um comunicação serial e usar o proprio conector micro usb do nodemcu??

 

O que me dizem??

Bom, acabei conseguindo fazer isso.

Coloquei uma rotina parra receber strings via serial, baixei um app no celular de comunicação serial, setei o mesmo BR, espetei no celular com um adaptador OTG e iniciei a comunicação serial entre o nodemcu e o celular, funcionou perfeitamente.

adicionado 0 minutos depois

vocês tem usado seus ESP8266 a 80 ou 160Mhz ??? qual a confiabilidade de rodar a 160??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×