Módulos Wifi

Placa de Desenvolvimento Arduino Uno WiFi

Eletrogate 24 de maio de 2022

Introdução

Desde seu lançamento, em 2010, a placa Arduino Uno R3 + Cabo Usb para Arduino é o membro mais conhecido e usado da família. Sua difusão em meio à comunidade maker foi um marco que contribuiu para o desenvolvimento de diversos projetos e para a entrada de diversas pessoas neste meio. Existem diversas shields espacialmente dimensionadas especificamente para encaixar nele e diversas bibliotecas configuradas para sua pinagem. Por isso, mesmo com a disponibilidade de chips bem mais poderosos, o Uno continua sendo uma opção privilegiada na hora de definir o controlador de seu projeto. Na verdade, em diversos casos a placa Uno é a única opção viável para o projeto devido à restrição que os demais membros do sistemas trazem em relação a outras placas ou chips.
Já em 2014, uma nova placa chamou a atenção da comunidade maker: o Módulo WiFi Serial ESP8266 ESP-01. Muito mais poderoso do que o Arduino Uno, o chip ESP8266 integra acesso a rede WiFi, opera em 32 bits, possui maior capacidade de memória RAM e, geralmente, acompanha memórias FLASH de alguns MB. Entretanto, consome, em condições usuais, maior corrente, possui menos entradas analógicas e apresenta mais detalhes e complicadores para a programação do que o ATmega328p. A Uno WiFi, nova em nossa loja, une a praticidade de interação com módulos e sensores externos, apresentada pelo Arduino Uno, à capacidade de se conectar ou gerar uma rede WiFi, proporcionada pelo ESP8266.

Posts introdutórios sobre o Arduino Uno:

O que é Arduino: Para que serve, vantagens e como utilizar

O que é Arduino: Afinal, para que serve o Arduino?

Programação com Arduino – Parte 1

Programação com Arduino – Parte 2

Posts introdutórios sobre o ESP8266:

NodeMCU – ESP12: Guia completo – Introdução (Parte 1)

Módulos WIFI na IDE Arduino


Especificações e Pinagem

ATmega328p:

  • Tensão de operação: 5 V;
  • Clock: Cristal 16 MHz;
  • Memória flash disponível: 31.5 kB;
  • Memória RAM: 2 kB;
  • Memória EEPROM: 1 kB;
  • Comunicação: I2C, SPI e UART
  • Conectores da placa (pinos fêmea na configuração padrão do Arduino Uno):

    • Alimentação direta: 5 V;
    • Referencia de I/O para circuitos externos: IOREF;
    • Tensão de referencia para o ADC: AREF;
    • Reset (quando em nível baixo): RST;
    • Entradas analógicas: 6 (A0 a A5);
    • Entradas/Saídas digitais: 14 (0 a 13)
    • Saídas PWM: 6.

ESP8266:

  • Tensão de operação: 3.3 V;
  • Clock: 26 MHz;
  • Memória flash indicada pela IDE: 4 MB;
  • Memória RAM: 50 kB;
  • Comunicação disponível: I2C (emulada em software) e UART;
  • Conectores da placa (pinos macho indicados por ESP pins):

    • Alimentação direta (VCC): 3.3 V;
    • Entradas/Saídas digitais: 7;
    • Reset (quando em nível baixo): RST;
    • Chip Select (necessário manter em nível alto para funcionamento): CH_PD;
    • Entrada analógica: TOUT (tensões entre 0 e 1 V);

Pinagem

 

Pinagem da Uno WiFi. Os pinos externos, do tipo fêmea, possuem função idêntica à dos respectivos na Uno comum. São 12 pinos disponíveis para o ESP, arranjados em 3 linhas com 4 colunas. Da esquerda pra direita e de cima para baixo, sendo o primeiro o que está mais próximo ao centro da placa, estes correspondem aos seguintes pinos do chip: Reset, CH_PD, GPIO2, GPIO4, Vcc, GPIO16, GPIO12, TXD, TOUT, RXD, GPIO0 e GND.

Pinagem da placa


Pisca LED - ATmega328p

Para essa demonstração, utilizaremos um LED externo conectado ao pino digital 10 e a um resistor de 220 ohm. O código pode ser visto abaixo:

void setup() {
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
}

void loop() {
  digitalWrite(10, !digitalRead(10));
  delay(500);
}

Para carrega-lo no ATmega328p, devemos utilizar a seguinte configuração nas chaves seletoras presentes na placa:

Chave12345678
PosiçãoOFFOFFONONOFFOFFOFFX

Com as chaves posicionadas, basta conectar a placa ao computador por meio de um cabo USB. Importante: Essa placa utiliza o conversor CH340, para o qual a IDE não apresenta, nativamente, driver. Este pode ser encontrado em: https://sparks.gogo.co.nz/ch340.html

Na tela de seleção de placas da IDE, deve ser escolhida a opção “Arduino Uno”, não “Arduino Uno WiFi”. A placa Arduino WiFi sobre a qual a segunda opção se refere é outra, com outro chip controlador.

seleciona

Seleção da placa

Após compilar e carregar o código, o resultado abaixo será obtido:


Pisca LED - ESP8266

Para essa demonstração, utilizaremos um LED externo conectado ao pino digital 16 e a um resistor de 220 ohm. O código pode ser visto abaixo:

void setup() {
  pinMode(16, OUTPUT);
  digitalWrite(16, HIGH);
}

void loop() {
  digitalWrite(16, !digitalRead(16));
  delay(500);
}

Para carrega-lo no ESP8266, devemos utilizar a seguinte configuração nas chaves seletoras presentes na placa:

Chave12345678
PosiçãoOFFOFFOFFOFFONONONX

Com as chaves posicionadas, basta conectar a placa ao computador por meio de um cabo USB. Importante: Essa placa utiliza o conversor CH340, para o qual a IDE não apresenta, nativamente, driver. Este pode ser encontrado em: https://sparks.gogo.co.nz/ch340.html

Na tela de seleção de placas da IDE, selecione “Generic ESP8266 Module”. Caso a opção não esteja disponível, siga o tutorial deste link para habilita-la.

seleciona

Seleção da placa

Após compilar e carregar o código, para que o ESP execute o programa, é necessário ajustar a configuração das chaves para a seguinte:

Chave12345678
PosiçãoOFFOFFOFFOFFONONOFFX

Assim, pode-se observar o seguinte funcionamento:


ATmega328p + ESP8266

Ambos processadores podem ser usados ao mesmo tempo, como mostra o vídeo:

Comunicação entre os microcontroladores

Na própria placa, há vias conectando os pinos das UART dos microcontroladores, eliminando a necessidade de jumpers. Para habilitar a comunicação entre os chips, as chaves devem estar na seguinte configuração:

Chave12345678
PosiçãoONONOFFOFFOFFOFFOFFX

Para essa demonstração, utilizaremos o seguinte código no ATmega328p:

void setup() {
  pinMode(10, OUTPUT);
  Serial.begin(9600);
  digitalWrite(10, LOW);
}

void loop() {
  if(Serial.available())
    if(Serial.read() == 'X')
      digitalWrite(10, !digitalRead(10));
}

E, no ESP8266, o seguinte:

void setup() {
  pinMode(16, INPUT);
  Serial.begin(9600);
}

void loop() {
  if(!digitalRead(16))  {
    delay(50);
      if(!digitalRead(16))  {
        Serial.write('X');  
        while(!digitalRead(16)); }
  }
}

Com os programas carregados e as chaves ajustadas, o comportamento do sistema será o seguinte:


Por Fim

Vimos que, com a placa Uno WiFi, é possível, de forma compacta, integrar o chip ATmega328p ao ESP8266, unindo grande capacidade de processamento e funcionalidades Wireless a disponibilidade de pinos para interface externa. Todas as funcionalidades do ESP8266 são mantidas nesta placa, incluindo criação de AP e conexão como STA. Além disso, vale reparar que o chip opera sem a necessidade de nível lógico alto ser colocado nos pinos RST e CH_PD da placa. Isso decorre do fato de existirem resistores de pull-up na PCB que ligam a tensão de alimentação aos respectivos pinos do chip.

Por hoje, é isso! Não deixe de compartilhar e nos marcar, nas redes sociais, seus projetos utilizando essa placa. Havendo dúvidas, deixe-as nos comentários, abaixo. Até a próxima!

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


Eduardo Henrique

Formado técnico em mecatrônica no CEFET-MG, atualmente estuda Engenharia de Controle e Automação na UFMG.


Eletrogate

24 de maio de 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!