IoT com módulo WiFi Esp8266 – Básico

IoT com ESP2866

IoT com ESP2866

Neste artigo vamos falar sobre o módulo WiFi ESP8266 ESP-01. Trata-se de um componente que se popularizou rapidamente nos últimos anos por tornar fácil e prático a integração de redes WiFi e conecções TCP/IP em projetos eletrônicos. Neste post cobrimos aspectos básicos do funcionamento e programaçção. Em um post de continuação, uma aplicação avançada é desenvolvida para controlar cargas residenciais pela internet.

Introdução ao módulo WiFi Esp8266

O ESP8266 é um módulo WiFi de baixo custo compatível com Arduino e com stack TCP/IP integrado. Um dos pontos mais interessantes do módulo é que a placa vem integrada com um MCU, o que dá a possibilidade de embarcar códigos na placa para controlar seus pinos e funcionamento sem a necessidade de um MCU externo.

Assim, em geral a interface Arduino é usada apenas na etapa de programação. Mas em funcionamento real o ESP não precisa estar conectado ao Arduino ou a qualquer outra placa de controle. Você pode usar o arduino também para expandir as capacidades do seu projeto e ter mais flexibilidade.

Módulo ESP2866

FIgura 1: Módulo ESP2866

O ESP8266 é projetado pela Espressif Systems, uma empresa fabless(sem fábrica própria) de produtos wireless de Shangai. A fabricação em si é feita pela AI-Thinker. O tamanho pequeno e o preço reduzido fizeram com que o módulo atraísse a atenção de projetistas rapidamente. Com ele é possível se conectar a uma rede WiFi e criar conexões TCP/IP de forma simples e prática.

Várias versões do módulo são produzidas, cada qual com especificações técnicas diferentes. Projetos utilizando o ESP8266 é o que não falta. A internet possui um acervo já bastante respeitável, e ao final do artigo, na seção de referências, estão alguns exemplos bem interessantes para se aprofundar um pouco mais.

Pinagem do módulo ESP8266

A versão da figura 1(introdução) é uma das mais simples, com 8 pinos disponibilizados no módulo. Uma versão mais robusta é o ESP8266 NodeMcu ESP-12, que tema 30 pinos na placa e alcance um pouco mais que os modelos mais simples(veja na figura abaixo).

ESP8266 NodeMcu ESP-12

ESP8266 NodeMcu ESP-12

Para esse artigo introdutório vamos usar o ESP-01.  Esse módulo conversa com o microcontrolador pela interface serial.  Possui ainda 2 pinos GPIO que permitem que o módulo seja programado diretamente. A figura abaixo mostra o módulo e sua pinagem:

ESP01

ESP01

Os pinos são os seguintes:

Pinout ESP-01

Pinout ESP-01. Créditos: thegaragelab

Programação e especificações

O módulo é pre-programado com o famoso set de comandos AT, o que significa que você pode usar o Arduino ou outro controlador qualquer(incluindo o do próprio módulo) para controlar as capacidades WiFi de forma fácil e prática.

As capacidades de processamento da placa também são boas, considerando o seu tamanho reduzido, o que permite integrar sensores e outros equipamentos diretamente com o módulo(com as devidas interfaces e condicionamento sempre que necessário).

Antes de falarmos dos aspectos de hardware já alertamos que, tal como vários outros componentes, o ESP8266 opera com 3.3V. Se você tem um circuito de 5V, é necessário usar um conversor lógico e disponibilizar uma alimentação de 3.3V.

Outro ponto importante é que a placa é independente de componentes RF externos. O módulo vem com uma antenna integrada na própria placa(trata-se da trilha em formato de onda quadrado em uma das extremidades da placa). Algumas versões possuem antena de cerâmica on-board e outras vem com um conector para conectar com antenas externas e expandir o alcance da rede.

Descrição do projeto

Nesse exemplo vamos ligar o ESP-01 ao Arduino e usá-lo para enviar comandos AT. Vamos apresentar os principais comandos, como para colocar o módulo com AP(Acess Point) e STA(Station) e enviar e receber dados pela internet.

Aspectos de Hardware

A montagem de hardware é bem simples. Siga as conexões da imagem abaixo:

Montagem ESP01 e arduino

Montagem ESP01 e arduino

Por praticidade, usamos divisores de tensão para adequar os níveis lógicos, mas você também pode usar um conversor específico. Repare que os pinos de GPIO e RST estão desconectados.

Outra coisa é que nessa montagem o Arduino é usado apenas como interface serial com o computador. Veja que conectamos o ESP à porta serial do Arduino. Você também pode usar um módulo conversor USB para RS232 próprio, como FTDI. Nesse caso, sua montagem ficará como a mostrada neste artigo.

Para comandar o módulo via comandos AT, como vamos fazer, basicamente o que precisamos é conectar a interface serial do módulo com a do Arduino, de forma que possamos enviar strings com os comandos AT pelo terminal serial da IDE Arduino.

Aspectos de software

Como o objetivo é apenas enviar comandos AT manualmente, de forma que possamos entender como o ESP-01 conversa com o microcontrolador, não é necessário escrever um código específico. Com as conexões que usamos, vamos apenas energizar o arduino e usar o terminal serial da IDE.

Como os pinos TX e RX que estamos usando são os que o Arduino usa para comunicar com seu próprio microcontrolador, conseguimos enviar os comandos diretamente.

Caso você utilize outros pinos para fazer a conexão serial, aí sim é necessário escrever um pequeno programa para receber os caracteres e enviá-los para o módulo, e também exibir as strings de resposta no terminal serial.

Então, se você fez a montagem certa, basta abrir a IDE, abrir o terminal serial e proceder conforme os próximos passos. Para ter certeza que os pinos da porta serial não estão sendo usados por nenhuma aplicação previamente gravada, sugerimos que você carregueo exemplo “BareMinimum”, que pode ser acessado na IDE na aba File -> Examples -> Basics -> BareMinimum.

Um ponto de atenção é que o ESP-01 talvez não esteja com o firmware correto para usar com os comandos AT. Caso você tenha qualquer problema com os passos da próxima seção, depois de conferir as ligações, o próximo passo é gravar a SDK mais atual para utilização dos comandos AT.

O processo para gravar um novo firmware no ESP é explicado neste outro post. Vale a pena conferir pois o processo de atualizar o firmware AT não é tão bem explicado na internet(muitas referências usam ferramentas diferentes das recomendadas pelo fabricante e não explicam como identificar os arquivos binários e os respectivos endereços de memórias para serem usados).

Conversando com o módulo ESP-01 por meio de Comandos AT

Vamos começar pelo teste básico. Com o terminal serial aberto, digite:

  • AT

Como resposta você deve receber um “Ok”. Isso significa que o ESP-01 entendeu o comando e que está tudo certo para continuar a comandá-lo. O módulo possui três modos de operação básicos:

  • Access Point (AP);
  • Station (STA);
  • Ambos STA e AP;

No modo AP, o ESP atua como um access point, permitindo que outros dispositivos se conectem a ele. Mas isso não significa que você pode, por exemplo, acessar o seu site pessoal pelo ESP-01 em AP mode. Nesse modo de operação ele simplesmente estabelece um canal de comunicação com outro dispositivo por meio do protocolo WiFi.

No modo STA, o ESP pode se conectar a um AP, como o modem de internet da sua casa. Isso permite que o seu dispositivo possa se comunicar com qualquer outro equipamento que também faça parte da rede local.

No terceiro modo de operação o módulo funciona tanto como AP como STA.

Para setar o módulo para operar em um desses três modos, usa-se o comando:

  • AT+CWMODE=X

Em que X corresponde ao modo de operação: STA = 1, AP = 2, Ambos = 3. Por exemplo, vamos setar o módulo para operar como STA, então, devemos enviar o comando:

  • AT+CWMODE=1

Para checar em qual modo de operação o módulo está configurado, o comando é:

  • AT+CWMODE?

Veja na imagem abaixo como o seu terminal serial deve ficar:

Comandos AT 1

Comandos AT – Primeiro passo

Como se conectar a uma rede com o ESP-01

Para se conectar a uma rede, são dois passos. Primeiro checar se já alguma conexão ativa com o comando:

  • AT+CIFSR

Se um endereço IP foi exibido é porque o módulo está conectado àquela estação. De fato, esse é o endereço IP do módulo. Se não houver nenhum IP(tudo zerado), você pode se conectar a uma rede com o comando:

  • AT+CWJAP= “NomeDaRede”,“Senha”

Basta inserir o nome da rede e a senha nos campos indicados do comando. As aspas duplas fazem parte do comando. Se tudo correr bem você receberá um ok como resposta.

Há ainda o comando:

  • AT+CIPSTATUS

Ele mostra qual o status da conexão. Na imagem abaixo, a resposta para esse comando foi 5, o que significa que ele não está conectado, como já esperávamos.

Comandos AT - Passo 2

Comandos AT – Passo 2

Na imagem abaixo, nos conectamos à rede “Eletrogate”, que no caso não tem senha(rede aberta, sem seguranã WPS)

Conectando a uma rede com ESP01

Configurar o ESP-01 como servidor

Até aqui, nos deixamos o módulo no modo STA e nos conectamos a uma rede local. Agora, para configurá-lo como servidor, primeiro termos que habilitá-lo para permitir múltiplas conexões. Isso é feito pelo comando:

  • AT+CIPMUX=X

Em que X é 0 para apenas uma conexão, e 1 para múltiplas conexões. Em seguida, configuramos a porta com o seguinte comando:

  • AT+CIPSERVER=1,80

O número 1 significa que queremos o módulo como Open Server Mode. Se fosse 0, estaríamos configurando para Close Server Mode. O número 80 é o número defaut da porta do protocolo HTTP. Se você abrir um browser e digitar o endereço IP do seu módulo ESP, uma tela semelhante à mostrada abaixo irá aparecer no terminal serial:

Comandos AT com o ESP-01

Enviando dados para o browser

Com as configurações feitas, podemos enviar comandos e exibir dados no browser. Para isso utiliza-se o comando:

  • AT+CIPSEND=0,9

O 0 indica o canal que será usado para enviar os dados. 5 é o número de caracteres que será enviado. No nosso caso, vamos enviar a mensagem “Olá Mundo”. Após enviar o comando, um símbolo de  “>” irá aparecer. Isso quer dizer que você pode digitar os caracteres que deseja enviar.

Se você receber a mensagem “SEND OK”, a transmissão foi feita com sucesso. Para que a mensagem seja exibida, é preciso antes fechar o canal de comunicação. Use o comando:

  • AT+CIPCLOSE=0

Ao enviar esse comando a mensagem “Olá mundo” será exibida no browser como mostrado abaixo:

Mensagem "Ola Mundo" no ESP-01

Mensagem “Ola Mundo” no ESP-01

Recebendo dados enviados pelo celular

Para enviar dados para o ESP vamos usar o aplicativo Mobile Telnet para Android.

Faça o dowload e instale o aplicativo. Na tela inicial, vá em “Telnet Settings” e entre com o IP do seu ESP01 e a porta que você usou para configurá-lo como servidor.

Abrindo a tela de configurações no Telnet

Para se conectar ao ESP-01, insira os dados como na imagem abaixo.

Conectando ao ESP-01 pelo Mobile Telnet

Clique em Ok após preencher os dados e depois abra nova a aba de menus(três pontinhos no canto superior direito) e selecione “Connect”. A tela abaixo será mostrada, agora você pode enviar informações que elas apareceram no monitor Serial no qual o ESP está conectado.

Na tela serial, você receberá todas as mensagens enviadas.

Dados recebidos pelo ESP-01

Bacana, né! Por fim, para conhecer o set de comandos completo, acesse este link. É bastante recomendado que você dê uma boa lida nesse documento e também no AT Examples, ambos da Espressif Systems.

Considerações finais

Na segunda parte desse post vamos fazer uma aplicação em automação residencial. Vamos usar o ESP-01 para controlar cargas pela internet. Agora que você já conhece o módulo e sabe como funciona os principais comandos AT, tudo ficará mais fácil. Para algumas aplicações avançadas já existem algumas bibliotecas desenvolvidas, também vamos usá-las para incrementar os projetos.

Se tiver alguma dúvida, sugestão ou correção, deixe nos comentários. Até lá!

Referências:

Avaliações: 5.0. de 2 votos.
Por favor, aguarde...
Vitor Vidal
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.