فهرست مطالب:

رابط سنسور ژیروسکوپ 3 محوره BMG160 با تمشک پای: 5 مرحله
رابط سنسور ژیروسکوپ 3 محوره BMG160 با تمشک پای: 5 مرحله

تصویری: رابط سنسور ژیروسکوپ 3 محوره BMG160 با تمشک پای: 5 مرحله

تصویری: رابط سنسور ژیروسکوپ 3 محوره BMG160 با تمشک پای: 5 مرحله
تصویری: ژیروسکوپ ، معرفی ماژول MPU6050 ماژول ژیروسکوپ 2024, جولای
Anonim
Image
Image

در دنیای امروز ، بیش از نیمی از جوانان و کودکان عاشق بازی هستند و همه کسانی که به آن علاقه دارند ، شیفته جنبه های فنی بازی هستند ، اهمیت حس حرکت را در این حوزه می دانند. ما نیز از همان چیزی شگفت زده شدیم و فقط برای آوردن آن روی تخته ، ما فکر کردیم که روی یک سنسور ژیروسکوپ کار می کنیم که می تواند میزان زاویه هر جسم را اندازه گیری کند. بنابراین ، سنسوری که ما برای مقابله با آن استفاده کردیم BMG160 است. BMG160 یک حسگر ژیروسکوپی 16 بیتی ، دیجیتال ، سه محوری است که می تواند میزان زاویه را در سه بعد اتاق عمود بر اندازه گیری کند.

در این آموزش ، ما قصد داریم کار BMG160 با Raspberry pi را با استفاده از جاوا به عنوان زبان برنامه نویسی نشان دهیم.

سخت افزاری که برای این منظور نیاز دارید به شرح زیر است:

1. BMG160

2. تمشک پای

3. کابل I2C

4. I2C Shield برای رزبری پای

5. کابل اترنت

مرحله 1: نمای کلی BMG160:

آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!

اول از همه ما می خواهیم شما را با ویژگی های اصلی ماژول سنسور BMG160 و پروتکل ارتباطی که بر روی آن کار می کند آشنا کنیم.

BMG160 در اصل یک سنسور ژیروسکوپی 16 بیتی ، دیجیتال ، سه محوری است که می تواند نرخ زاویه را اندازه گیری کند. این دستگاه قادر است نرخ زاویه ای را در سه بعد اتاق عمود بر محور x- ، y- و z محاسبه کرده و سیگنال های خروجی مربوطه را ارائه دهد. با استفاده از پروتکل ارتباطی I2C می تواند با برد تمشک pi ارتباط برقرار کند. این ماژول خاص برای برآوردن الزامات کاربردهای مصرف کننده و همچنین اهداف صنعتی طراحی شده است.

پروتکل ارتباطی که سنسور روی آن کار می کند I2C است. I2C مخفف مدار بین یکپارچه است. این یک پروتکل ارتباطی است که در آن ارتباط از طریق خطوط SDA (داده های سریال) و SCL (ساعت سریال) انجام می شود. این امکان اتصال همزمان چندین دستگاه را فراهم می کند. این یکی از ساده ترین و کارآمدترین پروتکل های ارتباطی است.

مرحله 2: آنچه شما نیاز دارید..

آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!

مواد مورد نیاز برای تحقق هدف ما شامل اجزای سخت افزاری زیر است:

1. BMG160

2. تمشک پای

3. کابل I2C

4. I2C Shield For Raspberry Pi

5. کابل اترنت

مرحله 3: اتصال سخت افزاری:

اتصال سخت افزاری
اتصال سخت افزاری
اتصال سخت افزاری
اتصال سخت افزاری

بخش اتصال سخت افزاری اساساً اتصالات سیم کشی مورد نیاز بین سنسور و تمشک pi را توضیح می دهد. اطمینان از اتصالات صحیح ضروری ترین ضرورت در هنگام کار بر روی هر سیستم برای خروجی مورد نظر است. بنابراین ، اتصالات مورد نیاز به شرح زیر است:

BMG160 از طریق I2C کار می کند. در اینجا مثال نمودار سیم کشی است که نحوه اتصال هر رابط سنسور را نشان می دهد.

خارج از جعبه ، برد برای یک رابط I2C پیکربندی شده است ، بنابراین توصیه می کنیم در غیر این صورت آگنوستیک از این اتصال استفاده کنید. تنها چیزی که نیاز دارید چهار سیم است!

فقط چهار اتصال نیاز به پین های Vcc ، Gnd ، SCL و SDA دارد و این اتصالات با کمک کابل I2C متصل می شوند.

این اتصالات در تصاویر بالا نشان داده شده است.

مرحله 4: اندازه گیری ژیروسکوپ 3 محوره با استفاده از کد جاوا:

اندازه گیری ژیروسکوپ 3 محور با استفاده از کد جاوا
اندازه گیری ژیروسکوپ 3 محور با استفاده از کد جاوا
اندازه گیری ژیروسکوپ 3 محور با استفاده از کد جاوا
اندازه گیری ژیروسکوپ 3 محور با استفاده از کد جاوا

مزیت استفاده از تمشک pi این است که به شما انعطاف پذیری زبان برنامه نویسی را می دهد که در آن می خواهید بورد را برنامه ریزی کنید تا سنسور با آن ارتباط برقرار کند. با استفاده از مزیت این برد ، ما در اینجا برنامه نویسی آن را در جاوا نشان می دهیم. کد جاوا BMG160 را می توانید از انجمن github ما که انجمن فروشگاه Dcube است بارگیری کنید.

ما همچنین برای سهولت کاربران ، کد را در اینجا توضیح می دهیم: به عنوان اولین مرحله کد نویسی ، باید کتابخانه pi4j را در صورت جاوا بارگیری کنید ، زیرا این کتابخانه از توابع مورد استفاده در کد پشتیبانی می کند. بنابراین ، برای بارگیری کتابخانه می توانید از لینک زیر دیدن کنید:

pi4j.com/install.html

همچنین می توانید کد جاوا کار کننده برای این سنسور را از اینجا کپی کنید:

واردات com.pi4j.io.i2c. I2CBus ؛

واردات com.pi4j.io.i2c. I2CDevice؛

واردات com.pi4j.io.i2c. I2CFactory؛

واردات java.io. IOException؛

کلاس عمومی BMG160

{

public static void main (String args ) Exception را پرتاب می کند

{

// ایجاد گذرگاه I2C

گذرگاه I2CBus = I2CFactory.getInstance (I2CBus. BUS_1) ؛

// دریافت دستگاه I2C ، آدرس BMG160 I2C 0x68 (104) است

دستگاه I2CDevice = bus.getDevice (0x68) ؛

// range range را انتخاب کنید

// پیکربندی محدوده مقیاس کامل ، 2000 dps

device.write (0x0F ، (بایت) 0x80) ؛

// ثبت پهنای باند را انتخاب کنید

// پهنای باند 200 هرتز

device.write (0x10 ، (بایت) 0x04) ؛

موضوع. خواب (500) ؛

// خواندن 6 بایت داده

// xGyro lsb ، xGyro msb ، yGyro lsb ، yGyro msb ، zGyro lsb ، zGyro msb

بایت داده = بایت جدید [6]؛

device.read (0x02 ، داده ، 0 ، 6) ؛

// تبدیل داده ها

int xGyro = ((داده [1] & 0xFF) * 256 + (داده [0] & 0xFF)]؛

if (xGyro> 32767)

{

xGyro -= 65536 ؛

}

int yGyro = ((داده [3] & 0xFF) * 256 + (داده [2] و 0xFF)] ؛

if (yGyro> 32767)

{

yGyro -= 65536 ؛

}

int zGyro = ((داده [5] & 0xFF) * 256 + (داده [4] و 0xFF)]؛

if (zGyro> 32767)

{

zGyro -= 65536 ؛

}

// خروجی داده ها به صفحه

System.out.printf ("محور چرخش:٪ d٪ n" ، xGyro) ؛

System.out.printf ("محور چرخش Y:٪ d٪ n" ، yGyro) ؛

System.out.printf ("محور چرخش Z:٪ d٪ n" ، zGyro) ؛

}

}

کتابخانه ای که ارتباط i2c بین سنسور و برد را تسهیل می کند pi4j است ، بسته های مختلف آن I2CBus ، I2CDevice و I2CFactory به برقراری ارتباط کمک می کند.

واردات com.pi4j.io.i2c. I2CBus ؛ واردات com.pi4j.io.i2c. I2CDevice ؛ واردات com.pi4j.io.i2c. I2CFactory؛ واردات java.io. IOException؛

این قسمت از کد باعث می شود که سنسور با نوشتن دستورات مربوطه با استفاده از تابع write () میزان زاویه را اندازه گیری کند و سپس داده ها با استفاده از تابع read () خوانده شود.

// انتخاب محدوده ثبت // پیکربندی محدوده کامل ، 2000 دستگاه در ثانیه. نوشتن (0x0F ، (بایت) 0x80) ؛ // ثبت پهنای باند // پهنای باند 200 هرتز device.write (0x10 ، (byte) 0x04) ؛ موضوع. خواب (500) ؛

// خواندن 6 بایت داده

// xGyro lsb ، xGyro msb ، yGyro lsb ، yGyro msb ، zGyro lsb ، zGyro msb بایت داده = بایت جدید [6] ؛ device.read (0x02 ، داده ، 0 ، 6) ؛

داده های دریافتی از سنسور با استفاده از موارد زیر به قالب مناسب تبدیل می شود:

int xGyro = ((داده [1] & 0xFF) * 256 + (داده [0] & 0xFF)]؛ if (xGyro> 32767) {xGyro -= 65536 ؛ } int yGyro = ((داده [3] & 0xFF) * 256 + (داده [2] و 0xFF)]؛ if (yGyro> 32767) {yGyro -= 65536 ؛ } int zGyro = ((داده [5] & 0xFF) * 256 + (داده [4] و 0xFF)]؛ if (zGyro> 32767) {zGyro -= 65536 ؛ }

خروجی با استفاده از تابع System.out.println () ، در قالب زیر چاپ می شود.

System.out.println ("محور چرخش:٪ d٪ n" ، xGyro) ؛ System.out.println ("محور چرخش Y:٪ d٪ n" ، yGyro) ؛ System.out.println ("محور چرخش:٪ d٪ n" ، zGyro) ؛

خروجی سنسور در تصویر بالا نشان داده شده است.

مرحله 5: برنامه های کاربردی:

برنامه های کاربردی
برنامه های کاربردی

BMG160 دارای کاربردهای متنوعی در دستگاه هایی مانند تلفن های همراه ، دستگاه های رابط ماشین انسان است. این ماژول حسگر برای برآوردن الزامات کاربردهای مصرف کننده مانند تثبیت کننده تصویر (DSC و دوربین تلفن) ، دستگاه های بازی و اشاره طراحی شده است. همچنین در سیستم هایی که نیاز به تشخیص حرکت دارند و سیستم های مورد استفاده در ناوبری داخلی استفاده می شود.

توصیه شده: