Aparelho simples que "ping"a no mesmo endereço, utilizando gateways diferentes e informando Timeout, latência ou latência muito alta. Isso feito no esp8266 mais simples, o esp-01. Útil e simples, mesmo que não utilize a reversão de gateway. O ping é dado 1 vez por segundo, alternando o gateway. No meu caso, o V e o A são iniciais dos provedores.
Variedades sobre desenvolvimento, eletrônica e afins. Ou: minha memória de longo prazo.
Translate
quarta-feira, 24 de março de 2021
terça-feira, 21 de julho de 2020
Micronucleus no Attiny85 com USBAsp
Me atualizando sobre artigos, desde que parei de trabalhar com os ATTinys, surgiu um bootloader que consegue carregar os programas direto pela USB sem a necessidade de um conversor USB-Serial, o Micronucleus, usado pela placa de desenvolvimento Digispark, por exemplo.
Aqui vou utilizar um ATTiny85 com o mínimo de componentes, pelo menos para carga do bootloader e do programa.
#########################################################################
BOOTLOADER
Utilizei um USBasp para carregar o bootloader primeiramente. Trabalhoso acertar o driver.
Para carregar o bootloader, utilizei o AVRDUDESS, utilizando o Programador "USBasp, http://www.fischl.de/usbasp", Port "usb", Baud rate "19200" e Bit clock "1.5 Mhz". Baixando e descompactando o Micronucleus, os firmwares estão na pasta firmware\releases, de acordo com o modelo do microcontrolador. É ele que deve ser indicado na caixa Flash e também ser escolhida a opção Write. Feito isso, é só clicar no botão Go da seção Flash.
Outros acertos são os Fuses:
Acerte o L para 0xE1, H para 0xDD, E para 0xFE e dê um Write (NÃO ERRE OS VALORES, porque pode bricar o ATtiny). Caso não faça essa etapa, não conseguirá carregar o programa depois. ATENÇÃO: Se não conhece, não mexa no fuse LB! Os Fuses são tão delicados que podem afetar o clock do microcontrolador, impedindo qualquer reprogramação - a única solução será HVSP - resetar com alta voltagem - tem um projeto com Arduino Uno aqui.
Caso tenha que testar a comunicação antes, pode utilizar o Botão Detect para tentar identificar automaticamente o microcontrolador.
Uma Dica: não sei porque, mas o driver do USBasp parou de funcionar, após um tempo ligado direto. Reiniciei o PC, deconectei e conectei novamente o USBasp e nada. Só entrando de novo no Zadig e pedindo para reinstalar o driver. Como comentei ali em cima, muitos problemas com muita insistência ou tomara que você tenha muita sorte e solucionem o problema de incompatibilidade com Windows 10.
#########################################################################
PROGRAMA
O teste de fogo é carregar uma versão alterada do Blink montando um circuito - utilizei o Tiny-Bread-Duino do Sr. M Druiven - aqui - depois de muita pesquisa e tentativas frustadas com menos componentes.Refiz o fritzing - aqui - do Sr. Druiven, por estar com um Led Verde invertido e colocar mais alguns comentários.
Para constar, o diodo do topo é um 1N4148. Os outros dois são Zener 3.6V. Os resistores estão na cor certa, 22R e 1.5Kohms. Leds comuns. No resultador, o led verde permanece como aceso quando o circuito está alimentado e o vermelho pisca.
A barra de conectores é ligada diretamente nos fios do USB, - (GND), D+, D- e + (VCC). NÃO PRECISA DE CONVERSOR USB-SERIAL!!!! 😄
Depois de montado, verificado e conectado (e o bootloader estando Ok), ligamos o cabo USB no computador. Mesma dor de cabeça para instalar o driver que é o mesmo do USBasp. Siga o mesmo processo, mas deve aparecer como um dispositivo desconhecido no Zadig.
Caso tenha avisado que o driver foi instalado com sucesso, podemos tentar continuar com o processo de carga do programa.
Carregando o Arduino IDE temos que configurá-lo para programação do Disgispark:
- em Arquivo/Preferências, acrescente "http://digistump.com/package_digistump_index.json" às URLs adicionais...;
- Em Ferramentas/Placa/Gerenciador de Placas, instale o "Digistump AVR Boards";
- Em Ferramentas/Placa, escolha "Digispark default - 16.5 Mhz";
- Caso necessário, em Ferramentas/Programador escolha "Micronucleus".
O programa teste é este (encontrado completo aqui):
int LED_BUILTIN = 1;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Basta dar Carregar (ou Sketch/Carrregar) no programa e o resultado deverá ser esse, depois de algum tempo (minutos?):
Dando tudo certo, o Led verde deve se acender e o vermelho a piscar 1x1 segundo.
sábado, 31 de dezembro de 2016
Blink no ESP8266 ESP-12F via CH340G
Outro post para lembrar posteriormente como fazer algumas coisas bem básicas.
Tentei utilizar o exemplo Blink do esp8266 no Arduino IDE sem sucesso. Tinha até abandonado a tentativa alguns meses atrás, então resolvi ir até o fim. Simplesmente o exemplo não funciona no ESP-12F, e através de um exemplo da URL iot-playground.com, descobri que era simples cumprir, fazendo alguns testes adicionais. Lembrando que utilizo o CH340G mencionado em utilizando-o-firmware-nodemcu-com-lua.
Desta vez utilizei o Arduino IDE 1.8.0. Complementarmente as instruções de programando-esp8266-esp-01-esp-12-com-Arduino-IDE-via-CP2102, existem algumas configurações que podem complicar, se não forem feitas corretamente. Seguindo a configuração no último endereço citado, no item "Configurando o Arduino IDE 1.6.7", verificar se coincide também com a figura abaixo:
No exemplo Blink do ESP8266, devemos alterar todos os LED_BUILTIN do código por 2. No ESP-12F, o programa funcionará no LED de RX. Provavelmente funcionará nas outras versões o ESP8266, pois no exemplo que consultei foi utilizado o ESP-01.
Original:
Modificado:
void setup() { pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) delay(1000); // Wait for a second digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH delay(2000); // Wait for two seconds (to demonstrate the active low LED) }
Existem 2 linhas comentadas para mostrar qual o valor de LED_BUILTIN. No meu teste, mostrou "1". Quando utilizei o original, testei todas as portas, mas não achei qual delas correspondia.
void setup() { pinMode(2, OUTPUT); // Initialize the LED_BUILTIN pin as an output //Serial.begin(115200); } // the loop function runs over and over again forever void loop() { digitalWrite(2, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) delay(1000); // Wait for a second digitalWrite(2, HIGH); // Turn the LED off by making the voltage HIGH delay(2000); // Wait for two seconds (to demonstrate the active low LED) //Serial.print(LED_BUILTIN); }
Adição posterior: D1 é a porta TX0; dependendo do modelo, muda o valor de LED_BUILTIN (se não me engano, nesse modelo que testei é o D15)
Utilizando a porta 2 no código, a porta ativada é a GPIO02.
NÃO ESQUEÇA QUE PARA FAZER O UPLOAD DO PROGRAMA PARA O ESP-12F, O BOTÃO FLASH DEVE SER MANTIDO APERTADO DURANTE TODA A CARGA.
Adição posterior: aprendi que o NODEMCU 1.0 não precisa estar com o FLASH apertado para o upload
Para este programa, o microcontrolador continua a funcionar normalmente mesmo com o botão Flash apertado.
sábado, 16 de julho de 2016
Carregando o firmware micropython no ESP8266
- baixar o Esp8266flasher.exe no site de desenvolvimento deste (baixar a versão do SO utilizado, 32 ou 64 bits); caso seja necessário, descompacte o arquivo para deixar disponível o arquivo executável;
- baixar o módulo Micropython do site desenvolvedor; observe que a versão correta está na seção "Firmware for ESP8266 boards";
- executar o programa baixado ESP8266FLASHER.EXE;
- na aba Config, clique na primeira engrenagem e localize o módulo micropython baixado;
- clique na guia Operation, escolha a porta serial correta e clique em Flash(F); aguarde o término da barra de progresso;
- para testar, conecte um emulador de terminal (por exemplo o PUTTY) na porta serial em que o esp8266 estiver conectado e resete o esp8266;
Referência:
Tutorial de reset/restore e update de firmware de fábrica do ESP8266
E para voltar o esp8266 para configuração de fábrica depois de carregar e descarregar micropython e nodemcu firmware?
Olha o passo-a-passo, depois da salada de frutas que passei para conseguir, mas que pode ser aproveitado até para atualizar o firmware:
- utilizei as instruções do site filipeflop, mas estavam muito desatualizadas, por isso, vai um pouco (na verdade muito) mais mastigado; o modelo que usei é o ESP-12F com conversor usb-serial CH340G agregado;
- baixar o flash download tool no site da Espressif; no meu caso estava na versão "ESP8266 Flash Download Tools V3.3.4"; observe que deverá ter o python 2.7 ou mais recente instalado e com o caminho dos binários e script incluídos no PATH (nas váriáveis de ambiente do Windows); coloquei um mini-tutorial no final deste post;
- baixar o sdk non-os do esp8266 no site da Espressif; na data deste post, baixei o "ESP8266 NONOS SDK V1.5.4" e o último patch "ESP8266 NONOS SDK V1.5.4.1 Patch_20160704" para deixar mais atualizado;
- descompacte os arquivos em pastas separadas;
- executar o ESP Download Tool e carregar a configuração conforme a tela abaixo (observar que os checkbox à esquerda dos uploads estão marcados); use o bom senso para encontrar os uploads nas pastas corretas;
- clicar em START e aguardar a barra de progresso se completar;
- para testar, conecte um emulador de terminal (por exemplo o PUTTY) na porta serial em que o esp8266 estiver conectado, resete o esp8266 e insira o comando AT+GMR (em maiúculas, senão dá erro; caso não pule a linha após dar um Enter, tecle Ctrl+J (line feed):
Qual a finalidade disso? Estava tentando carregar um programa pelo Arduíno IDE e falhei ao tentar fazer o upload. Suspeito que era problema de existir o Nodemcu como firmware. Enfim, se não dominarmos o SO do módulo, o que se dirá de dominar o funcionamento dos programas?
PYTHON
Não acho interessante abrir um post somente para ensinar a instalar o Python, então uma receitinha simples:- baixe o Python (de preferência o 2.xx) no site;
- descompacte para uma pasta (eu prefiro C:/python27);
- no Win7 clicar em Iniciar, e com o botão direito no Computador escolher Propriedades;
- escolher Configurações avançadas do sistema e a guia Avançado;
- clicar no botão variáveis de ambiente;
- na listbox Váriáveis do sistema, clique duplo em PATH;
- no valor da variável, acrescentar (referenciando no meu caso, em que a instalação está na pasta C:\PYTHON27) ";C:\PYTHON27;C:\PYTHON27\SCRIPTS;" como abaixo:
- clicar em Ok e pronto.
quarta-feira, 29 de junho de 2016
Utilizando o firmware nodemcu com LUA em ESP8266 ESP-12 genérico
Sofri um pouco para conseguir carregar alguma coisa nesse ESP. O firmware original do Nodemcu não se adaptou. Não insisti muito, porque demorei para chegar nessa conclusão. Achei que havia problemas com o CH340G e gerou várias mensagens de erro de memória, caracteres estranhos, etc. Só deu certo utilizando o app gravador certo com a firmware adaptável. Este post foi feito logo após dar certo, então não há aprofundamento. Cheguei somente ao ponto de conseguir a conexão wifi com LUA.
1. Iniciando o procedimento
Inicialmente, instalei o driver do CH340G para windows (7-x64, no meu caso). Baixei no endereço http://www.wch.cn/download/CH341SER_ZIP.html ou alternativo.
Em seguida, acessei o site http://nodemcu-build.com/ para gerar um firmware customizado. Somente dei o email (onde será enviado o endereço de download do firmware gerado), marquei alguns módulos e cliquei em "Start your build". 5 minutos depois, chegou o email com o endereço. Baixei os 2 firmwares gerados (um para utilizar somente números inteiros, teoricamente mais rápido e menor, e outro que utiliza também números com ponto flutuante).
Baixei o ESPFlasher.exe https://github.com/nodemcu/nodemcu-flasher (alternativo) para gravar o firmware no ESP. Para carregar o firmware, simplesmente conectar o ESP na USB, executar o ESPFlasher.exe, selecionar a porta COM referente à USB utilizada e indicar o firmware baixado na aba Config. Verificar o endereço 0x00000 e na aba Advanced, verificar se a velocidade está em 115200 ou 230400. Voltar à aba Operation e clicar em Flash. Aguardar até o final da operação. Caso suspeite de erro, clicar em Restore Defaults na aba Advanced, para limpar as alterações e refazer a configuração da carga. Às vezes é necessário resetar o módulo para assumir o novo firmware.
2. Verificando o firmware.
Fiz via ESPlorer, que pode ser baixado no endereço http://www.14core.com/how-to-install-esplorer-ide-in-multiple-platform/ (alternativo).Verificar a porta COM utilizada, a velocidade (melhor 115200) e clicar em Open, para fazer a comunicação.
Logo após Resetar o ESP, o console ficou assim (note caracteres estranhos), e o comportamento estava normal, aparentemente.
Com algumas dicas da página da Adafruit sobre o esp8266, vi que havia necessidade de alterar o modo de comportamento do ESP, originalmente AP, para station:
Entrando com o código abaixo (modifiquei da página da Adafruit) e enviando para o ESP, é feita a conexão do ESP com o AP que você utiliza. Observe que na página referida existe um código para listar os APs disponíveis para o ESP. O final do código falhou. O servidor de DHCP deve ter demorado um pouco para fornecer o endereço e o primeiro resultado foi NIL. Reinseri o comando e o resultado foi ok.
Este blog me serve sempre como referência para posteriormente refazer os passos, chegando no resultado. Assim, sinta-se livre para comentar e perguntar, que farei o possível para responder.
3. Referências:
- https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua
- http://bbs.espressif.com/viewtopic.php?f=67&t=225/
- http://www.wemos.cc/
quarta-feira, 20 de janeiro de 2016
Programando ESP8266 ESP-01 ESP-12 com Arduino IDE via CP2102
Este ensaio demorou para sair. Estava temendo não dar certo por muitas razões. Muita informação, mas devido aos vários modelos, as informações são desencontradas, se contradizem, etc. Garimpei muitos sites até filtrar os mais confiáveis.
O site base é este: https://github.com/esp8266/Arduino onde se encontra o projeto e código fonte para habilitação do IDE Arduino para manipulação dos programas para ESP8266.
A pinagem retirei do site http://makezine.com/2015/04/01/installing-building-arduino-sketch-5-microcontroller/ pois, devido à utilizar o modelo ESP-01, os conectores são dispostos diferentes do ESP-12 que utilizo.
Como utilizo um breakboard para conversão da pinagem e embuti um LM1117 para fornecer 3.3v para o componente, deve-se checar a maneira que é feita a alimentação, fazendo um drop-down de 5v para 3.3v ou enviando os 5v direto para o pino certo, pois corre-se o risco de fazer o drop-down de 3.3v para uma tensão menor ainda (eu fiz isso).
Utilizei o Arduino 1.6.7. Recomendam que não se utilize o 1.6.6, pois tem problemas com drivers seriais (eu tive problemas com o CP2102).
CP2102:
- utilizo uma genérica, bem básica que só precisa ligar o 5v, GND, TX e RX;
- ao plugar na USB pela primeira vez, o driver é instalado (utilizo o Windows 7 no momento);
- no Gerenciador de Dispositivos deve ficar como:
Configurando o Arduino IDE 1.6.7:
- escolher Arquivo/Preferências;
- no campo "URLs adicionais de Gerenciadores de Placas" preencher com http://arduino.esp8266.com/stable/package_esp8266com_index.json e "OK";
- escolher menu Ferramentas/Placa xxxx/Gerenciador de Placas;
- procurar o item ESP8266;
- selecionar a última versão e "Instalar"; aguardar pois foram mais de 150 MB;
- escolher menu Ferramentas/Placa xxxx/ Generic ESP8266 Module;
- verificar a velocidade (Upload Speed); a original de fábrica é 115200;
- verificar também a Porta - deve bater com o mostrado no Gerenciador de Dispositivos, acima;
Esquema eletrônico:
- Pinagem:
CP2102 ESP8266 VCC 5v
(converter para 3.3v !!!)CH_PD (EN) + VCC GND GND + GPIO0 TXO RXD RXI TXD
![]() |
CP2102 |
![]() |
Esquema montado |
Fazendo Upload e Executando
- Utilizei o exemplo Blink do ESP8266 (não é o mesmo do Arduino);
- Selecione Arquivo/Exemplos/ESP8266/Blink;
- Com os componentes conectados, carregar o programa pelo menu Sketch/Carregar;
- Lembrando novamente que o processo de carga demora muito mais que no Arduino UNO;
Infelizmente este exemplo não utiliza a principal funcionalidade do ESP8266 que é a conexão wifi. Próximo passo!
Mais algumas dicas: tentei trabalhar com o nodemcu LUA, mas foi muito complicado pela bagunça que os programas fizeram na velocidade da serial. jogou a velocidade a 230400 e depois a 74880, velocidade que nem estão na lista da IDE arduino. Retornando à postagem anterior, fiz a tentativa e erro com as velocidades até achar em que se encontrava (9600) e use um comando AT+ para alterar a velocidade para 115200 novamente. Lembrar que o esquema acima não permite comunicação serial com o ESP8266, devendo ser alterado para o esquema do post anterior.
CH340G
Uma observação para erros de carregamento: em um ESP-12F, tive que manter o botão flash apertado durante todo o carregamento que, assim, foi bem sucedido. Este módulo utiliza o adaptador USB-Serial CH340G agregado numa breakboard que contém os botões FLASH e RST embutidos. Deixei uma garra jacaré apertando o botão durante a carga, pois o dedo fica dolorido de tanto apertar esse botão desconfortável. Fica a dica.
Alguma coisa deu errada quando tentei repetir com a versão 1.8.5 do Arduino IDE.
Consegui corrigir, mas vai a receita de bolo, pois pode ser devido a ter utilizado um modelo diferente de CP2102.
Vários posts da Internet dão errado ou exigem vários componentes. Baseei no mais simplificado que foi em um FTDI x ESP-12, apenas invertendo RX e TX no esquema, isto é, liguei TX com TX e RX com RX, do esquema abaixo (clique para ir para a página original)
Para isso, usei um carregador de celular de 5,5 V derrubando para 3,3 V com um AMS1117, alimentando o GND e o 3.3 do esquema.
Uma curiosidade é que, em muitas vezes, o primeiro upload falhou e o segundo deu certo. Outra é que o circuito funciona sem precisar tirar ou mudar qualquer conexão, neste caso.
Uma curiosidade é que, em muitas vezes, o primeiro upload falhou e o segundo deu certo. Outra é que o circuito funciona sem precisar tirar ou mudar qualquer conexão, neste caso.
CP2102 | ESP8266 |
GND | GND + GPIO0 + GPIO15 |
TXD | TXD |
RXD | RXD |
FONTE (pós AMS1117) | ESP8266 |
VCC 3.3v | VCC + CH_PD + GPIO02 |
GND | GND |
No Arduino IDE, a configuração foi:
![]() |
Arduino 1.6.7 |
Assinar:
Postagens (Atom)