Tag: esp8266

Palavra-chave
Destaque/Sem destaque
Resolvida/Não Resolvida
Aberta/Encerrada
0 votos
142 visualizações

Saudações a “todos os EMBARCADOS”!

Estou fazendo um projeto que precisa funcionar em baixas temperaturas (dentro de um freezer ou câmara frigorífica, por exemplo), onde as temperaturas podem chegar alguns graus abaixo de zero!
Eu sei que preciso observar a temperatura de operação que consta no datasheet de cada componente, mas minha preocupação é com o circuito em geral (pci, trilhas, terminais de componentes, fios, etc), acredito que proteger da umidade é o principal desafio.
Alguém já fez algo parecido ou alguém sugere como proteger tudo isso? Será que preciso colocar a placa em alguma resina, ou utilizar algum produto do tipo “corrosionX”?

Já agradeço a todos pela atenção.

0 votos
0 respostas
207 visualizações

Amigos,

Estou tentando meu primeiro projeto com ESP8266 seguindo os passos do blog deste site:
https://www.embarcados.com.br/gravando-o-esp8266-01-na-ide-arduino/

Porém, na hora de subir meu código recebo a seguinte mensagem:

Archiving built core (caching) in: /var/folders/qq/kfvk4__s51vcd_nx_p7ggt6h0000gn/T/arduino_cache_208905/core/core_esp8266_esp8266_generic_CpuFrequency_80,FlashFreq_40,FlashMode_dio,UploadSpeed_115200,FlashSize_512K64,ResetMethod_ck,Debug_Disabled,DebugLevel_None_____6a6f03bb7fc7edd1c687f643adbf4091.a O sketch usa 222157 bytes (51%) de espaço de armazenamento para programas. O máximo são 434160 bytes. Variáveis globais usam 31524 bytes (38%) de memória dinâmica, deixando 50396 bytes para variáveis locais. O máximo são 81920 bytes. error: failed reading byte warning: espcomm_send_command: cant receive slip payload data a porta serial warning: espcomm_send_command: cant receive slip payload data selecionada não existe ou sua placa não está conectada error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed

Alguém tem idéia do que está errado?

0 votos
763 visualizações

Olá tudo bem?

Estou em fase de desenvolvimento de uma ideia e eu tenho um ESP32. Com ele vou precisar de plotar alguns gráficos de informações físicas e estava pensando em fazer isto da forma mais barata possível e isso aconteceria se eu conseguisse criar uma rede wifi e gerar um webapp, então esta interface gráfica poderá ser vista por um tablet ou celular de qualquer marca. Não estou achando nenhum projeto, pricicpalmente relacionado ao ESP32 que mostre rodando javascript e html nele. Alguém sabe de algo?

A rede gerada pelo ESP32 estará em uma rede interna, sem conexão com a internet

  • Felipe Paulo perguntada 1 ano atrás
  • última atividade 1 ano atrás
0 votos
0 respostas
959 visualizações

Saudações,
Não estou conseguindo enviar informações para a plataforma ThingSpeak, as funções do DHT22 estão funcionando perfeitamente pois já testei com LCD, e a configuração do Timer1 também pois já testei separado.
Mas nesse meu projeto algo está errado porque não consigo enviar dados de umidade e temperatura para meu canal no ThingSpeak.
Liguei a porta Rx do ESP8266 na porta Tx do PIC já com divisor de tensão de 3.3V. A porta Tx do ESP8266 liguei na porta RX do PIC. E as portas GPIO0, RST, CH_PD e VCC estão conectados no 3.3v. Porta GND está no terra.
O LED (BREATHING_LIGHT) está piscando aleatoriamente, porém a configuração do Timer1 está correta.
Espero que alguém possa me dar uma luz sobre o que pode estar errado, notem que alterei as informações de “SSID”, “SENHA_WIFI” e “CHAVE” por motivos de segurança:

//Programa : PIC na IoT com ThingSpeak e DHT22 usando PIC16F628A
//Autor : Marcos Roberto Baungartner RA: 9902012531
//Data 29/04/2017

//Diretivas para o pré-processador

include <16F628A.h> //Inclui Header do PIC16F628A

FUSES HS //Oscilador Interno e portas como IO

FUSES NOMCLR //Master Clear (Reset)

FUSES NOWDT //Watch Dog Timer

FUSES PUT //Power-Up Timer

FUSES BROWNOUT //Resetar quando detectar brownout

FUSES NOLVP //Gravação em baixa-tensão

FUSES NOCPD //Proteção do memória EEPROM

FUSES NOPROTECT //Proteção para leitura do código

use delay(clock = 20000000) //Clock de 4MHz (clock útil de 1MHz)

use rs232(baud=115200,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,ERRORS)

priority INT_TIMER1, INT_RDA //INT_EXT,//ordem de prioridade das interrupções (ordem decrescente de prioridade)

//defines gerais:

define DATA PIN_A0

define BREATHING_LIGHT PIN_A1

define TAMANHO_COMANDO_MODO_ESTACAO sizeof(ComandoModoEstacao);

define TAMANHO_COMANDO_CONECTA_ROTEADOR sizeof(ComandoConectaRoteador);

define TAMANHO_COMANDO_MULTI_CONEXOES sizeof(ComandoMultiplasConexoes);

define TAMANHO_COMANDO_HTTP_THINGSPEAK sizeof(ComandoConectaHTTPThingspeak);

define TAMANHO_COMANDO_SEND_THINGSPEAK sizeof(ComandoSendDadoThingspeak);

define VALOR_INICIAL_TIMER1 3036

define ESTADO_MODO_ESTACAO 0

define ESTADO_CONECTA_ROTEADOR 1

define ESTADO_MULTI_CONEXOES 2

define ESTADO_HTTP_THINGSPEAK 3

define ESTADO_SEND_THINGSPEAK 4

define TEMPO_SEND_THINGSPEAK 30 //envio para o thingspeak é feito em um período de 30s

define VALOR_MAX_CONTADOR_TEMPO_THINGSPEAK TEMPO_SEND_THINGSPEAK*20

define SIM 1

define NAO 0

char ContadorIntTimer;
long ContadorEnvioDadosThingspeak;
volatile char EstadoMaquinaESP8266;
char DeveEnviarDadoThingspeak;
unsigned char ContadorIntTimerSensor, umidade_byte1, umidade_byte2, temperatura_byte1, temperatura_byte2, paridade_byte, timeOut;
unsigned long temperatura_2byte, umidade_2byte;
float temperatura = 0, umidade = 0;

//prototypes
//void ConfigInterrupcaoEXT(void);
void ConfigInterrupcaoUART(void);
void ConfigTimer1(void);
void ESP8266SetaModoEstacao(void);
void ESP8266ConectaRoteador(void);
void ESP8266MultiplasConexoes(void);
void ESP8266HTTPThingspeak(void);
void ESP8266PreparaEnvioHTTP(void);
void ESP8266SendThingspeak(char valor);
void SetupESP8266(void);

/*********************** FUNÇOES DO SENSOR DHT22 ****************************************************/
//Envia sinal de start para o sensor
void startSignal() {
set_tris_a(0b00000000); //Configura RA0 como output
output_low(DATA); //Pino DATA envia 0 para o sensor
delay_ms(20);
output_high(DATA); //Pino DATA envia 1 para o sensor
delay_us(30);
set_tris_a(0b00000001); //Configura RA0 como input
}

//Checa resposta do sensor
unsigned char checkResponse() {
delay_us(40);

if(!input(DATA)) {
    delay_us(80);

    if(input(DATA)) {
        delay_us(40);
        return 1;
    }
    else
        return 0;
}

}

//Função para ler os dados do sensor DHT22
unsigned char readData() {
unsigned char j=0, dataByte=0;

if(timeOut) break;

for(j = 0; j <= 7; j++) {
    while(!input(DATA)){              // Espera até que a porta DATA vá para High
        delay_us(1);
    }

    delay_us(30);

    if(!input(DATA)) {               //Se continuar em Low apos 30us, bit = 0

        dataByte &= ~(1 << (7 - j)); //Zera bit (7-j)
    }
    else {                           //Se estiver em High apos 30us, bit = 1
        dataByte |= (1 << (7 - j));  //Seta bit (7-j)
        while(input(DATA)){          //Espera até que a porta DATA vá para Low
            delay_us(1);
        }
    }
}
return dataByte;

}
/***************************************************************************/

/*
//tratamento da interrupção externa

int_EXT

void EXT_isr(void) {
//debouncing
delay_ms(10);
// código caso necessite de uma interrupção externa
}
*/

//tratamento da interrupção serial

INT_RDA

void serial_isr() {
char ByteLido;
ByteLido = getc();
}

//tratamento da interrupção de timer

INT_TIMER1

void TrataTimer1() {
ContadorIntTimer++;
ContadorEnvioDadosThingspeak++;
ContadorIntTimerSensor++;
//contabiliza tempo de envio do dado ao thingspeak
if (ContadorEnvioDadosThingspeak >= VALOR_MAX_CONTADOR_TEMPO_THINGSPEAK)
DeveEnviarDadoThingspeak = SIM;

//controla tempo para piscada do breathing light
if (ContadorIntTimer >= 20) {   //cada "tick" do timer1 tem 0,05s. Logo, 20 "tiks" equivalem a 1 segundo
    //troca o estado da saída do breathing light
    output_toggle(BREATHING_LIGHT);
    ContadorIntTimer = 0;
}

//controla tempo para leitura do sensor

while(ContadorIntTimerSensor >= 40) {
    //inicia leitura do sensor
    startSignal();
    if(checkResponse()) {
        umidade_byte1 = readData();     //primeiro byte da umidade: bit 15 ~ bit 8
        umidade_byte2 = readData();     //segundo byte da umidade bit: 7 ~ bit 0
        temperatura_byte1 = readData(); //primeiro byte da temperatura: bit 15 ~ bit 8
        temperatura_byte2 = readData(); //segundo byte da temperatura: bit 7 ~ bit 0
        paridade_byte = readData();     //byte da paridade bit: 7 ~ bit 0
        if(paridade_byte == (umidade_byte1 + umidade_byte2 + temperatura_byte1 + temperatura_byte2) & 0xFF) {
            umidade_2byte = umidade_byte1;
            umidade_2byte = (umidade_2byte << 8) | umidade_byte2;
            temperatura_2byte = temperatura_byte1;
            temperatura_2byte = (temperatura_2byte << 8) | temperatura_byte2;
            if(temperatura_2byte > 0x8000) { //Se temperatura for maior que 1000 0000 (binario)
                temperatura_2byte &= 0x7FFF; //Temperatura recebe 14bits, pois o bit 15 representa sinal
                temperatura = temperatura_2byte;
                temperatura *= -1;
            }
            else {
                temperatura = temperatura_2byte;
            }
            umidade = umidade_2byte;

            ContadorIntTimerSensor = 0;
        }
    }
}

//configura timer e religa interrupções
set_timer1(VALOR_INICIAL_TIMER1);

}

//função de configuração da interrupção UART
//parametros: nenhum
//saida: nenhum
void ConfigInterrupcaoUART(void) {
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
}

//função de configuração da interrupção externa
//parametros: nenhum
//saida: nenhum
/*
void ConfigInterrupcaoEXT(void) {
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
ext_int_edge(L_TO_H);
}
*/

//função de configuração do Timer1
//parametros: nenhum
//saida: nenhum
void ConfigTimer1(void) {
// – Frequencia do oscilador interno (20000000/4) = 5Mhz (por default, o PIC funciona a 1/4 da frequencia de clock estabelecida)
// – Se o Timer1 tem 16 bits, seu valor máximo de contagem é 0xFFFF (65535)
// – Com 5MHz de frequencia util, cada ciclo de máquina terá, em segundos: 1 / 5MHz = 0,0000002 (0,2us)
// – Utilizando o prescaler do microcontrolador em 4 (ou seja, a frequencia util do timer1 é 1/4 da frequencia util do pic), temos:
// Periodo minimo “contável” pelo Timer1 = (1 / (5MHz/4)) = 0,0000008 (0,8us)
// – Logo, a cada 16 bits contados, teremos: 65536 * 0,8us = 0,0524288s
// – visando maior precisão, sera feito um timer de 0,05s. Logo:
// 0,0524288s — 65536
// 0,05s — x x = 62500
// Logo, o valor a ser setado no timer1 é: 65536 – 62500 = 3036 (Aplicar esse numero na linha 6 do pic_esp8266.h)
ContadorIntTimer = 0;
setup_timer_1(T1_INTERNAL| T1_DIV_BY_4);
set_timer1(VALOR_INICIAL_TIMER1);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
}

//função que configura o ESP8266 para operar em modo estação (se conecta em um roteador)
//parametros: nenhum
//saida: nenhum
void ESP8266SetaModoEstacao(void) {
puts(“AT+CWMODE=1\r\n\0”);
delay_ms(500);
}

//função que conecta o ESP8266 em um roteador
//parametros: nenhum
//saida: nenhum
void ESP8266ConectaRoteador(void) {
puts(“AT+CWJAP=\”SSID\”,\”SENHA_WIFI\”\r\n\0″);
delay_ms(7000);
}

//função que configura o ESP8266 para operar com multiplas conexoes
//parametros: nenhum
//saida: nenhum
void ESP8266MultiplasConexoes(void) {
puts(“AT+CIPMUX=1\r\n\0”);
delay_ms(500);
}

//função que conecta o ESP8266 via HTTP ao Thingspeak
//parametros: nenhum
//saida: nenhum
void ESP8266HTTPThingspeak(void) {
puts(“AT+CIPSTART=4,\”TCP\”,\”184.106.153.149\”,80\r\n\0″);
delay_ms(5000);
}

//função que prepara o ESP8266 para enviar dados via HTTP ao Thingspeak
//parametros: nenhum
//saida: nenhum
void ESP8266PreparaEnvioHTTP(void) {
puts(“AT+CIPSEND=4,46\r\n\0”);
delay_ms(500);
}

//função que envia um dado ao Thingspeak
//parametros: dado (número de 1 byte)
//saida: nenhum
void ESP8266SendThingspeak(float valor1, float valor2) {
char ComandoEnvioDadoHTTP[71];

memset(ComandoEnvioDadoHTTP,0,sizeof(ComandoEnvioDadoHTTP));
sprintf(ComandoEnvioDadoHTTP,"GET /update?key=CHAVE&field1=%.1f&field2=%.1f\r\n\0", valor1, valor2);
puts(ComandoEnvioDadoHTTP);
delay_ms(5000);

}

//função que inicializa, configura e conecta ESP8266 ao roteador
//parametros: nenhum
//saida: nenhum
void SetupESP8266(void) {
ESP8266SetaModoEstacao();
ESP8266ConectaRoteador();
ESP8266MultiplasConexoes();
}

//programa principal
void main(void) {

//inicializa maquina de controle da ESP8266
EstadoMaquinaESP8266 = ESTADO_MODO_ESTACAO;

//configura Timer1
ConfigTimer1();

//inicializa contador de tempo de envio de dados para o Thingspeak
ContadorEnvioDadosThingspeak = 0;
DeveEnviarDadoThingspeak = NAO;

//configuração das interrupções (UART e interrupção externa)
ConfigInterrupcaoUART();
//ConfigInterrupcaoEXT();

//inicializa, configura e conecta ESP8266 ao roteador
SetupESP8266();

while(TRUE) {

    output_high(PIN_B3);
    if (DeveEnviarDadoThingspeak == SIM) {

        ESP8266HTTPThingspeak();
        ESP8266PreparaEnvioHTTP();
        ESP8266SendThingspeak(umidade, temperatura);
        ContadorEnvioDadosThingspeak = 0;
        DeveEnviarDadoThingspeak = NAO;
    }
}

}

0 votos
0 respostas
1k visualizações

Olá pessoal,

Necessito ajuda! O problema é:

O usuário necessita acessar uma página web do webserver instalado no esp8266 e conectado como client.

Para isso é necessário conhecer o IP atribuido pelo DHCP do router da rede.

Estou tentando usar a biblioteca mDNS para acessar o device como “mydevice.local”.

Isso não está funcionando. (Mesmo utilizando Bonjour na Win 10, e tambem não funciona no Android 6.0)

Alguém sugere uma outra técnica ou método atingir para o mesmo propósito?

Obrigado

0 votos
2k visualizações

Oi pessoal!

Eu estou estudando esse módulo faz um tempo e ainda não encontrei alguma aplicação parecida.
Eu quero fazer uma placa com algum MCU, sem ser Arduino, para enviar e receber dados por um ESP8266 via WiFi para outro ESP8266.
A pergunta é, como que eu faço isso sem ter que fazer um firmware customizado para o ESP8266? Eu quero usar o módulo do jeito que ele vem.
Qual o periférico(I2C, UART, SPI) que eu poderia usar para isso?

Obrigado!

  • diogofm perguntada 2 anos atrás
  • última atividade 2 anos atrás
0 votos
2k visualizações

Estou iniciando no arduino agora, já li bastante coisa e já comprei alguns componentes, mais ainda não coloquei a mão na massa.
Então pensei em um projeto e quero iniciar meu aprendizado desenvolvendo ele, conto ajuda de vocês.
Primeira parte que preciso de ajuda é no projeto eletrônico onde tenho mais dificuldades, a parte de software é mais tranquilo pois já trabalho com desenvolvimento há alguns anos.
Vamos ao projeto…a ideia é fazer um controle remoto ir para meu ar condicionado, sem arduino, apenas com o esp8266. Teoricamente seria um esp8266, um emissor de ir, bateria e um led rgb para mostrar status.
Gostaria de alimentar o circuito com baterias. Preciso de ajuda para montar esquema eletrônico, alguém pode fazer pra mim?
Duvidas:
1-Alimentação com baterias em um projeto desse duraria quanto tempo, pelo que li o esp8266 chega a consumir 200mah?
2-Que tipo de bateria usar, pode ser ultrafire recarregavel?
Desde já agradeço a ajuda de todos.

  • Wesley Rosa perguntada 3 anos atrás
  • última atividade 3 anos atrás
Mostrando 7 resultados