Índice:

ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: 4 etapas
ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: 4 etapas

Vídeo: ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: 4 etapas

Vídeo: ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15: 4 etapas
Vídeo: Testing ESP8266 GPIO pins for Output | ESP8266 Tutorial | Which GPIO pins to use on ESP8266 2024, Novembro
Anonim
ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15
ESP8266 usando pinos GPIO0 / GPIO2 / GPIO15

Atualização de 1 de julho de 2018 - Adicionada nota sobre reprogramação quando GPIO0 é uma saída

Esta é uma nota muito curta sobre como usar os pinos GPIO0 / GPIO2 e GPIO15 no módulo ESP8266.

Atualização: também verifique como usar os pinos ESP8266-01

Introdução

ESP8266 é um chip habilitado para wi-fi de baixo custo. Ele vem em uma variedade de tipos de módulos e pode ser programado de várias maneiras. Todos os módulos tornam o GPIO0 e o GPIO2 acessíveis. A maioria dos módulos, exceto ESP8266-01, também tornam o GPIO15 acessível. Esses GPIOs controlam como o módulo é inicializado e, como tal, requerem tratamento especial se forem usados. GPIO6-GPIO11 também requer tratamento especial, conforme descrito abaixo.

Etapa 1: Pinos GPIO do Flash - GPIO6 para GPIO11

A maioria das placas ESP8266 tem um chip flash conectado a alguns ou todos os GPIO6-GPIO11. A maioria dos programas usa memória flash, bem como RAM, portanto, a menos que você especificamente se certifique de que seu código seja executado apenas na RAM, não poderá usar esses pinos para outros fins.

O número exato de pinos usados no intervalo GPIO6 a GPIO11 depende do tipo de hardware flash usado em seu módulo. Quad IO usa 4 linhas para dados (6 pinos no total) para até 4 vezes a velocidade padrão. Dual IO usa 2 linhas para dados (4 pinos no total) O padrão usa uma única linha para dados (3 pinos no total).

A menos que você saiba exatamente o que sua placa requer, é melhor apenas ignorar GPIO6 para GPIO11 e não se referir a eles em seu código.

Etapa 2: Pinos GPIO0, GPIO2 e GPIO15

Pinos GPIO0, GPIO2 e GPIO15
Pinos GPIO0, GPIO2 e GPIO15

Esses pinos determinam em que modo o chip é inicializado.

Para a execução normal do programa, GPIO0 e GPIO2 precisam ser puxados para Vcc (3,3 V) e GPIO15 precisam ser puxados para GND, cada um com um resistor na faixa de 2K a 10K. Um resistor de 2K oferece melhor imunidade a ruídos. OLIMEX usa resistores de 2K SparkFun usa resistores de 10K. Eu uso resistores 3K3.

As configurações dessas entradas são verificadas apenas durante a inicialização (ou reinicialização) do chip. Depois disso, os pinos estão disponíveis para uso geral, mas conforme discutido abaixo, seu uso é restrito por esses resistores pull up / down externos.

Etapa 3: usando GPIO0, GPIO2 e GPIO15 como saídas

Usando GPIO0, GPIO2 e GPIO15 como saídas
Usando GPIO0, GPIO2 e GPIO15 como saídas

Conforme observado acima, esses pinos já terão um resistor conectado ao VCC (GPIO0 e GPIO2) ou GND para GPIO15. Isso determina como qualquer dispositivo externo, como um relé ou LED + resistor, deve ser conectado. Para GPIO0 e GPIO2, um relé externo deve ser conectado entre o VCC e o pino para que ele não interfira com a ação do resistor pull up. Por outro lado, um relé externo conectado ao GPIO15 deve ser conectado entre o GND e o pino para que não interfira com a ação do resistor pull down.

Para ativar o dispositivo externo, GPIO0 ou GPIO2 deve ser conduzido LOW (Active LOW) enquanto GPIO15 deve ser conduzido HIGH (Active HIGH).

O esquema acima mostra como usar GPIO0 e GPIO2 e GPIO15 como saídas. Este circuito inclui os resistores pullup / pulldown necessários também. Observe que o módulo de relé de 5 V acionado por GPIO0 é opto-isolado e tem uma conexão comum separada para a entrada. É importante que a tensão VCCA de 5 V não seja aplicada ao pino ESP8266.

Como reprogramar ao usar GPIO0 como saída

Nota: GPIO0 precisa ser aterrado para entrar no modo de programação. Se você esboçar está deixando-o alto, aterrá-lo pode danificar o chip ESP8266. A maneira segura de reprogramar o ESP8266 quando seu código conduz a saída GPIO0 é: - a) Desligue a placa b) curto GPIO0 para gnd c) ligue a placa que entra no modo de programa devido ao curto no GPIO0 d) remover o curto do GPIO0 para que você não cause um curto na saída quando o programa for executado e) reprograme a placa f) desligue e ligue a placa se necessário.

Etapa 4: Usando GPIO0, GPIO2 e GPIO15 como entradas

Usando GPIO0, GPIO2 e GPIO15 como entradas
Usando GPIO0, GPIO2 e GPIO15 como entradas

Usar esses pinos como entradas é um pouco complicado. Conforme observado acima, na inicialização e durante a reinicialização, esses pinos devem ser puxados para cima ou para baixo conforme necessário para que o módulo ESP8266 seja inicializado no modo de operação normal. Isso significa que, em geral, você não pode simplesmente conectar uma chave externa a esses pinos porque, ao ligar, você geralmente não pode garantir que a chave não puxará a entrada para o terra e, assim, evitará que o módulo seja iniciado corretamente.

O truque é não conectar o switch externo diretamente do GPIO0 ou GPIO2 ao GND, mas conectá-lo a outro pino GPIO que é direcionado ao aterramento (como uma saída) somente após a inicialização do ESP8266. Lembre-se, quando usados como saídas, os pinos GPIO fornecem uma conexão de resistência muito baixa para o VCC ou GND, dependendo se eles são acionados para ALTO ou BAIXO.

Aqui, apenas GPIO0 e GPIO2 serão considerados. Usando este método, você pode obter uma (1) entrada de adição usando esses dois (2) GPIOs.

Um método semelhante pode ser usado para GPIO15 usando outro pino GPIO para conectar sua chave a + VCC, mas isso não ganha uma entrada extra, você também pode usar o outro pino GPIO diretamente como uma entrada.

O circuito acima usa o módulo ESP8266-01 como exemplo. Sem usar esse truque, o ESP8266-01 não tem pinos livres para usar como entrada se você já estiver usando pinos RX / TX para uma conexão UART.

Uma vez que o método setup () do sketch só é executado depois que o módulo ESP8266 é inicializado, é seguro tornar a saída GPIO0 BAIXA e então fornecer um aterramento para S1 conectado ao GPIO2. Você pode então usar digitalRead (2) em outro lugar em seu esboço para ler a configuração da chave.

Conclusão

Esta breve nota mostra como usar GPIO0, GPIO2 e GPIO15 como saídas e como usar para obter uma entrada extra usando GPIO0 e GPIO2 juntos.

Recomendado: