Table des matières:
- Fournitures
- Étape 1: Alimentation du circuit et du Pi
- Étape 2: Le MPU6050
- Étape 3: Le GPS Ultimate Breakout d'Adafruit
- Étape 4: L'écran LCD 16x2
- Étape 5: Servo, Leds, Bouton et Interrupteur
- Étape 6: Le circuit complet
- Étape 7: Le code
- Étape 8: La base de données
- Étape 9: Le cas
Vidéo: Track&trace pour les petits magasins : 9 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
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
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
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:
- tapez "sudo raspi-config"
- Sélectionnez les configurations d'interfaçage
- Dans l'option d'interfaçage, sélectionnez "I2C"
- Activer la configuration I2C
- 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
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
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
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
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
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
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é:
Première horloge pour tout-petits - Avec minuterie lumineuse : 16 étapes (avec photos)
Première horloge pour tout-petits - avec minuterie lumineuse : ce guide vous montre comment créer des « visages » d'horloge interchangeables - qui peuvent contenir les photos de votre enfant, des photos de famille / d'animaux de compagnie - ou toute autre chose - que vous pensiez qu'il serait agréable de changer périodiquement. Fixez simplement le plexiglas transparent sur l'ar
SYSTÈME DE PDV POUR MAGASINS, ÉPICERIES ET CENTRES DE SERVICES D'EXCEL Avec Utilisation de Codes-Barres : 7 Étapes
SYSTÈME DE PDV POUR MAGASINS, ÉPICERIES ET CENTRES DE SERVICES D'EXCEL Avec l'utilisation de codes à barres : je vous présente avec ce blog comment créer un système de point de vente (point de vente) simple pour les petites épiceries et les centres de services. Avec cette méthode, vous pouvez gérer les installations suivantes sans logiciel spécial ni équipement coûteux. v Iss
Utilisez Cortana et un Arduino pour contrôler les LED RVB ou les bandes LED avec votre voix ! : 4 étapes (avec photos)
Utilisez Cortana et un Arduino pour contrôler les LED RVB ou les bandes LED avec votre voix ! : Dans cette instructable, je vais vous montrer comment vous pouvez contrôler votre LED ou bande LED RVB avec votre voix. Ceci est fait par l'application CoRGB qui est disponible gratuitement dans la boutique d'applications Windows. Cette application fait partie de mon projet CortanaRoom. Quand vous en avez fini avec
Conception de chambre noire à domicile pour les petits espaces: 7 étapes (avec photos)
Conception de chambre noire à la maison pour les petits espaces : vue à 360 degrés de mon placard converti - Image sphérique - RICOH THETAHi, je voudrais commencer par dire que cette conception de chambre noire ne sera pas applicable à tout le monde. Votre garde-robe peut être plus grande, plus petite ou vous utilisez peut-être un espace salle de bain. Oui
Bandeaux lumineux de couronne de fleurs pour les festivals de musique d'été, les mariages, les occasions spéciales : 8 étapes (avec photos)
Bandeaux lumineux à couronne de fleurs pour les festivals de musique d'été, les mariages et les occasions spéciales : illuminez la nuit avec un magnifique bandeau à fleurs LED ! Parfait pour tous les mariages, festivals de musique, bals de finissants, costumes et occasions spéciales ! Kits avec tout ce dont vous avez besoin pour créer le vôtre bandeau lumineux sont maintenant disponibles dans le magasin Wearables Workshop