Daftar Isi:

Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah
Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah

Video: Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah

Video: Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, November
Anonim
Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32s
Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32s

Dalam tutorial ini, Anda akan mempelajari semua tentang Bagaimana memulai, menghubungkan, dan membuat perangkat I2C (Accelerometer) bekerja dengan pengontrol (Arduino, ESP32, ESP8266, ESP12 NodeMCU)

Langkah 1: Cara Memulai Dengan I2C - Dunia Komunikasi Antar IC yang Luar Biasa

Arduino, Seri ESP, PIC, Rasberry PI, dll. Semuanya luar biasa. Tapi apa yang Anda lakukan dengan itu setelah Anda memilikinya?

Yang terbaik adalah menambahkan sensor dan semacamnya. Saat ini banyak teknologi baru yang panas menggunakan protokol I2C untuk memungkinkan komputer, ponsel, tablet, atau mikrokontroler berbicara tentang sensor. Ponsel pintar akan kurang pintar jika mereka tidak dapat berbicara dengan sensor akselerometer itu untuk mengetahui ke arah mana ponsel Anda menghadap.

Langkah 2: Ikhtisar tentang I2C

I2C adalah protokol komunikasi serial, sinkron, setengah dupleks yang memungkinkan ko-eksistensi beberapa master dan budak pada bus yang sama. Bus I2C terdiri dari dua jalur: jalur data serial (SDA) dan jam serial (SCL). Kedua jalur membutuhkan resistor pull-up.

SDA (Serial Data) – Jalur untuk master dan slave untuk mengirim dan menerima data. SCL (Serial Clock) – Jalur yang membawa sinyal clock. Dengan keunggulan seperti kesederhanaan dan biaya produksi yang rendah, I2C sebagian besar digunakan untuk komunikasi perangkat periferal berkecepatan rendah melalui jarak pendek (dalam satu kaki).

Ingin mempelajari lebih lanjut tentang I2C?……

Langkah 3: Cara Mengonfigurasi Sensor I²C

Sebelum masuk ke proyek, Anda perlu memahami beberapa dasar Sensor Anda. Jadi tuangkan secangkir kopi untuk diri sendiri sebelum menyelam:)? …

Kekuatan besar I2C adalah Anda dapat menempatkan begitu banyak sensor pada empat kabel yang sama. Tetapi untuk unit dengan beberapa modul pra-dibuat yang terhubung, Anda mungkin harus melepas beberapa resistor smd dari breakout, jika tidak, pull-up pada bus mungkin menjadi terlalu agresif.

Informasi apa yang kita inginkan dari Datasheet??

  1. Fungsionalitas sensor
  2. Fungsi pinout dan pin
  3. Deskripsi antarmuka (Jangan lewatkan untuk melihat "tabel Pemilihan Alamat I2c")
  4. Daftar!!

Semuanya baik-baik saja Anda akan menemukannya dengan mudah tetapi Mendaftar?? REGISTERS hanyalah lokasi memori di dalam perangkat I²C. Rangkuman tentang berapa banyak register yang ada di sensor yang diberikan, dan apa yang mereka kontrol atau isi disebut peta register. Sebagian besar informasi pada lembar data sensor adalah tentang menjelaskan bagaimana setiap register berfungsi, dan mereka bisa sangat melelahkan untuk dibaca karena informasinya jarang disajikan secara langsung.

Untuk memberi Anda gambaran tentang apa yang saya maksud dengan itu: Ada banyak jenis register tetapi untuk pengantar ini saya akan mengelompokkannya menjadi dua jenis umum: Register Kontrol dan Data.

1) Register Kontrol

Kebanyakan sensor mengubah cara mereka beroperasi berdasarkan nilai yang disimpan dalam register kontrol. Pikirkan register kontrol sebagai bank sakelar Nyala/Mati, yang Anda aktifkan dengan menyetel sedikit ke 1 dan mematikannya dengan menyetel bit itu ke 0. Sensor berbasis chip I²C sering kali memiliki selusin atau lebih setelan operasional untuk hal-hal seperti bit- Mode, interupsi, kontrol baca-tulis, kedalaman, kecepatan pengambilan sampel, pengurangan kebisingan, dll., Jadi Anda biasanya perlu mengatur bit di beberapa register kontrol yang berbeda sebelum Anda benar-benar dapat melakukan pembacaan.

2) Register data Tidak seperti register kontrol bank-of-switch, saya menganggap register keluaran data sebagai wadah yang menyimpan angka yang kebetulan disimpan dalam bentuk biner. Jadi Anda ingin tahu Data, selalu baca register data seperti siapa yang saya daftarkan untuk identifikasi perangkat, Daftar status dll.

Jadi, menginisialisasi sensor I²C adalah proses multi-langkah dan urutan operasi yang benar sering dijelaskan secara tertulis dalam arah terbalik, Alih-alih langsung di Lembar Data. list tidak pernah mengatakan "Untuk mendapatkan pembacaan dari sensor ini, lakukan (1), (2), (3), (4), dll", tetapi Anda menemukan deskripsi bit register kontrol yang mengatakan "sebelum Anda mengatur bit x di ini register Anda harus mengatur bit y di register kontrol lain ini”.

Masih saya selalu menemukan lembar data lebih interaktif daripada kebanyakan teks. jika Anda akan merujuknya untuk sepotong atau potongan informasi tertentu dan itu memberi Anda semua detail, koneksi, dan referensi. Hanya duduk dan membaca untuk mendapatkan semua referensi Anda.:)

Langkah 4: Mulai Dengan Gerakan - Akselerometer

Akselerometer modern adalah perangkat Micro Electro-Mechanical Systems (MEMS), yang artinya dapat dipasang pada chip kecil di dalam gadget terkecil. Salah satu metode untuk mengukur percepatan yang digunakan oleh akselerometer MEMS adalah dengan memanfaatkan massa konduktif kecil yang tergantung pada pegas. Percepatan perangkat menyebabkan pegas meregang atau berkontraksi, dan defleksi massa konduktif dapat diukur melalui perubahan kapasitansi ke pelat tetap di dekatnya.

Akselerometer ditentukan oleh fitur-fitur berikut:

  1. Jumlah sumbu, dari satu hingga tiga sumbu, berlabel X, Y, dan Z dalam diagram spesifikasi. Perhatikan bahwa beberapa akselerometer disebut 6-sumbu atau 9-sumbu, tetapi itu hanya berarti bahwa mereka digabungkan dengan perangkat MEMS lain seperti giroskop dan/atau magnetometer. Masing-masing perangkat tersebut juga memiliki tiga sumbu, itulah sebabnya mengapa ada Unit Pengukuran Inersia (IMU) 3, 6, atau 9 sumbu.
  2. Jenis keluaran, baik analog maupun digital. Akselerometer digital menangani pemformatan data akselerasi menjadi representasi digital yang dapat dibaca melalui I2C atau SPI.
  3. Rentang percepatan diukur dalam g's, di mana 1g adalah percepatan gravitasi bumi.
  4. Koprosesor yang dapat membongkar beberapa perhitungan diperlukan untuk menganalisis data mentah dari MCU. Sebagian besar akselerometer memiliki beberapa kemampuan interupsi sederhana untuk mendeteksi ambang percepatan (guncangan) dan kondisi 0-g (jatuh bebas). Orang lain dapat melakukan pemrosesan lanjutan pada data mentah untuk menawarkan data yang lebih bermakna ke MCU.

Langkah 5: Antarmuka Dengan Pengontrol

Karena kita tahu Mikrokontroler ESP sedang tren, kita akan menggunakan ESP32 untuk contoh kita. Jadi pertama-tama Anda membutuhkan Nodemcu-32s.

Jangan khawatir jika Anda memiliki papan ESP lain atau bahkan Arduino!!! Anda hanya perlu mengatur Arduino IDE Anda dan konfigurasi sesuai papan Pengembangan Anda, untuk Arduino, ESP NodeMCU, ESP32s dll … Anda juga akan memerlukan beberapa jenis bagian I2C, biasanya pada papan breakout. Dalam tutorial ini saya akan menggunakan MMA8451 papan breakout Accelerometer digital.

Dan beberapa kabel jumper….

Langkah 6: Koneksi

Koneksi
Koneksi

Dan berikut adalah tata letaknya.

Saya menggunakan koneksi berikut dari modul di atas ke modul Nodemcu-32s saya.

ESP32s -- Modul

3v3 -- Vin

Gnd -- Gnd

SDA 21 -- SDA

SCL 22 -- SCL

"Ingat, sebagian besar waktu tidak semua papan pengembangan (kebanyakan di ESP) memiliki pinout yang jelas dan bagus untuk membantu menentukan pin mana yang digunakan!! Jadi sebelum koneksi, identifikasi pin papan Anda yang benar untuk menggunakan pin mana untuk SDA dan SCL."

Langkah 7: Kode

Ini membutuhkan perpustakaan Adafruit

dari

Unduh, unzip dan Anda akan menemukan folder contoh, di folder buka saja MMA8451demo di Arduino IDE Anda dan ini dia….

Anda akan melihat kode berikut untuk antarmuka sensor MMA8451 Anda dengan pengontrol Anda

#termasuk

#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451(); void setup(void) { Serial.begin(9600); Kawat.begin(4, 5); /* join i2c bus dengan SDA=D1 dan SCL=D2 dari NodeMCU */ Serial.println("Adafruit MMA8451 test!"); if (! mma.begin()) { Serial.println("Tidak dapat memulai"); sementara (1); } Serial.println("MMA8451 ditemukan!"); mma.setRange(MMA8451_RANGE_2_G); Serial.print("Rentang = "); Serial.print(2 << mma.getRange()); Serial.println("G"); } void loop() { // Membaca data 'mentah' dalam hitungan 14-bit mma.read(); Serial.print("X:\t"); Serial.print(mma.x); Serial.print("\tY:\t"); Serial.print(mma.y); Serial.print("\tZ:\t"); Serial.print(mma.z); Serial.println(); /* Dapatkan peristiwa sensor baru */ sensor_event_t event; mma.getEvent(&acara); /* Menampilkan hasil (percepatan diukur dalam m/s^2) */ Serial.print("X: \t"); Serial.print(event.acceleration.x); Serial.print("\t"); Serial.print("Y: \t"); Serial.print(event.acceleration.y); Serial.print("\t"); Serial.print("Z: \t"); Serial.print(event.acceleration.z); Serial.print("\t"); Serial.println("m/s^2"); /* Mendapatkan orientasi sensor */ uint8_t o = mma.getOrientation(); switch (o) { case MMA8451_PL_PUF: Serial.println("Potret Di Depan"); merusak; case MMA8451_PL_PUB: Serial.println("Potret Kembali"); merusak; case MMA8451_PL_PDF: Serial.println("Potret Bawah Depan"); merusak; case MMA8451_PL_PDB: Serial.println("Potret Ke Bawah"); merusak; case MMA8451_PL_LRF: Serial.println("Lanskap Depan Kanan"); merusak; case MMA8451_PL_LRB: Serial.println("Lanskap Belakang Kanan"); merusak; case MMA8451_PL_LLF: Serial.println("Lanskap Kiri Depan"); merusak; case MMA8451_PL_LLB: Serial.println("Lanskap Kiri Belakang"); merusak; } Serial.println(); penundaan (1000); }

Simpan, Verifikasi, dan Unggah……

Buka monitor serial dan Anda akan melihat sesuatu seperti ini, saya menggerakkan sensor karenanya berbagai bacaan

X: -2166 Y: 1872 Z: 2186

X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2

Pemandangan Kiri Depan

X: -224 Y: -2020 Z: 3188

X: -5,10 Y: -3,19 Z: 7,00 m/s^2

Potret Di Depan

Nah jika semuanya berjalan sebagaimana mestinya, maka Anda sekarang memiliki dasar-dasar I2C dan Cara menghubungkan perangkat Anda..

Tapi perangkat tidak Bekerja??

Ikuti saja langkah selanjutnya……

Langkah 8: Dapatkan Perangkat I2C Anda Bekerja

Langkah-langkah dasar agar perangkat I2C berfungsi

Mari kita selidiki….

  • Pengkabelan sudah benar.. (periksa lagi)
  • Program benar.. (Ya, ini contoh uji..)

Mulailah dengan tahapan untuk dipecahkan…..

Tahap 1: Jalankan program pemindai perangkat I2C untuk memeriksa alamat perangkat dan pertama-tama perangkat I2C Anda baik-baik saja

Anda dapat Mengunduh sketsa dan memeriksa keluaran.

Hasil - Perangkat berfungsi dan alamat Sensor benar

pemindai I2C. Memindai…

Ditemukan alamat: 28 (0x1C) Selesai. Ditemukan 1 perangkat.

Tahap 2: Periksa perpustakaan sensor

Buka file Adafruit_MMA8451.h dan temukan alamat perangkat

Hasil - Alamat berbeda dengan perangkat saya??

/*================================================ ========================= ALAMAT/BIT I2C --------------------- -------------------------------------------------- */ #define MMA8451_DEFAULT_ADDRESS (0x1D) //!< Alamat default MMA8451 I2C, jika A adalah GND, itu 0x1C /*======================== ================================================== */

Lakukan - Edit file dari notepad (ubah alamat) + Simpan + Mulai Ulang IDE

Ini bekerja. Anda bisa mendapatkan bacaan Anda.

Ngakak…..???

Tahap 3: Periksa Wire.begin ditimpa?

Buka file Adafruit_MMA8451.c dan temukan Wire.begin.

Hasil - Pernyataan ini ditimpa

/************************************************ ***************************//*! @brief Mengatur HW (membaca nilai koefisien, dll.) */ /********************************* ****************************************/ bool Adafruit_MMA8451::begin(uint8_t i2caddr) { Kawat.mulai(); _i2caddr = i2caddr;

Lakukan - Edit file dari notepad (pernyataan komentar) + Simpan + Mulai Ulang IDE

Dan akhirnya Perangkat mulai Bekerja☺…

Saya hampir membebani tutorial ini karena tujuan utamanya adalah untuk menjelaskan Bagaimana memulai, mendapatkan data dari lembar data, menghubungkan dan membuat perangkat I2C bekerja dengan contoh yang sangat mendasar. Semoga semuanya berjalan sebagaimana mestinya, dan ini akan berguna untuk memulai Sensor Anda.

Direkomendasikan: