Tabla de contenido:

Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)
Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)

Video: Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)

Video: Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)
Video: Recibo/Recepción - Procesos Básicos de Almacén 2024, Noviembre
Anonim
Seguimiento y seguimiento de pequeñas tiendas
Seguimiento y seguimiento de pequeñas tiendas

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

Encendido del circuito y Pi
Encendido del circuito y Pi
Encendido del circuito y Pi
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

El MPU6050
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:

  1. escriba "sudo raspi-config"
  2. Seleccionar configuraciones de interfaz
  3. En la opción Interfaz, seleccione "I2C"
  4. Habilitar la configuración I2C
  5. 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

El GPS Adafruit Ultimate Breakout
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

La pantalla LCD de 16x2
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

Servo, Leds, Botón e Interruptor
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

El circuito completo
El circuito completo
El circuito completo
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

La base de datos
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

El caso
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: