جدول المحتويات:

استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر شبكة WiFi: 4 خطوات (بالصور)
استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر شبكة WiFi: 4 خطوات (بالصور)

فيديو: استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر شبكة WiFi: 4 خطوات (بالصور)

فيديو: استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر شبكة WiFi: 4 خطوات (بالصور)
فيديو: تشريح جثة واقفة 2024, يوليو
Anonim
استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر WiFi
استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر WiFi
استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر WiFi
استخدام لوحة مستشعر الفنون المعقدة للتحكم في البيانات النقية عبر WiFi

هل سبق لك أن أردت تجربة التحكم بالإيماءات؟ اجعل الأشياء تتحرك بحركة من يدك؟ تحكم في الموسيقى بلمسة من معصمك؟ سيوضح لك هذا Instructable كيف!

لوحة مستشعر الفنون المعقدة (complexarts.net) عبارة عن متحكم متعدد الاستخدامات يعتمد على ESP32 WROOM. يحتوي على جميع ميزات النظام الأساسي ESP32 ، بما في ذلك WiFi و Bluetooth مدمجان ، و 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/ والذي يجب أن يستغرق حوالي دقيقتين لإكماله. آخر جزء من الإعداد الذي نحتاجه هو برنامج تشغيل شريحة USB-to-UART على لوحة الاستشعار ، والذي يمكن العثور عليه هنا: https://www.silabs.com/products/development-tools/software/usb-to -uart- الجسر- vcp- السائقين. ما عليك سوى اختيار نظام التشغيل والتثبيت ، والذي سيستغرق حوالي دقيقتين إضافيتين. بمجرد الانتهاء من ذلك ، نحن على ما يرام!

[لا يفترض هذا الدرس أي معرفة بأيٍّ من Arduino أو Pure Data ، إلا أنه لن يغطي التثبيت. يمكن العثور على Arduino على aduino.cc. يمكن العثور على البيانات النقية على puredata.info. يحتوي كلا الموقعين على إرشادات سهلة المتابعة للتثبيت والإعداد.]

أيضًا … المفاهيم التي تم تناولها في هذا البرنامج التعليمي ، مثل إعداد اتصالات UDP ، وبرمجة ESP32 مع Arduino ، وبناء التصحيح الأساسي للبيانات النقية - هي لبنات بناء يمكن تطبيقها على عدد لا يحصى من المشاريع ، لذلك لا تنحني هنا بمجرد أن تقوم بذلك فهمت هذه المفاهيم!

اللوازم

1. مجلس استشعار الفنون المعقدة

2. اردوينو IDE

3. بيانات نقية

الخطوة الأولى: فحص الكود:

فحص الكود
فحص الكود
فحص الكود
فحص الكود

أولاً ، سنلقي نظرة على كود Arduino. (المصدر متاح على https://github.com/ComplexArts/SensorBoardArduino. من المستحسن أن تتبع مع الكود كما نذهب.) نحتاج إلى بعض المكتبات ، إحداها ليست مكتبة Arduino أساسية ، لذلك أنت قد تحتاج إلى تثبيته. يعتمد هذا المشروع على ملف SparkFun_BNO080_Arduino_Library.h ، لذا إذا لم يكن لديك ذلك ، فستحتاج إلى الانتقال إلى Sketch -> Include Library -> إدارة المكتبات. اكتب "bno080" وستظهر المكتبة المذكورة أعلاه. اضغط تثبيت.

يجب أن تأتي المكتبات الثلاث الأخرى المستخدمة مع Arduino افتراضيًا. أولاً ، سوف نستخدم مكتبة SPI للتواصل مع BNO. من الممكن أيضًا استخدام UART بين ESP32 و BNO ، ولكن نظرًا لأن SparkFun لديها بالفعل مكتبة تستخدم SPI ، فسوف نلتزم بذلك. (شكرًا SparkFun!) بما في ذلك ملف SPI.h سيسمح لنا بتحديد المسامير والمنافذ التي نريد استخدامها لاتصال SPI.

تحتوي مكتبة WiFi على الوظائف التي تتيح لنا الوصول إلى شبكة لاسلكية. يحتوي WiFiUDP على الوظائف التي تسمح لنا بإرسال واستقبال البيانات عبر تلك الشبكة. يدخلنا الخطان التاليان إلى الشبكة - أدخل اسم الشبكة وكلمة المرور. يحدد السطران بعد ذلك عنوان الشبكة والمنفذ الذي نرسل إليه بياناتنا. في هذه الحالة ، سنقوم بالبث فقط ، مما يعني إرساله إلى أي شخص يستمع إليه على شبكتنا. يحدد رقم المنفذ من يستمع ، كما سنرى بعد قليل.

يعمل هذان الخطان التاليان على إنشاء أعضاء لفئاتهم الخاصة حتى نتمكن من الوصول بسهولة إلى وظائفهم لاحقًا.

بعد ذلك ، نقوم بتعيين المسامير المناسبة لـ ESP إلى المسامير الخاصة بهم على BNO.

الآن قمنا بإعداد عضو فئة SPI ، وقمنا أيضًا بتعيين سرعة منفذ SPI.

أخيرًا وصلنا إلى وظيفة الإعداد. هنا ، سنبدأ منفذ تسلسلي حتى نتمكن من مراقبة مخرجاتنا بهذه الطريقة إذا أردنا ذلك. ثم نبدأ WiFi. لاحظ أن البرنامج ينتظر اتصال WiFi قبل المتابعة. بمجرد توصيل WiFi ، نبدأ اتصال UDP ، ثم نطبع اسم شبكتنا وعنوان IP الخاص بنا إلى الشاشة التسلسلية. بعد ذلك نبدأ منفذ SPI ونتحقق من الاتصال بين ESP و BNO. أخيرًا ، نسمي الوظيفة "enableRotationVector (50) ؛" حيث سنستخدم متجه الدوران فقط في هذا الدرس.

الخطوة 2: باقي الكود…

بقية المدونة…
بقية المدونة…

قبل أن نذهب إلى الحلقة الرئيسية () ، لدينا وظيفة تسمى "mapFloat".

هذه وظيفة مخصصة قمنا بإضافتها من أجل تعيين القيم إلى قيم أخرى أو قياسها. تسمح وظيفة الخريطة المضمنة في Arduino فقط بتعيين عدد صحيح ، ولكن جميع قيمنا الأولية من BNO ستكون بين -1 و 1 ، لذلك سيتعين علينا تغييرها يدويًا إلى القيم التي نريدها حقًا. لا تقلق ، فإليك الوظيفة البسيطة للقيام بذلك:

الآن نصل إلى الحلقة الرئيسية (). أول شيء ستلاحظه هو وظيفة حظر أخرى ، مثل تلك التي تجعل البرنامج ينتظر اتصالاً بالشبكة. هذا يتوقف حتى تكون هناك بيانات من BNO. عندما نبدأ في تلقي هذه البيانات ، نقوم بتعيين القيم الرباعية الواردة لمتغيرات النقطة العائمة وطباعة تلك البيانات إلى الشاشة التسلسلية.

الآن نحن بحاجة لرسم خريطة لتلك القيم.

[كلمة عن اتصال UDP: يتم نقل البيانات عبر UDP في حزم 8 بت ، أو قيم من 0-255. سيتم دفع أي شيء يزيد عن 255 إلى الحزمة التالية ، مما يزيد من قيمتها. لذلك ، نحتاج إلى التأكد من عدم وجود قيم تزيد عن 255.]

كما ذكرنا سابقًا ، لدينا قيم واردة في النطاق من -1 إلى 1. وهذا لا يعطينا الكثير للعمل معه ، نظرًا لأن أي شيء أقل من 0 سيتم قطعه (أو يظهر كـ 0) ولا يمكننا فعل ذلك طن بقيم تتراوح بين 0-1. علينا أولاً أن نعلن عن متغير جديد للاحتفاظ بالقيمة المعينة لدينا ، ثم نأخذ ذلك المتغير الأولي ونضعه من -1-1 إلى 0-255 ، مع إسناد النتيجة إلى المتغير الجديد المسمى نكس.

الآن بعد أن أصبح لدينا بياناتنا المعينة ، يمكننا تجميع حزمتنا معًا. للقيام بذلك ، يجب أن نعلن عن مخزن مؤقت لبيانات الحزمة ، مع إعطائها حجمًا [50] للتأكد من أن جميع البيانات مناسبة. نبدأ بعد ذلك الحزمة بالعنوان والمنفذ اللذين حددناهما أعلاه ، ونكتب المخزن المؤقت الخاص بنا و 3 قيم إلى الحزمة إلى ، ثم ننهي الحزمة.

أخيرًا ، نقوم بطباعة إحداثياتنا المعينة إلى الشاشة التسلسلية. الآن تم الانتهاء من كود Arduino! قم بوميض الكود إلى لوحة الاستشعار وتحقق من الشاشة التسلسلية للتأكد من أن كل شيء يعمل كما هو متوقع. يجب أن تشاهد القيم الرباعية بالإضافة إلى القيم المعينة.

الخطوة 3: الاتصال ببيانات خالصة …

الاتصال بالبيانات النقية …
الاتصال بالبيانات النقية …

الآن للبيانات النقية! افتح Pure Data وابدأ تصحيحًا جديدًا (ctrl n). التصحيح الذي سننشئه بسيط للغاية ، حيث يحتوي على سبعة كائنات فقط. أول ما سننشئه هو الكائن [netreceive]. هذا هو الخبز والزبدة في التصحيح الخاص بنا ، والذي يتعامل مع جميع اتصالات UDP. لاحظ أن هناك ثلاث وسيطات لكائن [netreceive] ؛ يحدد -u UDP ، ويحدد -b ثنائيًا ، و 7401 هو بالطبع المنفذ الذي نستمع إليه. يمكنك أيضًا إرسال الرسالة "listen 7401" إلى [netreceive] لتحديد المنفذ الخاص بك.

بمجرد وصول البيانات ، نحتاج إلى تفريغها. إذا قمنا بتوصيل كائن [طباعة] بـ [netrecieve] ، يمكننا أن نرى البيانات تأتي إلينا في البداية كدفقة من الأرقام ، لكننا نريد تحليل هذه الأرقام واستخدام كل منها لشيء مختلف. على سبيل المثال ، قد ترغب في استخدام دوران المحور X للتحكم في درجة مذبذب ، والمحور Y للحجم ، أو أي عدد من الاحتمالات الأخرى. من أجل القيام بذلك ، يمر دفق البيانات عبر كائن [unpack] به ثلاث عوامات (f f f) هي وسيطاته.

الآن بعد أن وصلت إلى هذا الحد ، أصبح العالم محارتك! لديك وحدة تحكم لاسلكية يمكنك استخدامها لمعالجة أي شيء تريده في عالم Pure Data. لكن توقف عند هذا الحد! إلى جانب ناقل الدوران ، جرب مقياس التسارع أو مقياس المغناطيسية. حاول استخدام وظائف خاصة لـ BNO مثل "النقر المزدوج" أو "الاهتزاز". كل ما يتطلبه الأمر هو القليل من البحث في أدلة المستخدم (أو التعليمات التالية …).

الخطوة الرابعة:

ما فعلناه أعلاه هو إعداد الاتصال بين لوحة الاستشعار والبيانات النقية. إذا كنت تريد الاستمتاع بمزيد من المرح ، فقم بتوصيل مخرجات البيانات ببعض المذبذبات! العب مع التحكم في مستوى الصوت! ربما تتحكم في بعض أوقات التأخير أو تردد الصدى! العالم الذي تعيشون فيه المحار!

موصى به: