فهرست مطالب:

یک دکمه قدرت تمشک پای بهتر بسازید: 4 مرحله
یک دکمه قدرت تمشک پای بهتر بسازید: 4 مرحله

تصویری: یک دکمه قدرت تمشک پای بهتر بسازید: 4 مرحله

تصویری: یک دکمه قدرت تمشک پای بهتر بسازید: 4 مرحله
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, جولای
Anonim
Image
Image

ساختن دکمه خاموش یا خاموش کردن تمشک بسیار آسان است. بسیاری از چنین پروژه هایی در وب و چند مورد در Instructables وجود دارد ، اما هیچ یک از آنها (که من می توانم ببینم) به شما نمی گویند که Pi شما واقعاً خاموش شده است و بنابراین قطع برق مطمئن نیست. در واقع آنها حتی تصدیق نمی کنند که فشار دکمه دیده شده است.

پروژه هایی نیز برای راه اندازی مجدد Pi وجود دارد که خاموش شده است ، اما هیچ کدام بازخورد بصری به شما نمی دهند.

اما چه کسی به چنین دکمه ای نیاز دارد؟ اگر شما هم مثل من یک فرد احمق هستید یا حتی یک فرد احمق مشتاق ، همیشه می توانید به صورت محلی یا از طریق شبکه به Pi خود وارد شوید و sudo shutdown -h را تایپ کنید. اما اگر در حال ساختن پروژه ای برای کاربران غیر فنی هستید ، این کار را نمی کند. درست است که تقریباً با کشیدن سیم برق می توانید تقریباً همیشه فرار کنید ، اما توجه داشته باشید ، من تقریباً همیشه گفتم! شانس همه دیر یا زود تمام می شود. من فقط هفته گذشته یک کارت SD روی من خراب شده بود ، اگرچه هرگز نمی دانم که آیا واقعاً به دلیل قطع ناگهانی برق بوده است یا نه.

در مورد من ، من نیاز به اضافه کردن یک دکمه روشن / خاموش به Pi ای داشتیم که از آن به عنوان midi sequencer برای ضبط و پخش سرودها و آهنگ ها در کلیسا استفاده می کنیم ، زیرا زمانی که پیانیست زنده در دسترس نداریم. من همیشه می توانم دستور shutdown را تایپ کنم ، اما برای زمانی که من آنجا نیستم ، باید آن را بی مهارت کنم.

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

(در ویدیو من آن را با Pi Zero v1.2 و مانیتوری که از صفحه لپ تاپ تغییر کاربری و کنترلر از شرق دور ساخته ام نشان می دهم.)

مرحله 1: طراحی

چگونه کار می کند
چگونه کار می کند

این کاری است که دکمه پاور من برای شما انجام می دهد:

  • وقتی Pi کار می کند ، یک LED به طور مداوم روشن می شود. اگر به صورت دستی خاموش شود ، LED تنها زمانی خاموش می شود که بتوانید برق را قطع کنید.
  • در حین اجرا ، اگر دکمه را حداقل برای یک ثانیه فشار دهید ، خاموش شدن آغاز می شود و LED هر ثانیه یک ربع ثانیه چشمک می زند تا زمانی که مطمئن شوید برق را قطع کنید.
  • از حالت خاموش (در صورتی که برق قطع نشده باشد) ، با فشار دادن دکمه شروع به راه اندازی می کند و LED را در هر ثانیه به مدت یک ربع ثانیه روشن می کند تا زمانی که بوت شود. (ممکن است کمی بیشتر طول بکشد تا همه سرویس ها مانند ssh و vnc اجرا شوند.)

اجزای آن بسیار ارزان هستند. همه ی آنچه شما احتیاج دارید.. است:

  • ATTiny85 (تراشه سازگار با آردوینو)
  • 3 مقاومت: 2 x 330Ω و 1 x 10kΩ
  • 1 LED - من سبز یا آبی را پیشنهاد می کنم ، اما این انتخاب شما است
  • تخته نان و سیم های جهنده یا نوار چوبی ، یا هر طور که می خواهید آن را بسازید.

مرحله 2: چگونه کار می کند

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

تنها راهی که می توان گفت پی یک خاموش شده است تماشای TxD pin 8 است که پس از آن کم می شود. این بستگی به فعال بودن کنسول سریال دارد که به طور پیش فرض است. در واقع TxD به طور مرتب بالا و پایین می رود در حالی که از آن به عنوان یک کنسول سریال استفاده می شود ، اما هرگز در بیش از 30mS در یک زمان ، حتی در کمترین سرعت baud رایج ، هرگز پایین نمی آید. هنوز می توان از آن برای یک کنسول سریال استفاده کرد ، زیرا ما فقط آن را بصورت غیرفعال تماشا می کنیم.

برای راه اندازی مجدد ، ما باید SCL1 (پین 5) را به طور مختصر پایین بیاوریم. این پین توسط هر دستگاه I2C (از جمله رابط midi من) استفاده می شود ، اما پس از راه اندازی بوت ، آن را به حال خود رها می کنیم.

بیشتر پیچیدگی در طرح آردوینو است که ما آن را در ATTiny85 بارگذاری می کنیم. این یک "ماشین حالت" را پیاده سازی می کند - یک راه بسیار مفید و قدرتمند برای کدگذاری هر مشکلی که می تواند توسط تعدادی از "حالت ها" نشان داده شود. ماشین لباسشویی دقیقاً به همان شیوه کار می کند. حالتها مراحل چرخه شستشو را نشان می دهند و هر کدام مشخص می کند که دستگاه در آن نقطه چه کاری باید انجام دهد (موتورها یا پمپ ها باید کار کنند ، دریچه ها باید باز یا بسته شوند) و ورودی های سنسور (دما ، سطح آب ، تایمر) تعیین زمان حرکت به حالت بعدی و کدام حالت بعدی را انتخاب کنید.

طرح دستی اولین پیش نویس من از نمودار حالت است که تمام تغییرات حالت را نشان می دهد. این فقط برای این است که به شما نشان دهد چگونه می توانید در ابتدا وضعیتها و تغییرات حالت خود را برنامه ریزی کنید - ممکن است کاملاً دقیق نباشد مانند قبل از شروع اشکال زدایی.

در مورد ما ، 6 حالت داریم که من آنها را OFF ، BOOT REQUEST ، BOOTING ، RUNNING ، SHUTDOWN REQUEST و SHUTTING DOWN می نامم. (بعد از خاموش شدن مجدد ، به حالت خاموش باز می گردد.) اینها با نظرات در طرح مشخص می شوند و برای هر کدام ، نظرات بیشتر می گوید که باید چه کار کند و چه رویدادهایی آن را به حالت دیگر منتقل می کند.

برنامه کمکی که روی Pi اجرا می شود کمی پیچیده تر از اکثر دکمه های خاموش است. این دستگاه با شروع خاموش شدن به یک پالس کم بلند در پین GPIO پاسخ می دهد ، اما به یک پالس کوتاه نیز به خودی خود به طور مختصر پین GPIO را پایین می آورد. به این ترتیب ATTiny85 می تواند بگوید که در حال اجرا است و بنابراین می تواند از حالت BOOTING به حالت اجرا برسد.

مرحله 3: ساخت نمونه اولیه نمایشی

ساخت نمونه اولیه نمایشی
ساخت نمونه اولیه نمایشی
ساخت نمونه اولیه نمایشی
ساخت نمونه اولیه نمایشی
ساخت نمونه اولیه نمایشی
ساخت نمونه اولیه نمایشی

برای مقاصد نمایشی ، می توانید آن را روی یک تخته نان بدون لحیم همانطور که نشان داده شده است نمونه اولیه کنید ، اما من شماتیک را نیز در اختیار شما قرار داده ام تا بتوانید طرح مورد نظر خود را با استفاده از نوار چسب یا یک PCB سفارشی انجام دهید ، شاید بخشی از یک پروژه گسترده تر باشد.

مرحله 4: برنامه نویسی ATTiny85

طرح آردوینو و برنامه کمکی به این مرحله ضمیمه شده است. در پوشه طرح های Arduino خود ، پوشه ای به نام PiPwr ایجاد کرده و فایل PiPwr.ino را در آن کپی کنید. با راه اندازی Arduino IDE ، اکنون آن را در دفتر طرح خود پیدا خواهید کرد.

روشهای مختلفی برای برنامه نویسی ATTiny85 وجود دارد. اگر بوت لودر نصب شده است ، می توانید از تابلوی توسعه ATTiny85 استفاده کنید که تنها چند پوند هزینه دارد. این از طریق پورت USB به رایانه شما متصل می شود. من از یک Hidiot استفاده کردم که در اصل یکسان است اما دارای یک منطقه نمونه اولیه است.

در Arduino IDE در قسمت File - Preferences ، اضافه کنید

digistump.com/package_digistump_index.json

به URL های مدیران تابلوهای اضافی.

در قسمت Tools - Board اکنون باید تعدادی از گزینه های Digispark را مشاهده کنید. Digispark (پیش فرض - 16.5 مگاهرتز) را انتخاب کنید.

اگر ATTiny85 شما بوت لودر ندارد (یا نمی دانید) ، می توانید با چند پوند یک برنامه نویس AVR ISP تهیه کنید. یا می توانید از Arduino Uno یا Pro Mini ارزان تر یا Nano به عنوان برنامه نویس استفاده کنید. برای دستورالعمل ها "arduino as isp attiny85" (بدون نقل قول) را جستجو کنید.

اگر می خواهید طرح را اصلاح کنید ، آن را کاملاً کامنت می کنید و امیدوارم دنبال کنید. برای اشکال زدایی استفاده از Arduino Pro Mini یا Nano بسیار ساده تر است. serial.begin () را در Setup و دستورات print را در حلقه () کامنت نگذارید تا مراحل استفاده از مانیتور سریال را مشاهده کنید. تعاریف پین متناوب در منبع وجود دارد که برای Uno ، Pro Mini یا Nano توضیح داده شده است.

در Raspberry Pi خود ، فایل shutdown_helper.py را در پوشه/etc/local/bin کپی کرده و با دستور آن را به عنوان اجرایی تنظیم کنید

sudo chmod +x /usr/local/bin/shutdown_helper.py

اکنون فایل /etc/rc.local را با ویرایشگر مورد علاقه خود ویرایش کنید. (شما باید این کار را به عنوان root انجام دهید.) قبل از آخرین خط (خروج 0) خط را وارد کنید

nohup /usr/local/bin/shutdown_helper.py &

راه اندازی مجدد ، و برنامه کمکی به طور خودکار شروع می شود.

توصیه شده: