Índice:

Lixeira inteligente do Magicbit: 5 etapas
Lixeira inteligente do Magicbit: 5 etapas
Anonim
Image
Image

Neste tutorial, aprenderemos como fazer uma lixeira inteligente usando o Magicbit dev. placa com Arduino IDE. Vamos começar.

Suprimentos

  • Magicbit
  • Cabo USB-A para Micro-USB
  • Sensor Ultrassônico - HC-SR04 (Genérico)
  • SG90 Micro-servo motor

Etapa 1: História

Configuração de hardware
Configuração de hardware

Antes de passar para o projeto, vamos dar uma olhada no que é lixeira inteligente. Há uma ou mais latas de lixo em cada casa. Muitas vezes você cobriu isso. Porque isso fará com que cheire em sua casa. Então, quando você quiser colocar algum lixo na lata de lixo, você tem que abri-lo. Mas se, quando você anda perto da lata de lixo para colocar o lixo e automaticamente a tampa está abrindo, então como é a aparência. Louco aaa…. então essa é a lata de lixo inteligente.

Etapa 2: Teoria e Metodologia

A teoria é muito simples. Quando você andar perto do caixote do lixo, ele irá detectá-lo. Se a distância entre você e a lixeira for menor do que alguma distância definida, a tampa da lixeira abrirá automaticamente. Para completar esses dois objetos, usamos o sensor ultrassônico HC-SRO4 e pequenos servo motores. Você pode obter qualquer tipo de servo motor digital.

Etapa 3: configuração do hardware

Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware

Para este projeto, usamos principalmente três componentes de hardware. Eles são Magicbit, servo motor e sensor ultrassônico. A conexão entre todas essas partes é mostrada na Figura acima.

Sensor ultrassônico usado 3,3 V para ligar. Por isso, usamos a porta inferior direita da placa Magicbit para conectar o sensor ultrassônico ao Magicbit. Mas o servo motor é usado 5V para o funcionamento adequado, por isso usamos a porta inferior esquerda para conectar o servo motor com Magicbit. Neste caso, usamos o módulo conector servo Magic bit. Mas se você não tiver esse módulo, você pode usar três fios de jumper para conectar 5V a 5V, Gnd a Gnd e pino de sinal a 26 pinos no magicbit.

Agora vamos dar uma olhada no lado mecânico do nosso projeto. Para abrir a tampa, usamos um mecanismo de alavanca muito simples. Conectamos um clipe de mão servo lateral ao servo. Em seguida, conectamos o orifício do canto do clipe e a tampa da lata de lixo usando um fio de metal forte. O fio de metal pode girar em relação ao clipe do servo e à tampa do caixote do lixo. Ao estudar a imagem e o vídeo de topo, você pode construí-los facilmente.

Etapa 4: configuração do software

Configuração de software
Configuração de software

A parte do software também é muito fácil. Vamos dar uma olhada no código do Arduino IDE e como esse código funciona.

Para dirigir o servo, usamos a biblioteca de servo ESP32. Esta biblioteca quase inclui o gerenciador de placa de bits mágicos no IDE do Arduino. Para lidar com o sensor ultrassônico, usamos a biblioteca newPing. Isso pode ser baixado do seguinte link.

bitbucket.org/teckel12/arduino-new-ping/d…

Baixe o arquivo zip e vá em ferramentas> incluir biblioteca> adicionar biblioteca Zip no Arduino. agora selecione o arquivo zip baixado da nova biblioteca de pinos. no código, declaramos primeiro as bibliotecas de sensores servo e ultrassônicos. Na função de loop, sempre verificamos a distância da lata de lixo ao objeto frontal mais próximo. Se for maior que 200, então a saída de distância da biblioteca é 0. Quando a distância é inferior a 60 cm, então ele executa um loop para abrir a tampa girando o servo. Se a distância for maior do que 60 cm, a tampa será colocada. Ao usar a variável booleana, sempre verificamos o estado da capa. Se a tampa estiver abaixada, apenas ela será aberta. Também vice-versa. Agora selecione a porta COM correta e a placa como magcibit, depois carregue o código. Agora sua lixeira inteligente está pronta para ser usada.

Etapa 5: Código Arduino

#incluir

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // inclui a distância interna da biblioteca servo; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Define em qual pino está o servo motor conectado delay (3000); } void loop () {// gira o servo motor de 15 a 165 graus para (int i = 0; i <= 180; i ++) {RadarServo.write (i); atraso (50); distance = sonar.ping_cm (); // Chama uma função para calcular a distância medida pelo sensor ultrassônico para cada grau para (int j = 0; j0) {break; } Serial.print (i); // Envia o grau atual para a porta serial Serial.print (","); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação Serial.print (j); // Envia o grau atual para a porta serial Serial.print ("*"); Serial.print (1); // Envia o valor da distância para a porta serial Serial.print ("/"); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação Serial.print (distance); // Envia o valor da distância para a porta serial Serial.print ("."); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação}} // Repete as linhas anteriores de 165 a 15 graus para (int i = 180; i> = 0; i -) {RadarServo.write (i); atraso (50); distância = sonar.ping_cm (); para (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {continue; } Serial.print (i); // Envia o grau atual para a porta serial Serial.print (","); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação Serial.print (j); // Envia o grau atual para a porta serial Serial.print ("*"); Serial.print (-1); // Envia o valor da distância para a porta serial Serial.print ("/"); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação Serial.print (distance); // Envia o valor da distância para a porta serial Serial.print ("."); // Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação}}}

Recomendado: