Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
Em 6/19/2017 às 15:04, Papibakigrafo disse:

@alexandre.mbm como anda seu projeto do Magic Packet?

Estou me afastantando por tempo indeterminado, de tudo isso.

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

Crie uma conta ou entre para comentar

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






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

×