সুচিপত্র:
ভিডিও: ATtiny13 এবং WS2812: 7 ধাপ সহ একটি $ 1 LED মুড ল্যাম্প
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
লেখক দ্বারা আরো অনুসরণ করুন:
এটি একটি স্বল্পমূল্যের মুড ল্যাম্প যার চারটি মোড রয়েছে।
1. রেইনবো স্পার্ক। আলোর একটি স্ফুলিঙ্গ সময়ের সাথে সাথে উপরের দিকে চলে যায় এবং ধীরে ধীরে রঙ পরিবর্তন করে।
2. রেইনবো গ্লো। একটি স্থিতিশীল আভা যা ধীরে ধীরে রঙ পরিবর্তন করে।
3. মোমবাতি আগুন সিমুলেশন।
4. বন্ধ।
আপনি উপরে একটি টাচ বোতাম ট্যাপ করে মোড পরিবর্তন করতে পারেন। বর্তমান মোড EEPROM মেমরিতে পাওয়ার অফ করার পর সেভ করা হয়।
ATtiny13 কত ছোট?
এই ধারণাটি ছিল ন্যূনতম হার্ডওয়্যার থেকে সর্বাধিক বৈশিষ্ট্য, স্বয়ংক্রিয় সুইচ বা থার্মোমিটারের চেয়ে জটিল কিছু, এই ক্ষুদ্র মাইক্রোকন্ট্রোলারের প্রান্তের কাছাকাছি একটি প্রকল্প। সর্বোপরি, বিধিনিষেধগুলি আপনাকে সৃজনশীল ভাবতে বাধ্য করে, তাই না? ঠিক আছে, শুরুতে এটির মতো দেখাচ্ছিল।
এই প্রকল্পের মধ্যে সবচেয়ে চ্যালেঞ্জিং ছিল সমস্ত কোডকে ATtiny13 এ ঠেলে দেওয়া। মাইক্রোকন্ট্রোলারে রয়েছে 1K বাইট ফ্ল্যাশ এবং মাত্র 64 বাইট র্যাম। হ্যাঁ, যখন আমি "বাইট" বলি, আমার মানে আটটি বিট নিয়ে গঠিত। আপনার সমস্ত স্থানীয় ভেরিয়েবল এবং কল স্ট্যাকের জন্য 64 বাইট। এটা পরিষ্কার করার জন্য, বিবেচনা করুন আমাদের 8 RGB LEDs নিয়ন্ত্রণ করতে হবে। তাদের প্রত্যেককে 3 বাইট (যথাক্রমে লাল, সবুজ এবং নীল চ্যানেলের জন্য) দ্বারা সংজ্ঞায়িত করা হয়েছে। সুতরাং, কেবলমাত্র 8 টি এলইডি স্টেট রাখার জন্য, আমাদের 8 টি স্ট্রাকচার 3 বাইটের একটি অ্যারে বাস্তবায়ন করতে হবে এবং এই অ্যারের শুরুতে একটি পয়েন্টার আরও একটি বাইট লাগবে। সুতরাং, 64 বাইটের মধ্যে 25 টি বেরিয়ে গেছে। আমরা মাত্র%% র্যাম ব্যবহার করেছি এবং এখনো শুরু করিনি। উপরন্তু, সাতটি মৌলিক রংধনু সংরক্ষণ করার জন্য, আপনার 7 × 3 = 21 বাইটের প্রয়োজন হবে, তাই 72% র RAM্যাম শেষ হয়ে গেছে। আচ্ছা, মৌলিক রঙের ক্ষেত্রে, আমি অতিরঞ্জিত করি: র্যামে তাদের একই সময়ে আমাদের সবার প্রয়োজন নেই এবং সেগুলি কখনই পরিবর্তিত হয় না, তাই সেগুলি র.্যামের পরিবর্তে ফ্ল্যাশে সংরক্ষণ করার জন্য একটি ধ্রুবক অ্যারে হিসাবে প্রয়োগ করা যেতে পারে। যাইহোক, এটি ব্যবহৃত হার্ডওয়্যার সম্পর্কে একটি সামগ্রিক ধারণা দেয়।
অকাল অপ্টিমাইজেশন সম্পর্কে নুথের বক্তব্যটি মনে রেখে, আমি কী ঘটে তা দেখতে তিনটি ল্যাম্প মোড আলাদাভাবে প্রোটোটাইপ করা থেকে শুরু করেছি। আমি তাদের আলাদাভাবে পরীক্ষা করেছি যাতে তারা সঠিকভাবে কাজ করে এবং প্রত্যেকটি আমার মাইক্রোকন্ট্রোলারের সাথে মানানসই হয়। এটা সম্পন্ন করতে কয়েকটা সন্ধ্যা লেগেছিল এবং সবকিছু ঠিকঠাক চলছিল … যতক্ষণ না আমি সেগুলো সুইচ স্টেটমেন্টের ভিতরে একত্রিত করার চেষ্টা করেছি। avr-size ইউটিলিটি রিপোর্ট করেছে 1.5 Kb টেক্সট সেকশন সাইজ (avs-gcc এর -s পতাকা সহ)। সেই মুহুর্তে আমার মূল উদ্দেশ্য ছিল 2Kb ফ্ল্যাশ দিয়ে কিছু ATtiny25 দখল করা এবং এটি এই গল্পের সুখী সমাপ্তি হতে পারে।
কিন্তু একরকম আমি অনুভব করেছি যে যথেষ্ট অপ্টিমাইজেশনের পরে আমি সেই কপাল কোডটিকে 1 কেবিতে সঙ্কুচিত করতে পারি। যাইহোক, এটা বুঝতে আরও এক সপ্তাহ লেগেছে যে এটা অসম্ভব এবং যেভাবেই হোক তা সম্পন্ন করতে আরও এক সপ্তাহ। আমাকে একটি রংধনু পাঁচটি মৌলিক রঙে কাটাতে হয়েছিল (উল্লেখযোগ্য চাক্ষুষ পার্থক্য ছাড়াই)। আমি কেস স্টেটমেন্ট থেকে মুক্তি পেয়েছি এবং বাইনারি কোড সাইজ কমানোর জন্য if-then-if এর চেইন ব্যবহার করেছি। ফায়ার অ্যানিমেশনের জন্য একটি ছদ্মবেশী সংখ্যা জেনারেটর প্রয়োজন যা বেশ ভারী, তাই আমি ধ্রুবক প্রাথমিক মান সহ এলএফএসআর এর একটি সরলীকৃত সংস্করণ প্রয়োগ করেছি। আমি পিআরএনজি পূর্ণ চক্রের দৈর্ঘ্য সম্পর্কে চিন্তা করি না এবং কেবল কোড আকার এবং "বাস্তবসম্মত ফায়ার অ্যানিমেশন" এর মধ্যে একটি বংশানুক্রমিক ভারসাম্য খুঁজছি। আমি অনেক ছোটখাটো অপ্টিমাইজেশন প্রয়োগ করেছি যা আমি এখন মনে করতে পারছি না এবং এমনকি চিপে আগুন ছাড়াও সমস্ত মোড ফ্ল্যাশ করতে পেরেছি। যখন আমার ধারণা শেষ হয়ে গেল, আমার মোট কোড ছিল প্রায় 1200 বাইট।
আমি সময়সীমা নিলাম এবং AVR কোড অপ্টিমাইজেশন সম্পর্কে অনেক পড়ছিলাম। আমি অ্যাসেম্বলি ভাষায় সবকিছু ছেড়ে দেওয়া এবং পুনর্লিখনের কাছাকাছি ছিলাম কিন্তু শেষ সুযোগটি দিয়েছিলাম। চূড়ান্ত অপ্টিমাইজেশান রাশ চলাকালীন, আমি একটি রামধনু তিনটি মৌলিক রঙে কেটে ফেলেছি এবং অন্যদেরকে উড়ে যাওয়ার জন্য গণনা করা হয়েছে, আমি সবকিছু পরিদর্শন করেছি এবং AVR অপ্টিমাইজ করার সুপারিশ অনুসরণ করেছি এবং অবশেষে…
avrdude: ফ্ল্যাশ লেখা (1004 বাইট):
লেখা | ############################################# | 100% 0.90 সে
এটা বলার দরকার নেই যে আমি বর্তমান মোড সঞ্চয় করার জন্য প্রায় সব RAM এবং EEPROM এর মাত্র একটি বাইট ব্যবহার করেছি। আমি বলছি না যে এটি একটি আদর্শ এবং চূড়ান্ত বাস্তবায়ন। এটি কেবল কাজ করে এবং মাইক্রোকন্ট্রোলারকে ফিট করে। আমি নিশ্চিত, আপনি এটি আরও ভাল করতে পারেন। আমি সত্যিই তাই. আমি কেবল একটি দৃশ্যত অবৈধ সমস্যা সমাধানের মজা শেয়ার করতে চাই যা আপনি শুরুতে প্রায় অসম্ভব বলে মনে করেন। "এইভাবে, হ্যাকিং মানে যা সম্ভব তার সীমা অন্বেষণ করা …" -রিচার্ড স্টলম্যান
সরবরাহ:
1x ATtiny13 MCU (SOP-8 প্যাকেজে MCU এর জন্য $ 0.28 = $ 0.24 এবং DIP8 অ্যাডাপ্টারের জন্য $ 0.04)
8x WS2812 RGB LEDs (আমি একটি বোর্ড বা LED স্ট্রাইপের একটি টুকরা সুপারিশ করি) ($ 0.42)
1x TTP223 টাচ বোতাম ($ 0.10)
1x মাইক্রো ইউএসবি থেকে ডিআইপি অ্যাডাপ্টার ($ 0.14)
1x 10kΩ প্রতিরোধক (<$ 0.01)
1x 100nF সিরামিক ক্যাপাসিটর (<$ 0.01)
1x 10–47µF ইলেক্ট্রোলাইটিক ক্যাপাসিটর (<$ 0.01)
মোট <$ 0.97
ধাপ 1: সফটওয়্যার সেটআপ
মাইক্রোকন্ট্রোলারের রম আপলোড করার জন্য সোর্স কোড এবং এভারডুড ইউটিলিটি কম্পাইল করার জন্য আপনার প্রয়োজন হবে avr-gcc টুলচেইনের। ইনস্টলেশন প্রক্রিয়াটি বেশ সহজ এবং সরল, তবে এটি আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে। আপনি যদি কোন ধরণের জিএনইউ/লিনাক্স ব্যবহার করেন, তাহলে সম্ভবত আপনার সংগ্রহস্থলের গাছটিতে ইতিমধ্যেই সঠিক প্যাকেজ রয়েছে। এই প্রকল্পের উৎস কোড এখানে ডাউনলোড করা যেতে পারে:
github.com/arduinocelentano/t13_ws2812_lamp
আপনার একটি light_ws2812 লাইব্রেরিরও প্রয়োজন হবে:
github.com/cpldcpu/light_ws2812
একবার আপনি avr-gcc টুলচেইন এবং প্রকল্পের উৎস পেয়ে গেলে, আপনার টার্মিনালটি চালান এবং নিম্নলিখিত কোডটি টাইপ করুন:
সিডি পাথ/থেকে/প্রকল্প
তৈরি করা
পদক্ষেপ 2: মাইক্রোকন্ট্রোলার প্রোগ্রামিং
যদি আপনার কোন ধরণের USBASP প্রোগ্রামার থাকে, তবে এটির পিনআউট অনুযায়ী এটিকে অ্যাটিনির সাথে সংযুক্ত করুন। সাধারণত এটি দেখতে এইরকম হবে কিন্তু আমি দৃ actual়ভাবে আপনার প্রকৃত পিনআউট পরীক্ষা করার সুপারিশ!
বিকল্পভাবে, আপনি একটি প্রোগ্রামার হিসাবে একটি Arduino বোর্ড ব্যবহার করতে পারেন। Arduino IDE খুলুন এবং "File → Examples" মেনুতে Arduino ISP উদাহরণটি খুঁজুন। স্কেচ আপলোড করার পর আপনার Arduino বোর্ড একজন প্রোগ্রামার হিসেবে কাজ করে। স্কেচ কোডে মন্তব্যগুলি আপনাকে পিনআউট করার একটি সূত্র দেবে।
এখন দৌড়
ফ্ল্যাশ করা
MCU ফ্ল্যাশ করতে এবং
ফিউজ তৈরি করুন
ফিউজ বিট সেট করতে।
প্রস্তাবিত:
3D মুদ্রিত LED মুড ল্যাম্প: 15 টি ধাপ (ছবি সহ)
3D মুদ্রিত LED মুড ল্যাম্প: আমার সবসময়ই ল্যাম্পের প্রতি এই মুগ্ধতা ছিল, তাই 3D প্রিন্টিং এবং আরডুইনোকে এলইডি -র সাথে একত্রিত করার ক্ষমতা থাকাটা আমার অনুসরণ করার প্রয়োজন ছিল। ধারণাটি খুবই সহজ এবং ফলাফলটি সবচেয়ে সন্তোষজনক চাক্ষুষ অভিজ্ঞতা আপনি রাখতে পারেন
মুড স্পিকার- পরিবেষ্টিত তাপমাত্রার উপর ভিত্তি করে মুড মিউজিক বাজানোর জন্য একটি শক্তিশালী স্পিকার: 9 টি ধাপ
মুড স্পিকার- পরিবেষ্টিত তাপমাত্রার উপর ভিত্তি করে মুড মিউজিক বাজানোর জন্য একটি শক্তিশালী স্পিকার: আরে! MCT Howest Kortrijk এ আমার স্কুল প্রকল্পের জন্য, আমি একটি মুড স্পিকার তৈরি করেছি এটি একটি স্মার্ট ব্লুটুথ স্পিকার ডিভাইস যা বিভিন্ন সেন্সর, একটি LCD এবং WS2812b LEDstrip অন্তর্ভুক্ত স্পিকার তাপমাত্রার উপর ভিত্তি করে ব্যাকগ্রাউন্ড মিউজিক বাজায় কিন্তু পারে
কম পলি LED মুড ল্যাম্প: 9 ধাপ (ছবি সহ)
লো পলি এলইডি মুড ল্যাম্প: যে কোন ডেস্ক, শেলফ বা টেবিলে একটি দুর্দান্ত সংযোজন! বেসে অবস্থিত বিচ্ছিন্ন বোতামটি আপনাকে বিভিন্ন LED আলো নিদর্শনগুলির মাধ্যমে চক্র করতে দেয়। আপনি যদি পড়াশোনা, বিশ্রাম বা এমনকি পার্টি করার জন্য আপনার বাতি ব্যবহার করতে চান তা কোন ব্যাপার না … সেখানে বিচ্ছিন্ন আছে
LED মুড ল্যাম্প: 9 ধাপ (ছবি সহ)
LED মুড ল্যাম্প: আমি সম্প্রতি গ্রেগ ডেভিলের একটি LED কিউব জুড়ে এসেছি। এটি একটি দুর্দান্ত শিল্পকর্ম। এটি দ্বারা অনুপ্রাণিত হয়ে, এমনকি আমি এমন কিছু তৈরি করতে চেয়েছিলাম। কিন্তু এটি আমার লিগ থেকে বেরিয়ে আসার উপায় ছিল। আমি একবারে একটি পদক্ষেপ নেওয়ার সিদ্ধান্ত নিয়েছি এবং একটি উপায় ছোট করে দিয়েছি
DIY LED আলো - দূরবর্তী সঙ্গে আধুনিক ডেস্কটপ মুড ল্যাম্প: 8 ধাপ (ছবি সহ)
DIY LED লাইট - রিমোট সহ আধুনিক ডেস্কটপ মুড ল্যাম্প: এই প্রবন্ধে আমি এই দুর্দান্ত পিরামিড আকৃতির LED মুড ল্যাম্প তৈরিতে যে প্রক্রিয়াটি করেছি তার উপর যাব। লাইটের জন্য আমি RGB LED লাইট ব্যবহার করেছি যা 16 ফুট স্ট্রিপে আসে