معرفی
توی قسمت اول مقاله تونستیم یک پروژه آزمایشی رو با یه زبان سطحبالا روی برد رزبریپای راهاندازی کنیم. حالا قبلاز اینکه حمله نهایی رو انجامبدیم درباره این فکر میکنیم که تااینجا کاری که انجامدادیم چقدر اهمیت داشته.
کار چندانمهمی نکردیم
اگه یکم بدبین یا بهقول فرنگیها پسیمیست باشیم، از یک زاویه خاص این حرف خیلی هم اشتباه نیست. واقعیتش اینهکه ما هنوز داریم بهصورت معمولی برنامهنویسی خودمون رو انجام میدیم و شاید فقط بشه گفت توی هزینههامون صرفهجویی کردیم! یعنی جایاینکه هزینه خرید کامپیوتر و سرور یا اجاره VPS پرداختکنیم روی یک برد نسبتاً ارزانقیمت پروژه رو اجراکردیم، ولی تغییر ماهوی هنوز اتفاق نیفتاده.
کار مهمی کردیم
چطور کار مهمی نکردیم؟ دقیقا مثل تصویر مقاله اول(تصویر واقعی از D-Day برای کسانی که مثل خود من علاقهبه موضوعات مربوطبه جنگ جهانی دارند!) این فقط تصرف ساحل نرماندی نیست، مقدمهای هست برای پیروزیهای بعدی!
حمله اصلی چیه؟
هرچند احتمالاً باید قابلحدس باشه اما حمله اصلی ما از روی اون ماسماسکهای سوزنی روی برد که بهشون پین میگن اتفاق میفته!
ما سعی میکنیم بتونیم با همون زبان سطح بالا پینها رو کنترلکنیم، مقدار بدیم و یا مقادیرشون رو بررسیکنیم.
و این تقریباً یعنی تمام کاری که الکترونیکیها میتونند با رزبریپای انجام بدهند، با اینتفاوت که ما ابزار بهتری داریم. پیروزی با ماست رفقا!
خطر تخصصیشدن مطلب، با دنده سنگین حرکتکنید!
البته که من قرار نیست درباره سورس و نحوه نوشتن پروژه توضیحبدم(هرچی نباشه ناسلامتی اینجا یه وبلاگ الکترونیکیه!) و مثل همیشه کسانی که علاقه داشتهباشن میتونند سورس کامل رو اینجا روی گیتهاب من ببینند اما چندخط اون رو برای نمونه قرار میدم.
[HttpGet("on/{pinNumber}")] public IActionResult SetPinOn(int pinNumber) { var pin = Pi.Gpio[pinNumber]; pin.PinMode = GpioPinDriveMode.Output; pin.Write(true); Console.WriteLine("Set pin "+pinNumber +" on"); return Ok(); }
همین چندخط نشونمیده ما از کتابخونهای استفادهکردیم که تونستیم به پینهای GPIO دسترسی پیداکنیم و با دریافت شماره پین از کاربر میتونیم اون رو فعالکنیم. برای سادگیبیشتر از متد GET استفادهشده، یعنی اگه ما چندتا LED رو متصلکنیم به پایههای رزبریپایمون، با واردکردن چیزی شبیه این توی مرورگرمون میتونیم هرکدوم که دوستداشتیم رو روشنکنیم!
منظور از [RP IP] آیپی رزبری شما توی شبکه هست
[RP IP]\on\2
همینطور دوتا تابع دیگه قراردادم که تقریباً بههمین صورت عمل میکنه اگه جای کلمه on کلمه off رو قراربدین پین موردنظرتون رو غیرفعال میکنه و اگه از کلمه status استفادهکنید وضعیت فعلی پین رو بهتون توی خروجی نمایش میده.
[RP IP]\off\2 [RP IP]\status\2
خوب دیگه مگه چیز دیگهای هم لازمداریم؟ نکتهمهم خیلیاز کتابخونههایی که کمک میکنه زبانهای سطح بالا با GPIOها ارتباط بگیرند براساس این کتابخونه نوشتهشدند(http://wiringpi.com) و نکتهی مهمی این جاست که ایشون بهدلایلی که خودش توضیحش رو داده تصمیمگرفته شمارهگذاری رو برای پینها انتخابکنه که با شمارهگذاری استاندارد و رسمی رزبریپای متفاوته! یعنی اگه مثلاً پین شماره ۲ رو فعال میکنید باید LED مربوط رو براساس این نقشه به پین متصلکنید نه اونیکه رزبریپای اعلامکرده! البته نهایتاً توی نتیجه تأثیر نمیگذاره اما باعث یکی دو روز تلفشدن وقت من شد!
پیروزی…!
جنگجهانیدوم با انفجار بمب اتمی توی هیروشیما و ناکازاکی تمومشد و جنگ ما با روشنکردن LED روی بردبورد!
اینجا دقیقاً جایی هست که توی قسمت اول وعده داده بودم! ما الان کارهایی رو میتونیم با رزبریپای انجامبدیم که تقریباً برای اکثر مهندسین الکترونیک ممکننیست! مثلاً شما بگید من لازمدارم با تلفن همراهم درخواست بدم که دوربینی که به رزبریپای متصلشده عکسبگیره و همون لحظه روی مثلاً سرور گوگل آپلودش کنه تا بتونم ببینمش، چقدر طول میکشه؟ یا مثلاً هرموقع دکمهای که بهش وصلشده فشاردادهشد بررسی کنه چه ایمیلهایی براش ارسالشده و متنشون رو چاپکنه! جواب احتمالی خیلیاز اونها یا ممکنه ازلحاظ قیمت و مدت، برق از سر شما بپرونه و یا جواب هرگز باشه! درحالیکه برای برنامهنویس نسبتاً خوب .Net Core نباید زمان زیادی بگیره، و اون لحظه شیرین پیروزیه!
این پایان تلخ مهندسین الکترونیکه؟
البتهکهنه! یادتونباشه درسته که آلمانها جنگ جهانی دوم رو باختند اما هنوز هم توی آلمان پر از آلمانیه! کسانیکه پروژههایی توی سبک مثالهای بالا دارن احتمالاً برای انجام کارهاشون به الکترونیکی ها مراجعه میکنند چون از نظرشون این یه کار الکترونیکیه نه نرمافزاری و نرمافزار یعنی فقط برنامه ویندوز و موبایل! بنابراین هنوز بازار دست اونهاست و طول میکشه تا شما بتونید رابطههایی رو پیداکنید که پروژههای مناسب توی این زمینه بگیرید. مشکلدوم اینهکه بردهای رزبریپای با وضع فعلی مملکت کمکم دارند بزرگترین مزیتشون یعنی قیمت پایین رو از دست میدن، وقتی خرید یک برد رزبری پای ۳ در حدود ۴۰۰-۵۰۰هزارتومان قیمت داشتهباشه(تازه اون هم فعلا!) احتمالاً منطقینیست برای کاری که مثلاً نیازبه ۲۰ برد رزبریپای داره به ما مراجعهکنه و فکر میکنم طراحی یک برد توسط بچههای الکترونیک هزینه کمتری داشتهباشه(یا شایدهم اینطورنباشه!) اما اصلاً ناامیدکننده نیست! چون همچنان ما برتری ویژه خودمون رو داریم، کارهایی با رزبریپای و اینترنت میتونیم انجامبدیم که از توان مهندسین الکترونیک خارجه، پس احتمالاً با خوندن این مقاله یا تصمیم به یادگیری زبانهای سطحبالا میگیرند و یا برای پروژههایی که بهشون مراجعهشده به مهندسین نرمافزار مراجعه میکنند! تا اونموقع ما کلی کار هیجانانگیز داریم برای انجامدادن با رزبریپای دوست داشتنیمون!
منبع: سیسوگ