نحوه پروگرام کردن آردوینو و میکروکنترلر AVR توسط Raspberry Pi 3
شاید تا به حال متوجه ی مشکلی در کار با رزبری بخصوص زمانی که از GPIO های رزبری استفاده میکنید شده اید. این مشکل عدم وجود سخت افزاری برای تایمرها ،کمبود GPIO ها و…میباشد. البته برای حل هریک از این مشکل ها یا به عبارت صحیح تر محدودیت ها راه حل های همچون استفاده از ماژول ها ی جدا گانه (مثلا برای تایمر از RTC و …) در مجله های منتشر شده پیشنها شده است. اما هیچ یک نمیتواند ما (طراحان سیستم های دیجیتال ) را به اندازه ی استفاده از آردینو ویا میکرو کنترلر در حل این محدودیت ها راضی نگهدارد. این مسئله زمانی جالب توجه میشود که بتوانیم از طریق رزبری، توسط GPIO های رزبری و بصورت مستقیم بردهای آردینو ویا میکرو کنترلرها را پروگرام کنیم. شاید خوشحالتر هم بشوید، وقتی که از این به بعد میتوانید در رزبری IDE مخصوص آردینو را نصب کنید. از ترکیب این دو برد با هم ویژگی ها وکاربردهای جدیدی برای رزبری ایجاد میشود!
ابتدا IDE مخصوص آردینو را با دستور زیر در رزبری نصب کنید.
sudo apt-get install arduino
کمی منتظر بمانید و پس از اتمام مراحل نصب به منوی سیستم عامل خود بروید و در قسمت Preferences برنامه ی خود را اجرا کنید.
برای پروگرام کردن میکرو کنترلر و برد آردینو میتوانید از برنامه ای به نام avrdude در رزبری خود استفاده کنید. این برنامه طراحی شده برای سیستم عاملهای مبتنی بر لینوکس است و به شما این امکان را میدهد که با استفاده از GPIO های رزبری و بدون احتیاج به هیچ واسطه ای برنامه های خود را بر روی انواع میکرو کنترلرها پروگرام کنید.
نصب avrdude:
اولین چیزی که نیاز دارید نصب چند پیش نیاز نصب avrdude بروی رزبری است. با دستورات زیر میتوانید این پیش نیاز ها را بروی رزبری نصب کنید.
sudo apt-get update sudo apt-get install bison flex -y
حالابا دستور زیر در ترمینال برنامه ی avrdude را از منبع اصلی به صورت یک فایل فشرده دانلود کنید و با دستورات بعدی فایل فشرده را از حالت فشرده سازی شده خارج و به دایرکتوری برنامه ی avrdude بروید.
wget http://download.savannah.gnu.org/releases/avrdude/avrdude-6.2.tar.gz tar xfv avrdude-6.2.tar.gz /cd avrdude-6.2
حالا دستورات زیرا در ترمینال وارد کنید تا مراحل نصب کامل شود.
configure – -enable-linuxgpio/. make sudo make install
اجرای این دستورات ممکن است چند دقیقه طول بکشد .شکیبا باشید….
از آنجایی که نرم افزار avrdude برای پروگرام کردن میکرو کنترلر ها از پروتکل SPI استفاده میکند، ابتدا باید این پروتکل را توسط ابزار پیکربندی raspmanager فعال کنید و همچنین شماره ی پین های این پروتکل را که بروی GPIO های رزبری قرار دارد، در فایل های مربوط به تنظیمات نرم افزار avrdude وارد کنید.
ابتدا فایل مربوط به تنظیمات نرم افزار را با دستور زیر اجرا کنید.
sudo nano /usr/local/etc/avrdude.conf
با کلید pgdn در کیبورد به انتهای فایل باز شده بروید (البته فایل طولانی است) و دستورات زیر را تایپ کنید.
programmer id = "linuxgpio"; desc = "Use the Linux sysfs interface to bitbang GPIO lines"; type = "linuxgpio"; reset = 4; sck = 11; mosi = 10; miso = 9;
برای تست برنامه مطمئن شوید که مراحل نصب را به درستی طی کرده اید. دستور زیرا در ترمینال وارد کنید.
sudo avrdude -c linuxgpio -p atmega328p –v
بعد از اجرای دستور بالا باید در صفحه اطلاعاتی از تنظیمات avrdude نمایش داده میشود. در انتهای نوشته های ظاهر شده باید عبارتی همانند عبارت پایین برای شما نمایش داده شود. بخصوص قسمت های که با رنگ قرمزمشخص شده اند.
Programmer Type : linuxgpio Description : Use the Linux sysfs interface to bitbang GPIO lines Pin assignment : /sys/class/gpio/gpio{n} RESET = 4 SCK = 11 MOSI = 10 MISO = 9 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: safemode: hfuse reads as DE avrdude: safemode: efuse reads as FD avrdude: safemode: hfuse reads as DE avrdude: safemode: efuse reads as FD avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF) avrdude done. Thank you.
پرو گرام برنامه ی چشمک زن نمونه بروی آردینو UNO :
برای پروگرام کردن برنامه بر روی آردینو باید فایل .hex برنامه را داشته باشید. برای بدست آوردن این فایل ابتدا وارد IDE مخصوص آردینو شوید. سپس وارد مسیر File> Preferences و تیک Compilatior را مطابق شکل زیر فعال کنید.
به قسمت File>Examples>Basics>Blink بروید و برنامه ی چشمک زن را انتخاب کنید.
برای ایجاد یک فایل hex از پروژه باید یک بار پروژه ی خود را کامپایل کنید و برای پیدا کردن دایرکتوری فایل hex پروژه ی خود به پایین صفحه بروید و نام و مسیر فایل .hex پروژه ی خود درا در جایی یاداشت کنید و در انتها از دستور زیر که شامل نام و مسیر فایل .hex است برای پرو گرام آردینو استفاده کنید.
دستور پرو گرام برنامه:
sudo avrdude -c linuxgpio -p atmega328p -v -U flash:w:/tmp/build1387616020539064052.tmp/Blink.cpp.hex:i
البته قبل از پرو گرام برنامه باید سیم بندی و ارتباطات رزبری با آردینو را با دقت انجام دهید.
توجه : پس از پرو گرام برنامه باید LED روی برد ویا پین 13 آردینو هر یک ثانیه خاموش و روشن شود.
اتصالات بین رزبری و آردینو:
پروگرام میکرو کنترلر توسط رزبری:
اگر استفاده از برد آردینو کمی گرانتر برای شما تمام میشود میتوانید از IDE آردینو برای پروگرام کردن میکرو کنترلر ها استفاده کنید. مراحل پروگرام میکرو کنترلر همانند پرو گرام کردن میکرو آردینو میباشد وبا دستور بالا میتوانید برنامه را در میکرو پرو گرام کنید.
توجه کنید که میکرو کنترلری را که میخواهید آنرا پرو گرام کنید باید مطابق میکرو کنترلر بردی باشد که برای آن در محیط IDE آردینو برنامه نوشته اید. در اینجا میکرو کنترلر برد آردینو UNO میکرو کنترلر ATMEGA328 میباشد.
اتصالاتی که برای پرو گرام کردن برنامه ی در میکرو کنترل ATMEGA328 دارید در شکل پایین آمده است.
نویسنده: میثم سعیدی msimeysamsaeedi @ gmail.com