Crear un contador de personas controlado por una aplicación de Android
Componentes y suministros
| × | 1 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 |
Aplicaciones y servicios en línea
| ||||
|
Acerca de este proyecto
Descripción
En primer lugar, el contador de personas es un dispositivo que detecta la cantidad de personas que atraviesan una entrada. Había pensado que hacer un mostrador de personas para asegurar mi habitación cuando tenía que irme de vacaciones durante dos semanas. Además, quería usar el contador de personas como una alarma que advierte a las personas que no tienen permiso para ingresar a la habitación. Un láser es la mejor opción para contar algo con precisión con un LDR debido a su naturaleza de velocidad, así que decidí usar láseres con LDR para los trabajos de conteo. Hay tres posibles entradas en mi habitación (dos puertas y una ventana), así que utilicé tres láseres y tres LDR. Sin embargo, me di cuenta de que necesito controlar de forma remota el dispositivo si quiero elegir entre el láser de qué entrada está abierto o si la alarma está encendida o no. Entonces agregué un módulo Bluetooth HC-06 para comunicarme con el dispositivo con una aplicación de Android que creé. Además, la aplicación de Android muestra la cantidad de personas que ingresan por cualquier entrada que desee observar.
Para apoyar mis proyectos y artículos, puede visitar mi sitio web aquí :)
Creando una aplicación
Hay muchas formas diferentes de crear una aplicación de Android, como convertir códigos de HTML a Java o programar la aplicación con Python. Sin embargo, MIT App Inventor es la forma más sencilla debido a su estructura de arrastrar y soltar cuando quieres hacer una aplicación para Android pero no olvides que aún no ha sido compatible con iOS.
Contador de personas! es el nombre de la aplicación e incluye dos pantallas llamadas Screen1 y Screen2.
Pantalla1
Es la pantalla de inicio para continuar a la pantalla principal, pero en primer lugar, la contraseña que está configurada en MIT App Inventor debe ingresarse correctamente. (La contraseña predeterminada que configuré es "contador").
Pantalla2
Es la pantalla principal y el menú para controlar la placa Arduino y en esta pantalla se muestra el resultado del contador de personas que envía Arduino.
Puede elegir, qué láser está encendido o si la alarma está abierta o no, en esta pantalla además puede ver el resultado del contador de personas y configurarlo para que comience desde cero.
Cómo hacer un contador de personas usando láseres y LDR
Un láser (amplificación de luz por emisión estimulada de radiación) es un dispositivo que envía el paquete de luz a través de una línea muy recta al objetivo básicamente. Y una LDR (resistencia dependiente de la luz) puede detectar fácilmente el aumento en la intensidad de la luz si el láser se apunta directamente a sí mismo. Cuando hay un obstáculo entre el láser y el LDR, el LDR detecta una disminución en la intensidad de la luz. Entonces, si pudiera contar cada disminución en el rango del nivel óptimo, tendría un contador de personas. Según mi experimento con el LDR, el rango del nivel óptimo tiene que estar entre 150 y 350.
Conexiones
- Módulos Arduino Uno
- Pin 2 --------- Laser_Module_1
- Pin 3 -------- Laser_Module_2
- Pin 4 -------- Laser_Module_3
- Pin 5 -------- Timbre
- Pin 6 -------- Módulo Bluetooth HC-06 (TX)
- Pin 7 --------- Módulo Bluetooth HC-06 (RX)
- Pin 8 --------- Control_Led_1
- Pin 12 --------- Control_Led_2
- Pin 13 ---------- Control_Led_3
- Pin 9 ------- RGB_Module (R)
- Pin 10 ------ RGB_Module (G)
- Pin 11 ------- RGB_Module (B)
- AO ------------ LDR_1
- A1 ------------- LDR_2
- A2 ------------ LDR_3
Asegúrese de que los láseres estén hacia los LDR directamente antes de terminar las conexiones de todas las piezas.
Después de probar el dispositivo y grabar un video de prueba, dividí el dispositivo en tres partes para tres entradas diferentes. No he tenido mis dudas sobre la seguridad de mi habitación desde que las usé.
Código
- PeopleCounter_with_Lasers.ino
PeopleCounter_with_Lasers.ino Arduino
///////////////////////////////////////////////// // Cree un contador de personas con láseres // // en un dispositivo Android // // por Kutluhan Aktar // // /////////////////////////// //////////////////////// El propósito del proyecto es hacer un contador de personas que detecte la cantidad de personas que ingresan a la habitación utilizando láseres y LDR y contrólelo con una aplicación de Android .//// Conecte una pata de un LDR a la tierra con una resistencia de 1K ohm .//// Asegúrese de que los láseres estén hacia los LDR directamente .//// Si desea que el Los resultados del contador de personas son precisos, establezca el nivel óptimo de LDR correctamente .////// Conexiones://// Arduino Uno // Laser_Module_1 // Pin 2 ------------ ------------ // Laser_Module_2 // Pin 3 ------------------------ // Laser_Module_3 // Pin 4 ------------------------ // Zumbador // Pin 5 ------------------- ----- // Módulo Bluetooth HC-06 // Pin 6 ------------------------ TX // Pin 7 ----- ------------------- RX // Control_Led_1 // Pin 8 ----------------------- - // Control_Led_2 // Pin 12 ------------------------ // Control_Led_3 // Pin 13 ------------------ ------ // Módulo_RGB // Pin 9 ------------------------ R // Pin 10 -------- ---------------- G // Pin 11 ------------------------ B // LDR_1 / / AO ------------------------ // LDR_2 // A1 ------------------ ------ // LDR_3 // A2 ------------------------ #includeint LaserPin_1 =2; // Definir los pines de los sensores láser.int LaserPin_2 =3; int LaserPin_3 =4; int BuzzerPin =5; // Buzzer pin.int Control_RX =6; // Pin RX y TX para la biblioteca SoftWareSerial.int Control_TX =7; int RedPin =9; // Pines PWM para sensor LED RGB.int GreenPin =10; int BluePin =11; int Control_Led_1 =8; // Establezca cada led como una marca para el estado de cada uno de los módulos láser.int Control_Led_2 =12; int Control_Led_3 =13; int LDR_1 =A0; // Pines analógicos para LDRs.int LDR_2 =A1; int LDR_3 =A2; int LDR_1_Read; // Defina el valor de los LDR como variables globales.int LDR_2_Read; int LDR_3_Read; int Counter =0; // Establecer el valor predeterminado del contador como cero. Volátil booleano Alarm_is_Activated =false; // Elija si la alarma está activada o no. Booleano volátil Alarm_Initial =falso; booleano volátil Counter_Detect =falso; // Es una variable para dar tiempo de retardo a Arduino.SoftwareSerial Control (Control_RX, Control_TX); // Defina los pines Rx y Tx para comunicarse con el Módulo Bluetooth. Nombre de la cadena ="Control"; // Nombre su módulo y establezca la contraseña para él.int Password =1111; String Uart ="9600,0,0"; void setup () {Serial.begin (9600); Control.begin (9600); // Inicie el módulo Bluetooth HC-06 para comunicarse. // Change_BluetoothModule_Defaults (); // Puede activarlo si desea cambiar los valores predeterminados del módulo Bluetooth. pinMode (LaserPin_1, SALIDA); pinMode (LaserPin_2, SALIDA); pinMode (LaserPin_3, SALIDA); pinMode (RedPin, SALIDA); pinMode (GreenPin, SALIDA); pinMode (BluePin, SALIDA); pinMode (Control_Led_1, SALIDA); pinMode (Control_Led_2, SALIDA); pinMode (Control_Led_3, SALIDA);} bucle vacío () {get_Data_From_LDR (); // Obtener los datos de los sensores LDR. if (Control.available ()) {// Si el módulo Bluetooth HC-06 está disponible, Commands () ha continuado. char c =Control.read (); Serial.println (c); // Controla los caracteres que configura la aplicación usando el terminal. Comandos (c); } Ajustar alarma(); // Inicializar la función de alarma. Set_Counter (); // Comienza el contador de personas. } void Commands (char i) {// Elija qué eventos suceden cuando el carácter específico se envía desde la aplicación a Arduino. switch (i) {case '1':Control.print (Contador); descanso; caso '2':Alarm_is_Activated =true; descanso; caso '3':Alarm_is_Activated =false; descanso; caso '4':digitalWrite (LaserPin_1, HIGH); digitalWrite (Control_Led_1, ALTO); descanso; caso '5':digitalWrite (LaserPin_1, LOW); digitalWrite (Control_Led_1, BAJO); descanso; caso '6':digitalWrite (LaserPin_2, HIGH); digitalWrite (Control_Led_2, ALTO); descanso; caso '7':digitalWrite (LaserPin_2, LOW); digitalWrite (Control_Led_2, BAJO); descanso; caso '8':digitalWrite (LaserPin_3, HIGH); digitalWrite (Control_Led_3, ALTO); descanso; caso '9':digitalWrite (LaserPin_3, LOW); digitalWrite (Control_Led_3, BAJO); descanso; caso 'r':Contador =0; descanso; }} void get_Data_From_LDR () {// Obtiene los datos de los sensores LDR. LDR_1_Read =analogRead (LDR_1); LDR_2_Read =analogRead (LDR_2); LDR_3_Read =analogRead (LDR_3); } void Set_Counter () {// Establecer un contador de personas. if (LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150) {// Si se detectó un movimiento. Counter_Detect =verdadero; } más {Counter_Detect =false; } si (Counter_Detect ==true) {Contador =Contador + 1; retraso (500); // Dedique algo de tiempo para obtener la cantidad de personas que ingresan a la sala con precisión. } if (Counter_Detect ==false) {Counter =Counter; }} void Set_Alarm () {// Establece un sistema de alarma ajustable. if (Alarm_is_Activated ==true) {if (LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150) {// Si se detecta un movimiento. Alarm_Initial =verdadero; } else {Alarm_Initial =false; } si (Alarm_Initial ==true) {tone (BuzzerPin, 500); Color_Change (255, 0, 0); retraso (50); Color_Change (0, 255, 0); retraso (50); Color_Change (0, 0, 255); retraso (50); Color_Change (255, 255, 0); retraso (50); Color_Change (80, 0, 80); retraso (50); Color_Change (0, 255, 255); retraso (50); Color_Change (255, 255, 255); retraso (50); }} if (Alarm_is_Activated ==false || Alarm_Initial ==false) {noTone (BuzzerPin); Color_Change (0, 0, 0); }} void Color_Change (int red, int green, int blue) {// Cambia las variables del módulo RGB fácilmente. rojo =255 - rojo; verde =255 - verde; azul =255 - azul; analogWrite (RedPin, rojo); analogWrite (GreenPin, verde); analogWrite (BluePin, azul);} void Change_BluetoothModule_Defaults () {// Cambia los valores predeterminados del módulo Bluetooth cualesquiera que sean los valores que elijas. Control.print ("EN + NOMBRE"); // Cambia el nombre. Control.println (Nombre); Serial.print ("Se cambia el nombre:"); Serial.println (Nombre); retraso (2000); Control.print ("AT + PSWD"); // Cambia la contraseña. Control.println (contraseña); Serial.print ("Se cambia la contraseña:"); Serial.println (contraseña); retraso (2000); Control.print ("AT + UART"); // Cambia la velocidad en baudios. Si el módulo Bluetooth es un HC-05, el valor predeterminado de la velocidad en baudios es 38400. Control.println (Uart); Serial.print ("La velocidad en baudios está configurada:"); Serial.println (Uart); retraso (2000); Serial.println ("La tarea se completó"); // Puedes ver si la tarea se completó correctamente o no usando el terminal.}
Piezas y carcasas personalizadas
El archivo de código de People Counter! peoplecounter_J375iBnBF8.aia ¡El archivo Apk de People Counter! peoplecounter_uBf7MU4A1c.apkEsquemas
Proceso de manufactura
- Ventilador de temperatura controlada
- Robot controlado por gestos con Raspberry Pi
- ROBOT WIFI DE FRAMBUESA PI CONTROLADO DESDE EL TELÉFONO INTELIGENTE DE ANDROID
- Arduclock 3D RGB
- Juega con Fire a través de Wi-Fi (ESP8266, NeoPixels y aplicación de Android)
- Juguete controlado por Android con Raspberry Motor Shield
- LED controlados por Alexa a través de Raspberry Pi
- Mi Río
- Juego de joystick
- Un diseño de detector PM2.5 y PM 10 para la aplicación Windows 10 UWP
- Idea del día de San Valentín - Contador de días pasados juntos (foto)