Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

UltrasonicEyes

Componentes e suprimentos

Sensor ultrassônico - HC-SR04 (genérico)
× 2
Arduino Nano R3
× 1
Resistor de foto
× 1
Maxim Integrated 8x8 LED Matrix MAX7219
× 2
Tábua de pão sem solda meio tamanho
× 1
Fios de jumpers (genérico)
× 1
Resistor 330 ohm
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Eu queria fazer um projeto peculiar usando alguns LEDs de matriz 8x8 e alguns sensores ultrassônicos ... algo diferente do que outras pessoas costumam fazer com ultrassom - e queria que fosse divertido e lúdico.

Então, criei o que chamo de UltrasonicEyes - um projeto divertido em que você se senta em algum lugar perto de onde as pessoas se movem e olha ao redor onde as pessoas estão, e pisca e bem, só te deixa estranho de uma forma divertida e assustadora!





O que precisamos?


Módulos de sensores ultrassônicos são projetados para detectar obstáculos e determinar a distância do obstáculo, portanto, geralmente têm uma distância de detecção de até 3-4 metros, que é uma boa distância para este projeto ser colocado dentro de uma sala de estar ou escritório área.

Estou usando 2 módulos HC-SR04 que peguei no e-Bay. Você pode achá-los muito baratos.

Os módulos são bastante simples de usar e requerem apenas 3 ou 4 fios para se conectar a um microcontrolador Arduino.

Os módulos Matrix led 8x8 que escolhi usar permitem o encadeamento, portanto, apenas um deles precisa ser conectado ao Arduino e o segundo módulo se conecta ao primeiro.

Os módulos usam SPI, portanto, exigimos apenas 5 fios para ir ao Arduino para controlar as imagens dos olhos em ambos os monitores. Precisamos de dois deles, é claro!

NOTA: O código fornecido usa Hardware SPI , então, se você estiver usando uma placa Arduino diferente da Nano, verifique quais dos pinos são pinos SPI de hardware para MOSI e SCK e conecte-os de acordo!

Você também precisará de algum tipo de microcontrolador compatível com o Arduino. Estou usando um Nano (compatível) porque é pequeno o suficiente para caber no case, tem USB para ligar / programar o firmware e tem um stack de GPIO's para conectar tudo também.

Soldei tudo em uma protoplaca do mesmo tamanho de uma meia placa de ensaio, mas recomendo que você apenas construa tudo em uma placa de ensaio de meio tamanho primeiro, pois dessa forma o projeto não requer solda e pode ser facilmente desmontado ou mudado.

As últimas coisas de que você precisa são um LDR (foto resistor) para detectar luz, um resistor de 330 ohm e um monte de fios de placa de ensaio, tanto macho para fêmea, quanto fêmea para fêmea.

NOTA: Você pode usar fios de qualquer cor neste projeto ... não há requisito para usar as mesmas cores que eu especificar, mas , é sempre uma boa prática usar vermelho e preto para POWER e GND e usar outras cores para outros fios, pois torna muito fácil identificar quais fios têm energia passando por eles e quais fios estão sendo usados ​​para dados e sinais.





Juntando tudo


Vamos começar conectando o Nano na placa de ensaio bem no final para que o USB fique pendurado na borda, mas ainda mantendo todos os pinos plugados na placa.





Conexões POWER e GND


Agora conecte um fio preto da conexão GND no Nano ao trilho GND na placa de ensaio. Agora faça o mesmo com um fio vermelho, conectando os 3 V (ou 5 V se for tudo o que você tem) ao trilho POWER na placa de ensaio.

Enquanto estamos trabalhando no GND e POWER, vamos conectar um fio preto entre os dois trilhos GND em cada lado da placa de ensaio. Faça o mesmo com um fio vermelho e os dois trilhos POWER.

* Nota: Alguns painéis de LED de matriz podem exigir 5 V em vez de 3,3 V, dependendo da marca. Se você achar que os resultados não são confiáveis, tente usar o pino de 5 V do Arduino.





Vamos conectar os sensores ultrassônicos


Conecte um fio preto entre os pinos GND em cada um dos sensores ultrassônicos ao trilho GND na placa de ensaio. Faça o mesmo com um fio vermelho e os pinos VCC (POWER) nos sensores e o trilho POWER na placa de ensaio.

Agora vamos conectar os seguintes fios branco e azul:
  • Fio branco do pino TRIG no sensor 1 ao pino digital 2 no Arduino
  • Fio azul do pino ECHO no sensor 1 ao pino digital 3 no Arduino
  • Fio branco do pino TRIG no sensor 2 ao pino digital 4 no Arduino
  • Fio azul do pino ECHO no sensor 2 ao pino digital 5 no Arduino

Bom trabalho! Cuidado com os sensores ultrassônicos!





Conectando os dois visores de matriz LED 8x8


Conecte um fio preto entre o pino GND de entrada em um dos visores de matriz de LED ao trilho GND na placa de ensaio. Faça o mesmo com um fio vermelho e o pino VCC (POWER) de entrada na tela e o trilho POWER na placa de ensaio.

Conecte um fio preto entre o pino GND de saída da tela um e o pino GND de entrada na tela dois. Faça o mesmo com um fio vermelho e o pino VCC de saída no monitor um e o pino VCC de entrada no monitor 2.

Enquanto conectamos os fios entre os 2 monitores, vamos terminar essa parte ...
  • Conecte um fio amarelo entre o pino SCK (relógio) de saída no monitor um e o pino SCK de entrada no monitor dois.
  • Conecte um fio azul entre o pino MOSI (dados) de saída no monitor um e o pino MOSI de entrada no monitor dois.
  • Conecte um fio branco entre o pino CS de saída (Selecionar) no monitor um e o pino CS de entrada no monitor dois.

Excelente! Agora vamos conectar o resto da tela um à placa de ensaio ...
  • Conecte um fio amarelo entre o pino SCK de entrada no monitor um e o pino digital 13 no Arduino.
  • Conecte um fio azul entre o pino MOSI de entrada no monitor um e o pino digital 11 no Arduino.
  • Conecte um fio branco entre o pino CS de entrada no monitor um e o pino digital 10 no Arduino.

LEMBRE-SE: O código fornecido usa Hardware SPI , então, se você estiver usando uma placa Arduino diferente da Nano, verifique quais dos pinos são pinos SPI de hardware para MOSI e SCK e conecte-os de acordo!

Bem feito. Agora para as etapas finais de fiação ...





Conectando o LDR e o resistor para detectar a luz ambiente


Antes de conectarmos esses fios, por que estamos realizando esta etapa? Bem, estou feliz que você perguntou! O LDR conectado ao Arduino nos permitirá detectar se está claro ou escuro ao redor do UltrasonicEyes e usaremos essa informação para iluminar ou escurecer os displays de LED de acordo.

Não queremos as telas super brilhantes à noite como em luz mais escura, ainda podemos ver as telas muito bem quando o brilho está em torno de 30%, mas à luz do dia, ou em uma sala iluminada, precisamos aumentar o brilho para tornar as telas mais visíveis.

Ok, vamos concluir esta última etapa para que possamos passar para colocá-la no caso 3D!

Conecte o LDR em 2 fileiras de pinos na placa de ensaio, assim como no diagrama de fiação acima. Deixe espaço para colocar o resistor e um fio que irá para o Arduino.

Conecte o resistor de 330ohm entre uma fileira de pinos em um lado do LDR e o trilho GND da placa de ensaio.

Conecte um fio vermelho entre a fileira de pinos do outro lado do LDR ao trilho POWER da placa de ensaio.

Por fim, vamos conectar um fio marrom entre a fileira de pinos aos quais o resistor de 330ohm está conectado e o pino analógico 5 (A5) no Arduino. Precisa ser um pino analógico porque precisamos ler um valor entre 0 e 255 do LDR (intensidade da luz) em vez de apenas 0 e 1, como obteríamos de um pino digital.





Vamos ligá-lo e fazer o upload do código


Ok, é isso, estamos todos conectados. É hora de conectar o cabo USB entre o Arduino e o computador e fazer o upload do esboço UltrasonicEyes fornecido abaixo para ver tudo funcionando.

Assim que estiver ligado e o código tiver sido carregado, caminhe na frente de seus sensores ou mova suas mãos na frente deles e veja o que acontece!





Quer torná-lo mais permanente?


Quer tornar seus UltrasonicEyes mais permanentes? Confira meu vídeo que cobre pegar a versão da placa de ensaio e soldá-la a uma protoplaca aqui ...

E depois imprima as 2 partes do case em qualquer impressora 3D e monte como fiz no vídeo!

Também estou pensando em expandir UltrasonicEyes para ter um botão de toque capacitivo (ou botão normal) para alternar entre diferentes formatos de olhos ... você pode assistir meus experimentos aqui ...

Você pode verificar o resto dos meus projetos e vídeos em ... inespermaker.com

Siga-me no Twitter, Facebook, Instagram e tindie

https://www.patreon.com/unexpectedmaker

É isso!

Código

  • Olhos ultrassônicos
Olhos ultrassônicos C / C ++
 #include  // Usamos isso para controlar os monitores de matriz de LED 8x8 - você precisará instalar esta biblioteca a partir do gerenciador de biblioteca se ainda não a tiver. # include  // Usamos NewPing para controlar os sensores ultrassônicos - você precisará instalar esta biblioteca a partir do gerenciador de biblioteca se ainda não a tiver.// defina os pinos anexados ao display de matriz de LED 1 // # define CLK_PIN 13 / / Estamos usando SPI de hardware - certifique-se de ter conectado o pino CLK ao pino CLK de hardware em seu dispositivo // # define DATA_PIN 11 // Estamos usando SPI de hardware - certifique-se de ter conectado o pino MOSI ao pino MOSI de hardware no seu dispositivo # define CS_PIN 10 // Chip Select pin # define MAX_DEVICES 2 // número de visores - precisamos de 2, um para cada olho # define LIGHT A5 // Usamos o pino analógico 5 para ler o valor da luz do LDR / / Estamos usando SPI de hardware que automaticamente MD_MAX72XX mx =MD_MAX72XX (CS_PIN, MAX_DEVICES); // Inicializar os 2 displays de matriz # define t1 2 // Pino de gatilho no sensor ultrassônico 1 # define e1 3 // Pino de eco no sensor ultrassônico 1 # define t2 4 // Pino de gatilho no sensor ultrassônico 2 # define e2 5 // Echo pino no sensor ultrassônico 2 # define maxDist 400 // a distância máxima para o pulso ultrassônicoNewPing eyeR (t2, e2, maxDist); // Inicializar o sensor ultrassônico 2NewPing eyeL (t1, e1, maxDist); // Inicializar o sensor ultrassônico 1 // Rastreamos o estado atual do sistema com esta variável inteira, desta forma, após um piscar de olhos, podemos voltar os olhos para a última direção em que estavam // Os estados possíveis são:// 0:Olhando para a frente // 1:Olhando para a direita // 2:Olhando para a esquerdaint currentState =-1; // Armazenamos o tempo e a distância dos pings para cada sensor ultrassônico nessas variáveis ​​longa duração1, duração2; int distância1, distância2; // Queremos que o piscar seja inserido aleatoriamente no ciclo de flutuação nextBlink =millis () + 1000; // Nós armazenar a intensidade luminosa actual neste variablefloat lightAmount =0; eye_forward uint8_t [COL_SIZE] ={0b00111100, 0b01000010, 0b01011010, 0b10101101, 0b10111101, 0b10011001, 0b01000010, 0b00111100}; uint8_t eye_right [COL_SIZE] ={0b00111100, 0b01000010, 0b01110010, 0b11011001, 0b11111001, 0b10110001, 0b01000010, 0b00111100}; eye_left uint8_t [COL_SIZE] ={0b00111100, 0b01000010, 0b01001110, 0b10010111, 0b10011111, 0b10001101, 0b01000010, 0b00111100}; uint8_t eye_blink [COL_SIZE] ={0b00000000, 0b00111100, 0b01111110, 0b11111111, 0b10111101, 0b11000011, 0b01111110, 0b00111100}; void setup () {// Inicializar a biblioteca Matrix Display mx.begin (); // Define os modos de pino para o sensor ultrassônico 1 pinMode (t1, OUTPUT); pinMode (e1, INPUT); // Define os modos de pino para o sensor ultrassônico 2 pinMode (t2, OUTPUT); pinMode (e2, INPUT); // Configure cada pino de disparo nos sensores ultrassônicos para iniciar em BAIXO digitalWrite (t1, BAIXO); digitalWrite (t2, LOW); // Define o modo de pino para o LDR como um modo de pino INPUT (LIGHT, INPUT); // Comece olhando para a frente ShowEye_Forward (); currentState =0;} void loop () {// ler no nível de luz atual lightAmount =analogRead (LIGHT); // certifique-se de que o valor da luz está dentro da faixa de Intensidade máxima dos visores lightAmount =(lightAmount / 255) * MAX_INTENSITY; // definir a intensidade mx.control (MD_MAX72XX ::INTENSITY, lightAmount); // Faça ping no olho esquerdo com uma recursão de 5 distance1 =eyeL.ping_median (5); // Atrasar 500 ms antes de pingar o olho direito, para não obter resultados conflitantes delay (500); // Ping o olho direito com recursão de 5 distance2 =eyeR.ping_median (5); // Verifique se é hora de tentar inserir um piscar se (nextBlink  0) {ShowEye_Right (); currentState =1; } // Agora, se distance2 for maior que distance1 e distance2 também for maior que 0, então queremos olhar para a esquerda if (distance1  0) {ShowEye_Left (); currentState =2; } // atrase o loop por 250 ms para garantir que os olhos tenham tempo para exibir corretamente delay (250);} / ************************** ************* // ************ MAX7219 Stuff ************* // ******* ********************************** / void ShowEye_Right () {// Limpar as telas mx.clear (); // Define o brilho atual da tela mx.control (MD_MAX72XX ::INTENSITY, lightAmount); // Loop através de cada linha do display para (uint8_t row =0; row  

Peças personalizadas e gabinetes

Imprima com qualquer impressora 3D, sem configurações específicas necessárias.Imprima com qualquer impressora 3D, sem configurações específicas necessárias.

Esquemas

ultrasoniceyes_final_Th84xpUyB2.fzz

Processo de manufatura

  1. Ataque OVNI!
  2. Smart Blinds
  3. 3D RGB Arduclock
  4. MyRiver
  5. Homem de Ferro
  6. Sensor de obstáculo simples com Arduino
  7. Joystick Game
  8. Encontre-me
  9. Controle do umidificador Arduino
  10. Pequeno Rover