Tabla de contenido:
- Paso 1: boceto en papel
- Paso 2: Lista de hardware
- Paso 3: diseño del circuito
- Paso 4: Conexión de hardware
- Paso 5: Diseño de software
- Paso 6: depurar en protoboard
- Paso 7: Montaje de hardware
- Paso 8: Diseño de la carcasa de la electrónica en Adobe Illustrator
- Paso 9: Prototipo de cartón
- Paso 10: Prototipo de contrachapado de abedul
Video: FinduCar: una llave inteligente para el automóvil que guía a las personas hacia dónde está estacionado el automóvil: 11 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Para resolver los problemas anteriores, este proyecto propone desarrollar una llave de automóvil inteligente que podría dirigir a las personas al lugar donde estacionaron el automóvil. Y mi plan es integrar un GPS en la llave del auto. No es necesario utilizar la aplicación del teléfono inteligente para rastrear el automóvil, toda la guía solo se mostrará en la llave del automóvil.
Paso 1: boceto en papel
Cuando las personas presionan el botón para bloquear el automóvil, la información de ubicación se puede registrar en el microcontrolador automáticamente. Luego, cuando las personas comienzan a navegar hacia el automóvil, el LED diferente se enciende para dirigir a la posición del automóvil y la frecuencia de parpadeo muestra la distancia al automóvil. Pueden seguir fácilmente el LED parpadeante y encontrar rápidamente el automóvil.
Paso 2: Lista de hardware
Estos son los componentes utilizados en este proyecto. Algunos son de los kits de partículas (tablero, botón, encabezados), otros se compran en el sitio web oficial de Adafruit (Adafruit Feather M0, módulo GPS Adafruit Ultimate, batería Lpoly y batería Coin Cell) y Amazon (NeoPixel Ring - 12 LED RGB).
Paso 3: diseño del circuito
Neopixel_LED está conectado al PIN 6 de Feather M0
Button_Unlock está conectado al PIN 12 de Feather M0
Button_Lock está conectado al PIN 13 de Feather M0
Paso 4: Conexión de hardware
Suelde los cabezales con Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Apile las dos tablas juntas. El GPS FeatherWing se conecta directamente a su placa Feather M0 sin más cables.
Paso 5: Diseño de software
Componentes de prueba
Leer un FIX
configuración vacía () {
Serial.println ("prueba de eco GPS"); Serial.begin (9600); Serial1.begin (9600); // baudios de GPS NMEA predeterminados}
bucle vacío () {
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Anillo LED parpadeante
Consulte los ejemplos de Adafruit NeoPixel.
Funciones de cálculo de GPS
Calcular el acimut
// Calcular el acimut
doble azimut (doble lat_a, doble lon_a, doble lat_b, doble lon_b) {
doble d = 0; lat_a = lat_a * PI / 180; lon_a = lon_a * PI / 180; lat_b = lat_b * PI / 180; lon_b = lon_b * PI / 180; d = sin (lat_a) * sin (lat_b) + cos (lat_a) * cos (lat_b) * cos (lon_b-lon_a); d = raíz cuadrada (1-d * d); d = cos (lat_b) * sin (lon_b-lon_a) / d; d = asin (d) * 180 / PI; return d; }
Calcule el tiempo en el reloj LED, que también es la dirección del vehículo
// Calcula el tiempo en el reloj LED
int led_time (doble ángulo) {
int bandera = 0; si (ángulo = 15) {ángulo_tiempo = ángulo_tiempo + 1; } if (bandera == 1) {angle_time = 12 - angle_time; } return tiempo_ángulo; }
Calcule la distancia entre la persona y su vehículo
// Calcula la distancia
doble distancia (doble lat_a, doble lon_a, doble lat_b, doble lon_b) {
doble EARTH_RADIUS = 6378137.0; doble radLat1 = (lat_a * PI / 180.0); doble radLat2 = (lat_b * PI / 180.0); doble a = radLat1 - radLat2; doble b = (lon_a - lon_b) * PI / 180.0; doble s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; devoluciones; }
Funciones de la pantalla LED
Enciende los LED en un círculo que muestra que comienza a navegar
// La iluminación del anillo LED uno a uno muestra que comienza la navegación
void colorWipe (uint32_t c, uint8_t espera) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Obtenga la frecuencia del LED sobre la base de la distancia
// Obtener la frecuencia del LED
int frecuencia (doble distancia) {
int f = (int) distancia * 20; return f; }
Parpadea el LED que indica la dirección del coche
// Pantalla en LED
strip.clear ();
strip.show (); retraso (frecuencia (distancia_persona_carro)); // retraso (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); retraso (frecuencia (distancia_persona_carro)); // retraso (500);
// Deshabilitar LED
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Principal
#include Adafruit_GPS.h #include Adafruit_NeoPixel.h #include HardwareSerial.h #include Button.h #include math.h
#define Neopixel_LED_PIN 6
#define Neopixel_LED_NUM 12 #define Button_Lock_PIN 13 #define Button_Unlock_PIN 12 #define GPSSerial Serial1
#define GPSECHO falso
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Botón button_lock (Button_Lock_PIN); Botón button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t temporizador = millis (); doble car_lat, car_lon; double car_person_distance; double move_direction; doble car_azimuth; double car_person_angle; int angle_time;
configuración vacía () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // banda de baudios GPS NMEA predeterminada.begin (); // Quite el comentario de esta línea para activar RMC (mínimo recomendado) y GGA (fijar datos), incluida la altitud GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Establecer la tasa de actualización GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Frecuencia de actualización de 1 Hz // Solicitar actualizaciones sobre el estado de la antena, comentar para guardar silencio // GPS.sendCommand (PGCMD_ANTENNA); retraso (1000);}
bucle vacío () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // si se recibe una sentencia, podemos comprobar la suma de comprobación, analizarla … if (GPS.newNMEAreceived ()) {// algo complicado aquí es si imprimimos la sentencia NMEA, o los datos // terminamos sin escuchar y captando otras frases! // así que tenga mucho cuidado si usa OUTPUT_ALLDATA e intenta imprimir datos Serial.println (GPS.lastNMEA ()); // esto también establece el indicador newNMEAreceived () en falso if (! GPS.parse (GPS.lastNMEA ())) // esto también establece el indicador newNMEAreceived () en falso retorno; // podemos fallar al analizar una oración, en cuyo caso deberíamos esperar otra} // si millis () o el temporizador se reinicia, simplemente lo restableceremos if (timer> millis ()) timer = millis (); if (millis () - temporizador> 2000) {temporizador = millis (); // reinicia el temporizador Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Fecha:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Impresión de serie (GPS.mes, DEC); Serial.print ("/ 20"); Serial.println (GPS.year, DEC); Serial.print ("Arreglar:"); Serial.print ((int) GPS.fix); Serial.print ("calidad:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Ubicación:"); Impresión serial (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Impresión serial (longitud GPS, 4); Serial.println (GPS.lon); Serial.print ("Ubicación (en grados, funciona con Google Maps):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Velocidad (nudos):"); Serial.println (GPS.speed); Serial.print ("Ángulo:"); Serial.println (GPS.angle); Serial.print ("Altitud:"); Serial.println (GPS.altitude); Serial.print ("Satélites:"); Serial.println ((int) GPS.satellites); // Guarda el GPS del vehículo if (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // para depurar Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Empieza a buscar el coche if (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_flag = 0; } if (button_flag == 1) {car_person_distance = distancia (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Calcula la distancia // car_person_distance = distancia (100.0005, 100.0005, 100.0, 100.0); // para depurar Serial.println (car_person_distance); move_direction = GPS.angle; // Registra la dirección de movimiento (ángulo) // move_direction = 100.0; // Registrar el azimut (ángulo) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // coche_azimut = azimut (100.0005, 100.0005, 100.0, 100.0); // Calcula el tiempo en el reloj LED car_person_angle = car_azimuth - move_direction; ángulo_tiempo = led_time (automóvil_persona_angle); // Visualización en LED strip.clear (); strip.show (); // retraso (frecuencia (distancia_persona_carro)); retraso (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // retraso (frecuencia (distancia_persona_carro)); retraso (500); // Desactivar LED si (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
Paso 6: depurar en protoboard
Paso 7: Montaje de hardware
Paso 8: Diseño de la carcasa de la electrónica en Adobe Illustrator
Paso 9: Prototipo de cartón
Este paso se utiliza para confirmar el tamaño de la carcasa y cada pieza del modelo, asegurándose de que el tamaño de la caja, la posición del botón y la posición del LED se ajusten a los componentes electrónicos ensamblados.
Paso 10: Prototipo de contrachapado de abedul
Este fue el prototipo inicial. Finalmente, se agregó un orificio cuadrado para enchufar a un cargador a una de las piezas.
Recomendado:
Entrada de automóvil biométrica - Verdadero automóvil sin llave: 4 pasos
Entrada de automóvil biométrica: verdadero automóvil sin llave: Hace unos meses, mi hija me preguntó por qué los automóviles de hoy en día no están equipados con un sistema de entrada biométrica, cuando incluso un teléfono celular lo tiene. Desde entonces estuve trabajando en implementar lo mismo y finalmente logré instalar y probar algo en mi T
Guía a pie para mejorar la movilidad de las personas con discapacidad visual: 6 pasos
Guía para caminar para mejorar la movilidad de las personas con discapacidad visual: el objetivo del instructivo es desarrollar una guía para caminar que pueda ser utilizada por personas discapacitadas, especialmente las personas con discapacidad visual. El instructable tiene la intención de investigar cómo la guía para caminar se puede usar de manera efectiva, de modo que los requisitos de diseño
RaspberryPi: Fade un LED hacia adentro y hacia afuera: 4 pasos (con imágenes)
RaspberryPi: Fade un LED hacia adentro y hacia afuera: Los siguientes pasos son experimentos para ilustrar cómo funcionan los LED. Muestran cómo atenuar un LED a un ritmo uniforme y cómo atenuarlo hacia adentro y hacia afuera. Necesitará: RaspberryPi (utilicé una Pi más antigua, mi Pi-3 está en uso, pero cualquier Pi funcionará)
Cómo obtener música de CASI CUALQUIER sitio web (jaja) (siempre que pueda escucharlo, puede obtenerlo Está bien, si está incrustado en Flash, es posible que no pueda) EDITADO !!!!! Información agregada: 4 pasos
Cómo obtener música de CASI CUALQUIER sitio web (jaja) (siempre que pueda escucharlo, puede obtenerlo … Está bien, si está incrustado en Flash, es posible que no pueda) EDITADO !!!!! Información agregada: si alguna vez vas a un sitio web y reproduce una canción que te gusta y la quieres, aquí está el instructivo para que no sea mi culpa si estropeas algo (la única forma en que sucederá es si comienzas a eliminar cosas sin ningún motivo ) he podido conseguir música para
Una forma realmente simple / fácil / no complicada de hacer que las personas / humanos / animales / robots parezcan tener una visión de calor realmente genial / brillante (color de su elección) usando GIMP: 4 pasos
Una forma realmente simple / fácil / no complicada de hacer que las personas / humanos / animales / robots parezcan tener una visión de calor realmente genial / brillante (color de su elección) usando GIMP: lea … el … título