مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

روزنوشت های یه مهندس تازه کار

مهندسی طور

تا حالا به این فکر کردین که تو یه سیستم کامپیوتری GPU چقدر کارآمد و مهمه ولی به اندازه CPU شناخته شده نیست.یه جورایی همون "مجهولون فی الارض معروفون فی السماء" که میگن!
یه حسی بهم میگه کاش بتونم مثه GPU باشم :)

۱۰ مطلب با موضوع «Tips & Points» ثبت شده است

پیاده سازی ارتباط SSH

جمعه, ۸ مرداد ۱۴۰۰، ۱۱:۲۶ ب.ظ

سلام!

 

همونطور که احتمالا میدونید رزبری پای وقتی برای اولین بار سیستم عامل رو روی SD کارتش میریزی و بوت میکنیش بهت اجازه ارتباط از طریق SSH رو نمیده و برای اینکه این دسترسی رو فعال کنی باید مانیتور و ماوس به بردت وصل کنی و اونموقع از تو تنظیمات سیستم این قابلیت رو فعال کنی.خب حالا اومدیم یه بابایی مانیتور و ماوس نداشت در لحظه.تکلیف چیه؟!

 

راهکار سادس.باید SD کارت مذکور رو تو سیستم لبتابت مثلا باز کنی و یه فایل خالی با نام SSH در قسمت boot بسازی.توجه کن اسم این فایل هیچ پسوند و پیشوندی نباید داشته باشه.حالا به سادگی میتونی ارتباط SSH رو با رزبری برقرار کنی و کلی کیف کنی باهاش :)

  • Saeid

ساخت مدارچاپی تو خونه!

پنجشنبه, ۵ فروردين ۱۴۰۰، ۰۷:۰۹ ب.ظ

سلام!

تو این روزا تصمیم گرفتم برا اینکه یه تنوعی ایجاد بشه و یه کار مفید هم بین این همه وقت تلف کنی انجام بدم برد مربوط به فرستنده ربات رو که قبلا طرح اولیه اش رو ریخته بودم پیاده سازی کنم.بعد کشیدن برد تو easyeda و خروجی گرفتن ازش بعد کلی مصیبت بالاخره برد رو ساختم و کار تمیزی هم از آب دراومد ولی یه سری چیزا یادگرفتم که اینجا میگم!

- برای طراحی برد خروجی PDF رو کهمیبرید برای چاپ بعضا میان روی صفحه A4 فیت میکنن که خب باعث میشه ابعاد بردتون همون ابعاد اصلی نباشه بنابراین برای جلوگیری از این موضوع میتونید از کسی که پرینت میکنه بخواید گزینه actual size رو انتخاب کنه که این مشکل پیش نیاد.از طرفی راهکاری که من خودم استفاده کردم این بود که از PCB بردم اسکرین شات گرفتم(البته بعد اینکه خروجی PDF گرفتم از رو اون PDF عه اسکرین شات گرفتم) و بعدش تو یه فایل ورد insert کردمش.نکته ای که هست اینه که ورد اجازه میده ابعاد عکس رو تغییر بدیم و منم همین کار رو کردم و ابعاد واقعی بردم رو وارد کردم.البته این راهکار باعث میشه وضوح مقداری کاهش پیدا کنه که همین مطلب تو فرایند ساخت PCB ممکنه دچار اشکال کنه کار رو.

- تو بردهای دست ساز خونگی به هیچ وجه از Polygun استفاده نکنید و یا هم اگه مجبور به استفاده هستید حتما spacing مناسبی رو در نظر بگیرید چون مشکلی که من خودم با بردم دارم همینه که این فاصله رو رعایت نکردم و یه جاهایی از برد متاسفانه ترک ها به پلی گان اتصال پیدا کردند و خب هیچی دیگه :/

- ضخامت ترک ها رو به نحو مناسب انتخاب کنید.ترک هایی که ضخامت خیلی کم داشته باشند و یا فاصله شون باهم کم باشه احتمال اتصالشون وجود داره.

- ترجیحا ترک ها رو از بین پدها و یا hole ها عبور ندید.تو بردی که من زدم همین داستان سبب اتصال کوتاه شده :(

 

خب برم ببینم با این بردی که ساختم چی کار میتونم کنم!
 

  • Saeid

پروگرام میکرو خارجی با STlink روی بردها

سه شنبه, ۳ فروردين ۱۴۰۰، ۱۲:۴۰ ق.ظ

سلام!

در ادامه اکتشافات امروزم :) تصمیم گرفتم برنامه نویسی میکرو رو با STlink روی برد دیسکاوری که دارم هم انجام بدم ببینم چی میشه.اینبار هم شکر خدا مشکل زیادی وجود نداشت و انجام شد.یه بار با نرم افزار Stlink utility که خب نرم افزار جانبی برای پروگرام میکروهای ST هستش انجام دادم ولی خب سرعت بالایی نداشت به همین خاطر رفتم سراغ پروگرام از طریق خود Keil که اونم اوکی شد و تونستم پروگرام رو انجام بدم.نکته ای که به نظرم مهم بود اینه که تو این روش فقط دو سیم SWDIO و SWCLK به همراه تغذیه و زمین کافیه برای پروگرام میکرو و نیازی به پایه ریست هم نیست حتی!

 

  • Saeid

پروگرام کردن میکروی stm32 با رابط سریال

دوشنبه, ۲ فروردين ۱۴۰۰، ۱۰:۵۸ ب.ظ

سلام!

برای ریختن برنامه روی میکروهای ST با کمک رابط سریال(UART) تنها چیزی که لازمه یه مبدل usb to serial هستش که لازمه چهارتا پینش رو (تغذیه و زمین و Tx و Rx) رو به پین های معادل در میکرو متصل کنیم و بعد هم با کمک نرم افزار Flash loader شرکت ST برنامه مطلوبمون رو که فایل hex ش رو ساختیم روی میکرو پروگرام کنیم.این نرم افزاره کارای دیگه ای هم میکنه که اینجا موضوع بحث نیست.یه سری نکته رو هم باید رعایت کرد که میگم اینجا :

اول اینکه دقت کنید تغذیه خروجی مبدل روی 3.3 ولت تنظیم شده باشه(بعضی از این مبدلا یه جامپر دارن که با تغییر اون میتونید تغذیه رو بین 5 ولت و 3.3 ولت عوض کنید)

مساله بعدی اینه که تو این روش فقط پورت سریال به خصوصی از میکرو رو باید به مبدل وصل کنیم و بقیه پورت ها نمیتونن کار برنامه ریزی میکرو رو برامون انجام بدن (اینو خودم تست کردم نتونستم با پورت های دیگه پروگرام کنم و تو میکرو stm32f103c8 پورت مدنظر شماره یک هستش.)

از قرار معلوم برای اینکه این نرم افزاره میکرو رو بشناسه و روش برنامه بریزه لازمه که میکرو از System memory بوت بشه و برای همینم باید پین های بوت رو در میکرو ولتاژهای خاص بدیم(تو موردی که من کار میکردم پین Boot0 رو به 3.3ولت و پین Boot1 رو به زمین متصل میکنیم تا میکرو از حافظه سیستم - و نه حافظه فلش داخلی - بوت بشه.)

یه وقتایی این میکروهه بازی در میاره و همه چی هم درسته ولی به نرم افزاره جواب نمیده که تو این حالت راهکاری که برا من کار کرد قطع و وصل تغذیه میکرو بود.

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

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

  • Saeid

حل مشکل نرفتن Blue Pill به حالت Boot

دوشنبه, ۲ فروردين ۱۴۰۰، ۰۸:۲۰ ب.ظ

سلام!

امروز بعد مدتها اومدم به Blue Pill یه سر بزنم ببینم میتونم راش بندازم یا نه.اولش کلی داستان درست کرد ولی بالاخره راه افتاد.دوستانی که طراحی این برد رو انجام دادن اومدن یه مقاومت گردن کلفت (100 کیلو) گذاشتن سری با پین Boot0 این برده و تو هم اگه بخوای از طریق بوت برنامه رو روش دانلود کنی داستان درست میشه.چرا؟چون این مقاومته تمام ولتاژ رو دو سر خودش میندازه و نتیجتا چیزی به پایه بوت نمیرسه و در نهایت هم میکرو بوت نمیشه و خب تو هرچی زور میزنی نرم افزار نمیتونه برنامه رو روی حافظه فلش میکرو بریزه.حل مساله راهکار جالبی داشت.کافی بود این مقاومته (R3 برای اونایی که مشکل مشابه دارن) رو شورت کنی بعدش مشکل کامل حل میشه.البته برای احتیاط میتونی یه مقاومت 100 اهمی مثلا سری کنی که جریان زیادی نکشه میکرو ولی من بدون اونم تست کردم مشکلی نداشت.خلاصه که این دوستمون امروز کلی وقت گرفت تا راه افتاد ولی چیزای خوبی بهم یاد داد :)

  • Saeid

سرویس ngrok

دوشنبه, ۳ شهریور ۱۳۹۹، ۱۰:۲۱ ب.ظ

سلام!

شاید براتون پیش اومده باشه که تو یه پروژه بخواید از دوتا پورت یه سرور به صورت همزمان استفاده کنید و داده هاتون رو نه از طریق شبکه محلی که از طریق اینترنت و در بستر TCP انتقال بدید.اولین مساله ای که بهش برخورد خواهید کرد داستان فایروال سیستم هستش که اجازه نمیده ترافیک داده از خارج شبکه محلی به داخل شبکه راه پیدا کنه.راهکار اصولی این مساله استفاده از روش Port Forwarding هستش که با تغییر تنظیمات روتر بهش میگید که مثلا از فلان آیپی ترافیک های خارج شبکه رو به داخل شبکه راه بده ولی داستان اونجا پیچیده میشه که بخواید از ماژول های مخابراتی مثه SIM800 استفاده کنید که همونطور که میدونید این ماژول ها رو نمیشه به این راحتی برای Port Forwarding تنظیم کرد همینه که دست به دامن سرویس هایی مثه ngrok و portmap میشیم که یه جورایی همون کار پورت فورواردینگ رو برامون انجام میدن.

خب حالا اگه شما بخواید دو پورت رو به صورت همزمان فوروارد کنید ممکنه اولین ایده این باشه که دو پنجره جداگونه باز کنید و به این ترتیب دوبار از ngrok همزمان استفاده کنید ولی اگه این کار رو انجام بدید خواهید دید که این امکان رو بهتون نمیده :/

راهکار این داستان خیلی سادست.کافیه ویدئوی زیر رو ببینید :)

https://www.youtube.com/watch?v=EciDB0lKk5Q

  • Saeid

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

شنبه, ۱ شهریور ۱۳۹۹، ۰۶:۱۲ ب.ظ

سلام!

گاها پیش میاد که وقتی برد آردوینو رو به لبتاب متصل میکنید تو IDE آردوینو پورت مربوط به بورد رو شناسایی نمیکنه و وقتی هم به Device Manager سر میزنید میبینید مشکل اساسی تر از این حرفاس و گویا اصلا آردوینو شما به عنوان یه COM Port شناسایی نشده :/

من تقریبا یک روز کامل رو صرف کردم تا دلیل این موضوع رو پیدا کنم.تو فروم های مختلف خیلی گشتم ولی کمتر چیز به دردبخوری پیدا شد تا اینکه لینک زیر رو پیدا کردم.دلیل این موضوع تا جایی که من فهمیدم اینه که فریمور اون میکروکنترلر ATMEGA16 که به عنوان واسط بین میکروی اصلی برد و PC عمل میکنه دچار مشکل شده ولازمه آپدیت کنیمش.برای حل این مشکل تو همین لینک به صورت کامل مراحل توضیح داده شده.فقط نکته ای که هست اینه که وقتی میخوایم از نرم افزار FLIP برای آپدیت اون فریمور استفاده کنیم قبل از هرکاری لازمه Target Device مون رو ATMEGA16u2 انتخاب کنیم در غیر این صورت ارتباط مون با برد برقرار نمیشه و نمیتونیم فریمور رو روی برد آپلود کنیم.

من این کار رو انجام دادم و شکر خدا کاملا مشکل حل شد.لینکی هم که گفتم اینه :

https://www.arduino.cc/en/Hacking/DFUProgramming8U2

  • Saeid

راه اندازی SIM800

سه شنبه, ۲۸ مرداد ۱۳۹۹، ۰۹:۵۶ ب.ظ

سلام!

بالاخره بعد مدت ها کنکور رو هم دادیم رفت و تونستم یه ذره به چیزایی که علاقه دارم بپردازم.یکی از اونا هم پروژه کارشناسیم بود.به نظرم جذاب ترین واحدی که تو کل دوره کارشناسی برداشتم همین پروژه بود که واقعا ایده جالبی داره و خب اینجا فرصت توضیحش نیست :)

تو پروژه سر یه داستانی مجبور بودم ماژول مخابراتی SIM800C رو راه اندازی کنم و باهاش دیتا دریافت کنم.اونایی که با این ماژول آشنایی دارن میدونن که راه اندازیش اگه چم و خم کار رو بلد نباشی(دقیقا مثه من!)میتونه دست کم یک هفته وقتت رو بگیره.

ماژول رو از سایت eca سفارش دادم با یه سری خرت و پرت دیگه و امیدوار بودم همون روز اول بتونم داده روش ارسال و دریافت کنم :)

بعد اینکه اتصالات رو انجام دادم دیدم ماژول مثه اینا که یه چشمشون مشکل داره یه ذره چشمک زد و بعدش خاموش شد :/ فک کردم شاید مشکل از ماژوله ولی هیچ دلیلی وجود نداشت ماژول کار نکنه واقعا.خلاصه بعد کلی گشتن و خوندن فروم ها فهمیدم درد اصلی این تیپ ماژول ها پیک های جریانی (حدود 2 آمپر) تو زمان های مشخص (مثلا وقتی میخواد به شبکه وصل شه) هستش که خیلی از منابع جریانی نمیتونن این تیپ جریان ها رو تامین کنن و همین میشه که ماژول ریست میشه ولی من هرچی بررسی کردم این مشکل هم نبود تا اینکه بالاخره تو یکی از گروه های تلگرامی که اصلا فکرش رو هم نمیکردم تونستم راه کار رو پیدا کنم.مشکل خیلی ساده بود :)

مساله نه از ماژول بود و نه از منبع بلکه از واسط این دوتا ینی Bread board که اونجور که من فهمیدم نمیتونه این جریان های ترنزینت رو انتقال بده و همین هم باعث میشه ماژول حالش خراب شه.اومدم برد بورد رو از این بین برداشتم و ماژول رو مستقیم به خروجی رگوله شده منبع وصل کردم و دیدم ماژول مثه بنز داره کار میکنه و مشکلی نداره!

 

بالاخره راه افتاد به لطف خدا :)))

  • Saeid

تابع printf در برنامه نویسی میکرو

جمعه, ۲۷ تیر ۱۳۹۹، ۱۱:۰۵ ق.ظ

معمولا این تابع رو تو برنامه نویسی های کامپیوتری استفاده میکنن و هدف هم چاپ مقدار یه متغیر تو کنسول خروجی هستش ولی تو برنامه نویسی سخت افزار میشه از این تابع به همراه تابع کمکی fputc برای ارسال رشته ورودی به پورت سریال میکرو استفاده کرد.برای اطلاعات بیشتر میتونید تو قسمت مثال های شرکت ST بخش UART برنامه fprintf رو ببینید.این مثال ها داخل ریپوزیتوری برنامه Cube موجود هستش.

  • Saeid

افزودن یه فایل به پروژه

جمعه, ۲۷ تیر ۱۳۹۹، ۱۰:۴۸ ق.ظ

اگه شما بخواید ماژولار کد بنویسید معمولا توابعی که میخواید طی برنامه استفاده کنید رو داخل یه هدر فایل تعریف میکنید و تعریف اصلی اون تابع رو هم داخل یه فایل c قرار میدین و در نهایت این هدر فایل رو تو پروژه اصلیتون include میکنید.مساله اینه که اگه این هدر فایل یا اون فایل c تو یه فولدر که شما ساختید (حتی داخل دایرکتوری پروژه) قرار بگیرن به احتمال زیاد برنامه نمیشناسه اینا رو و استفاده از توابع تعریف شده تو این فایل ها با مشکل مواجه میشه.

برای حال این مشکل لازمه برید تو قسمت تنظیمات پروژه و از اونجا دایرکتوری هدرفایل و دایرکتوری فایل c که تعریف کردید رو به کامپایلر معرفی کنید تا این دایرکتوری ها رو هم برای پیداکردن تعریف توابع برنامه جستجو کنه.

  • Saeid