Daftar Isi:

Realtime MPU-6050/A0 Data Logging Dengan Arduino dan Android: 7 Langkah (dengan Gambar)
Realtime MPU-6050/A0 Data Logging Dengan Arduino dan Android: 7 Langkah (dengan Gambar)

Video: Realtime MPU-6050/A0 Data Logging Dengan Arduino dan Android: 7 Langkah (dengan Gambar)

Video: Realtime MPU-6050/A0 Data Logging Dengan Arduino dan Android: 7 Langkah (dengan Gambar)
Video: Menampilkan data Arduino Dengan Excel Part 1 2024, November
Anonim
Pencatatan Data MPU-6050/A0 Realtime Dengan Arduino dan Android
Pencatatan Data MPU-6050/A0 Realtime Dengan Arduino dan Android

Saya tertarik menggunakan Arduino untuk pembelajaran mesin. Sebagai langkah pertama, saya ingin membangun tampilan data dan logger realtime (atau cukup dekat dengannya) dengan perangkat Android. Saya ingin mengambil data akselerometer dari MPU-6050 jadi saya merancang build untuk menggunakan HC-05 pada 115200 baud. Dengan konfigurasi ini 4 saluran data dapat ditransmisikan pada 250 sampel per detik.

Membangun memang memiliki beberapa langkah:

  • Bangun perisai atau papan tempat memotong roti
  • Memprogram Arduino
  • Muat aplikasi Android dari Google Play atau cabang GitHub dan kompilasi sendiri
  • Hubungkan MPU-6050 ke sesuatu yang menarik yang bergetar (saya menggunakan mobil R/C)
  • Gunakan perangkat Android untuk terhubung ke Arduino
  • Plot data, simpan jika tertarik
  • Impor ke Python (atau platform lain) untuk penggunaan lebih lanjut

Mari kita mulai!

Langkah 1: Bangun Perisai/papan tempat memotong roti

Bangun Perisai/papan tempat memotong roti
Bangun Perisai/papan tempat memotong roti
Bangun Perisai/papan tempat memotong roti
Bangun Perisai/papan tempat memotong roti

Ini adalah diagram pengkabelan untuk Arduino, HC-05, dan MPU-6050. Selain MPU-6050, saya memiliki input analog A0 yang disambungkan ke sensor cahaya untuk menunjukkan bahwa ADC berfungsi. Sinyal 0-5 volt dapat dibawa ke A0 ADC. Ini adalah komponen yang saya gunakan untuk membangun:

  • Arduino Uno
  • HC-05 (HC-06 juga berfungsi, tetapi build saya menggunakan HC-05)
  • MPU-6050
  • Fotoresistor Sparkfun
  • Resistor 10kOhm (coklat-hitam-oranye)

Sebagian besar modul Bluetooth HC-05 default ke 9600 baud. Agar data berhasil dikirim, Anda perlu memprogram ulang untuk kecepatan baud 115200. Ada HC-05/HC-06 AT Command Instructable yang bagus yang menjelaskan cara melakukannya.

Langkah 2: Program Arduino

Memprogram Arduino
Memprogram Arduino
Memprogram Arduino
Memprogram Arduino

Saya menggunakan Arduino IDE rilis 1.6.7 untuk memprogram Arduino. Kode dapat diunduh dari tautan di langkah ini atau dari repo GitHub. Saya telah menyertakan tiga versi: Firmware125.ino adalah versi 125 hertz, Firmware250.ino adalah versi 250 hertz, dan Firmware500.ino adalah versi 500 hertz. Untuk membuat Arduino berputar pada 500 hertz, ADC A0 tidak dikumpulkan.

Firmware termasuk jam keluar pada Pin 9 yang saya gunakan untuk memeriksa waktunya. Jejak menunjukkan waktu siklus adalah 4 ms (setara dengan 1/250 hertz). Saya telah menemukan bahwa jika ada masalah tautan serial, waktunya tidak akan seragam.

Kode Arduino memang menggunakan bit masking untuk menambahkan nomor saluran ke setiap paket karena sampel terkadang melewati Bluetooth. Saya menggunakan tiga bit paling signifikan untuk menyimpan nomor saluran. Untuk bilangan bulat bertanda, bit paling signifikan (MSB) dicadangkan untuk tanda. Karena saya ingin menggunakan MSB untuk alamat saya, daripada tanda bilangan bulat, saya harus mengonversi semua nilai akselerometer yang ditandatangani menjadi bilangan bulat yang tidak ditandatangani. Saya melakukan ini dengan menambahkan 32768 ke setiap nilai (jumlah ADC akselerometer MPU adalah +32768 hingga -32768) dan dilemparkan sebagai bilangan bulat yang tidak ditandatangani:

(unsigned int)((panjang)iAccelData+32767);

Nomor saluran sama untuk setiap akselerometer dan port A0 sehingga paket yang jatuh dapat dideteksi jika nomor saluran tidak sesuai. Untuk paket yang berasal dari Bluetooth di Arduino, pola binernya adalah (tanda-tandanya sedikit bergeser):

(xacc 3 bit alamat = 0x00, 13bit tidak ditandatangani) (yacc 3 bit alamat = 0x01, 13bit tidak ditandatangani) (zacc 3 bit alamat = 0x02, 13bit tidak ditandatangani) (3 bit alamat = 0x03, iadc13bit tidak ditandatangani)

(xacc 3 bit alamat = 0x00, 13bit tidak ditandatangani) (yacc 3 bit alamat = 0x01, 13bit tidak ditandatangani) (zacc 3 bit alamat = 0x02, 13bit tidak ditandatangani) (3 bit alamat = 0x03, iadc13bit tidak ditandatangani) (xacc 3 bit alamat = 0x00, 13bit tidak ditandatangani) (yacc 3 bit alamat = 0x01, 13bit tidak ditandatangani) (zacc 3 bit alamat = 0x02, 13bit tidak ditandatangani) (3 bit alamat = 0x03, iadc13bit tidak ditandatangani) …

Jika menggunakan sesuatu selain aplikasi Android Accel Plot untuk membaca data Bluetooth, berikut adalah langkah-langkah untuk mengekstrak alamat (saya menggunakan nama variabel dari file Accel Plot Bluetooth.java dari repo GitHub):

- Baca di 16 unsigned int

- Ekstrak byte tinggi dan simpan ke btHigh.

- Ekstrak byte rendah dan simpan ke btLow.

- Ambil alamat dari btHigh menggunakan: (btHigh >> 5) & 0x07. Pernyataan ini menggeser btHigh 5 bit ke kanan memindahkan tiga bit alamat ke tiga register terendah. Tanda & adalah logika AND yang memaksa bit 4 dan lebih tinggi menjadi nol dan tiga bit terakhir untuk mencocokkan bit alamat. Hasil dari pernyataan ini adalah alamat Anda.

Anda tidak perlu khawatir tentang ekstraksi alamat jika Anda menggunakan Accel Plot.

Langkah 3: Muat Aplikasi Android Dari Google Play atau Cabang GitHub

Muat Aplikasi Android Dari Google Play atau Cabang GitHub
Muat Aplikasi Android Dari Google Play atau Cabang GitHub

Anda memiliki beberapa pilihan untuk memuat aplikasi Android di perangkat Anda. Jika Anda ingin menghindari pengkodean, Anda dapat mencari "Accel Plot" dan aplikasi akan muncul di Google Play store. Ikuti petunjuk toko untuk pemasangan.

Keinginan saya dengan Instructable ini benar-benar untuk mendorong orang lain membangun proyek jadi saya juga telah menerbitkan kode dalam repo GitHub. Anda harus dapat membuat cabang ini, membangunnya, dan memodifikasinya sesuai keinginan Anda. Saya menerbitkan kode di bawah Lisensi MIT jadi bersenang-senanglah!

Langkah 4: Hubungkan ke Arduino ke Sesuatu yang Menarik (Saya Menggunakan Mobil R/C)

Hubungkan ke Arduino untuk Sesuatu yang Menarik (Saya Menggunakan Mobil R/C)
Hubungkan ke Arduino untuk Sesuatu yang Menarik (Saya Menggunakan Mobil R/C)

Saya ingin akhirnya menggunakan perangkat untuk deteksi permukaan jalan jadi saya pikir mobil kecil yang dikendalikan dari jarak jauh (R/C) akan sesuai. Saya pikir itu membantu dalam langkah selanjutnya jika akselerasi bisa pada sesuatu yang bergerak atau bergetar.

Langkah 5: Gunakan Perangkat Android untuk Terhubung ke Arduino

Gunakan Perangkat Android untuk Terhubung ke Arduino
Gunakan Perangkat Android untuk Terhubung ke Arduino
Gunakan Perangkat Android untuk Terhubung ke Arduino
Gunakan Perangkat Android untuk Terhubung ke Arduino
Gunakan Perangkat Android untuk Terhubung ke Arduino
Gunakan Perangkat Android untuk Terhubung ke Arduino

Jika Anda belum melakukannya, Anda harus terlebih dahulu memasangkan HC-05 ke perangkat Android Anda. Saya percaya bahwa pada sebagian besar perangkat Anda dapat melakukan ini dengan masuk ke pengaturan. Pin default untuk sebagian besar perangkat HC-05 adalah 1234 atau 1111.

Buka aplikasi AccelPlot di perangkat Android. Saat aplikasi terbuka, dan sebelum Anda terhubung ke HC-05, Anda dapat mengubah laju pengambilan sampel (ini diatur dalam kode Arduino), skala akselerometer (juga diatur dalam kode Arduino), dan jumlah sampel yang akan disimpan.

Setelah pengaturan ini dibuat, klik tombol "Connect". Ini akan memunculkan perangkat Bluetooth dan perangkat Anda harus terdaftar. Pilih dan setelah kode membuat koneksi, Anda akan melihat roti panggang "Terhubung" muncul.

Gunakan tombol panah kembali untuk kembali ke Accel Plot. Ketuk tombol "Mulai Streaming" untuk menampilkan data dari perangkat HC-05. Anda juga harus menyediakan tombol untuk menyimpan data atau memutar konten termodulasi frekuensi melalui jack audio.

Langkah 6: Dapatkan dan Plot Data

Image
Image
Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut
Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut

Tombol "Mulai Streaming" harus diaktifkan. Ketuk untuk mulai mengalirkan data ke layar.

Tombol "Simpan Data" juga akan diaktifkan, ketuk untuk menyimpan data.

Accel Plot juga menyertakan opsi untuk mengeluarkan sinyal termodulasi pada saluran audio. 2 saluran di aplikasi Accel Plot mengacu pada saluran kiri dan kanan jack audio out pada perangkat Android. Ini berguna jika Anda ingin membawa data MPU-6050 ke dalam sistem pencatatan data yang terpisah, seperti Instrumen Nasional.

Video menunjukkan contoh sistem pengumpulan data pada mobil R/C.

Langkah 7: Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut

Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut
Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut

File disimpan ke perangkat Android. File akan disimpan di bawah direktori "AccelPlot" untuk Android API 18 dan yang lebih lama. Kode menempatkan file.dat di folder "\Tablet\Documents\AccelPlot" untuk API 19 (KitKat 4.4) dan yang lebih tinggi. Saya mengalami masalah dengan beberapa perangkat Android yang menampilkan file saat terhubung melalui USB. Dalam beberapa kasus saya harus me-reboot perangkat Android agar mereka muncul. Tidak yakin mengapa demikian, tetapi harus ada empat file, satu untuk setiap saluran. Mereka dapat disalin ke direktori lokal untuk pekerjaan tambahan.

Saya menggunakan Anaconda/Python 2.7 untuk membuka file dan menampilkan data. File "ExploratoryAnalysis.ipynb" memiliki file Notebook IPython yang akan membuka semua file data dan memplot data sampel. File sampel disertakan dalam repo GitHub. Data disimpan sebagai float big-endian 4 byte ('>f') sehingga program analisis apa pun harus dapat membukanya.

Saya juga menyertakan file sederhana bernama "ReadDataFiles.ipynb" yang menunjukkan cara membaca dalam satu file dengan nama.

Direkomendasikan: