Tutorial ESP32 33/55 - Dados Digitais usando o kit de aprendizado IoT ESP32 da SunFounder

Tutorial ESP32 33/55 - Dados Digitais usando o kit de aprendizado IoT ESP32 da SunFounder

Neste tutorial, criaremos um dado digital usando um display de sete segmentos e o ESP32 do kit de aprendizado IoT da SunFounder. O projeto permitirá que você role um dado virtual, gerando números de 1 a 6 com o pressionar de um botão. Esta é uma maneira fantástica de explorar as capacidades do ESP32 enquanto aprende sobre a interface com displays e botões. Para maior clareza, não deixe de conferir o vídeo em (no vídeo em 0:00).

ESP32-33_dados-digitais-principal

Hardware Explicado

Os principais componentes para este projeto incluem o microcontrolador ESP32, um registro de deslocamento 74HC595, um display de sete segmentos e um botão de pressão. O ESP32 é um microcontrolador poderoso que integra Wi-Fi e Bluetooth, tornando-o adequado para aplicações de IoT. O registro de deslocamento 74HC595 nos permite controlar o display de sete segmentos usando menos pinos do que conectando diretamente cada segmento.

O display de sete segmentos mostra números e é controlado pelo envio de dados do registro de deslocamento. O botão de pressão é usado para acionar a rolagem dos dados, gerando um número aleatório que será exibido. Quando pressionado, o botão se conecta ao pino 13 no ESP32, que possui um resistor pull-up interno para mantê-lo em um estado alto quando não está pressionado.

Detalhes da Ficha Técnica

Fabricante Texas Instruments
Número da peça 74HC595
Tensão lógica/IO 2 V a 6 V
Tensão de alimentação 4,5 V a 5,5 V
Corrente de saída (por canal) 6 mA máximo
Corrente de pico (por canal) 35 mA máximo
Orientação sobre frequência de PWM Não aplicável
Limites de lógica de entrada VIH≥ 2 V, VIL≤ 0,8 V
Queda de tensão / RDS(on)/ saturação 0,5 V máx
Limites térmicos 150 °C
Pacote DIP-16
Notas / variantes Comumente usado em displays digitais

  • Assegure níveis de voltagem adequados (4,5 V a 5,5 V) para um funcionamento confiável.
  • Limite a corrente de saída para evitar danos ao registrador de deslocamento.
  • Utilize capacitores de desacoplamento perto dos pinos de alimentação para estabilizar a tensão.
  • Conecte o display de sete segmentos corretamente para evitar a representação incorreta de números.
  • Verifique a fiação em busca de conexões soltas que podem levar a um comportamento inesperado.

Instruções de Fiação

ESP32-33_digital-dice-wiring

Para ligar os dados digitais, comece configurando as conexões de energia. Conecte o aterramento (linha azul) na sua placa de ensaio ao pino de aterramento no ESP32 e certifique-se de que todos os pontos de aterramento estejam interconectados. Em seguida, conecte um pino de 3,3V do ESP32 ao barramento de energia (linha vermelha) na placa de ensaio.

ESP32-33_esquema-de-dados-digitais

Para o registrador de deslocamento 74HC595, certifique-se de que o pino 1 está conectado ao barramento de 3,3V e o pino 8 ao terra. Conecte o pino de saída de dados (DS) ao pino 25 no ESP32, o pino de relógio de deslocamento (SHCP) ao pino 26 e o pino de relógio de armazenamento (STCP) ao pino 27. O botão deve ser conectado entre o pino 13 no ESP32 e o terra, permitindo que ele puxe o pino para baixo quando pressionado.

Exemplos de Código e Passo a Passo

No texto, primeiro definimos os pinos usados para o registrador de deslocamento e o botão. O pino do botão é definido comobuttonPine está conectado ao pino 13 no ESP32. O array de dadosdatArraycontém as representações binárias dos números 0-9 para o mostrador de sete segmentos.


const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

No textosetup()função, definimos o pino do botão como modo de entrada e os pinos do registro de deslocamento como modo de saída. Isso prepara os pinos para ler a entrada do botão e para enviar dados para o display.


void setup ()
{
  pinMode(buttonPin,INPUT); 
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

A lógica principal do programa é encontrada noloop()função. Ela verifica se o botão está pressionado, gera um número aleatório e chama oshow_number()função para exibir o número no display de sete segmentos.


void loop()
{
  if(digitalRead(buttonPin) == LOW)
  {
    int diceNumber = random(1, 7);
    show_number(diceNumber);
    delay(50);
  }
}

Oshow_number()a função envia o valor apropriado do array de dados para o registrador de deslocamento, que então controla os segmentos do display para mostrar o número gerado. Esta função é crucial para o feedback visual quando o botão é pressionado.

74HC595 Display de LED: Segmento Sete Explicado
74HC595 Display de LED: Segmento Sete explicado

Demonstração / O que Esperar

Quando a configuração estiver concluída e o código for carregado, pressionar o botão gerará um número aleatório entre 1 e 6, que será exibido no display de sete segmentos. Se tudo estiver conectado corretamente, o display deve mostrar um número toda vez que o botão for pressionado. Tenha cuidado com entradas flutuantes; assegure-se de que o botão esteja devidamente conectado ao aterramento para evitar comportamentos erráticos (no vídeo em 1:30).

Marcos de Tempo do Video

  • 00:00 Início
  • 1:48 Introdução ao projeto
  • 3:40 Fiação para Dados Digitais Explicada
  • Código Arduino para Dados Digitais explicado
  • 19:19 Selecionando a placa ESP32 e a porta COM no Arduino IDE
  • 21:00 Demonstração de Dados Digitais
  • 22:15 Corrigindo Código Arduino

Imagens

Display de LED 74HC595: Segmento Sete explicado
Display de LED 74HC595: Segmento Sete explicado
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
Idioma: C++
Copiado!

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.