ওয়াইফাইয়ের মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা: 4 টি ধাপ (ছবি সহ)
ওয়াইফাইয়ের মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা: 4 টি ধাপ (ছবি সহ)
Anonim
ওয়াইফাই এর মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা
ওয়াইফাই এর মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা
ওয়াইফাই এর মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা
ওয়াইফাই এর মাধ্যমে বিশুদ্ধ ডেটা নিয়ন্ত্রণ করতে কমপ্লেক্স আর্টস সেন্সর বোর্ড ব্যবহার করা

আপনি কি কখনও অঙ্গভঙ্গি নিয়ন্ত্রণ নিয়ে পরীক্ষা করতে চেয়েছিলেন? আপনার হাতের waveেউ দিয়ে জিনিসগুলিকে সরাতে দিন? আপনার কব্জির মোড় দিয়ে সঙ্গীত নিয়ন্ত্রণ করুন? এই নির্দেশযোগ্য আপনাকে দেখাবে কিভাবে!

কমপ্লেক্স আর্টস সেন্সর বোর্ড (complexarts.net) ESP32 WROOM- এর উপর ভিত্তি করে একটি বহুমুখী মাইক্রোকন্ট্রোলার। এতে ইএসপি 32 প্ল্যাটফর্মের সমস্ত বৈশিষ্ট্য রয়েছে, যার মধ্যে অন্তর্নির্মিত ওয়াইফাই এবং ব্লুটুথ এবং 23 কনফিগারযোগ্য জিপিআইও পিন রয়েছে। সেন্সর বোর্ডে 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 মিনিট সময় লাগবে। আমাদের প্রয়োজন শেষ সেটআপ সেন্সর বোর্ডে ইউএসবি-টু-ইউএআরটি চিপের জন্য ড্রাইভার, যা এখানে পাওয়া যাবে: https://www.silabs.com/products/development-tools/software/usb-to -আউট-ব্রিজ-ভিসিপি-ড্রাইভার। শুধু আপনার অপারেটিং সিস্টেম বাছুন এবং ইনস্টল করুন, যা প্রায় 2 মিনিট সময় নিতে হবে। একবার এটি হয়ে গেলে, আমরা যেতে ভাল!

[এই পাঠটি আরডুইনো বা বিশুদ্ধ ডেটার সাথে কোন পরিচিতি অনুমান করে না, তবে এটি তাদের ইনস্টলেশনকে কভার করবে না। Arduino aduino.cc এ পাওয়া যাবে। বিশুদ্ধ তথ্য puredata.info এ পাওয়া যাবে। উভয় সাইটেই ইনস্টলেশন এবং সেটআপের জন্য সহজে অনুসরণ করা নির্দেশাবলী রয়েছে।]

এছাড়াও … এই টিউটোরিয়ালে অন্তর্ভুক্ত ধারণা, যেমন UDP সংযোগ স্থাপন, ESP32 আরডুইনো দিয়ে প্রোগ্রামিং, এবং মৌলিক বিশুদ্ধ ডেটা প্যাচ বিল্ডিং - এমন বিল্ডিং ব্লক যা অসংখ্য প্রকল্পের জন্য প্রয়োগ করা যেতে পারে, তাই একবার এখানে এসে থামবেন না। এই ধারণাগুলি নিচে পেয়েছি!

সরবরাহ

1. কমপ্লেক্স আর্টস সেন্সর বোর্ড

2. Arduino IDE

3. বিশুদ্ধ তথ্য

ধাপ 1: কোড পরীক্ষা করা:

কোড পরীক্ষা করা
কোড পরীক্ষা করা
কোড পরীক্ষা করা
কোড পরীক্ষা করা

প্রথমে, আমরা Arduino কোডটি দেখব। (উৎসটি https://github.com/ComplexArts/SensorBoardArduino এ পাওয়া যায়। এটা সুপারিশ করা হয় যে আপনি আমাদের সাথে কোডটি অনুসরণ করুন।) আমাদের কিছু লাইব্রেরি দরকার, যার মধ্যে একটি মূল Arduino লাইব্রেরি নয়, তাই আপনি এটি ইনস্টল করার প্রয়োজন হতে পারে। এই প্রকল্পটি SparkFun_BNO080_Arduino_Library.h ফাইলের উপর নির্ভর করে, তাই আপনার যদি এটি না থাকে তবে আপনাকে স্কেচ -> লাইব্রেরি অন্তর্ভুক্ত করুন -> লাইব্রেরিগুলি পরিচালনা করতে হবে। "Bno080" টাইপ করুন এবং পূর্বে উল্লিখিত লাইব্রেরি প্রদর্শিত হবে। ইনস্টল টিপুন।

অন্য তিনটি লাইব্রেরি যা ব্যবহার করা হয় ডিফল্টরূপে Arduino সঙ্গে আসা উচিত। প্রথমে, আমরা BNO- এর সাথে যোগাযোগের জন্য SPI লাইব্রেরি ব্যবহার করব। ESP32 এবং BNO- এর মধ্যে UART ব্যবহার করাও সম্ভব, কিন্তু যেহেতু স্পার্কফুনে ইতিমধ্যেই একটি লাইব্রেরি রয়েছে যা SPI ব্যবহার করে, তাই আমরা এর সাথে থাকব। (ধন্যবাদ, স্পার্কফুন!) SPI.h ফাইল সহ আমাদের SPI যোগাযোগের জন্য আমরা কোন পিন এবং পোর্ট ব্যবহার করতে চাই তা নির্বাচন করার অনুমতি দেবে।

ওয়াইফাই লাইব্রেরিতে এমন ফাংশন রয়েছে যা আমাদের ওয়্যারলেস নেটওয়ার্কে প্রবেশ করতে দেয়। ওয়াইফাইউডিপিতে এমন ফাংশন রয়েছে যা আমাদের সেই নেটওয়ার্কের মাধ্যমে ডেটা পাঠাতে এবং গ্রহণ করতে দেয়। পরের দুটি লাইন আমাদের নেটওয়ার্কে নিয়ে আসে - আপনার নেটওয়ার্কের নাম এবং পাসওয়ার্ড লিখুন। এর পরে দুটি লাইন নেটওয়ার্ক ঠিকানা এবং পোর্ট নির্দিষ্ট করে যেখানে আমরা আমাদের ডেটা পাঠাচ্ছি। এই ক্ষেত্রে, আমরা শুধু সম্প্রচার করব, যার অর্থ আমাদের নেটওয়ার্কের যে কেউ শুনছে তাকে পাঠিয়ে দিন। পোর্ট নম্বর নির্ধারণ করে কে কে শুনছে, যেমন আমরা একটু দেখব।

এই পরবর্তী দুটি লাইন তাদের নিজ নিজ ক্লাসের জন্য সদস্য তৈরি করে যাতে আমরা পরবর্তীতে তাদের ফাংশন সহজেই অ্যাক্সেস করতে পারি।

এরপরে, আমরা BNO- তে ESP- এর যথাযথ পিনগুলি তাদের নিজ নিজ পিনগুলিতে বরাদ্দ করি।

এখন আমরা SPI বর্গ সদস্য সেট আপ, এছাড়াও SPI পোর্ট গতি সেট।

অবশেষে আমরা সেটআপ ফাংশন পেতে। এখানে, আমরা একটি সিরিয়াল পোর্ট শুরু করব যাতে আমরা আমাদের আউটপুট সেভাবে পর্যবেক্ষণ করতে পারি যদি আমরা চাই। তারপর আমরা ওয়াইফাই শুরু করি। লক্ষ্য করুন যে প্রোগ্রামটি এগিয়ে যাওয়ার আগে একটি ওয়াইফাই সংযোগের জন্য অপেক্ষা করে। ওয়াইফাই সংযুক্ত হয়ে গেলে, আমরা ইউডিপি সংযোগ শুরু করি, তারপরে সিরিয়াল মনিটরে আমাদের নেটওয়ার্কের নাম এবং আমাদের আইপি ঠিকানা মুদ্রণ করি। এর পরে আমরা SPI পোর্ট শুরু করি এবং ESP এবং BNO এর মধ্যে যোগাযোগের জন্য পরীক্ষা করি। পরিশেষে, আমরা ফাংশনটিকে "এনাবলরোটেশনভেক্টর (50) বলি;" যেহেতু আমরা শুধুমাত্র এই পাঠের জন্য ঘূর্ণন ভেক্টর ব্যবহার করব।

ধাপ 2: কোড অব বাকি…।

বাকী কোড …।
বাকী কোড …।

মেইন লুপ () এ যাওয়ার আগে আমাদের "mapFloat" নামে একটি ফাংশন আছে।

এটি একটি কাস্টম ফাংশন যা আমরা মান, বা স্কেল, অন্যান্য মানগুলিতে মান যোগ করার জন্য যুক্ত করেছি। আরডুইনোতে অন্তর্নির্মিত মানচিত্র ফাংশন শুধুমাত্র পূর্ণসংখ্যা ম্যাপিংয়ের অনুমতি দেয়, কিন্তু BNO থেকে আমাদের সমস্ত প্রাথমিক মানগুলি -1 এবং 1 এর মধ্যে থাকবে, তাই আমাদের সেগুলি যে মানগুলিতে আমরা চাই তা ম্যানুয়ালি স্কেল করতে হবে। কোনও চিন্তা নেই, যদিও - এটি করার সহজ ফাংশনটি এখানে:

এবার আসি মূল লুপে ()। প্রথম যে জিনিসটি আপনি লক্ষ্য করবেন তা হল আরেকটি ব্লকিং ফাংশন, যেমন প্রোগ্রামটি একটি নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করে। BNO থেকে তথ্য না পাওয়া পর্যন্ত এটি থামছে। যখন আমরা সেই ডেটা গ্রহণ শুরু করি, আমরা ইনকামিং কোয়াটারনিয়ন মানগুলিকে ফ্লোটিং পয়েন্ট ভেরিয়েবলের জন্য বরাদ্দ করি এবং সেই ডেটা সিরিয়াল মনিটরে প্রিন্ট করি।

এখন আমাদের সেই মানগুলি ম্যাপ করতে হবে।

[UDP যোগাযোগ সম্পর্কে একটি শব্দ: 8-বিট প্যাকেটে UDP- এর উপর ডেটা স্থানান্তরিত হয়, অথবা 0-255 থেকে মান। 255 এর উপরে যেকোনো কিছু পরবর্তী প্যাকেটে ঠেলে দেওয়া হবে, এর মান যোগ করা হবে। অতএব, আমাদের নিশ্চিত করতে হবে যে 255 এর উপরে কোন মান নেই।]

যেমনটি আগে উল্লেখ করা হয়েছে, আমাদের -1 -1 এর পরিসরে ইনকামিং মান রয়েছে। এটি আমাদের কাজ করার জন্য অনেক কিছু দেয় না, যেহেতু 0 এর নীচে কিছু বন্ধ হয়ে যাবে (অথবা 0 হিসাবে দেখানো হবে) এবং আমরা তা করতে পারি না 0 -1. এর মধ্যে মান সহ একটি টন। আমাদের ম্যাপ করা মান ধরে রাখার জন্য প্রথমে আমাদের একটি নতুন ভেরিয়েবল ঘোষণা করতে হবে, তারপর আমরা সেই প্রাথমিক ভেরিয়েবলটি গ্রহণ করি এবং -1 -1 থেকে 0 -255 পর্যন্ত ম্যাপ করি, যা আমাদের নতুন ভেরিয়েবলকে ফলাফল নির্ধারণ করে এনএক্স।

এখন যেহেতু আমাদের ম্যাপ করা ডেটা আছে, আমরা আমাদের প্যাকেট একসাথে রাখতে পারি। এটি করার জন্য, আমাদের অবশ্যই প্যাকেট ডেটার জন্য একটি বাফার ঘোষণা করতে হবে, এটিকে [50] আকার দিয়ে নিশ্চিত করতে হবে যে সমস্ত ডেটা ফিট হবে। তারপরে আমরা উপরে উল্লেখিত ঠিকানা এবং পোর্ট দিয়ে প্যাকেটটি শুরু করি, প্যাকেটে আমাদের বাফার এবং 3 টি মান লিখুন, তারপরে প্যাকেটটি শেষ করুন।

পরিশেষে, আমরা আমাদের ম্যাপ করা স্থানাঙ্কগুলি সিরিয়াল মনিটরে মুদ্রণ করি। এখন Arduino কোড সম্পন্ন! সেন্সর বোর্ডে কোডটি ফ্ল্যাশ করুন এবং সবকিছু প্রত্যাশিতভাবে কাজ করছে তা নিশ্চিত করার জন্য সিরিয়াল মনিটরটি পরীক্ষা করুন। আপনি quaternion মান পাশাপাশি মানচিত্র মান দেখতে হবে।

ধাপ 3: বিশুদ্ধ ডেটার সাথে সংযুক্ত হচ্ছে …

বিশুদ্ধ ডেটার সাথে সংযুক্ত হচ্ছে…
বিশুদ্ধ ডেটার সাথে সংযুক্ত হচ্ছে…

এখন বিশুদ্ধ ডেটার জন্য! বিশুদ্ধ ডেটা খুলুন এবং একটি নতুন প্যাচ শুরু করুন (ctrl n)। আমরা যে প্যাচটি তৈরি করব তা খুব সহজ, এতে মাত্র সাতটি বস্তু রয়েছে। আমরা প্রথম যেটি তৈরি করতে যাচ্ছি তা হল [netreceive] অবজেক্ট। এটি আমাদের প্যাচের রুটি এবং মাখন, সমস্ত ইউডিপি যোগাযোগ পরিচালনা করে। লক্ষ্য করুন [netreceive] বস্তুর জন্য তিনটি যুক্তি আছে; -u UDP নির্দিষ্ট করে, -b নির্দিষ্ট করে বাইনারি, এবং 7401 অবশ্যই সেই পোর্ট যা আমরা শুনছি। আপনার পোর্ট নির্দিষ্ট করার জন্য আপনি "শোনার 7401" বার্তাটি [netreceive] এ পাঠাতে পারেন।

আমাদের কাছে ডেটা আসার পরে, আমাদের এটি আনপ্যাক করতে হবে। যদি আমরা একটি [মুদ্রণ] বস্তুকে [netrecieve] এর সাথে সংযুক্ত করি, আমরা দেখতে পারি যে প্রাথমিকভাবে আমাদের কাছে সংখ্যার একটি ধারা হিসাবে ডেটা আসে, কিন্তু আমরা সেই সংখ্যাগুলিকে বিশ্লেষণ করতে চাই এবং প্রত্যেকটি ভিন্ন কিছু ব্যবহার করতে চাই। উদাহরণস্বরূপ, আপনি একটি অসিলেটরের পিচ, এবং ভলিউমের জন্য Y- অক্ষ, অথবা অন্য কোন সম্ভাবনার সংখ্যা নিয়ন্ত্রণ করতে X- অক্ষ ঘূর্ণন ব্যবহার করতে চাইতে পারেন। এটি করার জন্য, ডেটা স্ট্রিম একটি [আনপ্যাক] বস্তুর মধ্য দিয়ে যায় যার তিনটি ফ্লোট (f f f) তার যুক্তি।

এখন আপনি এতদূর, পৃথিবী আপনার ঝিনুক! আপনার কাছে একটি ওয়্যারলেস কন্ট্রোলার রয়েছে যা আপনি বিশুদ্ধ ডেটা মহাবিশ্বে আপনার যা ইচ্ছা তা ব্যবহার করতে পারেন। কিন্তু সেখানে থামুন! ঘূর্ণন ভেক্টর ছাড়াও, অ্যাকসিলরোমিটার বা ম্যাগনেটোমিটার ব্যবহার করে দেখুন। BNO- এর বিশেষ ফাংশন যেমন "ডবল ট্যাপ" বা "শেক" ব্যবহার করার চেষ্টা করুন। ব্যবহারকারীর ম্যানুয়ালগুলিতে (বা পরবর্তী নির্দেশযোগ্য…) একটু খনন করা দরকার।

ধাপ 4:

আমরা উপরে যা করেছি তা হল সেন্সর বোর্ড এবং বিশুদ্ধ ডেটার মধ্যে যোগাযোগ স্থাপন করা। আপনি যদি আরো মজা করা শুরু করতে চান, তাহলে আপনার ডাটা আউটপুটগুলিকে কিছু অসিলেটরে সংযুক্ত করুন! ভলিউম নিয়ন্ত্রণের সাথে খেলুন! হয়তো কিছু বিলম্বের সময় বা reverb নিয়ন্ত্রণ! বিশ্বের আপনার ঝিনুক!

প্রস্তাবিত: