Tabla de contenido:
- Suministros
- Paso 1: Encendido del circuito y Pi
- Paso 2: el MPU6050
- Paso 3: El GPS Adafruit Ultimate Breakout
- Paso 4: la pantalla LCD de 16x2
- Paso 5: Servo, Leds, Botón e Interruptor
- Paso 6: El circuito completo
- Paso 7: el código
- Paso 8: la base de datos
- Paso 9: el caso
Video: Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Este es un sistema que está hecho para pequeñas tiendas que se supone que se monta en bicicletas eléctricas o scooters eléctricos para entregas de corto alcance, por ejemplo, una panadería que quiere entregar pasteles.
¿Qué significa Track and Trace?
Track and trace es un sistema utilizado por los transportistas o empresas de mensajería para registrar el movimiento de paquetes o artículos durante el transporte. En cada lugar de procesamiento, las mercancías se identifican y los datos se transmiten al sistema de procesamiento central. Luego, estos datos se utilizan para dar el estado / actualización de la ubicación de las mercancías a los remitentes.
El sistema que haremos también mostrará la ruta tomada y la cantidad de choques y golpes recibidos. Este instructivo también asume que tienes un conocimiento básico de raspberry pi, python y mysql.
nota: esto se hizo para un proyecto escolar, por lo tanto, debido a la limitación de tiempo, hay mucho margen de mejora
Suministros
-Raspberry Pi 4 modelo B
-Zapatero en forma de T de frambuesa PI
-4x 3, baterías de iones de litio de 7 V
-2x doble portapilas
-Convertidor reductor DC Buck 5v
-2x grandes LED de color naranja
-interruptor de encendido / apagado / encendido
-botón
-adafruit ultimate gps v3
-mpu6050
-Pantalla lcd de 16x2
-servo motor
Paso 1: Encendido del circuito y Pi
Cuando se trata de alimentar el circuito pi con una batería, tiene algunas opciones sobre cómo hacerlo.
Puede usar un banco de energía y alimentar el pi a través de USB, tal vez esté montando el dispositivo en una bicicleta eléctrica o scooter eléctrico que tenga un puerto USB, tal vez tenga una batería de teléfono de 5 V esperando para ser utilizada o podría usar 2 juegos de baterías de 3.7V en paralelo con un convertidor reductor como se muestra en las imágenes
Todo está bien siempre que pueda proporcionar 5V continuos y tenga una vida útil con la que esté satisfecho.
Paso 2: el MPU6050
Introducción El módulo sensor MPU6050 es un dispositivo integrado de seguimiento de movimiento de 6 ejes.
- Tiene un giroscopio de 3 ejes, un acelerómetro de 3 ejes, un procesador de movimiento digital y un sensor de temperatura, todo en un solo IC.
- Se pueden encontrar varios parámetros leyendo valores de direcciones de ciertos registros usando comunicación I2C. La lectura de giroscopio y acelerómetro a lo largo de los ejes X, Y y Z están disponibles en forma de complemento a 2.
- Las lecturas del giroscopio están en unidades de grados por segundo (dps); Las lecturas del acelerómetro están en unidades de g.
Habilitación de I2C
Al usar un MPU6050 con una Raspberry Pi, debemos asegurarnos de que el protocolo I2C en la Raspberry Pi esté encendido. Para hacer esto, abra la terminal de la pi a través de masilla u otro software y haga lo siguiente:
- escriba "sudo raspi-config"
- Seleccionar configuraciones de interfaz
- En la opción Interfaz, seleccione "I2C"
- Habilitar la configuración I2C
- Seleccione Sí cuando le pregunte si desea reiniciar.
Ahora, podemos probar / escanear cualquier dispositivo I2C conectado a nuestra placa Raspberry Pi instalando herramientas i2c. Podemos obtener herramientas i2c usando el administrador de paquetes apt. Utilice el siguiente comando en la terminal Raspberry Pi.
"sudo apt-get install -y i2c-tools"
Ahora conecte cualquier dispositivo basado en I2C al puerto de modo de usuario y escanee ese puerto usando el siguiente comando, "sudo i2cdetect -y 1"
Luego responderá con la dirección del dispositivo.
Si no se devuelve ninguna dirección, asegúrese de que el MPU6050 esté conectado correctamente y vuelva a intentarlo
Haciendo que funcione
ahora que estamos seguros de que i2c está habilitado y el pi puede alcanzar el MPU6050, vamos a instalar una biblioteca usando el comando "sudo pip3 install adafruit-circuitpython-mpu6050".
si hacemos un archivo de prueba de Python y usamos el siguiente código, podemos ver si está funcionando:
tiempo de importación
tablero de importación
import busi
oimportar adafruit_mpu6050
i2c = busio. I2C (placa. SCL, placa. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
mientras que es cierto:
print ("Aceleración: X:%. 2f, Y:%.2f, Z:%.2f m / s ^ 2"% (mpu.acceleration))
print ("Gyro X:%. 2f, Y:%.2f, Z:%.2f grados / s"% (mpu.gyro))
print ("Temperatura:%.2f C"% mpu.temperature)
impresión("")
hora de dormir (1)
cuando ahora queremos la aceleración en el eje X / Y / Z podemos usar lo siguiente:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
Combinando esto con una simple declaración if en un bucle constante, podemos contar la cantidad de descargas en un viaje.
Paso 3: El GPS Adafruit Ultimate Breakout
Introducción
La ruptura se basa en el chipset MTK3339, un módulo GPS serio y de alta calidad que puede rastrear hasta 22 satélites en 66 canales, tiene un excelente receptor de alta sensibilidad (¡seguimiento de -165 dB!) Y una antena incorporada.. Puede realizar hasta 10 actualizaciones de ubicación por segundo para registro o seguimiento de alta velocidad y alta sensibilidad. El uso de energía es increíblemente bajo, solo 20 mA durante la navegación.
La placa viene con: un regulador de 3.3V de caída ultrabaja para que pueda alimentarlo con 3.3-5VDC en, entradas seguras de nivel de 5V, el LED parpadea a aproximadamente 1Hz mientras busca satélites y parpadea una vez cada 15 segundos cuando hay una solución encontrado para conservar energía.
Probando el gps con arduino
Si tiene acceso a un arduino, es una buena idea probar el módulo con él.
Conectar VIN a + 5V Conectar GND a tierra Conectar GPS RX (datos en GPS) a Digital 0 Conectar GPS TX (datos de GPS) a Digital 1
Simplemente ejecute un código arduino en blanco y abra el monitor en serie a 9600 baudios. Si obtiene datos de gps, su módulo gps funciona. Nota: si su módulo no se soluciona, intente ponerlo por una ventana o afuera en una terraza.
Haciendo que funcione
Comience a instalar la biblioteca gps de adafruit usando el comando "sudo pip3 install adafruit-circuitpython-gps".
Ahora podemos usar el siguiente código de Python para ver si podemos hacerlo funcionar:
import timeimport board import busioimport adafruit_gpsimport serial uart = serial. Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 10)
gps = adafruit_gps. GPS (uart, debug = False) gps.send_command (b'PMTK314, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ') gps.send_command (b'PMTK220, 1000')
mientras que es cierto:
gps.update () mientras no gps.has_fix:
print (gps.nmea_sentence) print ('Esperando corrección…') gps.update () time.sleep (1) continuar
print ('=' * 40) # Imprime una línea de separación.print ('Latitud: {0:.6f} grados'.format (gps.latitude)) print (' Longitud: {0:.6f} grados'.format (gps.longitude)) print ("Calidad fija: {}". formato (gps.fix_quality))
# Algunos atributos más allá de la latitud, la longitud y la marca de tiempo son opcionales # y es posible que no estén presentes. Compruebe si son Ninguno antes de intentar usar! Si gps.satellites no es Ninguno:
print ("# satélites: {}". formato (gps.satellites))
si gps.altitude_m no es None:
print ("Altitud: {} metros".format (gps.altitude_m))
si gps.speed_knots no es None:
print ("Velocidad: {} nudos".format (gps.speed_knots))
si gps.track_angle_deg no es None:
print ("Ángulo de seguimiento: {} grados".format (gps.track_angle_deg))
si gps.horizontal_dilution no es None:
print ("Dilución horizontal: {}". formato (gps.horizontal_dilution))
si gps.height_geoid no es None:
print ("ID geográfica de altura: {} metros".format (gps.height_geoid))
hora de dormir (1)
Paso 4: la pantalla LCD de 16x2
Introducción
Los módulos LCD se utilizan con mucha frecuencia en la mayoría de los proyectos integrados, debido a su bajo precio, disponibilidad y compatibilidad con el programador. La mayoría de nosotros se habría encontrado con estas pantallas en nuestro día a día, ya sea en PCO o en calculadoras. 16 × 2 LCD se llama así porque; tiene 16 columnas y 2 filas. Hay muchas combinaciones disponibles como 8 × 1, 8 × 2, 10 × 2, 16 × 1, etc. pero la más utilizada es la pantalla LCD de 16 × 2. Entonces, tendrá (16 × 2 = 32) 32 caracteres en total y cada personaje estará compuesto por 5 × 8 Pixel Dots.
Instalación de smbus
El System Management Bus (SMBus) es más o menos un derivado del bus I2C. El estándar ha sido desarrollado por Intel y ahora es mantenido por el Foro SBS. La aplicación principal del SMBus es monitorear parámetros críticos en placas base de PC y en sistemas embebidos. Por ejemplo, hay disponibles muchos monitores de voltaje de suministro, monitores de temperatura y circuitos integrados de control / monitoreo de ventiladores con una interfaz SMBus.
La biblioteca que usaremos también requiere que smbus esté instalado. Para instalar smbus en el rpi, use el comando "sudo apt install python3-smbus".
Haciendo que funcione
Primero instale la biblioteca RPLCD usando el comando "sudo pip3 install RPLCD".
ahora probamos el lcd mostrando la ip usando el siguiente código:
desde RPLCD.i2c import CharLCDimport socket
def get_ip_address ():
ip_address = '' s = socket.socket (socket. AF_INET, socket. SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () [0] s.close () return ip_address
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('dirección IP: / r / n' + str (get_ip_address ()))
Paso 5: Servo, Leds, Botón e Interruptor
Introducción
Un servomotor es un actuador o motor rotativo que permite un control preciso en términos de posición angular, aceleración y velocidad, capacidades que no tiene un motor regular. Hace uso de un motor normal y lo empareja con un sensor para retroalimentación de posición. El controlador es la parte más sofisticada del servomotor, ya que está diseñado específicamente para ese propósito.
LED abreviatura de diodo emisor de luz. Dispositivo semiconductor electrónico que emite luz cuando una corriente eléctrica lo atraviesa. Son considerablemente más eficientes que las bombillas incandescentes y rara vez se queman. Los LED se utilizan en muchas aplicaciones, como pantallas de vídeo de pantalla plana, y cada vez más como fuentes de luz generales.
Un pulsador o simplemente un botón es un mecanismo de interruptor simple para controlar algún aspecto de una máquina o un proceso. Los botones suelen estar hechos de material duro, generalmente plástico o metal.
Un interruptor de encendido / apagado / encendido tiene 3 posiciones donde la del medio es el estado de apagado. Estos tipos se usan principalmente para el control simple del motor donde tiene un estado de avance, apagado y retroceso.
Haciendo que funcione: el servo
El servo usa una señal PWM para determinar en qué ángulo debe estar, afortunadamente para nosotros, GPIO tiene esta característica incorporada, por lo tanto, simplemente podemos usar el siguiente código para controlar el servo: import RPi. GPIO como GPIOimport time
servo_pin = 18duty_cycle = 7.5
GPIO.setmode (GPIO. BCM)
GPIO.setup (servo_pin, GPIO. OUT)
pwm_servo = GPIO. PWM (servo_pin, 50) pwm_servo.start (duty_cycle)
mientras que es cierto:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Haciendo que funcione: el led y el interruptor
Debido a la forma en que conectamos los leds y el interruptor no necesitamos controlar o leer los leds y el interruptor, simplemente enviamos pulsos al botón que a su vez enrutará la señal al led que queramos.
Haciendo que funcione: el botón
Para el botón, crearemos nuestra propia clase simple de esta manera, veremos fácilmente cuando se presiona sin tener que agregarle un evento de detección cada vez que lo usemos. Haremos el archivo classbutton.py usando el siguiente código:
desde el botón GPIOclass de importación RPi:
def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP) @property def pressed (self):
ingedrukt = GPIO.input (self.pin) devuelve no ingedrukt
def on_press (self, call_method):
GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)
def on_release (self, call_method):
GPIO.add_event_detect (self.pin, GPIO. RISING, call_method, bouncetime = self.bouncetime)
Paso 6: El circuito completo
Ahora que hemos repasado todos los componentes, es hora de combinarlos todos.
Si bien las imágenes muestran que los componentes muestran todo en la placa de pruebas, es mejor tener el lcd, el GPS adafruit y el botón conectados mediante cables hembra a macho Solo tenga el t-cobbler y el mpu6050 en una placa de pruebas Cuando se trata de los LED y el interruptor use cables más largos para asegurarse de que puede alcanzar las barras intermitentes y la barra de dirección.
Paso 7: el código
Para mantener limpio este instructable, he proporcionado un repositorio de github con los archivos de backend y frontend. Simplemente coloque los archivos en la carpeta de frontend en la carpeta / var / www / html y los archivos en la carpeta de backend en una carpeta en / home / Carpeta [nombre de usuario] / [nombre de carpeta]
Paso 8: la base de datos
Debido a la forma en que este sistema está configurado, hay una tienda web simple configurada usando una lista de productos en una base de datos, además tenemos todos los puntos de ruta y pedidos guardados aquí. Un script de creación se puede encontrar en el repositorio de github vinculado en el próximo paso
Paso 9: el caso
Una vez que sepamos el funcionamiento de la electrónica, podemos meterlos en una caja. Puedes tomarte un poco de libertad creativa con esto. Antes de construirla, simplemente toma una caja de cartón que ya no necesitas, como una caja de cereal vacía, por ejemplo, y córtala, pégala con cinta adhesiva. y dóblelo hasta que tenga algo que le guste. Mida y dibuje su estuche en una hoja de papel y hágalo de un material más resistente como la madera, o si eso no es lo suyo, imprímalo en 3D. Solo asegúrese de que todos los componentes electrónicos quepan dentro y Tienes orificios para el botón, el cable que va al interruptor, los LED y la pantalla LCD. Una vez que hayas hecho tu estuche, es solo cuestión de encontrar una manera de montarlo en tu bicicleta o scooter.
Recomendado:
Reloj de 7 segmentos - Edición para impresoras pequeñas: 9 pasos (con imágenes)
Reloj de 7 segmentos - Edición para impresoras pequeñas: otro reloj de 7 segmentos más. xDAunque tengo que decir que no parece tan loco cuando veo mi perfil de Instructables. Probablemente se vuelva más irritante en el momento en que eches un vistazo a mi perfil de thingiverse. Entonces, ¿por qué me molesté en hacer otro en
Cabeza de maniquí de localización de sonido con Kinect: 9 pasos (con imágenes)
Cabeza de maniquí de localización de sonido con Kinect: Conozca a Margaret, un muñeco de prueba para un sistema de monitoreo de fatiga del conductor. Recientemente se retiró de sus deberes y encontró su camino hacia nuestro espacio de oficina, y desde entonces ha llamado la atención de aquellos que piensan que es 'espeluznante'. En aras de la justicia, he
Kits de coche de seguimiento de robot inteligente de bricolaje Seguimiento de coche fotosensible: 7 pasos
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTPuedes comprar desde el robot de seguimiento carTheoryLM393 chip compara los dos fotorresistores, cuando hay un fotorresistor LED en BLANCO, el lado del motor se detendrá inmediatamente, el otro lado del motor girar, de modo que
Pluma de localización UWB: 6 pasos
Pluma de localización UWB: La pluma de banda ultraancha incorpora el módulo Decawave DWM1000 y un ATSAMD21 ARM Cortex M0 en el factor de forma de pluma Adafruit. El módulo DWM1000 es un módulo inalámbrico compatible con IEEE802.15.4-2011 UWB capaz de posicionamiento en interiores de precisión
SISTEMA POS PARA TIENDAS, COMESTIBLES Y CENTROS DE SERVICIO DE EXCEL Con el uso de códigos de barras: 7 pasos
SISTEMA POS PARA TIENDAS, COMESTIBLES Y CENTROS DE SERVICIO DE EXCEL Con el uso de códigos de barras: con este blog les presento cómo crear un sistema POS (punto de venta) simple para tiendas pequeñas de comestibles y centros de servicio. Con este método, puede administrar las siguientes instalaciones sin software especial o equipos costosos. v Problema