Daftar Isi:
- Langkah 1: Bangun Perisai/papan tempat memotong roti
- Langkah 2: Program Arduino
- Langkah 3: Muat Aplikasi Android Dari Google Play atau Cabang GitHub
- Langkah 4: Hubungkan ke Arduino ke Sesuatu yang Menarik (Saya Menggunakan Mobil R/C)
- Langkah 5: Gunakan Perangkat Android untuk Terhubung ke Arduino
- Langkah 6: Dapatkan dan Plot Data
- Langkah 7: Impor Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut
Video: Realtime MPU-6050/A0 Data Logging Dengan Arduino dan Android: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
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
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
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
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)
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
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
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
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:
NodeMCU Lua Murah 6$ Papan Dengan MicroPython Suhu dan Kelembaban Logging, Wifi dan Mobile Stats: 4 Langkah
Papan NodeMCU Lua Murah 6$ Dengan Pencatatan Suhu dan Kelembaban MicroPython, Wifi, dan Statistik Seluler: Ini pada dasarnya adalah stasiun cuaca cloud, Anda dapat memeriksa data di ponsel Anda atau menggunakan beberapa ponsel sebagai tampilan langsung Dengan perangkat NodeMCU Anda dapat mencatat data suhu dan kelembaban di luar , di kamar, rumah kaca, lab, ruang pendingin atau tempat lain yang lengkap
Smart Watchz Dengan Deteksi Gejala Corona dan Data Logging: 10 Langkah
Smart Watchz Dengan Deteksi Gejala Corona dan Data Logging: Ini adalah Smartwatch dengan deteksi gejala Corona menggunakan LM35 dan Accelerometer dengan data logging di server. Rtc digunakan untuk menunjukkan waktu dan sinkronisasi dengan telepon dan menggunakannya untuk pencatatan data. Esp32 digunakan sebagai otak dengan pengontrol korteks dengan Blue
Logging Data Jarak Jauh Akurasi Tinggi Menggunakan Multimeter/Arduino/pfodApp: 10 Langkah (dengan Gambar)
Pencatatan Data Jarak Jauh Akurasi Tinggi Menggunakan Multimeter/Arduino/pfodAplikasi: Diperbarui 26 April 2017Revisi sirkuit dan papan untuk digunakan dengan meter USB 4000ZC.Tidak diperlukan pengkodean Android Instruksi ini menunjukkan kepada Anda bagaimana mengakses berbagai pengukuran akurasi tinggi dari Arduino Anda dan juga mengirimkannya dari jarak jauh untuk login dan
Stasiun Cuaca Dengan Data Logging: 7 Langkah (dengan Gambar)
Stasiun Cuaca Dengan Data Logging: Dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana membuat sistem stasiun cuaca sendiri. Yang Anda butuhkan hanyalah pengetahuan dasar dalam elektronik, pemrograman, dan sedikit waktu. Proyek ini masih dalam tahap pembuatan. Ini hanya bagian pertama. Upgrade akan
Tampilan Suhu dan Kelembaban dan Pengumpulan Data Dengan Arduino dan Pemrosesan: 13 Langkah (dengan Gambar)
Tampilan Suhu dan Kelembaban dan Pengumpulan Data Dengan Arduino dan Pemrosesan: Pendahuluan: Ini adalah Proyek yang menggunakan papan Arduino, Sensor (DHT11), komputer Windows dan program Pemrosesan (dapat diunduh gratis) untuk menampilkan data Suhu, Kelembaban dalam format digital dan bentuk grafik batang, menampilkan waktu dan tanggal dan menjalankan hitungan waktu