সুচিপত্র:

আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর): 4 টি ধাপ (ছবি সহ)
আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর): 4 টি ধাপ (ছবি সহ)
Anonim
আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর)
আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর)
আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর)
আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর (ESP8266 ভিত্তিক মিডি জেনারেটর)

হাই, আজ আমি ব্যাখ্যা করব কিভাবে আপনার নিজের সামান্য আবহাওয়া ভিত্তিক সঙ্গীত জেনারেটর তৈরি করতে হয়।

এটি একটি ESP8266 এর উপর ভিত্তি করে, যা একটি Arduino এর মত, এবং এটি তাপমাত্রা, বৃষ্টি এবং আলোর তীব্রতার প্রতি সাড়া দেয়।

এটা সম্পূর্ণ গান বা জ্যা অগ্রগতি করতে আশা করবেন না। এটি জেনারেটিভ মিউজিকের মতো অনেক সময় মানুষ মডুলার সিনথেসাইজার দিয়ে তৈরি করে। কিন্তু এটি একটু কম এলোমেলো, এটি উদাহরণস্বরূপ নির্দিষ্ট স্কেলে লেগে থাকে।

সরবরাহ

ESP8266 (আমি Adafruit থেকে Feather Huzzah ESP8266 ব্যবহার করছি)

BME280 তাপমাত্রা, আর্দ্রতা এবং ব্যারোমেট্রিক চাপ সেন্সর (I2C সংস্করণ)

Arduino বৃষ্টি সেন্সর

25 কে এলডিআর (হালকা নির্ভরশীল প্রতিরোধক)

কিছু প্রতিরোধক (দুই 47, এক 100, এক 220 এবং এক 1 কে ওহম)

মহিলা মিডি সংযোগকারী (5 পিন দিন) পিসিবি মাউন্ট করার জন্য উপযুক্ত

জাম্পার তার

ব্রেডবোর্ড বা এক ধরণের প্রোটোটাইপিং বোর্ড

কম্পিউটার, আমি একটি চলমান উইন্ডোজ.1.১ ব্যবহার করব, কিন্তু যতদূর আমি জানি এটি যেকোনো ওএসে কাজ করবে।

Ptionচ্ছিক: Adafruit থেকে JST সংযোগকারী সহ 1250 mAh LiPo ব্যাটারি (শুধুমাত্র কিছু ESP এর সাথে সামঞ্জস্যপূর্ণ)

ধাপ 1: ধাপ 1: সফটওয়্যার

সবার আগে আপনার Arduino IDE প্রয়োজন।

তারপর আপনি SiLabs CP2104 ড্রাইভার এবং ESP8266 বোর্ড প্যাকেজ প্রয়োজন।

এটি আপনার কম্পিউটারকে UART- এর মাধ্যমে ESP প্রোগ্রাম করার অনুমতি দেয় এবং Arduino IDE- কে ESP প্রোগ্রাম করার অনুমতি দেয়।

আপনি আইডিই, ড্রাইভার এবং বোর্ড প্যাকেজ সম্পর্কে সমস্ত তথ্য অ্যাডাফ্রুট ওয়েবসাইটে এই পৃষ্ঠায় পেতে পারেন।

মিডি ডেটা পাঠাতে সক্ষম হওয়ার জন্য আপনার আরডুইনো মিডি লাইব্রেরিরও প্রয়োজন হবে। এটি ছাড়া করা যেতে পারে, কিন্তু এটি কেবল সবকিছুকে অনেক সহজ করে তোলে।

BME280 এর সাথে যোগাযোগ করার জন্য আমি এই BME280-I2C-ESP32 লাইব্রেরি ব্যবহার করেছি। (এটি BME280 এর I2C সংস্করণের জন্য)

এবং সেই লাইব্রেরির পরিবর্তে অ্যাডাফ্রুট ইউনিফাইড সেন্সর ড্রাইভার প্রয়োজন। এই প্রথমবারের মতো এই লাইব্রেরির প্রয়োজন নেই যাতে সমস্যা ছাড়াই একটি ভিন্ন লাইব্রেরি ব্যবহার করা যায়, তাই আমি সবসময় এই লাইব্রেরিটি কোথাও বুকমার্ক করে থাকি।

ধাপ 2: ধাপ 2: হার্ডওয়্যার

ধাপ 2: হার্ডওয়্যার
ধাপ 2: হার্ডওয়্যার
ধাপ 2: হার্ডওয়্যার
ধাপ 2: হার্ডওয়্যার
ধাপ 2: হার্ডওয়্যার
ধাপ 2: হার্ডওয়্যার

ঠিক তাই আমরা অবশেষে ভাল জিনিস, হার্ডওয়্যার পেতে।

উল্লিখিত হিসাবে আমি এই Adafruit ESP ব্যবহার করেছি, কিন্তু এটি একটি NodeMCU সঙ্গে ঠিক কাজ করা উচিত। আমি V2 সংস্করণটি সুপারিশ করি কারণ আমি বিশ্বাস করি এটি একটি ব্রেডবোর্ডে অনেক বেশি ফিট করে এবং আপনি সেগুলি ইবে বা AliExpress থেকে খুব সস্তা পেতে পারেন। আমি এটা পছন্দ করি যে Adafruit ESP এর একটি দ্রুত CPU আছে, একটি LiPo এবং একটি চার্জ সার্কিটের জন্য একটি মহিলা JST সংযোগকারী নিয়ে আসে। আপনি কি পিন ব্যবহার করছেন তা বের করা কিছুটা সহজ। আমি বিশ্বাস করি একটি NodeMCU- এ পিন লেবেল করা D1 আসলে GPIO5 উদাহরণস্বরূপ, তাই আপনার সর্বদা একটি পিনআউট চার্ট দরকার। মোটেও বড় সমস্যা নয়, তবে নতুনদের জন্য সুবিধাজনক তারা অ্যাডফ্রুটকে এত স্পষ্টভাবে লেবেল করেছে।

প্রথমে বন্ধ করা যাক BME280, কারণ এই মডেলের কিছু বৈচিত্র রয়েছে। আপনি ছবি থেকে দেখতে পারেন আমার একটি বড় গর্ত আছে, কিন্তু 2 টি গর্ত সহ কিছু আছে। আপনি দেখতে পারেন এটিতে 4 ইন এবং আউটপুট, পাওয়ারের জন্য 1, স্থল এবং এসসিএল এবং এসডিএ রয়েছে। এর মানে হল এটি I2C এর মাধ্যমে যোগাযোগ করে। আমি বিশ্বাস করি অন্যান্য মডেল SPI এর মাধ্যমে যোগাযোগ করে। এবং কিছুতে আপনি SPI বা I2C বেছে নিতে পারেন। SPI এর জন্য একটি ভিন্ন লাইব্রেরি বা কমপক্ষে ভিন্ন কোড এবং ভিন্ন তারের প্রয়োজন হতে পারে। আমি বিশ্বাস করি এসপিআই -তে এস মানে সিরিয়াল এবং আমি বলতে পারি না যে এটি এই প্রকল্পের মিডি অংশে হস্তক্ষেপ করবে কারণ এটি সিরিয়াল সংযোগের মাধ্যমেও কাজ করছে।

এই BME আপ hooking বেশ সোজা এগিয়ে। ESP8266 এ আপনি যথাক্রমে SDA এবং SC লেবেলযুক্ত পিন 4 এবং 5 দেখতে পারেন। শুধু সেই পিনগুলিকে সরাসরি বিএমইতে এসডিএ এবং এসসিএল পিনের সাথে সংযুক্ত করুন। অবশ্যই VIN কে ব্রেডবোর্ডের পজিটিভ রেল এবং GND কে নেগেটিভ রেলের সাথে সংযুক্ত করুন। এগুলি ESP এর 3V3 এবং GND পিনের সাথে সংযুক্ত।

পরবর্তী আমরা LDR সংযোগ করব। ফ্রিজিং উদাহরণে আপনি দেখতে পারেন যে 3.3 ভোল্ট একটি প্রতিরোধকের মধ্য দিয়ে যাচ্ছে, তারপর এটি এলডিআর এবং অন্য প্রতিরোধকের মধ্যে বিভক্ত। তারপর এলডিআর এর পরে এটি আবার একটি রোধকারী এবং এডিসিতে বিভক্ত হয়।

এটি ESP কে খুব বেশি ভোল্টেজ পাওয়া থেকে রক্ষা করা এবং এটি পঠনযোগ্য মান পাচ্ছে তা নিশ্চিত করার জন্য। এডিসি 0-1 ভোল্ট পরিচালনা করতে পারে কিন্তু 3V3 3.3 ভোল্ট সরবরাহ করে। আপনি যদি 1 ভোল্টের উপরে যান তবে এটি সম্ভবত কিছুই উড়িয়ে দেবে না, তবে এটি ভাল কাজ করবে না।

তাই প্রথমে আমরা 220 এবং 100 ওহম প্রতিরোধক ব্যবহার করে একটি ভোল্টেজ ডিভাইডার ব্যবহার করি যাতে ভোল্টেজ 3.3 থেকে 1.031 ভোল্টে নেমে আসে। তারপর 25k ওহম এলডিআর এবং 1 কে ওম প্রতিরোধক আরেকটি ভোল্টেজ ডিভাইডার তৈরি করে যা এলডিআর পাওয়ার পরিমাণের উপর নির্ভর করে 1.031 থেকে 0 ভোল্টের মধ্যে যে কোনও জায়গা থেকে ভোল্টেজ কমিয়ে আনে।

তারপর আমাদের রেইন সেন্সর আছে। একটি অংশ বলে FC-37, অন্য অংশ বলে HW-103। আমি ইবেতে পাওয়া প্রথমটি কিনেছি যা বলেছিল যে এটি 3.3 এবং 5 ভোল্ট পরিচালনা করতে পারে। (আমি মনে করি তারা সবাই পারে)।

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

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

আপনি পরিকল্পিত থেকে দেখতে পারেন, ইতিবাচক ভোল্টেজ এবং সিরিয়াল সংকেত উভয়ই 47 ওহম প্রতিরোধকের মধ্য দিয়ে যায়।

উদাহরণস্বরূপ যদি আপনি একটি Arduino Uno দিয়ে এই প্রকল্পটি করেন তবে 220 ohm প্রতিরোধক ব্যবহার করতে ভুলবেন না !! এই ESP এর কাজ 3.3 V লজিক, কিন্তু বেশিরভাগ Arduino এর 5.0 V ব্যবহার তাই আপনাকে মিডি ক্যাবলের মধ্য দিয়ে যাওয়া কারেন্টকে সীমিত করতে হবে।

এবং অবশেষে গ্রাউন্ড রেলের সাথে মাঝের পিনটি সংযুক্ত করুন। 5 পিন দিন থেকে অন্য 2 টি পিন ব্যবহার করা হয় না।

ধাপ 3: ধাপ 3: কোড

এবং অবশেষে আমাদের কোড আছে!

এই জিপ ফাইলটিতে আমি 2 টি স্কেচ রাখলাম। 'LightRainTemp' শুধু সব সেন্সর পরীক্ষা করে এবং তাদের মান ফেরত পাঠায়। (টার্মিনাল উইন্ডো খুলতে ভুলবেন না!)

এবং অবশ্যই আমাদের LRTGenerativeMidi (LRT মানে হল হালকা, বৃষ্টি, তাপমাত্রা) স্কেচ।

ভিতরে আপনি কি ঘটছে তা মন্তব্যগুলিতে একটি গুচ্ছ ব্যাখ্যা খুঁজে পেতে পারেন। আমি পুরো জিনিসটি কীভাবে লিখেছি তাতে আমি যেতে যাচ্ছি না, এতে কয়েক ঘন্টা সময় লাগবে। আপনি যদি এইরকম কিছু দিয়ে কোথায় শুরু করতে চান তা জানতে চাইলে আমার আরও কিছু প্রকল্প মনে আছে। কয়েকটি বোতাম সহ একটি ছোট র্যান্ডম রিফ জেনারেটর এবং একগুচ্ছ বৈশিষ্ট্য সহ আমি অন্য মডেলগুলিতে খুঁজে পাই না।

কিন্তু যাদের আমি প্রথমে ডিজাইন এবং কোডিং শেষ করতে হবে। আপনি যদি অন্যান্য প্রকল্প সম্পর্কে আপ টু ডেট রাখতে চান তাহলে আমাকে জানান। আমি সিদ্ধান্ত নিইনি যে আমি আরো নির্দেশাবলী তৈরি করব বা একটি ভিডিও সিরিজ করব।

ধাপ 4: ধাপ 4: এটিকে হুক করুন এবং এটি পরীক্ষা করুন

এবং এখন এটি পরীক্ষা করার সময়!

কেবল একটি মিডি কেবল সংযুক্ত করুন, চ্যানেল 1 এ সাড়া দেওয়ার জন্য আপনার সিন্থ/কীবোর্ড সেট করতে ভুলবেন না বা Arduino কোডে চ্যানেল পরিবর্তন করুন এবং দেখুন এটি কাজ করে কিনা!

আপনি এটি দিয়ে কী করেন তা দেখতে এবং শুনতে আমি সত্যিই আগ্রহী। আপনি যদি পরিবর্তন, আপগ্রেড, টুইকস করেন (যেমন লাইট সেন্সর এবং তাপমাত্রার মান। বাইরে এটি ভাল বা খারাপ কাজ করতে পারে ভিতরে) কিছু।

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

পড়ার এবং দেখার জন্য ধন্যবাদ এবং শুভকামনা !!

প্রস্তাবিত: