فهرست مطالب:
- مرحله 1: چگونه می توان با I2C شروع کرد - دنیای باشکوه ارتباطات IC IC
- مرحله 2: مروری بر I2C
- مرحله 3: نحوه پیکربندی سنسورهای I²C
- مرحله 4: با حرکت - شتاب سنج شروع کنید
- مرحله 5: رابط با کنترل کننده
- مرحله 6: اتصالات
- مرحله 7: کد
- مرحله 8: دستگاه I2C خود را کار کنید
تصویری: شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s انجام دهید: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
در این آموزش شما با نحوه راه اندازی ، اتصال و دریافت دستگاه I2C (شتاب سنج) کار با کنترلر آشنا خواهید شد (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU)
مرحله 1: چگونه می توان با I2C شروع کرد - دنیای باشکوه ارتباطات IC IC
Arduino ، ESP Series ، PIC ، Rasberry PI و غیره همه باورنکردنی هستند. اما وقتی یکی را داشتید با آن چه می کنید؟
بهترین کار اضافه کردن سنسورها و موارد دیگر است. امروزه بسیاری از فناوری های جدید داغ از پروتکل I2C استفاده می کنند تا به رایانه ، تلفن ها ، رایانه های لوحی یا میکروکنترلرها اجازه دهد با حسگرها صحبت کنند. اگر تلفن های هوشمند نتوانند با آن سنسور شتاب سنج صحبت کنند تا بدانند تلفن شما به کدام سمت روبرو است ، کمتر هوشمند خواهند بود.
مرحله 2: مروری بر I2C
I2C یک پروتکل ارتباطی سریالی ، همزمان ، نیمه دوطرفه است که امکان وجود چندین استاد و برده در یک گذرگاه را فراهم می کند. گذرگاه I2C شامل دو خط است: خط داده سریال (SDA) و ساعت سریال (SCL). هر دو خط نیاز به مقاومت های کششی دارند.
SDA (داده های سریال) - خطی برای ارسال و دریافت داده ها برای master و slave. SCL (ساعت سریال) - خطی که سیگنال ساعت را حمل می کند. I2C با مزایایی مانند سادگی و هزینه پایین تولید ، بیشتر برای ارتباط دستگاههای جانبی کم سرعت در مسافتهای کوتاه (در فاصله یک پا) استفاده می شود.
آیا می خواهید در مورد I2C بیشتر بدانید؟ ……
مرحله 3: نحوه پیکربندی سنسورهای I²C
قبل از رفتن به پروژه ، باید چند اصل از سنسور خود را بشناسید. بنابراین قبل از شیرجه زدن برای خود یک فنجان قهوه بریزید:)؟ …
نقطه قوت I2C این است که می توانید سنسورهای زیادی را روی چهار سیم یکسان قرار دهید. اما برای واحدهایی که چندین ماژول از پیش ساخته شده به هم متصل شده اند ، ممکن است مجبور شوید چند مقاومت smd را از شکاف ها بردارید ، در غیر این صورت کشش در اتوبوس ممکن است بیش از حد تهاجمی شود.
از Datasheet چه اطلاعاتی می خواهیم؟
- عملکرد سنسور
- عملکرد Pinouts و پین ها
- توضیحات رابط (نگاه کردن به "جدول انتخاب آدرس I2c" را از دست ندهید)
- ثبت نام !!
همه چیز خوب است شما به راحتی آن را پیدا خواهید کرد اما ثبت نام می کند؟ REGISTERS مکانهای حافظه در داخل دستگاه I²C هستند. خلاصه ای از تعداد رجیسترهای موجود در یک سنسور معین و آنچه که آنها کنترل یا شامل می شوند ، نقشه ثبت نامیده می شود. بیشتر اطلاعات موجود در برگه اطلاعات سنسور در مورد نحوه عملکرد هر یک از ثبات ها است و خواندن آنها می تواند بسیار مبهم باشد زیرا اطلاعات به ندرت به صورت مستقیم ارائه می شوند.
برای اینکه منظورم را از این جمله بفهمید: انواع زیادی از رجیسترها وجود دارد اما برای این مقدمه قصد دارم آنها را به دو نوع کلی دسته بندی کنم: ثبت و کنترل داده ها.
1) ثبت های کنترل
بیشتر حسگرها بر اساس مقادیر ذخیره شده در رجیسترهای کنترل نحوه عملکرد خود را تغییر می دهند. به رجیسترهای کنترل به عنوان بانک های کلیدهای روشن/خاموش فکر کنید ، که با تنظیم کمی روی 1 و خاموش کردن آن روی 0 روشن می کنید. سنسورهای مبتنی بر تراشه I²C اغلب دارای دوجین یا بیشتر تنظیمات عملیاتی برای مواردی مانند بیت هستند. حالت ها ، وقفه ها ، کنترل خواندن و نوشتن ، عمق ، سرعت نمونه برداری ، کاهش نویز و غیره ، بنابراین شما معمولاً باید بیت هایی را در چندین رجیستر کنترلی مختلف تنظیم کنید تا بتوانید قرائت را انجام دهید.
2) ثبت داده ها بر خلاف کنترل که بانک سوئیچ ها را ثبت می کند ، من ثبت کننده های خروجی داده را به عنوان ظروفی در نظر می گیرم که اعداد را در خود ذخیره می کنند و به صورت دودویی ذخیره می شوند. بنابراین شما می خواهید داده ها را بشناسید ، همیشه ثبت کننده های داده ای مانند من برای شناسایی دستگاه ، وضعیت ثبت نام و غیره را بخوانید.
بنابراین ، راه اندازی یک سنسور I²C یک فرایند چند مرحله ای است و ترتیب صحیح عملیات اغلب به صورت مستقیم در جهت عکس نوشته می شود ، به جای آنکه در Datasheet مستقیم باشد. لیست هرگز نمی گوید "برای دریافت خواندن از این سنسور ، کارهای (1) ، (2) ، (3) ، (4) و غیره را انجام دهید" ، اما توضیحاتی در مورد بیت های ثبت کننده کنترل پیدا می کنید که می گوید "قبل از تنظیم بیت x در این register باید بیت y را در این رجیستر کنترل دیگر تنظیم کنید."
با این وجود ، من همیشه می دانم که یک برگه داده نسبت به اکثر متن ها تعاملی تر است. اگر شما آن را برای قطعه یا اطلاعات خاصی ارجاع دهید و همه جزئیات ، ارتباطات و منابع را در اختیار شما قرار دهد. فقط بنشینید و بخوانید تا همه مراجع خود را دریافت کنید.:)
مرحله 4: با حرکت - شتاب سنج شروع کنید
شتاب سنج های مدرن دستگاه های میکرو الکترو مکانیکی (MEMS) هستند ، به این معنی که آنها می توانند بر روی یک تراشه کوچک در کوچکترین ابزارها قرار گیرند. یکی از روشهای اندازه گیری شتاب مورد استفاده در شتاب سنجهای MEMS استفاده از یک جرم رسانای کوچک معلق بر روی چشمه ها است. شتاب دستگاه باعث می شود که چشمه ها کشیده یا منقبض شوند و انحراف جرم رسانا را می توان از طریق تغییر ظرفیت به صفحات ثابت و مجاور اندازه گیری کرد.
شتاب سنج ها با ویژگی های زیر مشخص می شوند:
- تعداد محورها ، از یک تا سه محور ، با برچسب X ، Y و Z در نمودارهای مشخصات. توجه داشته باشید که برخی از شتاب سنج ها 6 محور یا 9 محور نامیده می شوند ، اما این بدان معناست که آنها با سایر دستگاه های MEMS مانند ژیروسکوپ و/یا مغناطیس سنج همراه شده اند. هر یک از این دستگاه ها همچنین دارای سه محور هستند ، به همین دلیل واحد اندازه گیری اینرسی 3 ، 6 یا 9 محور (IMU) وجود دارد.
- نوع خروجی ، آنالوگ یا دیجیتال. شتاب سنج دیجیتال از قالب بندی داده های شتاب در یک نمایش دیجیتالی که می تواند از طریق I2C یا SPI خوانده شود مراقبت می کند.
- محدوده شتاب اندازه گیری شده در g’s ، که 1g شتاب ناشی از گرانش زمین است.
- هم پردازنده هایی که می توانند برخی از محاسبات مورد نیاز برای تجزیه و تحلیل داده های خام از MCU را بارگیری کنند. اکثر شتاب سنجها دارای قابلیت وقفه ای ساده برای تشخیص آستانه شتاب (شوک) و شرایط 0 گرم (سقوط آزاد) هستند. دیگران می توانند پردازش پیشرفته ای را بر روی داده های خام انجام دهند تا داده های معنی دار تری به MCU ارائه دهند.
مرحله 5: رابط با کنترل کننده
از آنجا که ما میکروکنترلرهای ESP را در جریان می شناسیم ، از ESP32 برای مثال خود استفاده می کنیم. بنابراین ابتدا به یک Nodemcu-32s نیاز دارید.
اگر هیچ تابلوی ESP دیگر یا حتی آردوینو ندارید نگران نباشید !!! شما فقط باید Arduino IDE و پیکربندی خود را مطابق با تابلوهای توسعه خود ، برای Arduino ، ESP NodeMCU ، ESP32s و غیره تنظیم کنید … همچنین به برخی از قطعات I2C ، معمولاً در یک بریکت برد نیاز دارید. در این آموزش من قصد دارم از MMA8451 استفاده کنم برد شکست دیجیتال شتاب سنج.
و چند سیم جامپر….
مرحله 6: اتصالات
و در اینجا یک طرح بندی است.
من از اتصال زیر از ماژول بالا به ماژول Nodemcu-32s خود استفاده کردم.
ESP32s - ماژول
3v3 - Vin
گند - گند
SDA 21 - SDA
SCL 22 - SCL
"به یاد داشته باشید ، بیشتر اوقات همه تابلوهای توسعه (بیشتر در ESP ها) دارای یک پینت واضح و خوب برای تعیین پین های مورد استفاده نیستند !! بنابراین قبل از اتصال ، پین های صحیح برد خود را مشخص کنید تا از پین های SDA و SCL استفاده کنید."
مرحله 7: کد
این نیاز به کتابخانه Adafruit دارد
از
بارگیری کنید ، از حالت فشرده خارج شوید و پوشه نمونه ها را پیدا خواهید کرد ، در پوشه فقط MMA8451demo را در Arduino IDE خود باز کنید و در اینجا شما….
کد زیر را برای رابط سنسور MMA8451 با کنترلر خود مشاهده خواهید کرد
#عبارتند از
#شامل #شامل Adafruit_MMA8451 mma = Adafruit_MMA8451 ()؛ void setup (void) {Serial.begin (9600)؛ Wire.begin (4 ، 5) ؛ / * با SDA = D1 و SCL = D2 از NodeMCU */ Serial.println ("تست Adafruit MMA8451!") به گذرگاه i2c بپیوندید؛ if (! mma.begin ()) {Serial.println ("شروع نشد")؛ در حالی که (1) ؛ } Serial.println ("MMA8451 پیدا شد!") ؛ mma.setRange (MMA8451_RANGE_2_G) ؛ Serial.print ("محدوده =")؛ Serial.print (2 << mma.getRange ())؛ Serial.println ("G") ؛ } void loop () {// خواندن داده های "خام" در تعداد 14 بیتی 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 ()؛ / * یک رویداد جدید حسگر دریافت کنید */ sensors_event_t event؛ mma.getEvent (& رویداد)؛ / * نمایش نتایج (شتاب با 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") ؛ / * جهت سنسور را دریافت کنید */ uint8_t o = mma.getOrientation ()؛ switch (o) {case MMA8451_PL_PUF: Serial.println ("پرتره از جلو")؛ زنگ تفريح؛ مورد MMA8451_PL_PUB: Serial.println ("پرتره به بالا")؛ زنگ تفريح؛ مورد MMA8451_PL_PDF: Serial.println ("عمودی از جلو")؛ زنگ تفريح؛ مورد MMA8451_PL_PDB: Serial.println ("عمودی به عقب")؛ زنگ تفريح؛ مورد MMA8451_PL_LRF: Serial.println ("چشم انداز جلو راست")؛ زنگ تفريح؛ مورد MMA8451_PL_LRB: Serial.println ("منظره پشت راست")؛ زنگ تفريح؛ مورد MMA8451_PL_LLF: Serial.println ("چشم انداز چپ جلو")؛ زنگ تفريح؛ مورد MMA8451_PL_LLB: Serial.println ("چشم انداز سمت چپ عقب") ؛ زنگ تفريح؛ } Serial.println ()؛ تاخیر (1000) ؛ }
ذخیره ، تأیید و بارگذاری ……
مانیتور سریال را باز کنید و چیزی شبیه به این خواهید دید ، من سنسور را در مورد قرائت های مختلف حرکت می دادم
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4.92 Y: 5.99 Z: 4.87 m/s^2
چشم انداز چپ جلو
X: -224 Y: -2020 Z: 3188
X: -5.10 Y: -3.19 Z: 7.00 متر بر ثانیه^2
پرتره از جلو
خوب اگر همه چیز آنطور که باید پیش رفت ، اکنون اصول اولیه I2C و نحوه اتصال دستگاه خود را در اختیار دارید.
اما دستگاه کار نمی کند ؟؟
فقط قدم بعدی را ادامه دهید ……
مرحله 8: دستگاه I2C خود را کار کنید
مراحل اساسی برای کارکرد دستگاه I2C
تحقیق کنیم….
- سیم کشی درست است (دوباره آن را بررسی کنید)
- برنامه درست است.. (بله ، نمونه آزمایشی است..)
با مراحل حل مشکل شروع کنید…..
مرحله 1: برنامه اسکن دستگاه I2C را برای بررسی آدرس دستگاه اجرا کنید و ابتدا دستگاه I2C شما خوب است
می توانید طرح را بارگیری کرده و خروجی را بررسی کنید.
نتیجه - دستگاه کار می کند و آدرس سنسور درست است
اسکنر I2C. در حال اسکن…
آدرس پیدا شده: 28 (0x1C) انجام شد. 1 دستگاه (ها) پیدا شد.
مرحله 2: کتابخانه حسگر را بررسی کنید
فایل Adafruit_MMA8451.h را باز کرده و آدرس دستگاه را بیابید
نتیجه - آدرس با دستگاه من متفاوت است؟
/*============================================= ======================== آدرس I2C/BITS --------------------- ------------------------------------------------------ * / #تعریف MMA8451_DEFAULT_ADDRESS (0x1D) //! <آدرس پیش فرض MMA8451 I2C ، اگر A GND باشد ، 0x1C /*======================= ================================================ */
انجام - ویرایش فایل از دفترچه یادداشت (تغییر آدرس) + ذخیره + راه اندازی مجدد IDE
کار می کند.شما می توانید مطالب خود را دریافت کنید.
جلو نیاید….. ؟؟؟
مرحله 3: بررسی کنید Wire.begin رونویسی شده است؟
فایل Adafruit_MMA8451.c را باز کرده و Wire.begin را بیابید.
نتیجه - این عبارت رونویسی می شود
/********************************************** ***************************! brief تنظیم HW (خواندن مقادیر ضرایب و غیره)* / / ******************************* *************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin ()؛ _i2caddr = i2caddr ؛
انجام - ویرایش فایل از دفترچه یادداشت (بیانیه نظر) + ذخیره + راه اندازی مجدد IDE
و سرانجام دستگاه در حال کار است…
من تقریباً این آموزش را بیش از حد بار می کنم زیرا هدف اصلی آن توضیح نحوه شروع ، دریافت داده ها از برگه داده ، اتصال و کارکردن دستگاه I2C با مثال اصلی بود. امیدوارم همه چیز آنطور که باید پیش برود و راه اندازی سنسور شما مفید خواهد بود.
توصیه شده:
خودتان این کار را با دستگاه تنفس با قطعات MQ-3 و LEGO انجام دهید: 3 مرحله
با استفاده از قطعات MQ-3 & LEGO خودتان این کار را انجام دهید سخت افزار منبع باز آشکارساز گاز ANAVI و بسیاری از
نصب Raspbian در Raspberry Pi 3 B بدون HDMI - شروع کار با Raspberry Pi 3B - راه اندازی رزبری پای خود را 3: 6 مرحله انجام دهید
نصب Raspbian در Raspberry Pi 3 B بدون HDMI | شروع کار با Raspberry Pi 3B | تنظیم رزبری پای 3: همانطور که برخی از شما می دانید رایانه های رزبری پای بسیار عالی هستند و می توانید کل کامپیوتر را فقط بر روی یک برد کوچک تهیه کنید. رزبری پای 3 مدل B دارای چهار هسته ای 64 بیتی ARM Cortex A53 است با فرکانس 1.2 گیگاهرتز این Pi 3 را تقریبا 50 می کند
آیا می توانید این کار را با لمس Kindle انجام دهید ؟: 15 مرحله (همراه با تصاویر)
آیا می توانید این کار را با لمس KIndle انجام دهید ؟: من هرگز نمی توانستم بفهمم که چرا کسی می خواهد صاحب یک خواننده الکترونیکی باشد. سپس فرزندان بزرگسالم یک لمس کیندل را به من دادند و من راه هایی را پیدا کرده ام که بتوانم آن را بیشتر از آنچه یک تلفن هوشمند یا iPad برای دیگران انجام می دهد ، برای من انجام دهد. روزی جایگزین پیری من می شود
شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله
شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: در دستورالعمل های قبلی ، ما از سیستم عامل های مختلف ابری مانند Azure ، Ubidots ، ThingSpeak ، Losant و غیره استفاده کرده ایم. تقریباً از پروتکل MQTT برای ارسال داده های حسگر به ابر تقریباً استفاده می کنیم. تمام پلت فرم ابر برای اطلاعات بیشتر
چگونه می توانید متن را که هنگام حرکت موس روی دکمه شروع به کار می کنید تغییر دهید: 4 مرحله
نحوه تغییر متن ظاهر شده هنگامی که ماوس خود را روی دکمه شروع حرکت می دهید: عنوان همه چیز را نشان می دهد