- Wymagane składniki
- Moduł czujnika MPU6050 - krótkie wprowadzenie
- Schemat obwodu licznika kroków Attiny85
- Produkcja PCB dla licznika kroków Attiny85
- Zamawianie PCB w PCBWay
- Montaż płytki PCB licznika kroków ATtiny85
- ATtiny85 Objaśnienie kodu licznika kroków
- Zabierzmy nasz licznik kroków Arduino na spacer
W tym samouczku zamierzamy zbudować łatwy i tani krokomierz przy użyciu układu ATtiny85 IC, akcelerometru i żyroskopu MPU6050 oraz modułu wyświetlacza OLED. Ten prosty licznik kroków oparty na Arduino jest zasilany przez baterię na monety 3 V, dzięki czemu jest łatwy do przenoszenia, gdy wychodzisz na spacer lub jogging. Wymaga również bardzo niewielu komponentów do zbudowania, a kod jest również stosunkowo prosty. Program w tym projekcie wykorzystuje MPU6050 do pomiaru wielkości przyspieszenia wzdłuż 3 osi (X, Y i Z). Następnie oblicza różnicę wartości przyspieszenia między poprzednimi i bieżącymi wartościami. Jeśli różnica jest większa niż określony próg (dla marszu powyżej 6 i biegu powyżej 10), odpowiednio zwiększa liczbę kroków. Całkowita liczba wykonanych kroków jest następnie wyświetlana na wyświetlaczu OLED.
Aby zbudować ten przenośny licznik kroków na PCB, wyprodukowaliśmy nasze płytki PCB z PCBWay i zmontujemy i przetestujemy to samo w tym projekcie. Jeśli chcesz dodać więcej funkcji, możesz również dodać monitor bicia serca do tej konfiguracji, a wcześniej zbudowaliśmy również licznik kroków akcelerometru Arduino za pomocą ADXL335, sprawdź je, jeśli jesteś zainteresowany.
Wymagane składniki
Aby zbudować ten krokomierz za pomocą Arduino, będziesz potrzebować następujących komponentów.
- Attiny85 IC
- MPU6050
- Moduł wyświetlacza OLED
- 2 × przyciski
- Rezystory 5 × 10KΩ (SMD)
Moduł czujnika MPU6050 - krótkie wprowadzenie
MPU6050 jest oparty na technologii Micro-Mechanical Systems (MEMS). Ten czujnik ma 3-osiowy akcelerometr, 3-osiowy żyroskop i wbudowany czujnik temperatury. Może być używany do pomiaru parametrów, takich jak przyspieszenie, prędkość, orientacja, przemieszczenie, itp. Wcześniej połączyliśmy MPU6050 z Arduino i Raspberry pi, a także zbudowaliśmy kilka projektów wykorzystujących go, takich jak robot samobalansujący, kątomierz cyfrowy Arduino i inklinometr Arduino.
Moduł MPU6050 jest niewielkich rozmiarów i charakteryzuje się niskim zużyciem energii, wysoką powtarzalnością, wysoką odpornością na wstrząsy i niską ceną dla użytkownika. MPU6050 jest wyposażony w magistralę I2C i pomocniczy interfejs magistrali I2C i może łatwo zakłócać działanie innych czujników, takich jak magnetometry i mikrokontrolery.
Schemat obwodu licznika kroków Attiny85
Schemat licznika kroków MPU6050 przedstawiono poniżej:
Powyższy obraz przedstawia schemat obwodu do połączenia MPU6050 i wyświetlacza OLED z układem Attiny85. Interfejs między MPU6050, wyświetlaczem OLED i Arduino musi być zaimplementowany przy użyciu protokołu I2C. Stąd SCLPin (PB2) ATtiny85 jest podłączony do SCLPin odpowiednio MPU6050 i wyświetlacza OLED. Podobnie, SDAPin (PB0) ATtiny85 jest podłączony do SDAPin MPU6050 i wyświetlacza OLED. Dwa przyciski są również podłączone do pinów PB3 i PB4 układu ATtiny85. Przyciski te służą do przewijania tekstu lub zmiany tekstu na wyświetlaczu.
Uwaga: Postępuj zgodnie z naszym poprzednim samouczkiem Programowanie układu scalonego ATtiny85 bezpośrednio przez USB za pomocą programu ładującego Digispark, aby zaprogramować układ scalony ATtiny85 przez USB i program ładujący Digispark.
Produkcja PCB dla licznika kroków Attiny85
Schemat jest gotowy i możemy przystąpić do układania PCB. Możesz zaprojektować PCB przy użyciu dowolnego wybranego oprogramowania PCB. Użyliśmy EasyEDA do wyprodukowania PCB dla tego projektu.
Poniżej znajdują się widoki 3D modelu górnej warstwy i dolnej warstwy płytki PCB licznika kroków:
Układ PCB dla powyższego obwodu jest również dostępny do pobrania jako Gerber z linku podanego poniżej:
- Plik Gerber dla licznika kroków ATtiny85
Zamawianie PCB w PCBWay
Teraz po sfinalizowaniu projektu można przystąpić do zamawiania PCB:
Krok 1: Wejdź na https://www.pcbway.com/, zarejestruj się, jeśli to Twój pierwszy raz. Następnie w zakładce Prototyp PCB wprowadź wymiary swojej płytki PCB, liczbę warstw i liczbę potrzebnych PCB.
Krok 2: Kontynuuj, klikając przycisk „Cytuj teraz”. Zostaniesz przeniesiony na stronę, na której możesz ustawić kilka dodatkowych parametrów, takich jak typ płytki, warstwy, materiał na PCB, grubość i więcej, większość z nich jest wybierana domyślnie, jeśli decydujesz się na jakiekolwiek określone parametry, możesz wybrać to tutaj.
Krok 3: Ostatnim krokiem jest załadowanie pliku Gerber i kontynuacja płatności. Aby upewnić się, że proces przebiega bezproblemowo, PCBWAY sprawdza, czy plik Gerber jest prawidłowy przed przystąpieniem do płatności. W ten sposób możesz mieć pewność, że Twoja płytka drukowana jest przyjazna dla produkcji i dotrze do Ciebie zgodnie z zobowiązaniem.
Montaż płytki PCB licznika kroków ATtiny85
Po kilku dniach otrzymaliśmy PCB w zgrabnym opakowaniu, a jakość PCB była jak zawsze dobra. Poniżej pokazano górną i dolną warstwę płyty:
Po upewnieniu się, że ślady i ślady są prawidłowe. Przystąpiłem do montażu PCB. Całkowicie wlutowana płytka wygląda jak poniżej:
ATtiny85 Objaśnienie kodu licznika kroków
Pełny kod licznika kroków Arduino znajduje się na końcu dokumentu. Tutaj wyjaśniamy kilka ważnych części kodu.
Kod korzysta z bibliotek TinyWireM.h i TinyOzOLED.h. Bibliotekę TinyWireM można pobrać z Menedżera bibliotek w środowisku Arduino IDE i stamtąd zainstalować. W tym celu otwórz Arduino IDE i przejdź do Sketch <Include Library <Manage Libraries . Teraz wyszukaj TinyWireM.h i zainstaluj bibliotekę TinyWireM firmy Adafruit.
Natomiast bibliotekę TinyOzOLED.h można pobrać z podanych linków.
Po zainstalowaniu bibliotek do Arduino IDE, uruchom kod, dołączając potrzebne pliki bibliotek.
#include „TinyWireM.h” #include „TinyOzOLED.h”
Po uwzględnieniu bibliotek zdefiniuj zmienne do przechowywania odczytów akcelerometru.
intaccelX, accelY, accelZ;
W pętli setup () zainicjuj bibliotekę przewodów i zresetuj czujnik za pomocą rejestru zarządzania energią, a także zainicjuj komunikację I2C dla wyświetlacza OLED. Następnie w kolejnych wierszach ustaw orientację wyświetlacza i wprowadź adres rejestru dla wartości akcelerometru i żyroskopu.
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);
W funkcji getAccel () zacznij od odczytu danych akcelerometru. Dane dla każdej osi są przechowywane w dwóch bajtach (górny i dolny) lub rejestrach. Aby je wszystkie odczytać, zacznij od pierwszego rejestru i korzystając z funkcji requiestFrom () , prosimy o odczytanie wszystkich 6 rejestrów dla osi X, Y i Z. Następnie odczytujemy dane z każdego rejestru, a ponieważ wyjścia są uzupełnieniem do dwóch, łączymy je odpowiednio, aby uzyskać pełne wartości akcelerometru.
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 (); }
Teraz w funkcji pętli najpierw odczytaj wartości osi X, Y i Z, a po uzyskaniu wartości z 3 osi oblicz całkowity wektor przyspieszenia, biorąc pierwiastek kwadratowy z wartości osi X, Y i Z. Następnie oblicz różnicę między aktualnym wektorem a poprzednim wektorem i jeśli różnica jest większa niż 6, zwiększ liczbę kroków.
getAccel (); wektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = wektor - wektorpoprzedni; if (totalvector> 6) {Steps ++; } OzOled.printString ("Kroki", 0, 4); OzOled.printNumber (Steps, 0, 8, 4); vectorprevious = wektor; opóźnienie (600);
Zabierzmy nasz licznik kroków Arduino na spacer
Po zakończeniu montażu płytki drukowanej podłącz ATtiny85 do płytki programatora i prześlij kod. Teraz weź konfigurację licznika kroków w swoje ręce i zacznij chodzić krok po kroku, powinien on wyświetlać liczbę kroków na OLED. Czasami zwiększa liczbę kroków, gdy zestaw wibruje bardzo szybko lub bardzo wolno.
W ten sposób możesz zbudować własny licznik kroków za pomocą ATtiny85 i MPU6050. Pełne działanie projektu można również znaleźć w filmie, do którego link znajduje się poniżej. Mam nadzieję, że projekt spodobał Ci się i zbudowanie własnego okazało się interesujące. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy poniżej.