فهرست مطالب:
تصویری: استفاده از برد سنسور هنرهای پیچیده برای کنترل داده های خالص از طریق WiFi: 4 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
آیا تا به حال خواسته اید با کنترل حرکات آزمایش کنید؟ آیا با یک حرکت دست خود را وادار به حرکت می کنید؟ موسیقی را با پیچ و تاب مچ دست کنترل کنید؟ این دستورالعمل به شما نشان می دهد که چگونه!
Complex Arts Sensor Board (complexarts.net) یک میکروکنترلر همه کاره است که بر اساس ERO32 WROOM طراحی شده است. دارای تمام ویژگی های پلتفرم ESP32 ، از جمله WiFi و بلوتوث داخلی و 23 پین GPIO قابل تنظیم است. سنسور برد همچنین دارای BNO_085 IMU است - یک پردازنده حرکتی 9 DOF که معادلات همجوشی و کواترنیون سنسور را انجام می دهد و جهت گیری فوق العاده دقیق ، بردار گرانش و داده های شتاب خطی را ارائه می دهد. برد سنسور را می توان با استفاده از Arduino ، MicroPython یا ESP-IDF برنامه ریزی کرد ، اما برای این درس ما برنامه نویسی را با Arduino IDE انجام می دهیم. توجه به این نکته ضروری است که ماژول های ESP32 به صورت بومی از Arduino IDE قابل برنامه ریزی نیستند ، اما انجام این کار بسیار ساده است. یک آموزش عالی در اینجا وجود دارد: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ که باید حدود 2 دقیقه طول بکشد تا تکمیل شود. آخرین قطعه راه اندازی مورد نیاز ما درایور تراشه USB-to-UART در برد سنسور است که در اینجا یافت می شود: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. فقط سیستم عامل خود را انتخاب کرده و نصب کنید ، که باید حدود 2 دقیقه دیگر طول بکشد. پس از انجام این کار ، خوب است برویم!
[این درس هیچ گونه آشنایی با Arduino یا Pure Data ندارد ، اما نصب آنها را پوشش نمی دهد. آردوینو را می توانید در aduino.cc پیدا کنید. اطلاعات خالص را می توانید در puredata.info پیدا کنید. هر دو سایت دارای دستورالعمل های آسان برای نصب و راه اندازی هستند.]
همچنین… مفاهیم پوشش داده شده در این آموزش ، مانند راه اندازی اتصالات UDP ، برنامه نویسی ESP32 با آردوینو و ساخت وصله اساسی Pure Data - بلوک های سازنده ای هستند که می توانند برای پروژه های بی شماری مورد استفاده قرار گیرند ، بنابراین پس از اتمام کار اینجا را خم نکنید. این مفاهیم را کنار گذاشت!
تدارکات
1. برد سنسور هنرهای پیچیده
2. Arduino IDE
3. داده های خالص
مرحله 1: بررسی کد:
ابتدا کد آردوینو را بررسی می کنیم. (منبع در https://github.com/ComplexArts/SensorBoardArduino موجود است. توصیه می شود که در ادامه کد را دنبال کنید.) ما به برخی کتابخانه ها نیاز داریم که یکی از آنها کتابخانه اصلی آردوینو نیست ، بنابراین شما ممکن است نیاز به نصب داشته باشد این پروژه متکی به فایل SparkFun_BNO080_Arduino_Library.h است ، بنابراین اگر آن را ندارید ، باید به Sketch -> Include Library -> Manage Libraries بروید. "bno080" را تایپ کنید و کتابخانه مذکور ظاهر می شود. install را فشار دهید.
سه کتابخانه دیگر که استفاده می شوند باید به صورت پیش فرض دارای آردوینو باشند. ابتدا ، ما از کتابخانه SPI برای ارتباط با BNO استفاده می کنیم. همچنین می توان از UART بین ESP32 و BNO استفاده کرد ، اما از آنجا که SparkFun در حال حاضر دارای کتابخانه ای است که از SPI استفاده می کند ، ما به آن پایبند خواهیم بود. (با تشکر ، SparkFun!) از جمله فایل SPI.h به ما این امکان را می دهیم که از کدام پین ها و پورت ها می خواهیم برای ارتباط SPI استفاده کنیم.
کتابخانه WiFi شامل توابع است که به ما امکان می دهد به شبکه بی سیم برویم. WiFiUDP شامل توابعی است که به ما امکان ارسال و دریافت داده از طریق آن شبکه را می دهد. دو خط بعدی ما را وارد شبکه می کند - نام و رمز عبور شبکه خود را وارد کنید. دو خط بعد از آن آدرس و پورت شبکه ای که ما داده های خود را به آن ارسال می کنیم را مشخص می کند. در این مورد ، ما فقط پخش می کنیم ، به این معنی که آن را برای هر کسی که در شبکه ما گوش می دهد ارسال می کنیم. شماره پورت تعیین می کند که چه کسی گوش می دهد ، همانطور که در کمی بعد خواهیم دید.
این دو خط بعدی اعضا را برای کلاس های مربوطه ایجاد می کند ، بنابراین بعداً می توانیم به راحتی به توابع آنها دسترسی پیدا کنیم.
در مرحله بعد ، پین های مناسب ESP را به پین مربوطه در BNO اختصاص می دهیم.
اکنون ما عضو کلاس SPI را تنظیم می کنیم ، همچنین سرعت پورت SPI را تنظیم می کنیم.
در نهایت به تابع setup می رسیم. در اینجا ، ما یک پورت سریال راه اندازی می کنیم تا در صورت تمایل بتوانیم خروجی خود را به این شکل کنترل کنیم. سپس WiFi را شروع می کنیم. توجه داشته باشید که برنامه قبل از ادامه کار منتظر اتصال WiFi است. پس از اتصال WiFi ، ما اتصال UDP را آغاز می کنیم ، سپس نام شبکه و آدرس IP خود را در مانیتور سریال چاپ می کنیم. پس از آن ما پورت SPI را راه اندازی می کنیم و ارتباط بین ESP و BNO را بررسی می کنیم. در نهایت ، ما تابع را "enableRotationVector (50)؛" زیرا ما فقط از بردار چرخش برای این درس استفاده خواهیم کرد.
مرحله 2: بقیه کد…
قبل از رفتن به حلقه اصلی () ، یک تابع به نام "mapFloat" داریم.
این یک تابع سفارشی است که ما به منظور ترسیم یا مقیاس گذاری مقادیر به مقادیر دیگر اضافه کرده ایم. عملکرد نقشه داخلی در آردوینو فقط امکان نقشه برداری از عدد صحیح را می دهد ، اما همه مقادیر اولیه ما از BNO بین -1 تا 1 خواهد بود ، بنابراین ما باید آنها را به صورت دستی به مقادیری که واقعاً می خواهیم مقیاس بندی کنیم. هرچند نگران نباشید - در اینجا عملکرد ساده ای برای انجام این کار وجود دارد:
حالا به حلقه اصلی () می رسیم. اولین چیزی که به آن توجه می کنید یک عملکرد مسدود کننده دیگر است ، مانند عملکردی که باعث می شود برنامه منتظر اتصال به شبکه باشد. این یکی متوقف می شود تا اطلاعاتی از BNO وجود داشته باشد. وقتی شروع به دریافت آن داده ها می کنیم ، مقادیر کواترنیون ورودی را به متغیرهای نقطه شناور اختصاص می دهیم و آن داده ها را در مانیتور سریال چاپ می کنیم.
اکنون باید آن مقادیر را ترسیم کنیم.
[یک کلمه در مورد ارتباط UDP: داده ها از طریق UDP در بسته های 8 بیتی یا مقادیر 0-255 منتقل می شوند. هر چیزی بیش از 255 به بسته بعدی منتقل می شود و بر ارزش آن می افزاید. بنابراین ، ما باید مطمئن شویم که هیچ مقداری بیش از 255 وجود ندارد.]
همانطور که قبلاً ذکر شد ، ما مقادیر ورودی را در محدوده -1 -1 داریم. این کار زیادی به ما نمی دهد ، زیرا هر چیزی زیر 0 قطع می شود (یا 0 نشان داده می شود) و ما نمی توانیم انجام دهیم یک تن با مقادیر بین 0 -1. ابتدا باید یک متغیر جدید را برای حفظ مقدار نقشه شده خود اعلام کنیم ، سپس آن متغیر اولیه را گرفته و از -1 -1 تا 0 -255 ترسیم می کنیم و نتیجه را به متغیر جدید خود به نام Nx
اکنون که داده های نقشه برداری شده خود را داریم ، می توانیم بسته خود را کنار هم قرار دهیم. برای انجام این کار ، ما باید یک بافر برای داده های بسته اعلام کنیم ، اندازه آن را به [50] می دهیم تا مطمئن شویم همه داده ها مناسب هستند. سپس بسته را با آدرس و پورتی که در بالا مشخص کردیم شروع می کنیم ، بافر و 3 مقدار خود را به بسته to می نویسیم ، سپس بسته را پایان می دهیم.
در نهایت ، ما مختصات نقشه برداری شده خود را روی مانیتور سریال چاپ می کنیم. اکنون کد آردوینو تمام شده است! کد را به برد سنسور فلش کرده و مانیتور سریال را بررسی کنید تا مطمئن شوید همه چیز مطابق انتظار کار می کند. شما باید مقادیر کواترنیون و همچنین مقادیر نقشه برداری را مشاهده کنید.
مرحله 3: اتصال با داده های خالص…
اکنون برای داده های خالص! Pure Data را باز کرده و یک وصله جدید (ctrl n) را راه اندازی کنید. وصله ای که ما ایجاد می کنیم بسیار ساده است و فقط هفت شی دارد. اولین چیزی که قصد ایجاد آن را داریم شی [netreceive] است. این نان و کره وصله ما است که تمام ارتباطات UDP را مدیریت می کند. توجه داشته باشید که سه آرگومان برای شی [netreceive] وجود دارد. -u UDP ، -b باینری را مشخص می کند و البته 7401 پورتی است که ما به آن گوش می دهیم. همچنین می توانید پیام "listen 7401" را به [netreceive] برای تعیین پورت خود ارسال کنید.
هنگامی که اطلاعاتی در اختیار ما قرار می گیرد ، باید آن را باز کنیم. اگر یک شی [print] را به [netrecieve] متصل کنیم ، می توانیم مشاهده کنیم که داده ها در ابتدا به صورت جریان اعداد به دست ما می رسند ، اما ما می خواهیم این اعداد را تجزیه کرده و از هر یک برای کاری متفاوت استفاده کنیم. به عنوان مثال ، ممکن است بخواهید از چرخش محور X برای کنترل گام نوسان ساز و محور Y برای حجم یا هر تعداد دیگر از امکانات استفاده کنید. به منظور انجام این کار ، جریان داده از طریق یک شی [بازکردن] می رود که دارای سه شناور (f f f) آرگومان های آن است.
حالا که اینقدر دور شده اید ، دنیا صدف شماست! شما یک کنترلر بی سیم دارید که می توانید از آن برای دستکاری هر چیزی که می خواهید در جهان Pure Data استفاده کنید. اما همین جا بس کن! علاوه بر بردار چرخش ، شتاب سنج یا مغناطیس سنج را امتحان کنید. سعی کنید از عملکردهای ویژه BNO مانند "دوبار ضربه زدن" یا "تکان دادن" استفاده کنید. کافی است کمی در کتابچه های راهنمای کاربر (یا دستورالعمل بعدی …) جستجو کنید.
مرحله 4:
آنچه در بالا انجام دادیم ایجاد ارتباط بین برد سنسور و داده های خالص است. اگر می خواهید لذت بیشتری را شروع کنید ، خروجی داده های خود را به برخی از نوسان سازها متصل کنید! با کنترل صدا بازی کنید! شاید برخی از زمان های تأخیر را کنترل کنید یا طنین انداز شود! دنیا صدف شماست!
توصیه شده:
MicroPython در صفحه حسگر هنرهای پیچیده: 3 مرحله
MicroPython on the Complex Arts Sensor Board: یکی از شگفت انگیزترین جنبه های میکروکنترلر ESP32 توانایی آن در اجرای MicroPython است. این را می توان به دو طریق انجام داد: اجرای کامل برنامه های پایتون یا تعاملی از طریق یک برنامه کنسول. این دستورالعمل نحوه استفاده از
نمونه کنترل کننده پد با استفاده از داده های خالص: 4 مرحله
نمونه کنترل کننده پد با استفاده از داده های خالص: در این دستورالعمل من یک کنترلر ایجاد می کنم که به برخی از پدهای درام الکترونیکی Roland قدیمی اجازه می دهد صدا را بدون ماژول درام اصلی همراه با کیت ارائه دهند. من از Pure Data برای ایجاد یک وصله برای بارگیری استفاده می کنم چند فایل wav و سپس p
دیوار نصب برای IPad به عنوان کنترل پنل اتوماسیون خانگی ، با استفاده از آهنربای کنترل شده سروو برای فعال کردن صفحه: 4 مرحله (همراه با تصاویر)
دیوار نصب برای IPad به عنوان کنترل پنل اتوماسیون خانگی ، با استفاده از آهنربای کنترل شده سروو برای فعال کردن صفحه: اخیراً من زمان زیادی را صرف خودکارسازی وسایل داخل و اطراف خانه ام کرده ام. من از Domoticz به عنوان برنامه اتوماسیون خانگی خود استفاده می کنم ، برای جزئیات به www.domoticz.com مراجعه کنید. در جستجوی یک برنامه داشبورد که تمام اطلاعات Domoticz را نشان می دهد
Easy IOT - مرکز کنترل کننده RF سنسور RF برای دستگاه های IOT با برد متوسط: 4 مرحله
Easy IOT - App Controlled RF Sensor Hub for Medium Range IOT Devices: در این سری آموزشها ، ما شبکه ای از دستگاه ها را ایجاد می کنیم که می توان آنها را از طریق پیوند رادیویی از یک دستگاه هاب مرکزی کنترل کرد. مزیت استفاده از اتصال رادیویی سریال 433 مگاهرتز به جای WIFI یا بلوتوث ، محدوده بسیار بیشتری است (با
نحوه استفاده از ESP32 برای کنترل LED با Blynk از طریق WiFi: 7 مرحله (همراه با تصاویر)
نحوه استفاده از ESP32 برای کنترل LED با Blynk از طریق WiFi: در این آموزش از برد توسعه ESP32 برای کنترل LED با Blynk از طریق WiFi استفاده می شود. Blynk یک پلتفرم با برنامه های iOS و Android برای کنترل Arduino ، Raspberry Pi و موارد مشابه از طریق اینترنت است. این یک داشبورد دیجیتالی است که در آن می توانید یک