İçindekiler:
- Adım 1: Kalkanı/breadboard'u oluşturun
- Adım 2: Arduino'yu Programlayın
- 3. Adım: Android Uygulamasını Google Play'den Yükleyin veya GitHub'ı Şubelendirin
- Adım 4: Arduino'yu İlginç Bir Şeye Bağlayın (Bir R/C Araba Kullandım)
- Adım 5: Arduino'ya Bağlanmak için Android Aygıtını Kullanın
- Adım 6: Verileri Alın ve Çizin
- Adım 7: Daha Fazla Kullanım için Python'a (veya Diğer Platforma) Aktarın
Video: Arduino ve Android ile Gerçek Zamanlı MPU-6050/A0 Veri Kaydı: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Arduino'yu makine öğrenimi için kullanmakla ilgileniyorum. İlk adım olarak, bir Android cihazla gerçek zamanlı (veya buna oldukça yakın) bir veri görüntüleme ve kaydedici oluşturmak istiyorum. MPU-6050'den ivmeölçer verilerini yakalamak istiyorum, bu yüzden yapıyı HC-05'i 115200 baud'da kullanacak şekilde tasarladım. Bu konfigürasyon ile saniyede 250 örnekte 4 kanal veri iletilebilir.
Yapının birkaç adımı vardır:
- Kalkanı veya devre tahtası oluşturun
- Arduino'yu programlayın
- Android uygulamasını Google Play'den yükleyin veya GitHub'ı dallandırın ve kendiniz derleyin
- MPU-6050'yi titreşen ilginç bir şeye bağlayın (bir R/C araba kullandım)
- Arduino'ya bağlanmak için Android cihazını kullanın
- Verileri çizin, ilgileniyorsanız kaydedin
- Daha fazla kullanım için Python'a (veya başka bir platforma) aktarın
Başlayalım!
Adım 1: Kalkanı/breadboard'u oluşturun
Bu Arduino, HC-05 ve MPU-6050 için bağlantı şemasıdır. MPU-6050'ye ek olarak, ADC'nin çalıştığını göstermek için bir ışık sensörüne bağlanmış A0 analog girişine sahibim. Herhangi bir 0-5 volt sinyali A0 ADC'ye getirilebilir. Bunlar derleme için kullandığım bileşenler:
- Arduino Uno
- HC-05 (HC-06 da çalışmalı, ancak benim yapımım HC-05 ile yapıldı)
- MPU-6050
- Sparkfun fotodirenci
- 10kOhm direnç (kahverengi-siyah-turuncu)
Çoğu HC-05 Bluetooth modülü varsayılan olarak 9600 baud'dur. Verilerin başarılı bir şekilde iletilmesi için, 115200 baud hızı için yeniden programlamanız gerekecektir. Nasıl yapılacağını açıklayan iyi bir HC-05/HC-06 AT Command Instructable var.
Adım 2: Arduino'yu Programlayın
Arduino'yu programlamak için Arduino IDE 1.6.7 sürümünü kullandım. Kod, bu adımdaki bağlantılardan veya GitHub deposundan indirilebilir. Üç versiyon ekledim: Firmware125.ino 125 hertz versiyonu, Firmware250.ino 250 hertz versiyonu ve Firmware500.ino 500 hertz versiyonu. Arduino'nun 500 hertz'de dönmesini sağlamak için A0 ADC toplanmaz.
Bellenim, zamanlamayı kontrol etmek için kullandığım Pin 9'da bir saat çıkışı içeriyor. İz, döngü süresinin 4 ms (1/250 hertz'e eşdeğer) olduğunu gösterir. Seri bağlantı sorunları varsa zamanlamanın tek tip olmayacağını buldum.
Arduino kodu, örnekler bazen Bluetooth üzerinden düştüğü için her pakete bir kanal numarası eklemek için bit maskeleme kullanır. Bir kanal numarasını saklamak için en önemli üç biti kullanırım. İşaretli tamsayılar için en anlamlı bit (MSB) işaret için ayrılmıştır. Adresimde tamsayı işareti yerine MSB kullanmak istediğim için işaretli ivmeölçer değerlerinin hepsini işaretsiz tam sayılara çevirmem gerekiyor. Bunu, her değere 32768 ekleyerek (MPU ivmeölçer ADC sayıları +32768 ila -32768 arasındadır) ve işaretsiz tamsayılar olarak yayınlayarak yapıyorum:
(imzasız int)((uzun)iAccelData+32767);
Kanal numaraları, her ivmeölçer ve A0 bağlantı noktası için aynıdır, böylece kanal numaraları bozuksa bırakılan bir paket algılanabilir. Arduino'daki Bluetooth'tan gelen paketler için ikili desen (işaretler bit bazında değişiyor):
(xacc 3 adres biti = 0x00, 13 bit işaretsiz) (yacc 3 adres biti = 0x01, 13 bit işaretsiz) (zacc 3 adres biti = 0x02, 13 bit işaretsiz) (3 adres biti = 0x03, iadc13bit işaretsiz)
(xacc 3 adres biti = 0x00, 13 bit işaretsiz) (yacc 3 adres biti = 0x01, 13 bit işaretsiz) (zacc 3 adres biti = 0x02, 13 bit işaretsiz) (3 adres biti = 0x03, iadc13bit işaretsiz) (xacc 3 adres biti = 0x00, 13bit işaretsiz) (yacc 3 adres biti = 0x01, 13bit işaretsiz) (zacc 3 adres biti = 0x02, 13bit işaretsiz) (3 adres biti = 0x03, iadc13bit işaretsiz) …
Bluetooth verilerini okumak için Accel Plot Android uygulamasından başka bir şey kullanıyorsanız, adresi çıkarma adımları şunlardır (GitHub deposundaki Accel Plot Bluetooth.java dosyasındaki değişken adlarını kullanıyorum):
- 16 imzasız int'yi okuyun
- Yüksek baytı ayıklayın ve btHigh'a kaydedin.
- Düşük baytı ayıklayın ve btLow'a kaydedin.
- Adresi btHigh'dan (btHigh >> 5) & 0x07 kullanarak alın. Bu ifade, üç adres bitini en alttaki üç kayda taşıyarak btHigh 5 biti sağa kaydırır. & işareti, 4 ve daha yüksek bitleri sıfır olmaya ve son üç biti adres bitleriyle eşleşmeye zorlayan mantıksal bir AND'dir. Bu ifadenin sonucu adresinizdir.
Accel Plot kullanıyorsanız, adres çıkarma konusunda endişelenmenize gerek yok.
3. Adım: Android Uygulamasını Google Play'den Yükleyin veya GitHub'ı Şubelendirin
Android uygulamasını cihazınıza yüklemek için birkaç seçeneğiniz var. Kodlamadan kaçınmak istiyorsanız, "Accel Plot" için arama yapabilirsiniz ve uygulama Google Play mağazasında gelmelidir. Kurulum için mağaza talimatlarını izleyin.
Bu Instructable ile olan arzum, gerçekten başkalarını proje oluşturmaya teşvik etmektir, bu yüzden kodu bir GitHub deposunda da yayınladım. Bunu dallandırabilmeli, inşa edebilmeli ve uygun gördüğünüz şekilde değiştirebilmelisiniz. Kodu MIT Lisansı altında yayınladım, iyi eğlenceler!
Adım 4: Arduino'yu İlginç Bir Şeye Bağlayın (Bir R/C Araba Kullandım)
Sonunda cihazı yol yüzeyi tespiti için kullanmak istiyorum, bu yüzden küçük bir uzaktan kumandalı (R/C) arabanın uygun olacağını düşündüm. Hızlanmaların hareket eden veya titreyen bir şey üzerinde olabilmesinin bir sonraki adımda yardımcı olacağını düşünüyorum.
Adım 5: Arduino'ya Bağlanmak için Android Aygıtını Kullanın
Henüz yapmadıysanız, önce HC-05'i Android cihazınızla eşleştirmeniz gerekecektir. Çoğu cihazda bunu ayarlara giderek yapabileceğinize inanıyorum. Çoğu HC-05 cihazı için varsayılan pin 1234 veya 1111 olacaktır.
Android cihazda AccelPlot uygulamasını açın. Uygulama açıldığında ve HC-05'e bağlanmadan önce, örnekleme hızını (bu Arduino kodunda ayarlanır), ivmeölçer ölçeklerini (Arduino kodunda da ayarlanır) ve kaydedilecek örnek sayısını değiştirebilirsiniz.
Bu ayarlar yapıldıktan sonra "Bağlan" düğmesine tıklayın. Bluetooth cihazlarını açmalı ve cihazınız listelenmelidir. Onu seçin ve kod bağlantıyı kurduğunda "Bağlı" bir tost açılır penceresi göreceksiniz.
Accel Plot'a dönmek için geri ok düğmesini kullanın. HC-05 cihazından gelen verileri görüntülemek için "Akış Başlat" düğmesine dokunun. Verileri kaydetmek veya frekans modülasyonlu içeriği ses jakı aracılığıyla oynatmak için düğmeler de mevcut olmalıdır.
Adım 6: Verileri Alın ve Çizin
"Yayını Başlat" düğmesi etkinleştirilmelidir. Ekrana veri akışına başlamak için buna dokunun.
"Verileri Kaydet" düğmesi de etkinleştirilecektir, verileri depolamak için buna dokunun.
Accel Plot ayrıca, ses kanallarında modüle edilmiş bir sinyal çıkışı için bir seçenek içerir. Accel Plot uygulamasındaki 2 kanal, Android cihazdaki ses çıkış jakının sol ve sağ kanallarını ifade eder. Bu, MPU-6050 verilerini National Instruments gibi ayrı bir veri kayıt sistemine getirmek istiyorsanız kullanışlıdır.
Video, bir R/C arabada veri toplayan sistemin bir örneğini göstermektedir.
Adım 7: Daha Fazla Kullanım için Python'a (veya Diğer Platforma) Aktarın
Dosyalar Android cihaza kaydedilir. Dosyalar, Android API 18 ve daha eski sürümler için "AccelPlot" dizini altında saklanacaktır. Kod,.dat dosyalarını API 19 (KitKat 4.4) ve üstü için "\Tablet\Documents\AccelPlot" klasörüne yerleştirir. USB üzerinden bağlandığında dosyaları gösteren bazı Android cihazlarda sorun yaşadım. Bazı durumlarda, görünmelerini sağlamak için Android cihazını yeniden başlatmam gerekti. Bunun neden olduğundan emin değilim, ancak her kanal için bir tane olmak üzere dört dosya olmalı. Ek çalışma için yerel bir dizine kopyalanabilirler.
Dosyaları açmak ve verileri görüntülemek için Anaconda/Python 2.7 kullandım. "ExploratoryAnalysis.ipynb" dosyası, tüm veri dosyalarını açacak ve örnek verileri çizecek olan IPython Notebook dosyasına sahiptir. Örnek dosyalar GitHub deposuna dahil edilmiştir. Veriler büyük endian 4 baytlık yüzerler ('>f') olarak kaydedilir, bu nedenle herhangi bir analiz programı bunları açabilmelidir.
Ayrıca, tek bir dosyada ada göre nasıl okunacağını gösteren "ReadDataFiles.ipynb" adlı daha basit bir dosya da ekledim.
Önerilen:
Corona Belirtileri Tespiti ve Veri Kaydı ile Smart Watchz: 10 Adım
Corona Belirtileri Tespiti ve Veri Kaydı ile Akıllı Saat: Bu, sunucuda veri kaydı ile LM35 ve İvmeölçer kullanarak Corona semptomları algılama özelliğine sahip bir Akıllı Saattir. Rtc, zamanı göstermek ve telefonla senkronize etmek ve veri kaydı için kullanmak için kullanılır. Esp32, Blue ile korteks denetleyicili bir beyin olarak kullanılır
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır - Proteus'ta DHT11 Veri Kaydedici Simülasyonu: 5 Adım
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır | Proteus'ta DHT11 Veri Kaydedici Simülasyonu: Giriş: merhaba, ben Liono Maker, işte YouTube bağlantısı. Arduino ile yaratıcı projeler yapıyoruz ve gömülü sistemler üzerinde çalışıyoruz
Arduino IDE Kullanarak M5stick C İle Saat Yapımı - M5stack M5stick-C ile RTC Gerçek Zamanlı Saat: 4 Adım
Arduino IDE Kullanarak M5stick C İle Saat Yapımı | M5stack M5stick-C ile RTC Gerçek Zamanlı Saat: Merhaba arkadaşlar bu talimatta Arduino IDE kullanarak m5stick-C m5stack geliştirme kartı ile saat yapmayı öğreneceğiz. Ekranda ayın haftası
Veri Kaydı ile Hava İstasyonu: 7 Adım (Resimlerle)
Veri Kaydı ile Hava İstasyonu: Bu talimatta size meteoroloji istasyonu sistemini kendiniz nasıl yapacağınızı göstereceğim. Tek ihtiyacınız olan temel elektronik bilgisi, programlama ve biraz zaman. Bu proje hala yapım aşamasında. Bu sadece ilk kısım. Yükseltmeler yapılacak
Gerçek Zamanlı Akıllı Ekran Verileri için IoT Veri Bilimi PiNet: 4 Adım
Gerçek Zamanlı Akıllı Ekran için IoT Veri Bilimi PiNet Veri Viz: Veri Bilimi veya herhangi bir nicel alandaki araştırma çabalarınızı güçlendirmek için veri görselleştirme için bir IoT akıllı ekran ağını kolayca bir araya getirebilirsiniz. "Push" arazilerinizden müşterilere doğru