Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
En este tutorial aprenderemos cómo hacer un cubo de basura inteligente usando Magicbit dev. placa con Arduino IDE. Empecemos.
Suministros
- Magicbit
- Cable USB-A a Micro-USB
- Sensor ultrasónico - HC-SR04 (genérico)
- Micro-servomotor SG90
Paso 1: historia
Antes de pasar al proyecto, veamos qué es el cubo de basura inteligente. Hay uno o más cubos de basura en cada hogar. En muchas ocasiones lo cubriste. Porque eso hará olor en tu hogar. Entonces, cuando quieras poner un poco de basura en el cubo de la basura, tienes que abrirlo. Pero si, cuando caminas cerca del cubo de basura para poner la basura y automáticamente se abre la tapa, entonces cómo se ve. Loco aaa…. así que ese es el cubo de basura inteligente.
Paso 2: Teoría y Metodología
La teoría es muy sencilla. Cuando camines cerca del cubo de la basura, te detectará. Si la distancia entre usted y el cubo de basura es menor que una distancia definida, la tapa del cubo de basura se abrirá automáticamente. Para completar estos dos objetos utilizamos el sensor ultrasónico HC-SRO4 y pequeños servomotores. Puedes conseguir cualquier tipo de servomotor digital.
Paso 3: configuración del hardware
Para este proyecto utilizamos principalmente tres componentes de hardware. Son Magicbit, servomotor y sensor ultrasónico. La conexión entre todas estas partes se muestra en la Figura anterior.
El sensor ultrasónico usó 3.3 v para encender. Por lo tanto, usamos el puerto inferior derecho de la placa Magicbit para conectar el sensor ultrasónico al Magicbit. Pero el servomotor se usa 5V para un funcionamiento adecuado, por lo que usamos el puerto inferior izquierdo para conectar el servomotor con Magicbit. En este caso, utilizamos el módulo conector servo Magic bit. Pero si no tiene ese módulo, puede usar tres cables de puente para conectar 5V a 5V, Gnd a Gnd y pin de señal a 26 pines en magicbit.
Ahora veamos el lado mecánico de nuestro proyecto. Para abrir la tapa utilizamos un mecanismo de palanca muy sencillo. Conectamos un clip de mano servo lateral al servo. Luego conectamos el orificio de la esquina en el clip y la tapa del cubo de basura con un alambre de metal resistente. El alambre de metal puede girar con respecto al clip del servo y la tapa del cubo de basura. Al estudiar la imagen superior y el video, puede construir eso muy fácilmente.
Paso 4: configuración del software
La parte del software también es muy fácil. Veamos el código IDE de Arduino y cómo funciona ese código.
Para conducir el servo utilizamos la biblioteca de servos ESP32. Esta biblioteca casi se incluye en el administrador de placa de bits mágicos en Arduino IDE. Para lidiar con el sensor ultrasónico utilizamos la biblioteca newPing. Esto se puede descargar desde el siguiente enlace.
bitbucket.org/teckel12/arduino-new-ping/d…
Descargue el archivo zip y vaya a herramientas> incluir biblioteca> agregar biblioteca Zip en Arduino. ahora seleccione su archivo zip descargado de la nueva biblioteca de pines. en el código, primero declaramos bibliotecas de sensores ultrasónicos y servo. En la función de bucle siempre verificamos la distancia desde el cubo de basura hasta el objeto frontal más cercano. Si ese rallador es superior a 200, la salida de distancia de la biblioteca es 0. Cuando la distancia es inferior a 60 cm, se ejecuta un bucle para abrir la cubierta girando el servo. Si la distancia es superior a 60 cm, la funda se bajará. Al usar una variable booleana, siempre verificamos el estado de la cubierta. Si la tapa está bajada, solo se abrirá. También viceversa. Ahora seleccione el puerto COM correcto y la placa como magcibit, luego cargue el código. Ahora su cubo de basura inteligente está listo para usar.
Paso 5: Código Arduino
#incluir
#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // incluye la biblioteca de servos int distancia; Servo RadarServo; configuración vacía () {Serial.begin (115200); RadarServo.attach (26); // Define en qué pin está el retardo adjunto del servomotor (3000); } void loop () {// gira el servomotor de 15 a 165 grados para (int i = 0; i <= 180; i ++) {RadarServo.write (i); retraso (50); distance = sonar.ping_cm (); // Llama a una función para calcular la distancia medida por el sensor ultrasónico para cada grado para (int j = 0; j0) {break; } Serial.print (i); // Envía el grado actual al puerto serie Serial.print (","); // Envía un carácter de adición justo al lado del valor anterior necesario más adelante en el IDE de procesamiento para indexar Serial.print (j); // Envía el grado actual al puerto serie Serial.print ("*"); Serial.print (1); // Envía el valor de la distancia al puerto serie Serial.print ("/"); // Envía un carácter de adición justo al lado del valor anterior necesario más adelante en el IDE de procesamiento para indexar Serial.print (distancia); // Envía el valor de la distancia al puerto serie Serial.print ("."); // Envía un carácter de adición justo al lado del valor anterior necesario más adelante en el IDE de procesamiento para la indexación}} // Repite las líneas anteriores de 165 a 15 grados para (int i = 180; i> = 0; i -) {RadarServo.escribir (i); retraso (50); distancia = sonar.ping_cm (); para (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {continuar; } Serial.print (i); // Envía el grado actual al puerto serie Serial.print (","); // Envía un carácter de adición justo al lado del valor anterior necesario más adelante en el IDE de procesamiento para indexar Serial.print (j); // Envía el grado actual al puerto serie Serial.print ("*"); Serial.print (-1); // Envía el valor de la distancia al puerto serie Serial.print ("/"); // Envía un carácter de adición justo al lado del valor anterior necesario más adelante en el IDE de procesamiento para indexar Serial.print (distancia); // Envía el valor de la distancia al puerto serie Serial.print ("."); // Envía un carácter adicional junto al valor anterior necesario más adelante en el IDE de procesamiento para la indexación}}}