ATtiny85 একটি আট পিনের এভিআর মাইক্রোকন্ট্রোলার। মাইক্রোকন্ট্রোলারভিত্তিক ছোট প্রজেক্টের জন্য খুবই সুবিধাজনক। শুধু তা-ই নয়। এই মাইক্রোকন্ট্রোলারটিকে চাইলে একটি ছোট্ট আরডুইনো হিসেবেও ব্যবহার করা যায়। ATtiny85 breakout board এ রয়েছে একটি অন বোর্ড ATtiny85 মাইক্রোকন্ট্রোলার। বোর্ডটিতে মাইক্রোকন্ট্রোলারটির সবগুলো পিন যে শুধু বের করেই দেওয়া আছে তা নয়, প্রতিটি পিনের নামও লিখে দেওয়া আছে। আইএসপি পিনগুলোও চিহ্নিত করা আছে স্পষ্টভাবেই। তাই ডেটেশিটে পিনআউট দেখে দেখে কানেকশন দেবার কষ্টটুকুও করতে হচ্ছে না। বোর্ডে পাওয়ার দেবার জন্য রয়েছে একটি মিনি ইউএসবি কানেকটর। এই টিউটোরিয়ালে আমরা দেখব কিভাবে ATtiny85 breakout board কে প্রোগ্রাম করা যায়। এই টিউটোরিয়ালে দুটি পদ্ধতিতে একে প্রোগ্রাম করা হবে।
পদ্ধতি ১ : Mini USBASP’র সাহায্যে।
এই পদ্ধতিতে ATtiny85 breakout board কে প্রোগ্রাম করার জন্য বেছে নেওয়া হয়েছে Mini USBASP । বলে রাখি, এই পদ্ধতি অনুসরন করে আমাদের যেকোনো AVR programmer এর ISP পিনআউট ব্যবহার করে ATtiny85 breakout board কে প্রোগ্রাম করা যাবে।
প্রয়োজনীয় যন্ত্রপাতি | পরিমান | প্রোডাক্ট লিংক |
ATtiny85 breakout board | 1 | http://bit.ly/2QWEJGJ |
Mini USBASP | 1 | http://bit.ly/2Kiqbih |
Female to female jumpers | 6 | http://bit.ly/2Gk1m1P |
USB A to mini B cable | 1 |
কার্যপ্রনালীঃ
ATtiny85 breakout board এবং Mini USBASP এর নিচের পিনগুলো পরস্পরের সাথে সংযুক্ত করুন।
ATtiny85 breakout board | Mini USBASP |
VCC | VCC |
GND | GND |
SCK | SCK |
MISO | MISO |
MOSI | MOSI |
RST | RST |
এবার মিনি USB A to mini B cable এর সাহায্যে Mini USBASP কে কম্পিউটারের সাথে যুক্ত করুন। তারপর AVRpal অথবা AVRdude এর মাধ্যমে যেকোনো প্রোগ্রামের হেক্স ফাইল আপলোড করুন। এখন ATtiny85 breakout board আপনার প্রোগ্রাম অনুসারে কাজ করবে। Mini USBASP ব্যবহার করতে হলে অবশ্যই আপনার কম্পিউটারে USBASP ড্রাইভার সফটওয়্যার ইন্সটল করা থাকতে হবে।
প্রোগ্রামঃ
উদাহরনস্বরুপ আমরা ছোট্ট একটি প্রোগ্রাম লিখেছিলাম। প্রোগ্রামটি লিখতে ব্যবহার করা হয়েছে Atmel studio 6.1. প্রোগ্রামটি বিল্ড করে এর হেক্স ফাইল উপরোল্লিখিত নিয়মে আপলোড করলে ATtiny85 breakout board এর কমলা রঙয়ের এলইডি জ্বলানেভা করবে। উল্লেখ্য কমলা এলইডিটা ATtiny85 এর PB0 পিনের সাথে কানেক্টেড।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* * attiny85.c * * Created: 11/18/2018 2:48:17 PM * Author: Techshop */ #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> void main() { int flag=0; DDRB|=(1<<PB0); PORTB=0x00; while(1) { if(flag==0) { PORTB|=(1<<PB0); _delay_ms(50); flag=1; } else if(flag==1) { PORTB&=~(1<<PB0); _delay_ms(50); flag=0; } } } |
পদ্ধতি ২: বানিয়ে ফেলি ছোট্ট একটি আরডুইনো।
শুরুতেই বলেছিলাম ATtiny85 breakout বোর্ডকে একটি আরডুইনো হিসেবে ব্যবহার করা যাবে। টিউটোরিয়ালের এই ধাপে আমরা ব্রেকআউট বোর্ডটিকে একটি আরডুইনো বোর্ডের মত করেই প্রোগ্রাম এবং ব্যবহার করব। যেসব ছোট ছোট প্রজেক্টে আরডুইনোর সবগুলো পিনের প্রয়োজন নেই, ইউজার্ট কমিউনিকেশনেরও দরকার নেই; সেইসব প্রজেক্টের সার্কিটের আকার ছোট করে আনার জন্য এই পদ্ধতিটি খুবই সাশ্রয়ী ও কার্যকর। এই পদ্ধতিতে ATtiny85 breakout কে প্রোগ্রাম করতে আমাদের প্রয়োজন হবে একটি আরডুইনো উনো এবং আরও কিছু কম্পোনেন্টস।
প্রয়োজনীয় যন্ত্রপাতি | পরিমান | প্রোডাক্ট লিংক |
ATtiny85 breakout board | 1 | http://bit.ly/2QWEJGJ |
Arduino UNO-R3 | 1 | http://bit.ly/2Kiqbih |
Male to female jumpers | 6 | http://bit.ly/2rIu6w2 |
Male to male jumpers | 3 | http://bit.ly/2IkA1hy |
10uf capacitor | 1 | http://bit.ly/2QVM3Cz |
10K ¼ w resistor | 1 | http://bit.ly/2KXzOTf |
Push switch | 1 | http://bit.ly/2lPQ6SU |
Mini breadboard | 1 | http://bit.ly/2IzQYYZ |
USB A to mini B cable | 1 |
কার্যপ্রনালী:
ক)বোর্ড ইন্সটলেশনঃ
প্রথমে আরডুইনো আইডিই ওপেন করে Preferences এ যান।
Additional board manager URLs এ এই লিংকটি https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json পেস্ট করুন এবং OK বাটনে ক্লিক করুন।
এবার Board manager এ যান।
নিচের লিস্ট থেকে ATtiny খুঁজে বের করে Install এ ক্লিক করুন।
বোর্ডের লিস্টে ATTiny যুক্ত হবে।
খ) আরডুইনোকে প্রোগ্রামার হিসেবে কনফিগার করাঃ
লক্ষ্য করুন, এই এক্সপেরিমেন্টে আরডুইনো উনোর ভূমিকা হবে একটি সাধারন এভিআর প্রোগ্রামারের মতন। প্রথমে আরডুইনোকে কম্পিউটারের সাথে কানেক্ট করুন। তারপর নিচের ছবিতে দেখানো পথ অনুযায়ী ArduinoISP নামক কোডটি ওপেন করুন এবং আরডুইনোতে আপলোড করুন।
আরডুইনো বোর্ডটি এখন ATtiny85 breakout board কে প্রোগ্রাম করার জন্য প্রস্তুত।
সার্কিট কানেকশনঃ
আরডুইনো উনো এবং ATtiny85 breakout board এর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
ATtiny85 breakout board | Arduino UNO-R3 |
VCC | 5V |
GND | GND |
SCK | SCK(13) |
MISO | MISO(12) |
MOSI | MOSI(11) |
RST | RST(10) |
আরডুইনো উনোর রিসেট পিন এবং গ্রাউন্ডের মাঝখানে একটি ১০ মাইক্রোফ্যারাড ক্যাপাসিটর লাগান।
এবার নিম্নের সার্কিট ডায়াগ্রাম অনুযায়ী ATtiny85 breakout board এর সাথে পুশ বাটন যুক্ত করুন।
বোর্ড লিস্ট থেকে ATtiny85 সিলেক্ট করুন। processor: ATtiny85 এবং Clock: 8MHz সিলেক্ট করুন।
Programmer: Arduino as ISP সিলেক্ট করুন।
প্রোগ্রামঃ
এবার নিচের প্রোগ্রামটি কম্পাইল করুন এবং আরডুইনোতে আপলোড করুন।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<span style="color: #00979c;">const</span> <span style="color: #00979c;">int</span> <span style="color: #000000;">buttonPin</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">2</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// the number of the pushbutton pin</span> <span style="color: #00979c;">const</span> <span style="color: #00979c;">int</span> <span style="color: #000000;">ledPin</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// the number of the LED pin</span> <span style="color: #00979c;">int</span> <span style="color: #000000;">flag</span><span style="color: #434f54;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// variables will change:</span> <span style="color: #00979c;">int</span> <span style="color: #000000;">buttonState</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// variable for reading the pushbutton status</span> <span style="color: #00979c;">void</span> <span style="color: #5e6d03;">setup</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span> <span style="color: #434f54;">// initialize the LED pin as an output:</span> <span style="color: #d35400;">pinMode</span><span style="color: #000000;">(</span><span style="color: #000000;">ledPin</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">OUTPUT</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// initialize the pushbutton pin as an input:</span> <span style="color: #d35400;">pinMode</span><span style="color: #000000;">(</span><span style="color: #000000;">buttonPin</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">INPUT</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #000000;">}</span> <span style="color: #00979c;">void</span> <span style="color: #5e6d03;">loop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span> <span style="color: #434f54;">// read the state of the pushbutton value:</span> <span style="color: #000000;">buttonState</span> <span style="color: #434f54;">=</span> <span style="color: #d35400;">digitalRead</span><span style="color: #000000;">(</span><span style="color: #000000;">buttonPin</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #434f54;">// check if the pushbutton is pressed. If it is, the buttonState is HIGH:</span> <span style="color: #5e6d03;">if</span> <span style="color: #000000;">(</span><span style="color: #000000;">buttonState</span> <span style="color: #434f54;">==</span> <span style="color: #00979c;">HIGH</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span> <span style="color: #434f54;">// turn LED on:</span> <span style="color: #5e6d03;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">flag</span><span style="color: #434f54;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span> <span style="color: #d35400;">delay</span><span style="color: #000000;">(1</span><span style="color: #000000;">00</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #d35400;">digitalWrite</span><span style="color: #000000;">(</span><span style="color: #000000;">ledPin</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">HIGH</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #000000;">flag</span><span style="color: #434f54;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span> <span style="color: #000000;">}</span> <span style="color: #5e6d03;">else</span> <span style="color: #5e6d03;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">flag</span><span style="color: #434f54;">==</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span> <span style="color: #d35400;">delay</span><span style="color: #000000;">(</span><span style="color: #000000;">100</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #d35400;">digitalWrite</span><span style="color: #000000;">(</span><span style="color: #000000;">ledPin</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">LOW</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span> <span style="color: #000000;">flag</span><span style="color: #434f54;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span> |
আরডুইনোর মাধ্যমে ATtiny85 breakout board এ প্রোগ্রামটি লোড হয়ে যাবে। এটি একটি টোগল সুইচের প্রোগ্রাম। ATtiny85 breakout board এর PB2 এর সাথে সংযুক্ত সুইচটি একটি টোগল সুইচ হিসেবে কাজ করবে। সুইচটি প্রতিবার প্রেস করার সাথে সাথে ATtiny85 breakout board এর PB0 পিনের সাথে সংযুক্ত এলইডি অন থেকে অফ হবে কিংবা অফ থেকে অন হবে।
ব্যাস, তৈরী হয়ে গেল একটি ছোট্ট আরডুইনো বোর্ড। প্রোগ্রামার আরডুইনো থেকে একে সম্পূর্ণরুপে বিচ্ছিন্ন করে মিনি ইউএসবি পোর্টের মাধ্যমে পাওয়ার দিয়ে একে সচল রাখা যাবে।
এই দুটি পদ্ধতি ছাড়াও ATtiny prog shield দিয়েও ATtiny85 breakout board কে প্রোগ্রাম করা যাবে।