Isi kandungan:
- Langkah 1: Bina perisai / papan roti
- Langkah 2: Program Arduino
- Langkah 3: Muatkan Aplikasi Android Dari Google Play atau Cawangan GitHub
- Langkah 4: Sambungkan ke Arduino ke Sesuatu yang Menarik (Saya Menggunakan Kereta R / C)
- Langkah 5: Gunakan Peranti Android untuk Menyambung ke Arduino
- Langkah 6: Dapatkan dan Petak Data
- Langkah 7: Import Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut
Video: Log Data Realtime MPU-6050 / A0 Dengan Arduino dan Android: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Saya berminat untuk menggunakan Arduino untuk pembelajaran mesin. Sebagai langkah pertama, saya ingin membina paparan data dan logger masa nyata (atau cukup dekat dengannya) dengan peranti Android. Saya ingin menangkap data pecutan dari MPU-6050 jadi saya merancang binaannya untuk menggunakan HC-05 pada 115200 baud. Dengan konfigurasi ini, 4 saluran data dapat dihantar pada 250 sampel sesaat.
Binaannya mempunyai beberapa langkah:
- Bina perisai atau papan roti
- Atur cara Arduino
- Muatkan aplikasi Android dari Google Play atau cabang GitHub dan susun sendiri
- Sambungkan MPU-6050 ke sesuatu yang menarik yang bergetar (saya menggunakan kereta R / C)
- Gunakan peranti Android untuk menyambung ke Arduino
- Petak data, simpan jika berminat
- Import ke Python (atau platform lain) untuk penggunaan selanjutnya
Mari kita mulakan!
Langkah 1: Bina perisai / papan roti
Ini adalah rajah pendawaian untuk Arduino, HC-05, dan MPU-6050. Sebagai tambahan kepada MPU-6050, saya mempunyai input analog A0 yang disambungkan ke sensor cahaya untuk menunjukkan bahawa ADC berfungsi. Sebarang isyarat 0-5 volt boleh dibawa ke A0 ADC. Ini adalah komponen yang saya gunakan untuk membina:
- Arduino Uno
- HC-05 (HC-06 harus berfungsi juga, tetapi bangunan saya adalah dengan HC-05)
- MPU-6050
- Fotoresistor Sparkfun
- Perintang 10kOhm (coklat-hitam-oren)
Sebilangan besar modul Bluetooth HC-05 lalai ke 9600 baud. Agar data berjaya dihantar, anda perlu memprogramkannya semula dengan kadar baud 115200. Terdapat Arahan Perintah HC-05 / HC-06 AT yang baik yang menerangkan cara melakukannya.
Langkah 2: Program Arduino
Saya menggunakan Arduino IDE keluaran 1.6.7 untuk memprogram Arduino. Kod boleh dimuat turun dari pautan dalam langkah ini atau dari repo GitHub. Saya telah memasukkan tiga versi: Firmware125.ino adalah versi 125 hertz, Firmware250.ino adalah versi 250 hertz, dan Firmware500.ino adalah versi 500 hertz. Untuk menjadikan Arduino berpusing pada 500 hertz, A0 ADC tidak dikumpulkan.
Firmware termasuk jam keluar pada Pin 9 yang saya gunakan untuk memeriksa waktunya. Jejak menunjukkan masa kitaran adalah 4 ms (bersamaan dengan 1/250 hertz). Saya dapati bahawa jika terdapat masalah pautan bersiri, waktunya tidak akan seragam.
Kod Arduino menggunakan bit masking untuk menambahkan nombor saluran ke setiap paket kerana kadangkala sampel jatuh melalui Bluetooth. Saya menggunakan tiga bit paling ketara untuk menyimpan nombor saluran. Untuk bilangan bulat yang ditandatangani, bit yang paling ketara (MSB) dikhaskan untuk tanda. Oleh kerana saya ingin menggunakan MSB untuk alamat saya, dan bukannya tanda bilangan bulat, saya harus menukar semua nilai pecutan yang ditandatangani menjadi bilangan bulat yang tidak ditandatangani. Saya melakukan ini dengan menambahkan 32768 ke setiap nilai (kiraan ADC pecutan MPU adalah +32768 hingga -32768) dan dilemparkan sebagai bilangan bulat yang tidak ditandatangani:
(int tidak bertanda tangan) ((panjang) iAccelData + 32767);
Nombor saluran adalah sama untuk setiap akselerometer dan port A0 sehingga paket yang dijatuhkan dapat dikesan jika nombor saluran tidak teratur. Untuk paket yang berasal dari Bluetooth di Arduino, corak binari adalah (tanda-tanda berubah sedikit):
(bit alamat xacc 3 = 0x00, 13bit tidak ditandatangani) (bit alamat yacc 3 = 0x01, 13bit tidak ditandatangani) (bit alamat zacc 3 = 0x02, 13bit tidak ditandatangani) (3 bit alamat = 0x03, iadc13bit tidak ditandatangani)
(xacc 3 bits alamat = 0x00, 13bit unsigned) (bit alamat yacc 3 = 0x01, 13bit unsigned) (zacc 3 bit bits = 0x02, 13bit unsigned) (3 bits alamat = 0x03, iadc13bit unsigned) (xacc 3 bits alamat = 0x00, 13bit tidak ditandatangani) (bit alamat yacc 3 = 0x01, 13bit tidak ditandatangani) (bit alamat zacc 3 = 0x02, 13bit tidak ditandatangani) (3 bit alamat = 0x03, iadc13bit tidak ditandatangani)…
Sekiranya menggunakan sesuatu selain aplikasi Android Accel Plot untuk membaca data Bluetooth, berikut adalah langkah-langkah untuk mengekstrak alamat (saya menggunakan nama pemboleh ubah dari fail Accel Plot Bluetooth.java dari repo GitHub):
- Baca di 16 int yang tidak ditandatangani
- Ekstrak byte tinggi dan simpan ke btHigh.
- Ekstrak bait rendah dan simpan ke btLow.
- Dapatkan semula alamat dari btHigh menggunakan: (btHigh >> 5) & 0x07. Pernyataan ini mengalihkan btHigh 5 bit ke kanan memindahkan tiga bit alamat ke tiga register terendah. Tanda & adalah logik DAN yang memaksa bit 4 dan lebih tinggi menjadi sifar dan tiga bit terakhir untuk dipadankan dengan bit alamat. Hasil penyataan ini adalah alamat anda.
Anda tidak perlu risau tentang pengekstrakan alamat jika anda menggunakan Accel Plot.
Langkah 3: Muatkan Aplikasi Android Dari Google Play atau Cawangan GitHub
Anda mempunyai beberapa pilihan untuk memuatkan aplikasi Android pada peranti anda. Sekiranya anda ingin mengelakkan pengekodan, anda dapat mencari "Accel Plot" dan aplikasinya akan muncul di gedung Google Play. Ikut arahan kedai untuk pemasangan.
Keinginan saya dengan Instructable ini adalah benar-benar mendorong orang lain untuk membina projek jadi saya juga telah menerbitkan kodnya di repo GitHub. Anda seharusnya dapat mencabut ini, membinanya, dan mengubahnya mengikut kesesuaian anda. Saya menerbitkan kod di bawah Lesen MIT jadi bersenang-senang!
Langkah 4: Sambungkan ke Arduino ke Sesuatu yang Menarik (Saya Menggunakan Kereta R / C)
Saya mahu akhirnya menggunakan peranti ini untuk mengesan permukaan jalan jadi saya fikir sebuah kereta kawalan jauh (R / C) kecil akan sesuai. Saya rasa ia akan membantu dalam langkah seterusnya jika accels dapat pada sesuatu yang bergerak atau bergetar.
Langkah 5: Gunakan Peranti Android untuk Menyambung ke Arduino
Sekiranya anda belum melakukannya, anda perlu memasangkan HC-05 terlebih dahulu ke peranti Android anda. Saya percaya bahawa pada kebanyakan peranti anda boleh melakukan ini dengan pergi ke tetapan. Pin lalai untuk kebanyakan peranti HC-05 ialah 1234 atau 1111.
Buka aplikasi AccelPlot pada peranti Android. Apabila aplikasi dibuka, dan sebelum anda menyambung ke HC-05, anda dapat mengubah kadar pensampelan (ini ditetapkan dalam kod Arduino), skala akselerometer (juga ditetapkan dalam kod Arduino), dan jumlah sampel yang akan disimpan.
Setelah tetapan ini dibuat klik pada butang "Sambung". Ia mesti memunculkan peranti Bluetooth dan peranti anda harus disenaraikan. Pilihnya dan setelah kod membuat sambungan, anda akan melihat roti bakar "Bersambung" muncul.
Gunakan butang anak panah belakang untuk kembali ke Accel Plot. Ketuk butang "Mula Aliran" untuk memaparkan data dari peranti HC-05. Anda juga harus menyediakan butang untuk menyimpan data atau memainkan kandungan modulasi frekuensi melalui bicu audio.
Langkah 6: Dapatkan dan Petak Data
Butang "Mula Aliran" harus diaktifkan. Ketuk untuk memulakan streaming data ke skrin.
Butang "Simpan Data" juga akan diaktifkan, ketuk untuk menyimpan data.
Accel Plot juga menyertakan pilihan untuk mengeluarkan isyarat termodulasi pada saluran audio. 2 saluran di aplikasi Accel Plot merujuk ke saluran kiri dan kanan jack keluar audio pada peranti Android. Ini berguna jika anda ingin memasukkan data MPU-6050 ke dalam sistem log data yang berasingan, seperti Instrumen Nasional.
Video menunjukkan contoh sistem mengumpulkan data pada kereta R / C.
Langkah 7: Import Ke Python (atau Platform Lain) untuk Penggunaan Lebih Lanjut
Fail disimpan ke peranti Android. Fail akan disimpan di bawah direktori "AccelPlot" untuk Android API 18 ke atas. Kod meletakkan fail.dat dalam folder "\ Tablet / Documents / AccelPlot" untuk API 19 (KitKat 4.4) dan lebih tinggi. Saya menghadapi masalah dengan beberapa peranti Android yang menunjukkan fail ketika disambungkan melalui USB. Dalam beberapa kes, saya terpaksa menghidupkan semula peranti Android untuk memunculkannya. Tidak pasti mengapa ini berlaku, tetapi harus ada empat fail, satu untuk setiap saluran. Mereka boleh disalin ke direktori tempatan untuk pekerjaan tambahan.
Saya menggunakan Anaconda / Python 2.7 untuk membuka fail dan memaparkan data. Fail "ExploratoryAnalysis.ipynb" mempunyai fail Notebook IPython yang akan membuka semua fail data dan memplot data sampel. Fail contoh disertakan di repo GitHub. Data disimpan sebagai pelampung 4 byte endian besar ('> f') sehingga setiap program analisis harus dapat membukanya.
Saya juga menyertakan fail yang lebih ringkas yang disebut "ReadDataFiles.ipynb" yang menunjukkan cara membaca dalam satu fail dengan nama.
Disyorkan:
Cara Membuat Perekam Data Masa Nyata Kelembapan dan Suhu Dengan Arduino UNO dan SD-Card - Simulasi Pencatat Data DHT11 dalam Proteus: 5 Langkah
Cara Membuat Perekam Data Masa Nyata Kelembapan dan Suhu Dengan Arduino UNO dan SD-Card | DHT11 Data-logger Simulation in Proteus: Pengenalan: hai, ini adalah Liono Maker, berikut adalah pautan YouTube. Kami membuat projek kreatif dengan Arduino dan mengusahakan sistem terbenam. Data-Logger: Data logger (juga data-logger atau data recorder) adalah peranti elektronik yang merekod data dari masa ke masa dengan
Log Data dan Petak Grafik Dalam Talian Menggunakan NodeMCU, MySQL, PHP dan Chartjs.org: 4 Langkah
Log Data dan Plot Grafik Dalam Talian Menggunakan NodeMCU, MySQL, PHP dan Chartjs.org: Instructable ini menerangkan bagaimana kita dapat menggunakan papan Node MCU untuk mengumpulkan data dari pelbagai sensor, menghantar data ini ke fail PHP yang dihoskan yang kemudian menambahkan data ke pangkalan data MySQL. Data kemudian dapat dilihat dalam talian sebagai grafik, menggunakan chart.js.A
8 Kawalan Relay Dengan Penerima NodeMCU dan IR Menggunakan Aplikasi Jauh dan Android WiFi dan IR: 5 Langkah (dengan Gambar)
8 Kawalan Relay Dengan Penerima NodeMCU dan IR Menggunakan Aplikasi Jauh dan Android WiFi dan IR: Mengendalikan 8 suis relai menggunakan penerima nodemcu dan ir melalui aplikasi wifi dan jauh dan android. Alat kawalan jauhnya tidak bergantung pada sambungan wifi. DI SINI ADALAH KLIK VERSI YANG DIKEMASKINI SINI
Paparan Suhu dan Kelembapan dan Pengumpulan Data Dengan Arduino dan Pemprosesan: 13 Langkah (dengan Gambar)
Paparan Suhu dan Kelembapan dan Pengumpulan Data Dengan Arduino dan Pemprosesan: Pengenalan: Ini adalah Projek yang menggunakan papan Arduino, Sensor (DHT11), komputer Windows dan program Pemprosesan (boleh dimuat turun percuma) untuk memaparkan data Suhu, Kelembapan dalam digital dan borang graf bar, masa dan tarikh paparan dan jalankan waktu mengira
Cara Menjalankan Data Komposit dan Data Rangkaian Melalui Kabel Ethernet: 6 Langkah (dengan Gambar)
Cara Menjalankan Data Komposit dan Data Rangkaian Melalui Kabel Ethernet: Saya perlu menjalankan Video dan Audio ke bahagian rumah saya yang lain. Masalahnya, saya tidak mempunyai banyak kabel AV, dan juga masa dan wang untuk melakukan pemasangan yang baik. Walau bagaimanapun, saya mempunyai banyak Kabel Ethernet Cat 5. Inilah yang saya buat