- Gerekli Bileşenler
- MPU6050 Sensör Modülü - Kısa Bir Giriş
- Attiny85 Adım Sayıcı Devre Şeması
- Attiny85 Adım Sayacı için PCB Üretimi
- PCBWay'den PCB siparişi
- ATtiny85 Adım Sayacı PCB'nin Montajı
- ATtiny85 Adım Sayacı Kodu Açıklaması
- Arduino Adım Sayacımızı Yürüyüşe Çıkaralım
Bu eğitimde, ATtiny85 IC, MPU6050 İvmeölçer ve Jiroskop ve OLED Ekran Modülü kullanarak kolay ve ucuz bir Adımsayar oluşturacağız. Bu basit Arduino tabanlı adım sayacı, 3V madeni para hücresi ile güçlendirilmiştir ve yürüyüşe çıktığınızda veya koşuya çıktığınızda taşımayı kolaylaştırır. Ayrıca, oluşturmak için çok az bileşen gerektirir ve kod da nispeten basittir. Bu projedeki program, 3 eksen (X, Y ve Z) boyunca ivmenin büyüklüğünü ölçmek için MPU6050'yi kullanır. Daha sonra önceki ve şimdiki değerler arasındaki ivme büyüklüğünün farkını hesaplar. Fark belirli bir eşikten büyükse (6'dan büyük yürüme ve 10'dan fazla koşma için), adım sayısını buna göre artırır. Ardından, atılan toplam adımlar OLED Ekranda görüntülenir.
Bu taşınabilir basamak sayacını bir PCB üzerine inşa etmek için, PCB kartlarımızı PCBWay'den imal ettik ve aynısını bu projede bir araya getirip test edeceğiz. Daha fazla özellik eklemek isterseniz, bu kuruluma bir Kalp Atışı monitörü de ekleyebilirsiniz ve ayrıca daha önce ADXL335 kullanarak bir Arduino ivme ölçer adım sayacı oluşturduk, ilgileniyorsanız kontrol edin.
Gerekli Bileşenler
Bu pedometreyi Arduino kullanarak oluşturmak için aşağıdaki bileşenlere ihtiyacınız olacak.
- Attiny85 IC
- MPU6050
- OLED Ekran Modülü
- 2 × Basma Düğmeleri
- 5 × 10KΩ Dirençler (SMD)
MPU6050 Sensör Modülü - Kısa Bir Giriş
MPU6050, Mikro-Mekanik Sistemler (MEMS) teknolojisine dayanmaktadır. Bu sensörde 3 eksenli bir ivmeölçer, 3 eksenli bir jiroskop ve dahili bir sıcaklık sensörü bulunur. Hızlanma, Hız, Oryantasyon, Yer Değiştirme, vb. Gibi parametreleri ölçmek için kullanılabilir. Daha önce MPU6050'yi Arduino ve Raspberry pi ile arayüzledik ve aynı zamanda kendi kendini dengeleyen robot, Arduino Dijital Açıölçer ve Arduino İnklinometre gibi birkaç proje oluşturduk.
MPU6050 modülü küçük boyutludur ve düşük güç tüketimine, yüksek tekrarlamaya, yüksek şok toleransına ve düşük kullanıcı fiyatı noktalarına sahiptir. MPU6050, bir I2C veriyolu ve Yardımcı I2C veri yolu arabirimiyle birlikte gelir ve manyetometreler ve mikro denetleyiciler gibi diğer sensörlerle kolayca etkileşime girebilir.
Attiny85 Adım Sayıcı Devre Şeması
MPU6050 Adım Sayacı için şematik aşağıda verilmiştir:
Yukarıdaki görüntü, MPU6050 ve OLED Ekranı Attiny85 IC ile arayüzlemek için devre şemasını göstermektedir. MPU6050, OLED Ekran ve Arduino arasındaki arayüz, I2C Protokolü kullanılarak uygulanmalıdır. Bu nedenle, ATtiny85'in SCLPin'i (PB2) sırasıyla MPU6050 ve OLED Ekranın SCLPinine bağlanır. Benzer şekilde, ATtiny85'in SDAPin'i (PB0) MPU6050 ve OLED Ekranın SDAPinine bağlanır. ATtiny85 IC'nin PB3 ve PB4 pinine iki basma düğmesi de bağlanır. Bu düğmeler, metni kaydırmak veya ekrandaki metni değiştirmek için kullanılabilir.
Not: ATtiny85 IC'yi USB ve Digispark Boot-loader aracılığıyla programlamak için, Digispark Bootloader kullanarak doğrudan USB üzerinden ATtiny85 IC Programlama eğitimimizi izleyin.
Attiny85 Adım Sayacı için PCB Üretimi
Şematik tamamlandı ve PCB'yi yerleştirmeye devam edebiliriz. PCB'yi seçtiğiniz herhangi bir PCB yazılımını kullanarak tasarlayabilirsiniz. Bu proje için PCB üretmek için EasyEDA'yı kullandık.
Aşağıda, Step Counter PCB'nin üst katmanının ve alt katmanının 3B model görünümleri bulunmaktadır:
Yukarıdaki devre için PCB düzeni, aşağıda verilen bağlantıdan Gerber olarak indirilebilir:
- ATtiny85 Adım Sayacı için Gerber dosyası
PCBWay'den PCB siparişi
Şimdi tasarımı tamamladıktan sonra PCB siparişine devam edebilirsiniz:
Adım 1: https://www.pcbway.com/ adresine girin, ilk seferinizse kaydolun. Ardından, PCB Prototype sekmesinde PCB'nizin boyutlarını, katman sayısını ve ihtiyacınız olan PCB sayısını girin.
Adım 2: 'Şimdi Alıntı Yap' düğmesine tıklayarak devam edin. Pano tipi, Katmanlar, PCB için Malzeme, Kalınlık ve Daha Fazlası gibi birkaç ek parametrenin ayarlanacağı bir sayfaya yönlendirileceksiniz, bunların çoğu varsayılan olarak seçilir, herhangi bir özel parametreyi seçerseniz, seçebilirsiniz. burada.
3. Adım: Son adım, Gerber dosyasını yüklemek ve ödemeye devam etmektir. İşlemin sorunsuz olduğundan emin olmak için PCBWAY, ödemeye devam etmeden önce Gerber dosyanızın geçerli olup olmadığını doğrular. Bu şekilde, PCB'nizin imalat dostu olduğundan ve kararlı bir şekilde size ulaşacağından emin olabilirsiniz.
ATtiny85 Adım Sayacı PCB'nin Montajı
Birkaç gün sonra PCB'mizi temiz bir pakette aldık ve PCB kalitesi her zamanki gibi iyiydi. Kartın üst katmanı ve alt katmanı aşağıda gösterilmiştir:
İzlerin ve ayak izlerinin doğru olduğundan emin olduktan sonra. PCB'yi monte etmeye başladım. Tamamen lehimli tahta aşağıdaki gibidir:
ATtiny85 Adım Sayacı Kodu Açıklaması
Tam Arduino adım sayacı kodu belgenin sonunda verilmiştir. Burada kodun bazı önemli kısımlarını açıklıyoruz.
Kod, TinyWireM.h & TinyOzOLED.h kitaplıklarını kullanır. TinyWireM kitaplığı, Arduino IDE'deki Kitaplık Yöneticisinden indirilebilir ve oradan yüklenebilir. Bunun için Arduino IDE'yi açın ve Sketch <Include Library <Manage Libraries'e gidin . Şimdi TinyWireM.h'yi arayın ve TinyWireM kitaplığını Adafruit tarafından kurun.
TinyOzOLED.h kitaplığı verilen bağlantılardan indirilebilir.
Kitaplıkları Arduino IDE'ye yükledikten sonra, gerekli kitaplık dosyalarını ekleyerek kodu başlatın.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Kitaplıkları dahil ettikten sonra, İvmeölçer okumalarını saklamak için değişkenleri tanımlayın.
intaccelX, accelY, accelZ;
İçinde kurulum () döngü, tel kütüphanesini başlangıç ve aynı zamanda OLED ekran için I2C iletişimi başlatmak register güç yönetimi sayesinde sensörü sıfırlayın. Ardından sonraki satırlarda ekran yönünü ayarlayın ve ivmeölçer ve jiroskop değerleri için kayıt adresini girin.
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 getAccel () fonksiyonu, hızlanma verilerini okuyarak başlayın. Her eksen için veriler iki baytta (Üst ve Alt) veya kayıtlarda saklanır. Hepsini okumak için, ilk yazmaçla başlayın ve requestFrom () işlevini kullanarak, X, Y ve Z eksenleri için 6 kütüğün hepsini de okumanızı istiyoruz. Sonra her kayıttaki verileri okuruz ve çıktılar ikinin tamamlayıcısı olduğundan, tüm ivmeölçer değerlerini elde etmek için bunları uygun şekilde birleştiririz.
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 (); }
Şimdi döngü fonksiyonunun içinde, önce X, Y ve Z ekseni değerlerini okuyun ve 3 eksenli değerleri aldıktan sonra, X, Y ve Z ekseni değerlerinin karekökünü alarak toplam ivme vektörünü hesaplayın. Ardından mevcut vektör ile önceki vektör arasındaki farkı hesaplayın ve fark 6'dan büyükse adım sayısını artırın.
getAccel (); vektör = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektör - vektörönceki; eğer (toplamvector> 6) {Steps ++; } OzOled.printString ("Adımlar", 0, 4); OzOled.printNumber (Adımlar, 0, 8, 4); vectorprevious = vektör; gecikme (600);
Arduino Adım Sayacımızı Yürüyüşe Çıkaralım
PCB'yi birleştirmeyi bitirdikten sonra, ATtiny85'i programlayıcı kartına bağlayın ve kodu yükleyin. Şimdi adım sayacı kurulumunu elinize alın ve adım adım yürümeye başlayın, OLED'deki adım sayısını göstermelidir. Bazen kurulum çok hızlı veya çok yavaş titrediğinde adım sayısını artırır.
ATtiny85 ve MPU6050'yi kullanarak kendi Adım Sayacınızı bu şekilde oluşturabilirsiniz. Projenin tam çalışması, aşağıda bağlantısı verilen videoda da bulunabilir. Umarım projeyi beğenmişsinizdir ve kendi projenizi inşa etmeyi ilginç bulmuşsunuzdur. Herhangi bir sorunuz varsa, lütfen aşağıdaki yorum bölümüne bırakın.