Isi kandungan:
- Langkah 1: Cara Bermula Dengan I2C - Dunia Komunikasi Inter IC yang Hebat
- Langkah 2: Gambaran keseluruhan mengenai I2C
- Langkah 3: Cara Mengkonfigurasi Sensor I²C
- Langkah 4: Mulakan Dengan Gerak - Accelerometer
- Langkah 5: Antara Muka Dengan Pengawal
- Langkah 6: Sambungan
- Langkah 7: Kod
- Langkah 8: Dapatkan Peranti I2C Anda Berfungsi
Video: Bermula dengan Antaramuka Sensor I2C ?? - Antaramuka MMA8451 Anda Menggunakan ESP32s: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Dalam tutorial ini, anda akan mempelajari semua tentang cara memulakan, menyambung dan mendapatkan peranti I2C (Accelerometer) yang berfungsi dengan pengawal (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Langkah 1: Cara Bermula Dengan I2C - Dunia Komunikasi Inter IC yang Hebat
Arduino, ESP Series, PIC, Rasberry PI, dan lain-lain semuanya luar biasa. Tetapi apa yang anda lakukan dengannya setelah anda memilikinya?
Perkara terbaik ialah menambahkan sensor dan semacamnya. Hari ini banyak teknologi baru yang panas menggunakan protokol I2C untuk membolehkan komputer, telefon, tablet, atau mikrokontroler bercakap dengan sensor. Telefon pintar akan menjadi kurang pintar sekiranya mereka tidak dapat bercakap dengan sensor akselerometer untuk mengetahui arah menghadap telefon anda.
Langkah 2: Gambaran keseluruhan mengenai I2C
I2C adalah protokol komunikasi separuh-dupleks bersiri, segerak, yang membolehkan wujudnya pelbagai tuan dan hamba dalam bas yang sama. Bas I2C terdiri daripada dua baris: garis data bersiri (SDA) dan jam bersiri (SCL). Kedua-dua garis memerlukan perintang penarik.
SDA (Data Bersiri) - Garis untuk tuan dan hamba menghantar dan menerima data. SCL (Serial Clock) - Garis yang membawa isyarat jam. Dengan kelebihan seperti kesederhanaan dan kos pembuatan yang rendah, I2C kebanyakan digunakan untuk komunikasi peranti periferal berkelajuan rendah dalam jarak pendek (dalam jarak satu kaki).
Ingin mengetahui lebih lanjut mengenai I2C? ……
Langkah 3: Cara Mengkonfigurasi Sensor I²C
Sebelum masuk ke projek, anda perlu memahami beberapa asas Sensor anda. Oleh itu, tuangkan secawan kopi sendiri sebelum menyelam:)? …
Kekuatan besar I2C ialah anda boleh memasang begitu banyak sensor pada empat wayar yang sama. Tetapi untuk unit dengan beberapa modul yang telah dibuat sebelumnya disambungkan, anda mungkin perlu mengeluarkan beberapa perintang smd dari pelarian, jika tidak, penarikan bas mungkin menjadi terlalu agresif.
Maklumat apa yang kami mahukan dari Lembaran Data ??
- Fungsi sensor
- Fungsi pinout dan pin
- Penerangan antara muka (Jangan lewatkan untuk melihat "Jadual Pemilihan Alamat I2c")
- Daftar !!
Segala-galanya baik anda akan menemuinya dengan mudah tetapi Daftar ?? DAFTAR hanyalah lokasi memori di dalam peranti I²C. Ringkasan berapa banyak daftar yang ada dalam sensor tertentu, dan apa yang mereka kendalikan atau isi disebut sebagai peta daftar. Sebilangan besar maklumat di lembar data sensor adalah mengenai menerangkan bagaimana setiap daftar berfungsi, dan mereka sangat sukar dibaca kerana maklumat tersebut jarang disampaikan secara langsung.
Untuk memberi anda gambaran tentang maksud saya: Terdapat banyak jenis daftar tetapi untuk pengenalan ini saya akan mengelompokkannya kepada dua jenis umum: Daftar kawalan dan Data.
1) Daftar Kawalan
Sebilangan besar sensor mengubah cara mereka beroperasi berdasarkan nilai yang disimpan dalam daftar kawalan. Fikirkan daftar kawalan sebagai bank suis Hidup / Mati, yang anda hidupkan dengan menetapkan sedikit hingga 1 dan matikan dengan menetapkan bit itu ke 0. Sensor berasaskan cip I²C sering mempunyai selusin atau lebih tetapan operasi untuk perkara seperti bit- Mod, gangguan, kawalan baca-tulis, kedalaman, kelajuan pensampelan, pengurangan kebisingan, dan lain-lain, jadi anda biasanya perlu menetapkan bit dalam beberapa daftar kawalan yang berbeza sebelum anda benar-benar dapat membaca.
2) Daftar data Tidak seperti daftar kawalan bank-of-switch, saya menganggap daftar output data sebagai bekas yang menyimpan nombor yang kebetulan disimpan dalam bentuk binari. Oleh itu, anda ingin mengetahui Data, selalu membaca daftar data seperti siapa saya mendaftar untuk pengenalan peranti, Daftar status dll.
Jadi, menginisialisasi sensor I²C adalah proses multi-langkah dan susunan operasi yang betul sering dijelaskan secara bertulis dalam arah terbalik, dan bukannya langsung dalam Lembaran Data. senarai tidak pernah mengatakan "Untuk mendapatkan bacaan dari sensor ini, lakukan (1), (2), (3), (4), dll", tetapi anda dapati perihalan bit daftar kawalan yang mengatakan "sebelum anda menetapkan bit x dalam ini mendaftar anda mesti menetapkan bit y dalam daftar kawalan lain ini”.
Masih saya dapati lembaran data lebih interaktif daripada kebanyakan teks. jika Anda akan merujuknya untuk bahagian atau maklumat tertentu dan memberikan semua perincian, hubungan dan rujukan. Hanya duduk dan baca untuk mendapatkan semua rujukan anda.:)
Langkah 4: Mulakan Dengan Gerak - Accelerometer
Percepatan moden ialah peranti Sistem Elektronik-Mekanik Mikro (MEMS), yang bermaksud bahawa ia dapat dipasang pada cip kecil di dalam alat terkecil. Salah satu kaedah untuk mengukur pecutan yang digunakan oleh akselerometer MEMS adalah dengan menggunakan jisim konduktif kecil yang digantung pada mata air. Pecutan peranti menyebabkan mata air meregang atau menguncup, dan pesongan jisim konduktif dapat diukur melalui perubahan kapasitansi ke plat tetap yang berdekatan.
Accelerometer ditentukan oleh ciri-ciri berikut:
- Bilangan paksi, dari satu hingga tiga paksi, berlabel X, Y, dan Z dalam diagram spesifikasi. Perhatikan bahawa beberapa akselerometer disebut paksi 6 atau paksi 9, tetapi itu hanya bermaksud ia digabungkan dengan peranti MEMS lain seperti giroskop dan / atau magnetometer. Setiap peranti tersebut juga mempunyai tiga paksi, itulah sebabnya terdapat Unit Pengukuran Inersia (IMU) 3, 6, atau 9 paksi.
- Jenis output, sama ada analog atau digital. Accelerometer digital menguruskan pemformatan data pecutan menjadi representasi digital yang dapat dibaca melalui I2C atau SPI.
- Julat pecutan diukur dalam g, di mana 1g adalah pecutan kerana graviti Bumi.
- Coprocessor yang dapat memuatkan beberapa pengiraan yang diperlukan untuk menganalisis data mentah dari MCU. Sebilangan besar akselerometer mempunyai keupayaan gangguan sederhana untuk mengesan ambang pecutan (kejutan) dan keadaan 0-g (kejatuhan bebas). Yang lain boleh melakukan pemprosesan lanjutan pada data mentah untuk menawarkan data yang lebih bermakna kepada MCU.
Langkah 5: Antara Muka Dengan Pengawal
Oleh kerana kita mengenali Mikrokontroler ESP mengikut trend, kita akan menggunakan ESP32 untuk contoh kita. Jadi pertama anda memerlukan Nodemcu-32s.
Jangan risau jika anda mempunyai papan ESP lain atau bahkan Arduino !!! Anda hanya perlu menyiapkan Arduino IDE dan konfigurasi mengikut papan Pembangunan anda, untuk Arduino, ESP NodeMCU, ESP32s dan lain-lain … Anda juga memerlukan beberapa jenis bahagian I2C, biasanya pada papan pemecah. Dalam tutorial ini saya akan menggunakan MMA8451 papan pemecah Accelerometer digital.
Dan beberapa wayar pelompat….
Langkah 6: Sambungan
Dan inilah susun atur.
Saya menggunakan sambungan berikut dari modul di atas ke modul Nodemcu-32s saya.
ESP32s - Modul
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Ingatlah, selalunya tidak semua papan pengembangan (kebanyakannya dalam ESP) mempunyai pinout yang jelas untuk membantu menentukan pin mana yang digunakan !! Oleh itu, sebelum menyambung, kenal pasti pin yang betul di papan anda untuk menggunakan pin mana untuk SDA dan SCL."
Langkah 7: Kod
Ini memerlukan perpustakaan Adafruit
dari
Muat turun, unzip dan anda akan menemui folder contoh, dalam folder buka MMA8451demo di Arduino IDE anda dan ini dia….
anda akan melihat kod berikut untuk antara muka sensor MMA8451 anda dengan alat kawalan anda
#sertakan
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); persediaan kosong (tidak sah) {Serial.begin (9600); Wire.begin (4, 5); / * sertai bas i2c dengan SDA = D1 dan SCL = D2 dari NodeMCU * / Serial.println ("Adafruit MMA8451 test!"); jika (! mma.begin ()) {Serial.println ("Tidak dapat memulakan"); sementara (1); } Serial.println ("MMA8451 dijumpai!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Julat ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } gelung void () {// Baca data 'mentah' dalam kiraan 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); Bersiri.println (); / * Dapatkan acara sensor baru * / acara sensor_event_t; mma.getEvent (& acara); / * Paparkan hasilnya (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"); / * Dapatkan orientasi sensor * / uint8_t o = mma.getOrientation (); beralih (o) {case MMA8451_PL_PUF: Serial.println ("Potret Ke Depan"); rehat; kes MMA8451_PL_PUB: Serial.println ("Potret Ke Atas"); rehat; kes MMA8451_PL_PDF: Serial.println ("Potret Bawah Depan"); rehat; kes MMA8451_PL_PDB: Serial.println ("Potret Bawah Kembali"); rehat; kes MMA8451_PL_LRF: Serial.println ("Landskap Depan Kanan"); rehat; kes MMA8451_PL_LRB: Serial.println ("Landscape Right Back"); rehat; kes MMA8451_PL_LLF: Serial.println ("Landskap Kiri Depan"); rehat; kes MMA8451_PL_LLB: Serial.println ("Landscape Left Back"); rehat; } Bersiri.println (); kelewatan (1000); }
Simpan, Sahkan dan Muat Naik ……
Buka monitor bersiri dan anda akan melihat sesuatu seperti ini, saya menggerakkan sensor sehingga pelbagai pembacaan
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4.92 Y: 5.99 Z: 4.87 m / s ^ 2
Landskap Ke Depan Kiri
X: -224 Y: -2020 Z: 3188
X: -5.10 Y: -3.19 Z: 7.00 m / s ^ 2
Potret Ke Depan
Sekiranya semuanya berjalan sebagaimana mestinya, maka anda sekarang mempunyai asas-asas I2C dan Cara menyambungkan peranti anda..
Tetapi peranti tidak berfungsi ??
Lanjutkan dengan langkah seterusnya ……
Langkah 8: Dapatkan Peranti I2C Anda Berfungsi
Langkah asas untuk membuat peranti I2C berfungsi
Mari siasat….
- Pendawaian betul.. (periksa lagi)
- Program betul.. (Ya, ini adalah contoh ujian..)
Mulakan dengan peringkat untuk menyelesaikan…..
Tahap 1: Jalankan program pengimbas peranti I2C untuk memeriksa alamat peranti dan pertama-tama peranti I2C anda okey
Anda boleh Muat turun lakaran dan periksa output.
Hasil - Peranti berfungsi dan alamat Sensor betul
Pengimbas I2C. Mengimbas…
Alamat dijumpai: 28 (0x1C) Selesai. Terdapat 1 peranti.
Tahap 2: Periksa perpustakaan sensor
Buka fail Adafruit_MMA8451.h dan cari alamat peranti
Hasil - Alamat berbeza dengan peranti saya ??
/ * ================================================ ========================= ALAMAT / BITS I2C --------------------- -------------------------------------------------- * / #tentukan MMA8451_DEFAULT_ADDRESS (0x1D) //! <Alamat MMA8451 I2C lalai, jika A adalah GND, 0x1C / * ======================= ================================================== * /
Lakukan - Edit fail dari notepad (ubah alamat) + Simpan + Mulakan semula IDE
Ia berfungsi. Anda boleh mendapatkan bacaan anda.
Masih belum….. ???
Tahap 3: Periksa Wire.begin ditimpa?
Buka fail Adafruit_MMA8451.c dan cari Wire.begin.
Hasil - Penyataan ini diganti
/ ************************************************* ************************* // *! @brief Setup HW (membaca nilai pekali, dll.) * / / ********************************** **************************************** / bool Adafruit_MMA8451:: bermula (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Lakukan - Edit fail dari notepad (pernyataan komen) + Simpan + Mulakan semula IDE
Dan akhirnya Peranti berfungsi ☺…
Saya hampir memuatkan tutorial ini kerana tujuan utamanya adalah untuk menerangkan Cara memulakan, mendapatkan data dari lembar data, menyambung dan membuat peranti I2C berfungsi dengan contoh yang sangat asas. Harap semuanya akan berjalan sebagaimana mestinya, dan berguna untuk memulakan Sensor anda.
Disyorkan:
Bermula dengan STM32f767zi Cube IDE dan Muat Naik Sketsa Tersuai Anda: 3 Langkah
Bermula dengan STM32f767zi Cube IDE dan Muat Naik Sketsa Kustom: BELI (klik ujian untuk membeli / lawati laman web) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KUNCI MDK ARM · VISI ARM MDK KUNCI · EWARM IAR EMBEDDED WORKBENCH · ada pelbagai perisian yang boleh didapati digunakan untuk memprogram mikrokontroler STM
Bagaimana Anda Harus Bermula Dengan Projekt Baru: 7 Langkah
Bagaimana Anda Harus Bermula Dengan Projekt Baru: Halo pembaca, ini adalah tutorial saya bagaimana anda harus memulakan dengan projek mikrokontroler baru
Memasang Raspbian di Raspberry Pi 3 B Tanpa HDMI - Bermula dengan Raspberry Pi 3B - Menyiapkan Raspberry Pi 3: 6 Langkah Anda
Memasang Raspbian di Raspberry Pi 3 B Tanpa HDMI | Bermula dengan Raspberry Pi 3B | Menyiapkan Raspberry Pi 3 Anda: Seperti yang anda ketahui bahawa komputer Raspberry Pi cukup hebat dan anda boleh mendapatkan seluruh komputer hanya dengan satu papan kecil. Raspberry Pi 3 Model B mempunyai ARM Cortex A53 64-bit quad-core jam pada 1.2 GHz. Ini meletakkan Pi 3 kira-kira 50
Bermula dengan AWS IoT Dengan Sensor Suhu Tanpa Wayar Menggunakan MQTT: 8 Langkah
Bermula dengan AWS IoT Dengan Sensor Suhu Tanpa Wayar Menggunakan MQTT: Dalam Instructables sebelumnya, kami telah melalui platform awan yang berbeza seperti Azure, Ubidots, ThingSpeak, Losant dll. Kami telah menggunakan protokol MQTT untuk menghantar data sensor ke awan dalam hampir semua platform awan. Untuk maklumat lanjut
Bermula dengan Arduino: Apa yang Perlu Anda Ketahui: 4 Langkah (dengan Gambar)
Bermula dengan Arduino: Apa yang Perlu Anda Ketahui: Saya telah bekerja dengan Arduino dan elektronik selama bertahun-tahun sekarang, dan saya masih belajar. Dalam dunia pengawal mikro yang terus berkembang ini, mudah tersesat dan menjalankan lingkaran di sekitar diri anda untuk mencari maklumat. Dalam Arahan ini