সুচিপত্র:

ডিস্কো-পাই: 8 টি ধাপ (ছবি সহ)
ডিস্কো-পাই: 8 টি ধাপ (ছবি সহ)

ভিডিও: ডিস্কো-পাই: 8 টি ধাপ (ছবি সহ)

ভিডিও: ডিস্কো-পাই: 8 টি ধাপ (ছবি সহ)
ভিডিও: যে ৫টি ভুলের কারণে ছবি ভাল হয়না | Mobile Photography Tips and Tricks 2024, নভেম্বর
Anonim
ডিস্কো-পাই
ডিস্কো-পাই

এই নির্দেশযোগ্য একটি ওয়েব ব্রাউজার থেকে বাজানো সঙ্গীতের উপর ভিত্তি করে একটি রঙিন LED স্ট্রিপ নিয়ন্ত্রণ করতে কিভাবে রাস্পবেরি পাই ব্যবহার করতে হয় তা দেখায়।

এটি দেখায় কিভাবে HTTPS এর উপর Node.js ব্যবহার করে একটি মৌলিক ওয়েবসাইট তৈরি করতে হয় এবং WSS (Secure Websocket) এর উপর socket.io ব্যবহার করতে হয়।

ওয়েবসাইটটির একটি একক পৃষ্ঠা রয়েছে যার একটি খুব মৌলিক বিন্যাস রয়েছে। ওয়েবপেজ মিউজিক ফাইল সহ একটি ড্রপ ডাউন তালিকা তৈরি করে, যা সার্ভারে পাবলিক/অডিও ফোল্ডারে অবস্থিত। তালিকায় একটি বিকল্প নির্বাচন করলে HTML5 অডিও এলিমেন্ট ব্যবহার করে ওয়েবপেজে মিউজিক ফাইল প্লে হয়। মিউজিক ফাইল চালানোর সময়, ওয়েবপৃষ্ঠাটি সঙ্গীত বিশ্লেষণের জন্য অডিও কনটেক্সট ইন্টারফেস ব্যবহার করে, যা পরে একটি নিরাপদ ওয়েবসকেট সংযোগের মাধ্যমে সার্ভারে পাঠানো হয়।

একটি রাস্পবেরি পাইতে চলমান সার্ভারটি নোড RPI WS281x নেটিভ লাইব্রেরি ব্যবহার করে (জেরেমি গার্ফের WS281X লাইব্রেরি মোড়ানো) WS2811 LED স্ট্রিপে LEDs এর রং পরিবর্তন করতে, ওয়েবসকেটের মাধ্যমে পাঠানো তথ্যের উপর ভিত্তি করে।

উদাহরণ কোড এখানে পাওয়া যাবে: ডিস্কো-পাই

ধাপ 1: সরঞ্জাম

  1. রাস্পবেরি পাই - আমি একটি রাস্পবেরি পাই 2 বি ব্যবহার করেছি যা আমি চারপাশে রেখেছিলাম, কিন্তু আপনি প্রায় CAD 100 এর জন্য একটি রাস্পবেরি পাই 3 স্টার্টার কিট পেতে পারেন
  2. WS2811 LED স্ট্রিপ - আমি ALITOVE 16.4ft 150 Pixels WS2811 এর সাথে খেলছিলাম। এটি একটি নিয়ামক এবং প্রায় 45-50 CAD এর জন্য বিদ্যুৎ সরবরাহের সাথে আসে
  3. ব্যারেল জ্যাক কানেক্টর - আমি আমার স্থানীয় ইলেকট্রনিক্স দোকান থেকে একটি কিনেছি, এরকম কিছু। আপনার বিদ্যুৎ সরবরাহের সাথে মানানসই কিনা তা নিশ্চিত করুন
  4. জাম্পার সংযোজক / তারের

ধাপ 2: রাস্পবেরি পাই সেট আপ করা

অপারেটিং সিস্টেম

আমি সাধারণত সর্বশেষ রাস্পবিয়ান বিল্ড ব্যবহার করি। ছবিটি ডাউনলোড করে এসডি কার্ডে লিখুন। আপনি যদি একটি উইন্ডোজ কম্পিউটার ব্যবহার করেন, তাহলে আপনি এসডি কার্ডে ছবিটি লিখতে Win32 Disk Imager ব্যবহার করতে পারেন।

Node.js

Node.js এর সর্বশেষ সংস্করণটি ইনস্টল করুন। লেখার সময় আমি 8.9.1 ব্যবহার করছি

কার্ল -এসএল https://deb.nodesource.com/setup_8.x | সুডো -ই বাশ -

sudo apt-nodejs ইনস্টল করুন

গিট ইনস্টল করুন

sudo apt-get git ইনস্টল করুন

ধাপ 3: উদাহরণ কোড সেট আপ

উদাহরণ কোড ক্লোন করুন

1. ইনস্টল করার জন্য একটি বেস ফোল্ডার সেট আপ করুন

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. উদাহরণ git সংগ্রহস্থল ক্লোন

গিট ক্লোন https://github.com/haydockjp/disco-pi.git"

অথবা

git clone [email protected]: haydockjp/disco-pi.git

3. নির্ভরতা ইনস্টল করুন

সিডি ডিস্কো-পাই

npm ইন্সটল

এটি 2-3 মিনিট সময় নিতে পারে

ধাপ 4: একটি স্ব স্বাক্ষরিত SSL সার্টিফিকেট তৈরি করুন

1. একটি ব্যক্তিগত কী ফাইল তৈরি করুন

cd /opt/com.jonhaydock/disco-pi/certs

openssl genrsa -out disco-pi-key.pem 2048

2. একটি CSR (সার্টিফিকেট স্বাক্ষরের অনুরোধ) তৈরি করুন

openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem

এই মুহুর্তে আপনাকে শংসাপত্রের অনুরোধের জন্য কিছু তথ্যের জন্য অনুরোধ করা হবে। যেহেতু এটি একটি স্বাক্ষরিত শংসাপত্র, এটি আপনার উপর নির্ভর করে আপনি কতটা সঠিকভাবে বিবরণ পূরণ করবেন। এখানে একটি উদাহরণ

দেশের নাম (2 অক্ষর কোড) [AU]: CA

রাজ্য বা প্রদেশের নাম (পুরো নাম) [কিছু রাজ্য]: ব্রিটিশ কলম্বিয়া এলাকার নাম (যেমন, শহর) : ভ্যাঙ্কুভার সংস্থার নাম (যেমন, কোম্পানি) [ইন্টারনেট উইডগিটস Pty লিমিটেড]: ডিস্কো পাই সাংগঠনিক ইউনিটের নাম (যেমন, বিভাগ) : সাধারণ নাম (যেমন সার্ভার FQDN বা আপনার নাম) : ডিস্কো-পাই ইমেইল ঠিকানা : [email protected] একটি চ্যালেঞ্জ পাসওয়ার্ড : একটি companyচ্ছিক কোম্পানির নাম :

এই উদাহরণে, চ্যালেঞ্জের পাসওয়ার্ড ফাঁকা রাখতে শুধু রিটার্ন টিপুন

3. সার্টিফিকেট তৈরি করুন

openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem

4. অতিরিক্ত নিরাপত্তার জন্য আমরা একটি ডিফি হেলম্যান প্যারামিটার ফাইলও তৈরি করব

openssl dhparam -out dh_2048.pem 2048

এটি 15-20 মিনিট সময় নিতে পারে

ধাপ 5: হার্ডওয়্যার সংযুক্ত করা

হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে
হার্ডওয়্যার সংযুক্ত করা হচ্ছে

LED স্ট্রিপ পাওয়ারিং

LED স্ট্রিপ 12 ভোল্ট দ্বারা চালিত। রাস্পবেরি পাই কেবলমাত্র 3.3v বা 5v আউটপুট করতে সক্ষম এবং এতগুলি LEDs চালানোর জন্য প্রয়োজনীয় amps এর কাছাকাছি কোথাও আউটপুট করতে সক্ষম নয়।

রাস্পবেরি পাইতে 12 ভোল্ট পাওয়ার সাপ্লাই সংযোগ না করা গুরুত্বপূর্ণ।

আমার স্ট্রিপের অতিরিক্ত প্রান্তের তারেরও প্রান্তে স্ট্রিপের সাথে সংযুক্ত ছিল। আমি পরামর্শ দিচ্ছি যে আপনি এগুলি টেপ করুন যাতে তারা আপনার অন্য কোনও সরঞ্জামের সাথে যোগাযোগ না করে।

আপনার নিজের ঝুঁকিতে পরবর্তী পদক্ষেপগুলি চালিয়ে যান। কোন কিছু ভুল হতে পারে তার জন্য আমি কোন দায়িত্ব গ্রহণ করি না।

LED স্ট্রিপ

আমার LED স্ট্রিপে তিনটি তার আছে:

লাল - +12 ভোল্ট

কালো - স্থল

সবুজ - ডেটা

দ্রষ্টব্য: একটি দিন এবং একটি ডাউট রয়েছে - ডেটা ইন এবং ডেটা আউট। নিশ্চিত করুন যে আপনি LED স্ট্রিপের শেষে কাজ করছেন যা দিন বলে।

ব্যারেল জ্যাক বিদ্যুৎ সরবরাহের সাথে সংযুক্ত নয় তা নিশ্চিত করা

1. LED স্ট্রিপ থেকে লাল তারের সংযোগ করুন ব্যারেল জ্যাকের + পাশে।

আমি একটি সাদা 22 গেজ হুক আপ ওয়্যার ব্যবহার করেছি।

ব্যারেল জ্যাকের মধ্যে + স্লটে তারটি রাখুন এবং জায়গায় স্ক্রু করুন।

LED এর সকেটে তারের অন্য প্রান্তটি ধাক্কা দিন। নিশ্চিত করুন যে আপনি লাল তারের সাথে সংযোগ স্থাপন করছেন।

2. LED স্ট্রিপ থেকে কালো তারের সংযোগ করুন - ব্যারেল জ্যাকের পাশে।

আমি একটি কালো 22 গেজ হুক আপ ওয়্যার ব্যবহার করেছি।

ব্যারেল জ্যাকের মধ্যে - স্লটে তারটি রাখুন। এই মুহুর্তে একই সংযোগকারী তারের (ছবির বাদামী তারের) পুরুষ প্রান্তটি একই গর্তে রাখুন এবং উভয়কেই জায়গায় স্ক্রু করুন।

কালো তারের অন্য প্রান্তটি LED এ সকেটে ঠেলে দিন।

নিশ্চিত করুন যে আপনি কালো তারের সাথে সংযোগ স্থাপন করছেন।

3. LED স্ট্রিপ থেকে সবুজ তারের সংযোগ করুন

পুরুষ সংযোগকারী তারের একটি femal নিন। আমার ফটোতে এটি হল সবুজ তার।

সবুজ তারের সাথে LED সকেটে পুরুষ প্রান্তটি রাখুন।

এটি ডেটা ক্যাবল।

রাস্পবেরি পাই

1. সবুজ সংযোজক তারটি নিন এবং এটি রাস্পবেরি পাই জিপিআইও এর সাথে সংযুক্ত করুন।

আপনাকে এটি PCM_CLK (পিন 12 / GPIO 18) এর সাথে সংযুক্ত করতে হবে

2. ব্ল্যাক কানেক্টর ক্যাবল নিন এবং রাস্পবেরি পাই জিপিআইও এর সাথে সংযুক্ত করুন।

আপনাকে এটি একটি ভিত্তিতে সংযুক্ত করতে হবে। আমি আপনাকে পিন 14 ব্যবহার করার পরামর্শ দিই, তবে আপনি পিন 6, 9, 20, 25, 30, 34 বা 39 ব্যবহার করতে পারেন।

দ্রষ্টব্য: এটি LED শক্তির উত্স এবং রাস্পবেরি পাইয়ের একটি সাধারণ স্থল থাকতে হবে। এছাড়াও মনে রাখবেন যে আপনাকে অবশ্যই 12 ভোল্ট + (লাল তার) রাস্পবেরি পাইতে সংযুক্ত করতে হবে না।

LED পাওয়ার

আপনি আপনার 12 ভোল্ট পাওয়ার সাপ্লাইকে ব্যারেল জ্যাকের সাথে সংযুক্ত করতে পারবেন না

আপনার এলইডি স্ট্রিপের সমস্ত এলইডি এখন সাদা হওয়া উচিত

ধাপ 6: সার্ভার সাইড কোড

সার্ভার সাইড কোড চালানো হচ্ছে

cd /opt/com.jonhaydock/disco-pi

sudo npm শুরু

এটি ওয়েব সার্ভার শুরু করবে এবং HTTPS এবং WSS অনুরোধের জন্য শুনতে শুরু করবে।

ডিফল্ট পোর্ট 443, কিন্তু আপনি কোড শুরু করার আগে একটি পরিবেশ পরিবর্তনশীল সেট করে এটিকে ওভাররাইড করতে পারেন। উদাহরণ স্বরূপ

DISCO_PI_PORT = 1443 রপ্তানি করুন

আমার LED স্ট্রিপে 150 টি LED আছে। এগুলি ত্রিশের দলে নিয়ন্ত্রিত হয়। এর মানে হল যে আমি প্রতিটি LED আলাদাভাবে নিয়ন্ত্রণ করতে পারি না, এবং 50 টি নিয়ন্ত্রণ করার জন্য আমাকে যথেষ্ট তথ্য পাঠাতে হবে।

যদি আপনার এলইডি কমবেশি থাকে তবে আপনি স্টার্ট -আপে একটি প্যারামিটার দিয়ে পাস করে আপনি যে এলইডি নিয়ন্ত্রণ করছেন তার সংখ্যাকে ওভাররাইড করতে পারেন। উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র 10 LEDs নিয়ন্ত্রণ করতে পারেন

sudo npm start 10

মূল সার্ভার কোড app.js ফাইলে পাওয়া যাবে। এই ফাইলটি HTTPS ওয়েব সার্ভার শুরু করে এবং একই পোর্টে ওয়েবসকেট অনুরোধ শোনার জন্য socket.io যোগ করে।

ওয়েবসাইটটি অ্যাক্সেস করার জন্য, আপনাকে আপনার প্রধান কম্পিউটারে একটি ওয়েব ব্রাউজার খুলতে হবে (আমি কেবল ক্রোমে এটি পরীক্ষা করেছি) এবং রাস্পবেরি পাই এর আইপি ঠিকানা ব্যবহার করুন, যেমন

10.0.1.2/

আপনি রাস্পবেরি পাই কমান্ড লাইন থেকে আপনার আইপি ঠিকানা খুঁজে পেতে পারেন।

ifconfig

ওয়েব সার্ভারটি পাবলিক ফোল্ডারের অধীনে যে কোনও সামগ্রী সরবরাহ করবে। এটি index.html পৃষ্ঠা প্রদর্শন করতে ডিফল্ট।

এটির একটি API এন্ড পয়েন্ট আছে - /api /audio। এই শেষ পয়েন্টটি পাবলিক/অডিও ফোল্ডারের অধীনে যে কোনও ফাইল সন্ধান করে এবং তালিকাটি ফেরত দেয়। উদাহরণ স্বরূপ

["GYAKO.mp3", "Havana (feat। Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This is what you came for (feat। রিহানা).mp3"]

একটি বিকল্প হিসাবে সঙ্গীত যোগ করতে, এই ফোল্ডারে ফাইলগুলি অনুলিপি করুন। আমি ব্যক্তিগতভাবে ssh এর উপর Filezilla ব্যবহার করি। আপনি যে ফোল্ডারে ফাইল যোগ করতে চান তা হল /opt/com.jonhaydock/disco-pi/public/audio

ধাপ 7: ওয়েবসাইট কোড

ওয়েবসাইট কোড
ওয়েবসাইট কোড

যখন আপনি ওয়েবসাইটে আঘাত করেন তখন আপনার এইরকম কিছু দেখা উচিত।

যদি আপনি একটি নিরাপত্তা সতর্কতা দেখতে পান তাহলে আমরা স্ব-স্বাক্ষরিত SSL সার্টিফিকেট ব্যবহার করছি। আপনি এটি উপেক্ষা করতে পারেন বা এটি একটি ব্যতিক্রম হিসাবে যোগ করতে পারেন।

একটি ফাইলের নাম নির্বাচন করার সময়, HTML 5 অডিও উপাদানটির উৎস। সেই ফাইলে সেট করা হবে। একবার প্রস্তুত, সঙ্গীত বাজানো শুরু হবে। গান শেষ হয়ে গেলে গান বন্ধ হয়ে যাবে।

আপনি None অপশনটি নির্বাচন করলে, মিউজিক বাজানো বন্ধ হয়ে যাবে।

মিউজিক ফাইল চালানোর সময়, ওয়েবপৃষ্ঠাটি সঙ্গীত বিশ্লেষণের জন্য অডিও কনটেক্সট ইন্টারফেস ব্যবহার করে, যা পরে একটি নিরাপদ ওয়েবসকেট সংযোগের মাধ্যমে সার্ভারে পাঠানো হয়।

"Ws2811" শোনার জন্য সার্ভারে socket.io সেট করা হয়েছে এমন বার্তা। এতে 50 টি উপাদানের অ্যারে রয়েছে, যা 0 থেকে 255 এর মধ্যে।

"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}

ওয়েবসকেটের মাধ্যমে পাঠানো তথ্যের উপর ভিত্তি করে সার্ভারটি WS2811 LED স্ট্রিপে LEDs এর রং পরিবর্তন করতে Node RPI WS281x নেটিভ লাইব্রেরি (জেরেমি গার্ফের WS281X লাইব্রেরি মোড়ানো) ব্যবহার করে।

ধাপ 8: অবশেষে

Image
Image

ওয়েব পেজে করা ফাস্ট ফুরিয়ার ট্রান্সফর্ম বিশ্লেষণের উপর ভিত্তি করে আপনার সঙ্গীতের সাথে স্ট্রিপ পরিবর্তন রঙের এলইডি দেখতে হবে।

আমি আশা করি আপনি এটি উপভোগ করবেন। আপনি এটা দিয়ে কি করেন আমাকে জানান!

দ্রষ্টব্য: যদি আপনার কোন সমস্যা থাকে

যেহেতু এই লাইব্রেরি এবং অনবোর্ড রাস্পবেরি পাই অডিওবোথ PWM ব্যবহার করে, সেগুলি একসাথে ব্যবহার করা যাবে না।

ব্রডকম অডিও কার্নেল মডিউলকে কালো তালিকাভুক্ত করার প্রয়োজন হতে পারে /etc/modprobe.d/snd-blacklist.conf

কালো তালিকা snd_bcm2835

যদি কালো তালিকাভুক্তির পরেও অডিও ডিভাইস লোড হয়, তাহলে আপনাকে /etc /modules ফাইলে মন্তব্য করতে হতে পারে। হেডলেস সিস্টেমে আপনাকে HDMI এর মাধ্যমে অডিও জোর করতে হবে

Config.txt সম্পাদনা করুন এবং যোগ করুন:

hdmi_force_hotplug = ১

hdmi_force_edid_audio = 1

এই পরিবর্তন কার্যকর করার জন্য একটি রিবুট প্রয়োজন

প্রস্তাবিত: