Daftar Isi:
- Langkah 1: Cara Memulai Dengan I2C - Dunia Komunikasi Antar IC yang Luar Biasa
- Langkah 2: Ikhtisar tentang I2C
- Langkah 3: Cara Mengonfigurasi Sensor I²C
- Langkah 4: Mulai Dengan Gerakan - Akselerometer
- Langkah 5: Antarmuka Dengan Pengontrol
- Langkah 6: Koneksi
- Langkah 7: Kode
- Langkah 8: Dapatkan Perangkat I2C Anda Bekerja
Video: Memulai Dengan Antarmuka Sensor I2C?? - Antarmuka MMA8451 Anda Menggunakan ESP32: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
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??
- Fungsionalitas sensor
- Fungsi pinout dan pin
- Deskripsi antarmuka (Jangan lewatkan untuk melihat "tabel Pemilihan Alamat I2c")
- 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:
- 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.
- Jenis keluaran, baik analog maupun digital. Akselerometer digital menangani pemformatan data akselerasi menjadi representasi digital yang dapat dibaca melalui I2C atau SPI.
- Rentang percepatan diukur dalam g's, di mana 1g adalah percepatan gravitasi bumi.
- 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
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:
Memulai Dengan STM32f767zi Cube IDE dan Unggah Sketsa Kustom Anda: 3 Langkah
Memulai Dengan STM32f767zi Cube IDE dan Unggah Sketsa Kustom Anda: BELI (klik tes untuk membeli/mengunjungi halaman web) PERANGKAT LUNAK YANG DIDUKUNG STM32F767Z· STM32CUBE IDE· KEIL MDK ARM VISION· EWARM IAR EMBEDDED WORKBENCH· ARDUINO IDE tersedia berbagai perangkat lunak yang tersedia digunakan untuk memprogram mikrokontroler STM
Memulai Dengan ESP32 CAM - Streaming Video Menggunakan ESP CAM Melalui Wifi - Proyek Kamera Keamanan ESP32: 8 Langkah
Memulai Dengan ESP32 CAM | Streaming Video Menggunakan ESP CAM Melalui Wifi | Proyek Kamera Keamanan ESP32: Hari ini kita akan belajar cara menggunakan papan CAM ESP32 baru ini dan bagaimana kita dapat mengkodekannya dan menggunakannya sebagai kamera keamanan dan mendapatkan video streaming melalui wifi
Memulai Dengan ESP32 - Memasang Board ESP32 di Arduino IDE - Kode Blink ESP32: 3 Langkah
Memulai Dengan ESP32 | Memasang Board ESP32 di Arduino IDE | Kode Blink ESP32: Dalam instruksi ini kita akan melihat cara mulai bekerja dengan esp32 dan cara memasang papan esp32 ke Arduino IDE dan kami akan memprogram esp 32 untuk menjalankan kode blink menggunakan arduino ide
Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: 8 Langkah
Memulai Dengan AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: Dalam Instruksi sebelumnya, kami telah melalui berbagai platform cloud seperti Azure, Ubidots, ThingSpeak, Losant, dll. Kami telah menggunakan protokol MQTT untuk mengirim data sensor ke cloud di hampir semua platform awan. Untuk informasi lebih
Memulai Dengan Arduino: Yang Perlu Anda Ketahui: 4 Langkah (dengan Gambar)
Memulai Dengan Arduino: Yang Perlu Anda Ketahui: Saya telah bekerja dengan Arduino dan elektronik selama bertahun-tahun sekarang, dan saya masih belajar. Dalam dunia mikro-kontroler yang terus berkembang ini, mudah tersesat dan berputar-putar di sekitar Anda mencoba mencari informasi. Dalam Instruksi ini