- Materiais requisitados:
- Diagrama de circuito:
- Criando o aplicativo Android usando Processing:
- Compreendendo o Código de Processamento:
- Programando seu Arduino:
- Projeto de circuito e PCB usando EasyEDA:
- Calculando e solicitando amostras online:
- Funcionamento do visor da placa de sinalização Bluetooth:
Seja nas estradas extensas ou na porta da frente do seu médico, temos placas colocadas em todos os lugares para nos fornecer informações. Mas essas placas de sinalização geralmente são enfadonhas e não podem ser configuradas de acordo com nosso interesse de vez em quando. Portanto, neste projeto, vamos construir uma placa de sinalização controlada por Bluetooth usando um display Matrix 8 * 8. Uma característica única deste projeto é o seu aplicativo android que permite ao usuário controlar todos os 64 LEDs individualmente a partir do celular. Isso permite ao usuário criar designs personalizados com facilidade e exibi-los no display LED, parece interessante, certo? !! Então vamos começar…
Materiais requisitados:
- Arduino Pro mini
- MAX7219
- Módulo Bluetooth HC-05
- 8 * 8 LED Matrix Display
- 20k resistor
- DC Barrel Jack
Diagrama de circuito:
O diagrama de circuito esta placa de LED controlada por Bluetooth construída usando o aplicativo EasyEDA. Usaremos o mesmo esquema para desenvolver um PCB a partir dele e fabricá-lo usando o EasyEDA.
O circuito é bastante simples. Todo o projeto é alimentado por um adaptador de 12V, que é fornecido diretamente ao pino Raw da placa Arduino. Essa tensão bruta é então regulada para + 5 V, que é fornecida ao módulo Bluetooth e ao MAX7219 IC. Os pinos Tx e Rx do módulo Bluetooth são conectados ao D11 e D10 do Arduino para permitir a conexão serial.
Os pinos digitais D5 a D7 são conectados ao MAX7219 IC para enviar e receber dados por meio de comunicação SPI. O pino ISET do MAX7219 é puxado para cima através de um resistor de 20k.
Para este projeto eu fabriquei um PCB, você pode obter o arquivo de design do PCB e usar o mesmo ou construir o circuito em uma placa de ensaio. No entanto, devido à sua complexidade, é recomendado comprar um módulo de exibição 8x8 ou usar o PCB
A matriz 8x8 é um módulo de exibição muito útil e pode ser usada em muitos projetos interessantes:
- Controlando a matriz LED 8x8 com Raspberry Pi
- Exibição de texto com rolagem em matriz LED 8x8 usando Arduino
- Matriz LED 8x8 usando Arduino
- Interface de matriz de LED 8x8 com microcontrolador AVR
Criando o aplicativo Android usando Processing:
Antes de começarmos a programar nosso Arduino, devemos saber que tipo de dados receberemos do telefone móvel para respondê-los. Então, vamos dar uma olhada em como o aplicativo Android é criado e como você pode usá-lo em seu smartphone para controlar a matriz LED de 8x8.
O aplicativo Android para este projeto foi criado usando o software Processing. É um aplicativo de desenvolvimento de código aberto e pode ser facilmente baixado e colocado em uso para desenvolver projetos interessantes usando Arduino ou outros microcontroladores, uma vez que pode desenvolver aplicativos Android e aplicativos de sistema. Já realizamos alguns projetos usando o Processing e você pode conferir clicando nos links abaixo.
- DIY FM Radio using Processing
- Realidade virtual / controle de gestos usando Arduino
- Sala de bate-papo privada usando Arduino.
- Sistema de radar Arduino usando APP de processamento e sensor ultrassônico
- Detecção e rastreamento de rosto em tempo real usando Arduino
- Velocímetro DIY usando Arduino e processamento
- Jogo Ping Pong usando o acelerômetro Arduino
- Robô bípede usando Arduino
- Câmera de imagem térmica DIY Arduino
Voltando ao tópico, é impossível para mim explicar o código completo do aplicativo Android, então você teria que aprender a processar sozinho e, em seguida, olhar o código para entender como ele funciona. Portanto, para quem deseja pular o processo de aprendizagem, o Processing pode baixar o aplicativo Android no link abaixo
- Baixar aplicativo Android
Abaixo está a interface de nosso aplicativo Android:
O arquivo APK pode ser instalado diretamente em qualquer aplicativo Android e iniciado como qualquer outro aplicativo. Mas certifique-se de que seu dispositivo Bluetooth HC-05 seja denominado “HC-05”, porque só assim ele funcionará.
Compreendendo o Código de Processamento:
As pessoas interessadas em saber o que acontece atrás da tela podem ler mais; outras podem pular para o próximo título. Basicamente, o aplicativo Android se conecta a um dispositivo Bluetooth chamado “HC-05” durante a inicialização e exibe um conjunto de 64 LEDs em forma de círculos. Então, quando o usuário pressiona o círculo, o círculo fica vermelho e o número do círculo é enviado ao Arduino via Bluetooth, ao receber o número do círculo o Arduino liga o LED. Vamos examinar as linhas importantes do programa de processamento para entender melhor. O código completo do aplicativo Android pode ser baixado no link abaixo.
- Processando código para aplicativo Android
Usamos classes e objetos para exibir 64 LEDs para que possamos abordar cada um facilmente. Como você pode ver no código a seguir, usamos um loop for para iterar de 1 a 64 usando um array. Cada LED terá seu próprio valor de posição X, posição Y e cor e podemos alterá-los facilmente.
// exibe todos os leds para (int i = 1; i <= 64; i ++) led_array.display (); // Todos os leds exibidos class Led { float X_Pos; float Y_Pos; color color; // CONSTRUTOR Led (float tempx, float tempy, cor tempc) { X_Pos = tempx; Y_Pos = tempy; color = tempc; } void display () { preencher (cor); elipse (X_Pos, Y_Pos, led_dia, led_dia); } }
Os LEDs são carregados na tela na mesma ordem do display. Cada LED é separado por uma distância igual ao diâmetro do LED, desta forma podemos distinguir facilmente qual LED está atualmente selecionado pelo usuário. Conforme mostrado no programa abaixo, criamos um array no qual cada elemento contém as informações da posição X, Y e cor do LED.
void load_leds () { led_array = novo Led; int a = 1; para (int j = 0; j <= 7; j ++) { float y = altura / 6 + j * (led_dia * 1,5); para (int i = 0; i <= 7; i ++) { float x = (largura / 6) + i * (led_dia * 1,5); // preencher (255); // elipse (x, y, led_dia, led_dia); led_array = novo Led (x, y, cor (255.255.255)); a ++; } } }
O principal passo no programa é verificar se o usuário pressionou algum LED e em caso afirmativo temos que alterar a cor do LED e enviar o número do LED via Bluetooth. Como agora podemos abordar a localização e a cor de cada LED facilmente, podemos fazer isso apenas comparando os valores X, Y de onde o usuário pressionou com o valor X, Y dos LEDs. Se os valores se fundirem, alteramos o estado do LED e também enviamos o número por Bluetooth, conforme mostrado abaixo.
// verifique se o mouse está sobre o led // Se sim, envie o número do led para (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos - led_dia / 2)) && (mouseY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos - led_dia / 2))) {led_array = novo Led (led_array.X_Pos, led_array. Y_Pos, led_color); dados de byte = {byte (i)}; bt.broadcast (dados); } }
Além disso, o programa também pode redefinir o LED completo desligando todos eles e você também pode fazer um LED ficar vermelho (ON) ou branco (OFF), então também temos um botão de alternância para isso. O botão de alternância é exibido e aguarda a entrada. Se pressionado, a ação respectiva será executada. O código para fazer o mesmo é mostrado abaixo como uma função chamada dentro do loop de desenho.
void load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); preencher (# 1BF2D4); rect (largura / 2-largura / 4, altura / 1,3, largura / 4, altura / 12); preencher (0); texto ("Reiniciar", largura / 2-largura / 4, altura / 1,3); // botão 1 if (red == true) {fill (# 080F89); rect (largura / 2 + largura / 4, altura / 1,3, largura / 4, altura / 12); preencher (255,0,0); text ("RED", width / 2 + width / 4, height / 1.3);} // botão 2 if (red == false) {fill (# 080F89); rect (largura / 2 + largura / 4, altura / 1,3, largura / 4, altura / 12); preencher (255); text ("WHITE", width / 2 + width / 4, height / 1.3);} // botão 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; if (color_val == - 14945580) { dados de byte = {0}; bt.broadcast (dados); println ("RESET"); load_leds (); // carrega todos os led na posição e cor } if (color_val == - 16248951) { byte data = {100}; bt.broadcast (dados); if (red == true) red = false; senão if (red == false) red = true; println ("TOGGLE"); } color_val = 0; } }
Programando seu Arduino:
O programa Arduino completo para este projeto de placa sem fio controlada por Bluetooth é fornecido na parte inferior desta tela; você pode usá-lo diretamente e carregá-lo em seu quadro. As linhas importantes do programa são explicadas a seguir.
O módulo Bluetooth está conectado aos pinos 10 e 11, portanto, temos que usar o software serial para habilitar a comunicação serial nesses pinos e então podemos ouvir os dados desses pinos. Pegamos os dados recebidos do módulo Bluetooth e os salvamos em uma variável chamada de entrada . Se o valor de entrada for "0", desligaremos todos os LEDs usando o código abaixo
if (BT.available ()) { entrando = BT.read (); Serial.println (entrada); if (entrando == 0) m.clear (); // Limpa a tela
Usando os valores de entrada , temos que determinar qual LED o usuário pressionou no telefone celular e o clima para LIGAR ou DESLIGAR esse LED. Portanto, verificamos se o valor é igual a 100. Se o valor for 10, significa que o usuário pediu para alternar a cor do LED. Assim, alternamos a variável vermelha para saber se o LED deve ser ligado ou desligado.
else if (entrando == 100) // Verificar se devemos ligar ou desligar o LED { if (red == true) red = false; senão if (red == false) red = true; Serial.print ("RED:"); Serial.println (vermelho); }
Finalmente, se o valor for superior a 65, significa que o usuário pressionou um LED. Com base no número de 1 a 64, temos que determinar qual LED o usuário pressionou. Para alternar esse LED, precisaremos do valor da linha e da coluna desse LED, que é calculado e armazenado nas variáveis X e Y respectivamente e mostrado no código abaixo. Finalmente, com base no valor da variável vermelha, ligamos ou desligamos o LED de acordo com a solicitação do usuário
else if (entrada <= 64) {// Calcular onde ON ro OFF o LED de alternância = true; Y = entrada / 8; X = entrada - (Y * 8); if (entrada% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); if (red == true) m.setDot ((X - 1), (Y), true); // LED ON else if (red == false) m.setDot ((X - 1), (Y), false); // LED OFF }
Projeto de circuito e PCB usando EasyEDA:
Para projetar este visor de matriz controlada por Bluetooth, escolhemos a ferramenta EDA online chamada EasyEDA. Eu já usei EasyEDA muitas vezes e achei muito conveniente usar, pois tem uma boa coleção de pegadas e é de código aberto. Depois de projetar o PCB, podemos solicitar as amostras de PCB por seus serviços de fabricação de PCB de baixo custo. Eles também oferecem serviço de fornecimento de componentes, onde têm um grande estoque de componentes eletrônicos e os usuários podem solicitar seus componentes necessários junto com o pedido de PCB.
Ao projetar seus circuitos e PCBs, você também pode tornar seus circuitos e projetos de PCB públicos para que outros usuários possam copiá-los ou editá-los e possam tirar proveito de seu trabalho. Também tornamos públicos todos os nossos circuitos e layouts de PCB para este circuito, verifique o link abaixo:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Você pode visualizar qualquer camada (superior, inferior, superior, inferior, etc.) do PCB selecionando a camada da janela 'Camadas'.
Você também pode ver o PCB, como ficará após a fabricação usando o botão Photo View no EasyEDA:
Calculando e solicitando amostras online:
Depois de concluir o design desta PCB de matriz controlada por Bluetooth, você pode solicitar a PCB em JLCPCB.com. Para solicitar o PCB do JLCPCB, você precisa do Arquivo Gerber. Para baixar os arquivos Gerber do seu PCB, basta clicar no botão Saída de Fabricação na página do editor EasyEDA e, em seguida, fazer o download na página de pedido do PCB do EasyEDA.
Agora vá para JLCPCB.com e clique em Quote Now ou no botão, então você pode selecionar o número de PCBs que deseja pedir, quantas camadas de cobre você precisa, a espessura do PCB, o peso do cobre e até mesmo a cor do PCB, como o instantâneo mostrado abaixo:
Depois de selecionar todas as opções, clique em “Salvar no carrinho” e então você será levado à página onde poderá fazer o upload do seu arquivo Gerber, que baixamos do EasyEDA. Carregue seu arquivo Gerber e clique em “Salvar no carrinho”. E, finalmente, clique em Check-out com segurança para concluir seu pedido e, alguns dias depois, você receberá seus PCBs. Eles estão fabricando o PCB a uma taxa muito baixa, que é de US $ 2. Seu tempo de construção também é muito menor, que é de 48 horas com entrega DHL de 3-5 dias, basicamente você receberá seus PCBs dentro de uma semana após o pedido.
Depois de alguns dias pedindo PCBs, recebi as amostras de PCB em uma bela embalagem, conforme mostrado nas fotos abaixo.
E depois de obter essas peças, soldei todos os componentes necessários no PCB.
Na minha PCB, cometi um erro grave ao selecionar a base errada para o módulo de tela 8 * 8, portanto, tive que usar uma placa Perf para montar a tela, conforme mostrado na imagem. Mas agora a pegada é atualizada no PCB e você pode solicitar o PCB corrigido e montar o módulo de exibição com facilidade.
Funcionamento do visor da placa de sinalização Bluetooth:
Quando estiver pronto com o Hardware, seja obtendo o PCB ou fazendo a conexão na placa de ensaio, use o programa Arduino fornecido no final da página e carregue-o na placa Arduino. O arquivo APK do aplicativo Android também é fornecido acima, use-o e instale o aplicativo no seu dispositivo Android preferido.
Ligue o hardware e procure o nome do dispositivo HC-05 em seu telefone para emparelhar com ele. A senha será 1234 por padrão. Depois disso, abra o aplicativo que acabamos de instalar. O aplicativo deve exibir “ conectado ao HC-05 ” na parte superior da tela, então você poderá tocar no LED da tela e perceber que o mesmo LED também está sendo aceso na placa.
Você também pode desligar todos os LEDs pressionando o botão Reset e decidir ligar ou desligar um determinado LED pressionando o botão Alternar. Por padrão, qualquer LED que você pressionar será ligado. O funcionamento completo do projeto pode ser conferido no vídeo abaixo. Se você tiver qualquer problema em fazê-lo funcionar, use a caixa de comentários abaixo ou escreva em nossos fóruns para obter mais ajuda técnica. Espero que você tenha entendido o tutorial e gostado de criá-lo.