فتح سرزمین‌ سیم‌ها با رزبری پای

فتح سرزمین‌ سیم‌ها با رزبری پای

فتح سرزمین‌ سیم‌ها با رزبری پای
فتح سرزمین‌ سیم‌ها با رزبری پای

تقلب Zeus:

از اونجایی که این مطلب رو دوست عزیزی نوشتن که خوره دنیای کامپیوتر و نرم‌افزار هستند ؛ لازمه برای درک بهتر کاربرد‌های احتمالی در دنیای نرم‌افزار یه سری تقلب به دوستان الکترونیکی و سخت‌افزاری برسونم شاید باعث بشه که فلسفه و کاربرد این مساله رو بهتر نشون بده.

به احتمال خیلی زیاد اسم سی شارپ ( #C ) به گوشتون آشنا باشه ! توی ایران اغلب افرادی که دستشون به کیبورد خورده خودشون رو برنامه‌نویس میدونن و اغلب مسلط به زبان برنامه‌نویسی سی شارپ هم هستند !

هیچ کسی منکر این قضیه نیست که دات نت واقعا برنامه‌نویسی برای پلتفرم ویندوزی رو ساده کرده ؛ اونقدر ساده که حتی مادربزرگ‌ها هم کدنویس شده اند 🙂  حالا فرض کنید این مقدار از راحتی رو توی دنیای متن باز لینوکس داشته باشید ؛ واقعا وسوسه کننده است ؛

شاید شما هم قبلا رزبری رو تهیه کرده باشید به امید این که بتونید روش برنامه خودتون رو بریزید اما کار کردن با لینوکس و سرکله زدن با GCC شما رو خسته کرده باشه و کلا قیدش رو زده باشید !  این مقاله دقیقا بدرد شما میخوره ؛ چون به سادگی قادر خواهید بود برنامه دلخواه خودتون رو با استفاده از دات نت کُور ( Net Core. ) بر روی هر نوع برد لینوکسی که دوست دارید بنویسید.

این که ماکروسافت پا به عرصه متن باز گذاشته ؛ واقعا جای تامل داره ؛ چرا می‌گیم ماکروسافت پا به عرصه متن باز گذاشته ؛ دقیقا بخاطر همین فعالیت های اخیرش در خصوص متن باز منتشر کردن سورس ها ، نمونش ویژوال استودیو کد ؛ یا دات نت کُور و…

Net Core. هنوز از رابط گرافیکی (GUI) پیشتیبانی نمیکنه البته قراره توی ورژن سوم GUI هم بهش اضافه بشه ؛ ولی خوب کی اهمیت میده هنوز خیلی کارها هست که میشه انجام داد ؛ دعوتتون میکنم که این مقاله و قسمت های بعدی رو مطالعه کنید.

 

قبلاً اینجا و اینجا درباره بخش‌هایی از دنیای فوق‌العاده و گسترده نرم‌افزار صحبت کردیم، و حالا نویسنده نه چندان محبوب سیسوگ بین الکترونیکی‌ها! قراره توی این مقاله توضیح بده چطور با یه حمله جانانه قسمتی از دنیای الکترونیک رو تسخیر کنیم!

معمولاً توی بحث‌های گاه و بی‌گاهی که با دوستان الکترونیکی دارم، وقتی کار به جاهای باریک میکشه و عرصه برشون تنگ میشه سریع یه برد از توی جیبشون در میارن و میگن ببین برای ما همین کافیه! همین رو وصل می‌کنیم به منبع تغذیه و پروژه کار می‌کنه، مثل شما لازم نیست کامپیوتر و سرور و n تا نرم‌افزار نصب کنیم تا بالاخره پروژه بیاد بالا!

هرچند من محکوم می‌کنم این استدلال رو اما به هر حال قسمتی از حرفشون منطقیه!

حالا ما قراره با یه لشکر کشی جانانه نات آنلی این بخش از دنیاشون رو تصرف کنیم، بات آلسو در پایان پا را فراتر بگذاریم و ادعا کنیم میتونیم پروژه‌هایی رو انجام بدیم که احتمالاً درصد زیادی از دوستان الکترونیکی حداقل به تنهایی قادر به انجامش نیستند.

 

ندای وظیفه

برای شروع نبرد اول باید جنگجویان رو معرفی کنیم.

اول از همه  لیدیز اند جنتلمنز، نیروی نفوذی ما: رزبری پای!

به لطف سیستم عامل روی این بردهای بامزه، میشه با بعضی زبان‌های برنامه‌نویسی سطح بالا برنامه نوشت و از دست پیچیدگی‌های زبان‌هایی مثل C یا ++C راحت شد.

بنابراین نیروی دوم میشه انتخاب زبانی که قابلیت اجرا بر روی رزبری پای رو داشته باشه،ما اینجا از .Net Core استفاده می‌کنیم.

و در نهایت سیستم عامل که حلقه ما رو تکمیل میکنه، هر چند سیستم عامل پیشنهادی مخصوص این بردها Raspbian هست اما میشه روی رزبری پای سیستم عامل‌های مختلفی نصب کرد.

 

نقشه حمله

نقشه ساده است، یه پروژه خیلی مقدماتی می‌نویسیم و روی رزبری پای اجرا می‌کنیم، و وقتی دشمن هنوز درگیر حمله اولیه است، ضربه نهایی رو بهش وارد می‌کنیم!

 

حمله

طبیعتاً اولین گام انتخاب برد مناسبه، از اونجایی که ما زبان برنامه‌نویسی .Net Core رو انتخاب کردیم حتماً باید رزبری پای ۲ یا ۳ رو داشته باشیم، امکان نصب .Net Core روی رزبری پای ۱ یا زیرو نیست.

من یه برد رزبری پای ۳ از بچه‌های سیسوگ قرض گرفتم!

اینجا می‌تونید لیست بعضی از سیستم عامل‌هایی که میشه نصب کرد رو ببینید، ما Raspbian Stretch Lite رو انتخاب کردیم، چون هم حجم کمتری داره و هم سبکتره و طبیعتاً منابع و انرژی کمتری مصرف میکنه. هرچند ممکنه نداشتن واسط گرافیکی برای بعضی‌ها خوشایند نباشه، شما میتونید سیستم عامل محبوب خودتون رو دانلود کنید.

 

نصب سیستم عامل روی رزبری

اول فایل فشرده رو از سایت دانلود کنید، اگه خیلی از کامند زدن خوشتون نمیاد میتونید از نرم‌افزار Etcher استفاده کنید که برای لینوکس، ویندوز و مک نسخه قابل نصب داره.

کار کردن باهاش هم اینقدر آسونه که نیازی به توضیح نیست، فایل رو انتخاب می‌کنید، درایو MicroSD رو پیدا می‌کنید و تمام.

اگه هم دوست ندارید نرم‌افزار اضافه نصب کنید، توی لینوکس میتونید از این دستور استفاده کنید:

هشدار: اگه یکم بی دقتی کنید ممکنه پارتیشن‌های دیسکتون رو بجای مموری فرمت کنید، بهتره بیشتر مواظب باشید!!

 

اول دستور زیر رو بزنید تا لیست پارتیشن‌ها رو ببینید:

که بسته به پارتیشن‌هایی که دارید ممکنه چیزی شبیه این ببینید:

نصب سیستم عامل روی رزبری

 

توی تصویر بالا دیسک مورد نظر ما mmcblk0 هستش و بعد دستور زیر رو با جایگزین کردن اسم فایل و اسم پارتیشن اجرا می‌کنیم.

 

به همین سادگی، با هر روشی که رفتید مموری رو داخل رزبری پای بگذارید و روشنش کنید.(خود من چند ساعت بخاطر استفاده از رم ریدر خراب وقتم تلف شد!)

نام کاربری و پسورد پیش‌فرض pi , raspberry هستش،

 

قبل از اینکه بریم سراغ پروژه یه کار مهم دیگه باید بکنیم و اون انجام تنظیمات شبکه برای رزبری هستش.

این دستور رو بزنید تا واسط گرافیکی به سبک صدسال پیش اما فوق العادی کاربردی رزبری رو ببینید:

واسط گرافیکی رزبری پای

 ابزار دم دستی برای اسکرین شات گرفتن تو اون محیط پیدا نکردم!

 

خیلی ساده گزینه Network Options رو انتخاب کنید، اگه بردتون Wi-Fi رو پشتیبانی میکنه که عالیه، اسم شبکه و کلمه عبورش رو وارد کنید و تمام، اگه هم از شبکه داخلی استفاده می‌کنید که آی پی رو مشخص کنید و تمام. (پیشنهاد می‌کنم اگه از کاراکترهای ویژه مثل # تو کلمه عبورتون استفاده کردید اول مطمئن بشید که کارکاتر درست رو وارد می‌کنید چون ممکنه کیبوردها مثل هم نباشند)

رزبری رو فعلاً همینجا رهاش می‌کنیم و میریم سراغ پروژه.

 

پروژه چی شد؟

البته واضح و مبرهن است که ما اینجا قرار نیست آموزش برنامه نویسی .Net Core رو قرار بدیم. اگه علاقه داشته باشید میتونید اینجا روی گیت هاب من سورس کامل پروژه رو ببینید.

فعلاً توی این قسمت از حمله، تغییر چندانی توی پروژه ایجاد نکردیم، این چند خط رو کمی توضیح میدیم:

 

 

این پروژه موقع اجرا روی پورت 5000 اجرا میشه، کل این خط‌ها میگن اگه کسی اومد و من رو با دستور GET فراخوانی کرد (مثلا توی مرورگرش آدرس localhost:5000 رو باز کرد) یه سلامی بهش برسون!

تا اینجا که روی پروژه کار مهمی نکردیم، کار مهم رو فعلاً خود .Net Core انجام میده چون میشه با منتشر کردنش برای arm-7 اون رو آماده انتقال به رزبری پای کرد!

به محل ذخیره پروژه میریم و این دستور رو میزنیم:

 

با این دستور خروجی پروژه روی فولدر \bin\Release\netcoreapp2.0\linux-arm\publish قرار میگیره، رزبری رو خاموش کنید، مموری رو مجدداً به کامپیوتر متصل کنید، یه پوشه مثلاً به اسم publish درست کنید و تمام فایل‌ها رو به اون منتقل کنید. (طبیعتاٌ اگه با لینوکس آشنا باشید میدونید که باید توی فولدر home\pi این فولدر رو ایجاد کنید)

مجدداً مموری رو داخل رزبری پای بگذارید و روشنش کنید به داخل فولدری که ساختید برید. بسته به اسم پروژه‌ای که ساخته‌اید (من اسم پروژه رو rpi گذاشتم) دستوری مشابه این را باید اجرا کنید.

اگه کانفیگ کارت شبکه رو درست انجام داده باشید میتونید توی مرورگر کامپیوترتون که احتمالاً با رزبری توی یک شبکه قرار داره، آی پی رزبری رو با شماره پورت 5000 بزنید و خروجی زیر رو ببینید:

پروژه رزبری پای

دشمن پشت دروازه شهر

اگه تونستید خروجی بالا رو بگیرید ، بهتون تبریک میگم!
اینجا، دقیقاً همینجا لحظه فروریختن اولین دژ دفاعی دشمنه! اولین پیروزی در سرزمین سیم‌ها!

 

اگه هنوز داغ هستید! باید بگم همین مرحله یعنی ما تونستیم (و طبیعتاً باز هم میتونیم!) خیلی از برنامه‌ها که نیاز به پردازش سنگین و عجیب غریب نداره رو بدون کامپیوتر و تجهیزات جانبی روی یک برد فسقلی اجرا کنیم!

و فراموش نمی‌کنیم که وقتی روی همین بردها اینترنت داریم دسترسی به دنیایی از سرویس‌های آنلاین داریم که استفاده از اون تقریباً برای برنامه‌نویس‌های الکترونیک با زبانی مثل C++ ممکن نیست.

با این حال ضربه اصلی رو در قسمت بعدی خواهیم زد!

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

8 دیدگاه

  • ضیا
    ۲۰ اسفند ۱۳۹۸

    ورود به دنیای سی شارپ شاید راحت باشه و خیلی سریع بتونید HelloWorld بنویسید اما در این مرحله کسی برنامه نویس نیست. دنیای دات نت هم پیچیدگی ها و ریزه کاری هایی داره که دیگه مادربزرگ شما نمیتونه پیشروی کنه در اون.
    نوشتن کد سی شارپ روی رزبری از نظر ماجراجویی ارزش داره. اما به درد کار اجرایی و عملیاتی نمی خوره. حتی اگر رزبری پای 4 با 4 گیگابایت رم هم داشته باشیم بازهم دات نت راه حل خوبی نیست. ما سخت افزار خوب می خریم که کار سطح بالا انجام بدیم نه از ابزارهای سنگین استفاده کنیم.

    • Zeus ‌
      زئوس Zeus
      ۲۱ اسفند ۱۳۹۸

      🙂 فکر میکنم مثالی که دوستمون مطرح کرده بیشتر به این خاطره که نشون بده دات نت چقدر کار برنامه نویسی رو ساده کرده ! که کسی هم نمیتونه منکرش بشه
      در خصوص مطلب کاربردی بودن خیلی برمیگرده به کاری که میخواد انجام بشه و نگاهی که ما به سیستم داریم !!‌

  • Arash
    ۱۲ بهمن ۱۳۹۷

    سلام خدمت نویسنده عزیز.
    من نمیدونم این مرز بندی های مندرآوردی رو کی درست کرده!؟ اون الکترونیکی که شما ازش حرف میزدین سال 1980 دیگه از بین رفت! اولا، الان هر الکترونیکی ای که برنامه نویسی بلد نباشه بدرد لای جرز دیوار میخوره. چون الان دیگه میکروکنترلر ها و میکرو کامپیوتر ها (همینی که شما باهاش نقشه حمله کشیدید) بخش اعظمی از کار ما الکترونیکی ها با اونا انجام میشه. دوما، وجود برنامه نویس ذاتا بخاطر وجود الکترونیکی هست و بهتره مخلوق همیشه شکرگذار خالقش باشه و بهش احترام بزاره و باهاش سر جنگ نداشته باشه.

    • میثم BitBird
      meisam
      ۱۳ بهمن ۱۳۹۷

      سلام
      کامنت جالبی بود!
      البته همونطور که توی متن هم اشاره شده میدونیم که دوستان الکترونیک و سخت افزاری از C یا ++C برای کد نویسی هاشون استفاده می کنند، اما مقدار تسلطی که به این زبان های فوق العاده دارند و مدل کد نویسی شون فقط اونقدر هست که کارشون رو راه بندازه و تقریبا به اون از لحاظ فنی نمیشه گفت برنامه نویسی! هرچند اینجا منظور ما برنامه نویسی با زبان های سطح بالا بوده.
      در مورد نکته بامزه دومتون هم مثل اینه که ادعا کنیم تفنگ های امروزی مدیون اون سنگی هست که قابیل تو سر هابیل زد یا برعکس!

  • کاظم
    ۱۱ بهمن ۱۳۹۷

    بیشتر در مور .net core که اینچه چی هست و باهاش چه کارها میشه انجام داد
    آیا زبان برنامه نویسیه یا فریم ورکه

    • میثم BitBird
      meisam
      ۱۳ بهمن ۱۳۹۷

      .net core یک فریم ورک هست و زبان برنامه نویسی اون #C.
      به طور معمول برای ساختن API ها برای استفاده توی سایر نرم افزارها استفاده میشه اما توی رزبری پای کارهای جالب دیگه هم میشه باهاش کرد!

  • کاظم
    ۱۰ بهمن ۱۳۹۷

    ما که چیزی سر در نیاوردیم
    لطفا در این زمینه برای علاقه متدان آموزش هایی ارائه بدید یا حد اقل منابع آموزش معرفی کنید
    باتشکر

    • میثم BitBird
      meisam
      ۱۱ بهمن ۱۳۹۷

      توی کدوم قسمت ابهام داشتید دوست عزیز؟ شاید بتونم بهتر کمک کنم
      اگه مربوط به کد نویسی .Net Core میشه ابهامتون خوب یکم مبحث طولانیه اما اگه توی نصب سیستم عامل یا درک کلی مقاله ابهامی وجود داره بفرمایید.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک