- Composants requis
- Module de capteur MPU6050 - Une brève introduction
- Schéma du circuit du compteur Attiny85 Step
- Fabrication de PCB pour compteur de pas Attiny85
- Commande de PCB auprès de PCBWay
- Assemblage du circuit imprimé du compteur de pas ATtiny85
- Explication du code de compteur de pas ATtiny85
- Prenons notre compteur de pas Arduino pour une promenade
Dans ce tutoriel, nous allons construire un podomètre simple et bon marché en utilisant ATtiny85 IC, MPU6050 Accelerometer & Gyroscope et OLED Display Module. Ce compteur de pas simple basé sur Arduino est alimenté par une pile bouton 3V, ce qui le rend facile à transporter lorsque vous sortez pour une promenade ou un jogging. Il nécessite également très peu de composants à construire et le code est également relativement simple. Le programme de ce projet utilise le MPU6050 pour mesurer l'amplitude de l'accélération le long des 3 axes (X, Y et Z). Ensuite, il calcule la différence de l'amplitude de l'accélération entre les valeurs précédentes et actuelles. Si la différence est supérieure à un certain seuil (pour la marche supérieure à 6 et pour la course à pied supérieure à 10), elle augmente le nombre de pas en conséquence. Le nombre total de pas effectués est ensuite affiché sur l'écran OLED.
Pour construire ce compteur de pas portable sur un PCB, nous avons fabriqué nos cartes PCB à partir de PCBWay et nous assemblerons et testerons la même chose dans ce projet. Si vous souhaitez ajouter plus de fonctionnalités, vous pouvez également ajouter un moniteur Heartbeat à cette configuration et nous avons également déjà construit un compteur de pas d'accéléromètre Arduino en utilisant ADXL335, vérifiez-les si vous êtes intéressé.
Composants requis
Pour construire ce podomètre en utilisant Arduino, vous aurez besoin des composants suivants.
- Attiny85 IC
- MPU6050
- Module d'affichage OLED
- 2 × boutons poussoirs
- Résistances 5 × 10KΩ (SMD)
Module de capteur MPU6050 - Une brève introduction
Le MPU6050 est basé sur la technologie des systèmes micro-mécaniques (MEMS). Ce capteur possède un accéléromètre à 3 axes, un gyroscope à 3 axes et un capteur de température intégré. Il peut être utilisé pour mesurer des paramètres tels que l'accélération, la vélocité, l'orientation, le déplacement, etc.
Le module MPU6050 est de petite taille et a une faible consommation d'énergie, une répétition élevée, une tolérance aux chocs élevée et des prix bas pour l'utilisateur. Le MPU6050 est livré avec un bus I2C et une interface de bus auxiliaire I2C et peut facilement interférer avec d'autres capteurs tels que des magnétomètres et des microcontrôleurs.
Schéma du circuit du compteur Attiny85 Step
Le schéma du compteur de pas MPU6050 est donné ci-dessous:
L'image ci-dessus montre le schéma de circuit pour interfacer le MPU6050 et l'affichage OLED avec le CI Attiny85. L'interface entre MPU6050, écran OLED et Arduino doit être implémentée à l'aide du protocole I2C. Par conséquent, le SCLPin (PB2) de l'ATtiny85 est connecté au SCLPin du MPU6050 et de l'écran OLED respectivement. De même, la SDAPin (PB0) de l'ATtiny85 est connectée à la SDAPin du MPU6050 et de l'écran OLED. Deux boutons-poussoirs sont également connectés à la broche PB3 et PB4 de ATtiny85 IC. Ces boutons peuvent être utilisés pour faire défiler le texte ou modifier le texte affiché.
Remarque: Suivez notre tutoriel précédent Programmer ATtiny85 IC directement via USB en utilisant Digispark Bootloader pour programmer l'ATtiny85 IC via USB et Digispark Boot-loader.
Fabrication de PCB pour compteur de pas Attiny85
Le schéma est fait et nous pouvons procéder à la mise en page du PCB. Vous pouvez concevoir le PCB en utilisant n'importe quel logiciel PCB de votre choix. Nous avons utilisé EasyEDA pour fabriquer des circuits imprimés pour ce projet.
Vous trouverez ci-dessous les vues de modèle 3D de la couche supérieure et de la couche inférieure du PCB du compteur de pas:
La disposition du PCB pour le circuit ci-dessus est également disponible au téléchargement sous Gerber à partir du lien ci-dessous:
- Fichier Gerber pour ATtiny85 Step Counter
Commande de PCB auprès de PCBWay
Maintenant, après avoir finalisé la conception, vous pouvez passer à la commande du PCB:
Étape 1: accédez à https://www.pcbway.com/, inscrivez-vous si c'est votre première fois. Ensuite, dans l'onglet Prototype PCB, entrez les dimensions de votre PCB, le nombre de couches et le nombre de PCB dont vous avez besoin.
Étape 2: Continuez en cliquant sur le bouton «Devis maintenant». Vous serez redirigé vers une page où définir quelques paramètres supplémentaires tels que le type de carte, les couches, le matériau pour le PCB, l'épaisseur, etc., la plupart d'entre eux sont sélectionnés par défaut, si vous optez pour des paramètres spécifiques, vous pouvez sélectionner il ici.
Étape 3: La dernière étape consiste à télécharger le fichier Gerber et à procéder au paiement. Pour s'assurer que le processus se déroule sans heurts, PCBWAY vérifie si votre fichier Gerber est valide avant de procéder au paiement. De cette façon, vous pouvez être sûr que votre PCB est facile à fabriquer et vous atteindra comme engagé.
Assemblage du circuit imprimé du compteur de pas ATtiny85
Après quelques jours, nous avons reçu notre PCB dans un emballage soigné et la qualité du PCB était bonne comme toujours. La couche supérieure et la couche inférieure de la planche sont illustrées ci-dessous:
Après vous être assuré que les traces et les empreintes étaient correctes. J'ai procédé à l'assemblage du PCB. La carte complètement soudée ressemble à celle ci-dessous:
Explication du code de compteur de pas ATtiny85
Le code complet du compteur de pas Arduino est donné à la fin du document. Nous expliquons ici certaines parties importantes du code.
Le code utilise les bibliothèques TinyWireM.h et TinyOzOLED.h. La bibliothèque TinyWireM peut être téléchargée à partir du gestionnaire de bibliothèque dans l'IDE Arduino et installer à partir de là. Pour cela, ouvrez l'IDE Arduino et accédez à Sketch <Inclure la bibliothèque <Gérer les bibliothèques . Recherchez maintenant TinyWireM.h et installez la bibliothèque TinyWireM d'Adafruit.
Alors que la bibliothèque TinyOzOLED.h peut être téléchargée à partir des liens donnés.
Après avoir installé les bibliothèques sur Arduino IDE, démarrez le code en incluant les fichiers de bibliothèques nécessaires.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Après avoir inclus les bibliothèques, définissez les variables pour stocker les lectures de l'accéléromètre.
intaccelX, accelY, accelZ;
À l'intérieur de la boucle setup () , initialisez la bibliothèque de câbles et réinitialisez le capteur via le registre de gestion de l'alimentation pour initialiser également la communication I2C pour l'affichage OLED. Ensuite, dans les lignes suivantes, définissez l'orientation de l'affichage et entrez l'adresse du registre pour les valeurs de l'accéléromètre et du gyroscope.
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
Dans la fonction getAccel () , commencez par lire les données de l'accéléromètre. Les données de chaque axe sont stockées dans deux octets (supérieur et inférieur) ou registres. Pour les lire tous, commencez par le premier registre, et en utilisant la fonction requiestFrom () , nous demandons de lire les 6 registres pour les axes X, Y et Z. Ensuite, nous lisons les données de chaque registre et, comme les sorties sont complémentaires à deux, nous les combinons de manière appropriée pour obtenir les valeurs complètes de l'accéléromètre.
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
Maintenant, dans la fonction de boucle, lisez d'abord les valeurs des axes X, Y et Z et après avoir obtenu les valeurs sur 3 axes, calculez le vecteur d'accélération totale en prenant la racine carrée des valeurs des axes X, Y et Z. Calculez ensuite la différence entre le vecteur actuel et le vecteur précédent et si la différence est supérieure à 6, augmentez le nombre de pas.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vecteur - vecteurprécédent; if (totalvector> 6) {Steps ++; } OzOled.printString ("étapes", 0, 4); OzOled.printNumber (étapes, 0, 8, 4); vectorprevious = vecteur; retard (600);
Prenons notre compteur de pas Arduino pour une promenade
Une fois que vous avez fini d'assembler le PCB, connectez l'ATtiny85 à la carte du programmateur et téléchargez le code. Maintenant, prenez la configuration du compteur de pas dans vos mains et commencez à marcher étape par étape, il devrait afficher le nombre de pas sur OLED. Parfois, il augmente le nombre d'étapes lorsque l'installation vibre très rapidement ou très lentement.
C'est ainsi que vous pouvez créer votre propre compteur de pas à l'aide des ATtiny85 et MPU6050. Le fonctionnement complet du projet peut également être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié le projet et que vous avez trouvé intéressant de créer le vôtre. Si vous avez des questions, veuillez les laisser dans la section commentaires ci-dessous.