- Erforderliche Komponenten
- MPU6050 Sensormodul - Eine kurze Einführung
- Attiny85 Step Counter Schaltplan
- Herstellung einer Leiterplatte für Attiny85 Step Counter
- PCB bei PCBWay bestellen
- Zusammenbau der ATtiny85 Step Counter PCB
- ATtiny85 Schrittzähler Code Erläuterung
- Lassen Sie uns mit unserem Arduino Step Counter spazieren gehen
In diesem Tutorial bauen wir einen einfachen und kostengünstigen Schrittzähler mit ATtiny85 IC, MPU6050 Accelerometer & Gyroscope und OLED Display Module. Dieser einfache Schrittzähler auf Arduino-Basis wird von einer 3-V-Knopfzelle angetrieben, die das Tragen erleichtert, wenn Sie spazieren gehen oder joggen. Zum Erstellen sind nur sehr wenige Komponenten erforderlich, und der Code ist auch relativ einfach. Das Programm in diesem Projekt verwendet die MPU6050, um die Größe der Beschleunigung entlang der 3-Achsen (X, Y und Z) zu messen. Dann berechnet es die Differenz der Beschleunigungsgröße zwischen dem vorherigen und dem aktuellen Wert. Wenn die Differenz größer als ein bestimmter Schwellenwert ist (beim Gehen größer als 6 und beim Laufen größer als 10), erhöht sich die Schrittzahl entsprechend. Die insgesamt durchgeführten Schritte werden dann auf dem OLED-Display angezeigt.
Um diesen tragbaren Schrittzähler auf einer Leiterplatte zu bauen, haben wir unsere Leiterplatten aus PCBWay hergestellt und werden diese in diesem Projekt zusammenbauen und testen. Wenn Sie weitere Funktionen hinzufügen möchten, können Sie diesem Setup auch einen Heartbeat-Monitor hinzufügen. Wir haben bereits einen Arduino-Beschleunigungsmesser-Schrittzähler mit ADXL335 erstellt. Überprüfen Sie diese, wenn Sie interessiert sind.
Erforderliche Komponenten
Um diesen Schrittzähler mit Arduino zu bauen , benötigen Sie die folgenden Komponenten.
- Attiny85 IC
- MPU6050
- OLED-Anzeigemodul
- 2 × Drucktasten
- 5 × 10KΩ-Widerstände (SMD)
MPU6050 Sensormodul - Eine kurze Einführung
MPU6050 basiert auf der MEMS-Technologie (Micro-Mechanical Systems). Dieser Sensor verfügt über einen 3-Achsen-Beschleunigungsmesser, ein 3-Achsen-Gyroskop und einen eingebauten Temperatursensor. Es kann verwendet werden, um Parameter wie Beschleunigung, Geschwindigkeit, Ausrichtung, Verschiebung usw. zu messen. Wir haben MPU6050 zuvor mit Arduino und Raspberry pi verbunden und auch einige Projekte damit erstellt, wie den selbstausgleichenden Roboter, den Arduino Digital Protractor und den Arduino Inclinometer.
Das MPU6050-Modul ist klein und hat einen geringen Stromverbrauch, eine hohe Wiederholung, eine hohe Schocktoleranz und niedrige Benutzerpreise. Die MPU6050 verfügt über eine I2C-Bus- und eine zusätzliche I2C-Busschnittstelle und kann problemlos andere Sensoren wie Magnetometer und Mikrocontroller stören.
Attiny85 Step Counter Schaltplan
Das Schema für den MPU6050-Schrittzähler ist unten angegeben:
Das obige Bild zeigt den Schaltplan für die Verbindung von MPU6050 und OLED-Display mit Attiny85 IC. Die Schnittstelle zwischen MPU6050, OLED Display und Arduino muss mithilfe des I2C-Protokolls implementiert werden. Daher ist das SCLPin (PB2) des ATtiny85 mit dem SCLPin der MPU6050 bzw. des OLED-Displays verbunden. Ebenso ist das SDAPin (PB0) des ATtiny85 mit dem SDAPin der MPU6050 und des OLED-Displays verbunden. Zwei Drucktasten sind ebenfalls mit dem PB3- und PB4-Pin des ATtiny85-IC verbunden. Mit diesen Schaltflächen können Sie den Text scrollen oder den angezeigten Text ändern.
Hinweis: Befolgen Sie unser vorheriges Tutorial Programmieren des ATtiny85 IC direkt über USB mit Digispark Bootloader, um den ATtiny85 IC über USB und Digispark Bootloader zu programmieren.
Herstellung einer Leiterplatte für Attiny85 Step Counter
Der Schaltplan ist fertig und wir können mit dem Auslegen der Leiterplatte fortfahren. Sie können die Leiterplatte mit jeder Leiterplatten-Software Ihrer Wahl entwerfen. Wir haben EasyEDA verwendet, um Leiterplatten für dieses Projekt herzustellen.
Unten sehen Sie die 3D-Modellansichten der oberen und unteren Schicht der Step Counter-Platine:
Das PCB-Layout für die obige Schaltung kann auch als Gerber über den unten angegebenen Link heruntergeladen werden:
- Gerber-Datei für ATtiny85 Step Counter
PCB bei PCBWay bestellen
Nachdem Sie das Design fertiggestellt haben, können Sie mit der Bestellung der Leiterplatte fortfahren:
Schritt 1: Rufen Sie https://www.pcbway.com/ auf und melden Sie sich an, wenn Sie zum ersten Mal hier sind. Geben Sie dann auf der Registerkarte PCB Prototype die Abmessungen Ihrer Leiterplatte, die Anzahl der Schichten und die Anzahl der benötigten Leiterplatten ein.
Schritt 2: Klicken Sie auf die Schaltfläche "Jetzt zitieren". Sie werden zu einer Seite weitergeleitet, auf der Sie einige zusätzliche Parameter wie Platinentyp, Schichten, Material für Leiterplatte, Dicke und mehr festlegen können. Die meisten davon sind standardmäßig ausgewählt. Wenn Sie sich für bestimmte Parameter entscheiden, können Sie diese auswählen es hier drin.
Schritt 3: Der letzte Schritt besteht darin, die Gerber-Datei hochzuladen und mit der Zahlung fortzufahren. Um sicherzustellen, dass der Prozess reibungslos verläuft, überprüft PCBWAY, ob Ihre Gerber-Datei gültig ist, bevor Sie mit der Zahlung fortfahren. Auf diese Weise können Sie sicher sein, dass Ihre Leiterplatte herstellungsfreundlich ist und Sie als engagiert erreicht.
Zusammenbau der ATtiny85 Step Counter PCB
Nach ein paar Tagen erhielten wir unsere Leiterplatte in einer ordentlichen Verpackung und die Leiterplattenqualität war wie immer gut. Die oberste und die unterste Schicht der Platine sind unten dargestellt:
Nachdem Sie sichergestellt haben, dass die Spuren und Fußabdrücke korrekt sind. Ich fuhr mit dem Zusammenbau der Leiterplatte fort. Die vollständig gelötete Platine sieht wie folgt aus:
ATtiny85 Schrittzähler Code Erläuterung
Der vollständige Arduino-Schrittzählercode ist am Ende des Dokuments angegeben. Hier erklären wir einige wichtige Teile des Codes.
Der Code verwendet die Bibliotheken TinyWireM.h & TinyOzOLED.h. Die TinyWireM-Bibliothek kann vom Bibliotheksmanager in der Arduino IDE heruntergeladen und von dort installiert werden. Öffnen Sie dazu die Arduino IDE und gehen Sie zu Skizze <Bibliothek einschließen <Bibliotheken verwalten . Suchen Sie nun nach TinyWireM.h und installieren Sie die TinyWireM-Bibliothek von Adafruit.
Während die TinyOzOLED.h-Bibliothek von den angegebenen Links heruntergeladen werden kann.
Starten Sie nach der Installation der Bibliotheken in Arduino IDE den Code, indem Sie die erforderlichen Bibliotheksdateien einschließen.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Definieren Sie nach dem Einschließen der Bibliotheken die Variablen zum Speichern der Beschleunigungsmesser-Messwerte.
intaccelX, accelY, accelZ;
Initialisieren Sie innerhalb der setup () - Schleife die Kabelbibliothek und setzen Sie den Sensor über das Energieverwaltungsregister zurück. Initialisieren Sie auch die I2C-Kommunikation für das OLED-Display. Stellen Sie dann in den nächsten Zeilen die Ausrichtung der Anzeige ein und geben Sie die Registeradresse für die Werte des Beschleunigungsmessers und des Gyroskops ein.
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);
In der GetAccel () Funktion, zunächst die Beschleunigungssensordaten zu lesen. Die Daten für jede Achse werden in zwei Bytes (Upper & Lower) oder Registern gespeichert. Um sie alle zu lesen, beginnen Sie mit dem ersten Register und verwenden Sie die Funktion RequiestFrom () , um alle 6 Register für die X-, Y- und Z-Achse zu lesen. Dann lesen wir die Daten aus jedem Register und kombinieren sie entsprechend, da die Ausgänge ein Zweierkomplement sind, um die vollständigen Beschleunigungsmesserwerte zu erhalten.
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 (); }}
Lesen Sie nun innerhalb der Schleifenfunktion zuerst die X-, Y- und Z-Achsenwerte und berechnen Sie nach Erhalt der 3-Achsen-Werte den Gesamtbeschleunigungsvektor, indem Sie die Quadratwurzel der X-, Y- und Z-Achsenwerte ziehen. Berechnen Sie dann die Differenz zwischen dem aktuellen Vektor und dem vorherigen Vektor. Wenn die Differenz größer als 6 ist, erhöhen Sie die Schrittzahl.
getAccel (); Vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Steps ++; } OzOled.printString ("Steps", 0, 4); OzOled.printNumber (Schritte, 0, 8, 4); vectorprevious = vector; Verzögerung (600);
Lassen Sie uns mit unserem Arduino Step Counter spazieren gehen
Wenn Sie mit dem Zusammenbau der Platine fertig sind, schließen Sie den ATtiny85 an die Programmierplatine an und laden Sie den Code hoch. Nehmen Sie nun das Schrittzähler-Setup in Ihre Hände und gehen Sie Schritt für Schritt. Es sollte die Anzahl der Schritte auf der OLED anzeigen. Manchmal erhöht es die Anzahl der Schritte, wenn das Setup sehr schnell oder sehr langsam vibriert.
So können Sie mit ATtiny85 und MPU6050 Ihren eigenen Schrittzähler erstellen. Die vollständige Arbeitsweise des Projekts finden Sie auch in dem unten verlinkten Video. Ich hoffe, Ihnen hat das Projekt gefallen und Sie fanden es interessant, Ihr eigenes zu bauen. Wenn Sie Fragen haben, hinterlassen Sie diese bitte im Kommentarbereich unten.