Table des matières:

Track&trace pour les petits magasins : 9 étapes (avec photos)
Track&trace pour les petits magasins : 9 étapes (avec photos)

Vidéo: Track&trace pour les petits magasins : 9 étapes (avec photos)

Vidéo: Track&trace pour les petits magasins : 9 étapes (avec photos)
Vidéo: Test montre connectée enfant GPS - CHILD22 2024, Novembre
Anonim
Track&trace pour les petits commerces
Track&trace pour les petits commerces

Il s'agit d'un système conçu pour les petits magasins qui est censé se monter sur des vélos électriques ou des scooters électriques pour des livraisons à courte distance, par exemple une boulangerie qui souhaite livrer des pâtisseries.

Que signifie Track and Trace ?

Track and trace est un système utilisé par les transporteurs ou les entreprises de messagerie pour enregistrer le mouvement des colis ou des articles pendant le transport. À chaque lieu de traitement, les marchandises sont identifiées et transmises au système de traitement central. Ces données sont ensuite utilisées pour donner le statut/la mise à jour de l'emplacement des marchandises aux expéditeurs.

Le système que nous allons créer affichera également l'itinéraire emprunté et la quantité de chocs et de bosses reçus. Cette instruction suppose également que vous avez une connaissance de base d'un raspberry pi, python et mysql.

note: ceci a été fait pour un projet scolaire, donc en raison de la contrainte de temps, il y a beaucoup de place pour l'amélioration

Fournitures

-Framboise Pi 4 modèle B

-Framboise PI T-cordonnier

-4x 3, 7V batteries Li-ion

-2x double support de batterie

-Convertisseur abaisseur DC Buck 5v

-2x grosses leds orange

-interrupteur marche/arrêt/marche

-bouton

-adafruit ultime gps v3

-mpu6050

-16x2 écran lcd

-servomoteur

Étape 1: Alimentation du circuit et du Pi

Alimentation du circuit et du Pi
Alimentation du circuit et du Pi
Alimentation du circuit et du Pi
Alimentation du circuit et du Pi

Quand il s'agit d'alimenter le circuit pi avec une batterie, vous avez quelques options sur la façon de le faire.

Vous pouvez utiliser une banque d'alimentation et alimenter le pi via USB, peut-être que vous montez l'appareil sur un vélo électrique ou un scooter électrique doté d'un port USB, peut-être avez-vous une batterie de téléphone 5V qui attend d'être utilisée ou vous pouvez utiliser 2 des ensembles de batteries de 3,7 V en parallèle avec un convertisseur abaisseur comme indiqué sur les images

Tout va bien tant qu'il peut fournir un 5V continu et qu'il a une durée de vie dont vous êtes satisfait.

Étape 2: Le MPU6050

Le MPU6050
Le MPU6050

IntroductionLe module de capteur MPU6050 est un dispositif de suivi de mouvement intégré à 6 axes.

  • Il dispose d'un gyroscope à 3 axes, d'un accéléromètre à 3 axes, d'un processeur de mouvement numérique et d'un capteur de température, le tout dans un seul circuit intégré.
  • Divers paramètres peuvent être trouvés en lisant les valeurs des adresses de certains registres à l'aide de la communication I2C. La lecture du gyroscope et de l'accéléromètre le long des axes X, Y et Z sont disponibles sous forme de complément à 2.
  • Les lectures du gyroscope sont exprimées en degrés par seconde (dps); Les lectures de l'accéléromètre sont en unité g.

Activer I2C

Lorsque vous utilisez un MPU6050 avec un Raspberry Pi, nous devons nous assurer que le protocole I2C sur le Raspberry Pi est activé. Pour ce faire, ouvrez le terminal du pi via du mastic ou un autre logiciel et procédez comme suit:

  1. tapez "sudo raspi-config"
  2. Sélectionnez les configurations d'interfaçage
  3. Dans l'option d'interfaçage, sélectionnez "I2C"
  4. Activer la configuration I2C
  5. Sélectionnez Oui lorsqu'il vous demande de redémarrer.

Maintenant, nous pouvons tester/numériser pour n'importe quel périphérique I2C connecté à notre carte Raspberry Pi en installant des outils i2c. Nous pouvons obtenir des outils i2c en utilisant le gestionnaire de packages apt. Utilisez la commande suivante dans le terminal Raspberry Pi.

"sudo apt-get install -y i2c-tools"

Connectez maintenant n'importe quel périphérique basé sur I2C au port en mode utilisateur et scannez ce port à l'aide de la commande suivante, "sudo i2cdetect -y 1"

Ensuite, il répondra avec l'adresse de l'appareil.

Si aucune adresse n'est renvoyée, assurez-vous que le MPU6050 est correctement connecté et réessayez

Le faire fonctionner

maintenant que nous sommes sûrs que i2c est activé et que le pi peut atteindre le MPU6050, nous allons installer une bibliothèque à l'aide de la commande "sudo pip3 install adafruit-circuitpython-mpu6050".

si nous créons un fichier de test python et utilisons le code suivant, nous pouvons voir si cela fonctionne:

heure d'importation

panneau d'importation

entreprise d'importation

oimport adafruit_mpu6050

i2c = busio. I2C (carte. SCL, carte. SDA)

mpu = adafruit_mpu6050. MPU6050(i2c)

tant que vrai:

print("Accélération: X: %.2f, Y: %.2f, Z: %.2f m/s^2" % (mpu.acceleration))

print("Gyro X: %.2f, Y: %.2f, Z: %.2f degrés/s" % (mpu.gyro))

print("Température: %.2f C" % mpu.temperature)

imprimer("")

heure.sommeil(1)

lorsque nous voulons maintenant l'accélération dans l'axe X/Y/Z, nous pouvons utiliser ce qui suit:

accelX = mpu.acceleration[0]accelY = mpu.acceleration[1] accelZ = mpu.acceleration[2]

en combinant cela avec une simple instruction if dans une boucle constante, nous pouvons compter la quantité de chocs lors d'un voyage

Étape 3: Le GPS Ultimate Breakout d'Adafruit

Le GPS Ultimate Breakout d'Adafruit
Le GPS Ultimate Breakout d'Adafruit

introduction

Le breakout est construit autour du chipset MTK3339, un module GPS simple et de haute qualité qui peut suivre jusqu'à 22 satellites sur 66 canaux, dispose d'un excellent récepteur haute sensibilité (suivi de -165 dB !) et d'une antenne intégrée. Il peut effectuer jusqu'à 10 mises à jour de localisation par seconde pour une journalisation ou un suivi à haute vitesse et haute sensibilité. La consommation d'énergie est incroyablement faible, seulement 20 mA pendant la navigation.

La carte est livrée avec: un régulateur à très faible chute de 3,3 V pour que vous puissiez l'alimenter avec une entrée de 3,3 à 5 VCC, des entrées sécurisées de niveau 5 V, la LED clignote à environ 1 Hz pendant la recherche de satellites et clignote une fois toutes les 15 secondes lorsqu'un correctif trouvé pour économiser de l'énergie.

Tester le gps avec arduino

Si vous avez accès à un arduino, c'est une bonne idée de tester le module avec.

Connectez VIN à +5VConnect GND à GroundConnect GPS RX (données dans GPS) à Digital 0Connect GPS TX (données à partir de GPS) à Digital 1

Exécutez simplement un code arduino vierge et ouvrez le moniteur série à 9600 bauds. Si vous obtenez des données GPS, votre module GPS fonctionne. Remarque: si votre module n'obtient pas de solution, essayez de le mettre par une fenêtre ou à l'extérieur sur une terrasse

Le faire fonctionner

Début de l'installation de la bibliothèque gps adafruit à l'aide de la commande "sudo pip3 install adafruit-circuitpython-gps".

Nous pouvons maintenant utiliser le code python suivant pour voir si nous pouvons le faire fonctionner:

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')

tant que vrai:

gps.update() alors que pas gps.has_fix:

print(gps.nmea_sentence)print('En attente de correction…')gps.update()time.sleep(1)continue

print('=' * 40) # Imprimer une ligne de séparation.print('Latitude: {0:.6f} degrés'.format(gps.latitude))print('Longitude: {0:.6f} degrés'.format (gps.longitude))print("Fixer la qualité: {}".format(gps.fix_quality))

# Certains attributs au-delà de la latitude, de la longitude et de l'horodatage sont facultatifs# et peuvent ne pas être présents. Vérifiez s'ils sont Aucun avant d'essayer d'utiliser ! Si gps.satellites n'est pas Aucun:

print("# satellites: {}".format(gps.satellites))

si gps.altitude_m n'est pas Aucun:

print("Altitude: {} mètres".format(gps.altitude_m))

si gps.speed_knots n'est pas Aucun:

print("Vitesse: {} nœuds".format(gps.speed_knots))

si gps.track_angle_deg n'est pas Aucun:

print("Angle de piste: {} degrés".format(gps.track_angle_deg))

si gps.horizontal_dilution n'est pas Aucun:

print("Dilution horizontale: {}".format(gps.horizontal_dilution))

si gps.height_geoid n'est pas Aucun:

print("Height geo ID: {} mètres".format(gps.height_geoid))

heure.sommeil(1)

Étape 4: L'écran LCD 16x2

L'écran LCD 16x2
L'écran LCD 16x2

introduction

Les modules LCD sont très couramment utilisés dans la plupart des projets embarqués, la raison étant leur prix bon marché, leur disponibilité et leur convivialité pour les programmeurs. La plupart d'entre nous auraient rencontré ces écrans dans notre vie de tous les jours, que ce soit chez le BCP ou sur des calculatrices. L'écran LCD 16 × 2 est nommé ainsi parce que; il a 16 colonnes et 2 lignes. Il existe de nombreuses combinaisons disponibles telles que 8×1, 8×2, 10×2, 16×1, etc., mais la plus utilisée est l’écran LCD 16×2. Ainsi, il aura (16×2=32) 32 caractères au total et chaque caractère sera composé de 5×8 Pixel Dots.

Installation de smbus

Le bus de gestion système (SMBus) est plus ou moins un dérivé du bus I2C. La norme a été développée par Intel et est maintenant maintenue par le SBS Forum. La principale application du SMBus est de surveiller les paramètres critiques sur les cartes mères des PC et dans les systèmes embarqués. Par exemple, de nombreux circuits intégrés de surveillance de la tension d'alimentation, de température et de surveillance/commande de ventilateur avec une interface SMBus sont disponibles.

La bibliothèque que nous utiliserons nécessite également l'installation de smbus. Pour installer smbus sur le rpi, utilisez la commande "sudo apt install python3-smbus".

Le faire fonctionner

installez d'abord la bibliothèque RPLCD à l'aide de la commande "sudo pip3 install RPLCD".

maintenant nous testons le lcd en affichant l'ip en utilisant le code suivant:

depuis RPLCD.i2c importer le socket CharLCDimport

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('Adresse IP:\r\n'+str(get_ip_address()))

Étape 5: Servo, Leds, Bouton et Interrupteur

Servo, Leds, Bouton et Interrupteur
Servo, Leds, Bouton et Interrupteur

introduction

Un servomoteur est un actionneur ou un moteur rotatif qui permet un contrôle précis en termes de position angulaire, d'accélération et de vitesse, des capacités qu'un moteur ordinaire n'a pas. Il utilise un moteur ordinaire et l'associe à un capteur pour le retour de position. Le contrôleur est la partie la plus sophistiquée du servomoteur, car il est spécialement conçu à cet effet.

LED court pour diode électroluminescente. Dispositif électronique à semi-conducteur qui émet de la lumière lorsqu'un courant électrique le traverse. Elles sont considérablement plus efficaces que les ampoules à incandescence et brûlent rarement. Les LED sont utilisées dans de nombreuses applications telles que les écrans vidéo à écran plat, et de plus en plus comme sources générales de lumière.

Un bouton-poussoir ou simplement un bouton est un mécanisme de commutation simple pour contrôler certains aspects d'une machine ou d'un processus. Les boutons sont généralement fabriqués dans un matériau dur, généralement en plastique ou en métal.

Un interrupteur marche/arrêt/marche a 3 positions où celle du milieu est l'état éteint. Ces types sont principalement utilisés pour le contrôle de moteur simple où vous avez un état avant, éteint et inverse.

Le faire fonctionner: le servo

Le servo utilise un signal PWM pour déterminer quel angle il doit être, heureusement pour nous, GPIO a cette fonctionnalité intégrée. Par conséquent, nous pouvons simplement utiliser le code suivant pour contrôler le servo: importer RPi. GPIO en tant que 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)

tant que vrai:

duty_cycle = float(input("Entrez le cycle de service (gauche = 5 à droite = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)

Le faire fonctionner: la led et l'interrupteur

En raison de la façon dont nous avons câblé les leds et le commutateur, nous n'avons pas besoin de contrôler ou de lire les leds et de commuter lui-même. Nous envoyons simplement des impulsions au bouton qui à son tour acheminera le signal vers la led que nous voulons.

Faire fonctionner: le bouton

Pour le bouton, nous créerons notre propre classe simple de cette façon, nous verrons facilement quand il est enfoncé sans avoir à y ajouter une détection d'événement à chaque fois que nous l'utilisons. Nous créerons le fichier classbutton.py en utilisant le code suivant:

à partir du bouton GPIOclass d'importation 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) ne renvoie pas 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)

Étape 6: Le circuit complet

Le circuit complet
Le circuit complet
Le circuit complet
Le circuit complet

Maintenant que nous avons passé en revue tous les composants, il est temps de les combiner tous.

Alors que les images montrent que les composants montrent tout sur la planche à pain elle-même, il est préférable d'avoir l'écran LCD, le GPS adafruit et le bouton connectés à l'aide de fils femelle à mâle. N'ayez que le t-cobbler et le mpu6050 sur une planche à pain. utilisez des fils plus longs pour vous assurer que vous pouvez atteindre les barres clignotantes et la barre de direction.

Étape 7: Le code

Pour garder cette instructable propre, j'ai fourni un référentiel github avec les fichiers backend et frontend. Il suffit de mettre les fichiers dans le dossier frontend dans le dossier /var/www/html et les fichiers dans le dossier backend dans un dossier dans le /home/ Dossier [nom d'utilisateur]/[nom de dossier]

Étape 8: La base de données

La base de données
La base de données

En raison de la façon dont ce système est configuré, il existe une simple boutique en ligne configurée à l'aide d'une liste de produits dans une base de données. De plus, nous avons tous les points de passage et les commandes enregistrés ici. Un script de création peut être trouvé sur le référentiel github lié au L'étape suivante

Étape 9: Le cas

L'affaire
L'affaire

Une fois que nous savons que l'électronique fonctionne, nous pouvons les mettre dans une boîte. Vous pouvez prendre une certaine liberté créative avec cela. Avant de le construire, prenez simplement une boîte en carton dont vous n'avez plus besoin comme une boîte de céréales vide par exemple et coupez-la, collez-la et pliez-le jusqu'à ce que vous ayez quelque chose que vous aimez. Mesurez et dessinez votre étui sur un morceau de papier et fabriquez-le à partir d'un matériau plus solide comme le bois, ou si ce n'est pas votre truc, imprimez-le en 3D. Assurez-vous simplement que tous les appareils électroniques rentrent à l'intérieur et vous avez des trous pour le bouton, le fil allant à l'interrupteur, les led et l'écran lcd. Une fois que vous avez fait votre boîtier, il ne reste plus qu'à trouver un moyen de le monter sur votre vélo ou votre scooter

Conseillé: