افرادی که در برنامهنویسی مهارت دارند با مفهوم فریمورک آشنا هستند. هدف از ساخت یک فریمورک آن است که کارهای مشترک و روتینی که برنامهنویسان باید انجام دهند، یک بار صورت گیرد و در اختیار آنها قرار داده شود. از آن پس، برنامهنویس باید تنها دغدغه منطق اصلی برنامه را داشته باشد و کارهای تکراری و خستهکننده کنار گذاشته شود. اموری مانند اتصال به پایگاه داده، کنترلهای امنیتی، نوشتن توابع کتابخانهای پراستفاده و موارد متعدد دیگر در فریمورکها گنجانده میشود که برنامهنویس به محض آغاز به کار به اصل برنامه بپردازد. به این ترتیب، هم در زمان وی صرفهجویی و هم بسیاری از کارها ساده و لذتبخش میشود و در برخی موارد نیاز به دانشهای پایه کمتر شده و پروژهها سریعتر به محصول باکیفیت، کارا و با حداقل اشکال میرسند.
مفهوم معادل و همارز یک فریمورک برنامهنویسی برای افرادی که با مدارهای الکترونیکی و میکروکنترلرها کار میکنند تحت عنوان فریمورکها یا کیتهای توسعه سختافزاری موضوع بحث ما است. اگر در گذشته با میکروکنترلرها کار کرده باشید، معمولاً برای هر کدام از آنها یک نقشه خاص برای آغاز به کار وجود دارد. در ابتدای هر پروژه نیازمندیهای موجود در نقشه را تهیه و به هم وصل میکنید تا بستر لازم را برای پروژه خود فراهم کنید. بهعنوان نمونه، یک میکروکنترلر، یک اسیلاتور کریستال برای تولید فرکانس، رگولاتور برای مهیا کردن ولتاژ ایمن برای مدار، تعدادی مقاومت و خازن، جک اتصال آداپتور، صفحه کلید بهعنوان ورودی و نمایشگر دو رنگ السیدی بهعنوان خروجی نیاز داریم که همگی به ترتیب مشخص و طبق الگویی از پیش تعیین شده باید به پایههای خاصی از میکروکنترلر وصل شوند. از آن پس، میکروکنترلر آماده خواهد بود تا برای آن برنامه بنویسید و با پروگرامر آن را برنامهریزی کنید. در صورت نیاز قطعات سختافزاری دیگری را نیز به آن متصل کنید و به محصول نهایی برسید. برای افرادی که به این سبک کار کردهاند از یک جایی به بعد، این امور تکراری و خستهکننده میشود و دنبال راهکاری میگردند که کار آنها را ساده و سریع کند.
از طرف دیگر، برای افرادی که از بیرون به سر و کله زدن با میکروکنترلرها و مدارات مینگرند، این کار بسیار تخصصی و پیچیده بهنظر میرسد. حتی بسیاری از افراد این تصور را دارند که برای ورود به این حوزه حتماً باید کدهای رنگی مقاومتها و محل کاربرد ظرفیتهای مختلف از خازنها را بلد و حفظ باشند! همین نقطه، نقطه توقف آنها است و از این به بعد دیگر جرأت ادامه دادن به خود نمیدهند و ساخت مدارات کنترلی را از خود بسیار دور میبینند. حال اگر این افراد فردی را مشاهده کنند که در حال ساخت یک روبات است، وی را به شکل فردی فرازمینی با نبوغ حیرتآور تصور میکنند که به احتمال زیاد به بهترین شکل کد رنگی مقاومتها را نیز از حفظ است! ما میخواهیم همه علاقهمندان به این حوزه را به اقدام دعوت کنیم. بهویژه برنامهنویسانی که همیشه از کارهای سختافزاری و میکروکنترلری و روباتیکی فاصله گرفتهاند و همواره تواناییهایی دارند که در ترکیب با الکترونیک و مکانیک و سختافزار میتواند به محصولات باارزش و گاهی حیرتآور منتج شوند. ویژهنامهای که پیش رو دارید، یک فراخوان عمومی حتی برای افرادی بهشمار میرود که در کنار علاقه به امور سختافزاری آرزو داشتهاند برنامهنویسی را یاد بگیرند، اما همواره آن را دشوار تصور کرده و از نزدیک شدن به آن هراس داشتهاند. کسانی که گام در این راه میگذارند ممکن است در ابتدای راه فردی باشند که به برنامهنویسی و ساخت محصولات سختافزاری و روباتیک عاشقانه اما با حسرت نگاه میکردند، اما در پایان راه مشاهده کنند که محصول سختافزاری خود را با یک منطق باارزش و کاربردی در آغوش گرفته و از این وصال دچار تحیر شدهاند!
البته لازم است در همین جا تأکید کنم که منظور از گام نخست صفحه اول و منظور از پایان راه صفحه پایانی این ویژهنامه نیست. تمام صفحات این ویژهنامه روی هم میتواند در جهت گرفتن تصمیم برای برداشتن گام نخست ایفای نقش کند. مفهوم Single-board microcontroller یا بورد میکروکنترلری یک فریمورک سختافزاری برای محصولات میکروکنترلری است. در سالهای اخیر، بسیاری از افرادی که پیش از این تک تک قطعات را جداگانه تهیه و سرهم میکردند، به استفاده از این بوردها روی آوردهاند. این بوردها بستری یکپارچه با قلب تپنده یک میکروکنترلر توانمند برای طراحان محصولات سختافزاری فراهم کرده است. معروفترین این بوردها آردوینو (Arduino) یک پلتفرم منبع باز سختافزاری است که در میان دانشجویان روباتیک، الکترونیک و سختافزار و همچنین شرکتهای سازنده محصولات تجاری مبتنی بر میکروکنترلر بسیار محبوب شده است. آردوینو یک خانواده متنوع متشکل از چند مدل بورد با رویکردهای مختلف است. از دیگر خانوادههای معروف این دسته بوردها میتوان به Dwengo و Wiring اشاره کرد که هرگز به محبوبیت و معروفیت آردوینو نرسیدند. در این زمینه هر نیازی که داشته باشید و رویکرد محصول شما هرچه باشد، با احتمال قریب به یقین با جستوجو در این بوردها دستکم یک محصول متناسب با نیاز خود پیدا خواهید کرد. خانواده آردوینو و محصولات سازگار با آن بهقدری متنوع و البته چندمنظوره طراحی شدهاند که با جستوجو در آنها به این نتیجه خواهید رسید که دیگر نیازی به استفاده از میکروکنترلر به روش سنتی ندارید. اگر بخواهیم تمام این محصولات و مدلهای مختلف آن را معرفی کنیم و درباره هریک تنها چند خط بنویسیم، تردید نداشته باشید که خود فراتر از یک ویژهنامه خواهد رفت.
تنها برای نمونه به دو بورد ArduPilot و FlyDuino اشاره میکنیم که ویژه کنترل پرواز طراحی شدهاند. با این بوردها ساخت Drone و انواع روباتهای پرنده با قابلیتهای پیشرفته دیگر برای هیچکس دور از دسترس نیست. علاوه بر پرواز، در زمینههای متنوع دیگری از جمله شبکه حسگر، ارتباطات بیسیم، روبات، نور و نمایشگر، انتقال داده، ارتباط تلفنی وغیره نیز بوردهای ویژهای طراحی شدهاند و منتظر خلاقیتهای نوین شما هستند. در فرصت مناسب درباره این بوردها بیشتر سخن خواهیم گفت. همان طور که میدانید، میکروکنترلرها پردازندههایی با قدرت و حافظه محدود و مصرف انرژی بسیار پایین هستند که برای کاربردهای کنترلی استفاده میشوند. در این کاربردها معمولاً به حافظه و توان پردازشی بالا نیز نیاز نیست. در کاربردهایی که به پردازشهای پیچیده و سریع نیاز باشد، دیگر بورد میکروکنترلری پاسخگو نخواهد بود. اینجا است که مفهوم Single-board computer یا بورد کامپیوتری مطرح میشود. معروفترین و محبوبترین بورد کامپیوتری Raspberry Pi است که در تمام این ویژهنامه به معرفی این محصول توانمند پرداختهایم. این بوردها کامپیوترهای کوچکی هستند که در کف دست جا میشوند و در کنار این کوچکی، توانایی پردازش و حافظه بهمراتب بالاتر از بوردهای میکروکنترلری در اختیار ما میگذارد. به همین دلیل کاربردهای ویژه خود را یافتهاند. قلب تپنده این بوردها پردازندههایی مشابه آن چیزی است که در اسمارتفونها و نتبوکها بهکار میرود. بهعنوان مثال، Raspberry Pi به پردازنده از نوع ARM با فرکانس 700 مگاهرتز و Intel NUC Board به پردازنده Atom اینتل با فرکانس 1.46 گیگاهرتز مجهز است. از طرف دیگر، در مقابل حافظههای چند ده کیلوبایتی میکروکنترلرها حافظه بوردهای کامپیوتری چیزی در ابعاد 512 مگابایت، یک گیگابایت و حتی بیشتر است. اگر در یک بورد میکروکنترلری مفهوم پروگرام کردن وجود دارد، در یک بورد کامپیوتری سیستمعامل و اجرای برنامههای مختلف معنا پیدا میکند. گویا بین کاربری معمولی کامپیوترها و دستگاههای هوشمند سختافزاری یک فضای خالی وجود داشته است که در سالهای اخیر با این بوردها پر شده است. بورد ارزانقیمت و کممصرف Raspberry Pi از توانایی سیستمعامل لینوکس بهره میبرد. در نسل دوم این بوردها که بهتازگی معرفی شده است، بهدلیل استفاده از پردازنده چهارهستهای ARM Cortex-A7 امکان نصب ویندوز 10 نیز فراهم است. در نتیجه محصولی داریم که برای راهبری آن از قدرت لینوکس و ویندوز بهرهمندیم.
زبان برنامهنویسی Raspberry Pi همان طور که از نام آن هم میتوان حدس زد، پایتون است. البته استفاده از زبان گرافیکی و ساده اسکرچ نیز برای افراد مبتدی که قصد ورود به دنیای برنامهنویسی را دارند، امکانپذیر خواهد بود. اما هر توانایی و پشتوانهای که پایتون دارد، بهصورت تمام قد حامی Raspberry Pi خواهد بود. از آنجا که واسطهای این بورد، واسطهای استاندارد USB، HDMI، Ethernet هستند هرچه به آنها قابل اتصال باشد و توسط لینوکس پشتیبانی شود، توسط Raspberry Pi هم پشتیبانی میشود. تا همین جا پشتوانه قدرتمند این بورد، هم از نظر سختافزاری و هم سیستمعامل و برنامهنویسی بهطور کامل شفاف است. حال فرض کنید روی این بورد 40 پین همهمنظوره نیز قرار داشته باشد که بتوان از آن هر استفادهای کرد. هم میتوان به آن نمایشگر لمسی وصل کرد و هم دوربین فیلمبرداری. راه خلاقیت هموار است، شما یک بازوی مکانیکی سازگار با استانداردهای آن بسازید و به آن وصل کنید. کنسول بازی خود را طراحی کنید. چند نمونه از آن را به هم وصل کنید و آزمایشگاه همبندی کامپیوترها و پردازش موازی راهاندازی کنید. با استفاده از آردوینو روبات را به پرواز دربیاورید و با استفاده از دوربین و توان پردازشی بالا و همچنین کتابخانههای غنی پایتون، چهره افرادی که به پرواز شما نگاه میکنند، شناسایی کنید برای شما یک پیشنهاد داریم. پیش از هر چیز، این ویژهنامه را مطالعه کنید. بهدلیل اینکه میزان تصاویر آن زیاد است، مثل کتابهایی است که همیشه دوست داشتیم شبهای امتحان نصیبمان شود تا زودتر بهپایان برسد! پس از آن در اینترنت اندکی جستوجو کنید و انواع مدلها و قابلیتهای موجود در انواع بوردهای آردوینو و سازگار با آن، Raspberry Pi و حتی بوردهای دیگری نظیر BeagleBone ،Intel Galileo ،pcDuino و خانوادههای دیگر و کاربردها و قابلیتهایشان را بررسی کنید.
فرض کنید همه در جعبه ابزار شما قرار دارند و کار شما شناخت این جعبه ابزار است. اینکه بدانید چه نوع آچارهایی دارید و هر آچار برای چه مهرهای مناسب است، زمانی به کار شما خواهد آمد که به یک مهره بسته برخورد کنید. در آن زمان فوری بهیاد راهکار آن در جعبه ابزار خود خواهید افتاد. زمانی که از تنوع و کارکرد این محصولات آگاهی کافی پیدا کردید، به شما اطمینان میدهم که دهها ایده ناب و جذاب به ذهن شما میرسد که ممکن است هر کدام از آنها ارزش علمی، تجاری، کاربردی، زیستمحیطی، مراقبت از سلامت و موارد دیگر داشته باشد. آن زمان گام نخست را درست برداشتهاید. میتوانید نابترین و هیجانانگیزترین ایده خود را انتخاب کنید و برای انجام آن مصمم شوید. از آن لحظه به بعد، تنها به دنبال چیزهایی بروید که به درد آن پروژه میخورند. ممکن است مطالب جذاب زیادی پیش رویتان قرار گیرد، اما زیاد در آنها عمیق نشوید و تنها در چیزهایی عمیق شوید که در راستای پروژه شما هستند. از سایر یافتههای خود تنها در جهت تکمیل شناخت جعبه ابزار ذهنی خود استفاده کنید. اگر این ویژهنامه بهموقع به دست شما رسیده باشد، نوروزی را در پیش خواهید داشت که بهترین زمان برای برداشتن گام نخست است. اگر هم بعد از نوروز به دست شما رسیده است، سالی پیش روی شما است که میتواند آغاز یک تحول در کار و مهارت شما باشد. صمیمانه آرزو میکنم چنین سالی که با انگیزه و انرژی آغاز شده است، به نتایجی ختم شود که نه فقط خودتان، بلکه عده بیشماری از آن بهرهمند شوند.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟