فهرست مطالب:

یک نور تنفسی کنترل شده توسط Raspberry Pi: 5 مرحله
یک نور تنفسی کنترل شده توسط Raspberry Pi: 5 مرحله

تصویری: یک نور تنفسی کنترل شده توسط Raspberry Pi: 5 مرحله

تصویری: یک نور تنفسی کنترل شده توسط Raspberry Pi: 5 مرحله
تصویری: BTT Octopus V1.1 - Klipper Configuration 2024, جولای
Anonim
یک نور تنفسی کنترل شده توسط Raspberry Pi
یک نور تنفسی کنترل شده توسط Raspberry Pi

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

همچنین می توانید از آن به عنوان نمونه ای ارزان و ساده برای ساخت "محاسبات فیزیکی" با رزبری پای استفاده کنید ، به عنوان مثال. برای استفاده به عنوان یک پروژه آموزشی در سطح مبتدیان ، در اینجا ورودی های آنالوگ (پتانسیومتر دوار) و دیجیتال (دکمه فشار) و خروجی دیجیتال (LED) و PWM (زنجیرهای LED) را در اختیار دارید ، و تأثیرات تغییرات به طور مستقیم قابل مشاهده است به

نور از طریق دایره های تکراری متشکل از چهار فاز عبور می کند: گذار سبز (بالا) به قرمز (پایین) ، فاز فقط قرمز ، انتقال قرمز به سبز و فاز فقط سبز. طول این فازها با ثابت هایی تعریف می شود که می توان آنها را با پتانسیومترها تغییر داد. این فرآیند را می توان با فشار دادن دکمه ها شروع ، متوقف ، از سر گرفته و متوقف کرد. LED ها فاز فعلی را نشان می دهند. این بر اساس مثال "Light Firefly Light" توسط Pimoroni است (اینجا را ببینید). مانند "Light Firefly Light" ، به رزبری پای (صفر) ، PHIM (یا HAT) Pimoroni Explorer و دو زنجیره سبک LED IKEA SÄRDAL نیاز دارد. بعداً به دو پورت PMW/موتور pHAT متصل می شوند. به جای استفاده از شیشه ، LED ها را در قاب تصویر IKEA قرار داده ام. من سعی کرده ام که اسکریپت پایتون اصلی "light firefly" را کمی بهینه کنم ، یک تابع سینوسی اختیاری را برای تغییرات روشنایی/ عرض پالس پیاده سازی کرده و دو مرحله "نگهدارنده" بین مراحل کم نور را معرفی کرده ام. در حالی که پارامترها را برای یافتن یک الگوی نوری که احساس راحتی بیشتری می کند تغییر می دادم ، متوجه شدم که این دستگاه می تواند از الگوی تنفس منظم و کاملاً واضح پشتیبانی کند. بنابراین ، ممکن است برای برخی از شما این "نور تنفسی" برای اهداف مدیتیشن یا تمرین مفید باشد. با توجه به اینکه PHAT Explorer دارای چهار ورودی دیجیتالی و چهار ورودی آنالوگ است ، تنظیم چهار پارامتر مختلف با استفاده از پتانسیومترهای کشویی یا چرخشی و معرفی عملکردهای شروع/راه اندازی مجدد/توقف چراغ ها با استفاده از دکمه ها بسیار آسان است. این به شما امکان می دهد از دستگاه استفاده کنید و پارامترها را مطابق نیاز خود بهینه کنید بدون اینکه مانیتوری به Pi متصل شود.

علاوه بر این ، PHAT Explorer دارای چهار پورت خروجی دیجیتالی است که امکان افزودن LED ها یا وزوزها ، دو پورت 5V و دو Ground و دو پورت خروجی PWM برای موتورها یا دستگاه های مشابه را فراهم می کند. لطفاً مطمئن شوید که از مقاومت های مناسب برای کاهش ولتاژ LED های خود استفاده می کنید.

کتابخانه Python اکسپلورر Pimoroni با PHAT کنترل همه این پورت های ورودی/خروجی را بسیار ساده کرده است.

در این نسخه های آموزشی دستگاه با پتانسیومتر 0 ، 2 و 4 و دکمه ها توضیح داده شده است. یکی را انتخاب کنید که متناسب با نیاز شما باشد.

برای راه اندازی خودکار دستگاه ، می توانید از پاور یا ترکیبی از سیمرغ Pimoroni LiPo و باتری LiPo استفاده کنید ، همانطور که در "Light Firefly Light" توضیح داده شده است.

نسخه های به روز شده 28 دسامبر 2018: نسخه "چهار پتانسیومتر و چهار دکمه فشاری" اضافه شد. دسامبر. 30: کد نسخه 4 poti و تصاویر جالب اضافه شده است.

مرحله 1: مواد مورد استفاده / مورد نیاز

مواد مورد استفاده / مورد نیاز
مواد مورد استفاده / مورد نیاز
مواد مورد استفاده / مورد نیاز
مواد مورد استفاده / مورد نیاز
مواد مورد استفاده / مورد نیاز
مواد مورد استفاده / مورد نیاز

- Raspberry Pi Zero (4.80 GBP در Pimoroni ، UK) ، و یک کارت حافظه micro SD (> = 8 GB) w/ Raspian

- Pimoroni Explorer pHAT (10 GBP در Pimoroni ، UK). اختیاری: هدر یک ردیف ، کابل های بلوز

- چراغ های زنجیره ای LED IKEA SÄRDAL با 12 LED (2 x ، 3.99 € هر کدام در IKEA آلمان) ، یا هر زنجیره LED مشابه 3-5V.- قاب تصویر IKEA RIBBA (13 18 18 سانتی متر ، 2.49 یورو در IKEA آلمان).

- یک تکه فوم PU (2 18 18 13 13.5 سانتی متر) ، برای نگه داشتن LED ها. به طور متناوب ممکن است از فوم استایرو استفاده شود.

- یک تکه پلاستیک مات (18 13 13.5 سانتی متر) که به عنوان پخش کننده عمل می کند.

- دو ورق کاغذ شفاف رنگی (هریک 9 13 13.5 سانتی متر). من از رنگ قرمز و سبز استفاده کردم.

- یک تکه ورق پلاستیکی نازک و بسیار مات (18 13 13.5 سانتی متر) که به عنوان صفحه نمایش بیرونی عمل می کند. من از ورق پلی کربنات سفید نازک استفاده کردم. اختیاری ، برای نسخه قابل تنظیم:

برای تنظیم زمان شیب دار و مدت زمان ارتفاع ، یا پارامترهای دیگر مانند روشنایی.- پتانسیومترهای 10 ، 20 یا 50 کیلو اهم (تا چهار ، من از دو 10 کیلو اهم به ترتیب از چهار 50 اهم استفاده کردم).

به عنوان دکمه های شروع/توقف/مکث/از سرگیری:- دکمه های فشار (تا چهار ، من از چهار یا دو استفاده کردم)

به عنوان شاخص هایی برای مراحل دایره:- LED های رنگی و مقاومتهای لازم (بستگی به ویژگی های LED هایی که استفاده می کنید) دارد.

  1. حدود 140 اهم برای 5.2 -> 2 ، 2 ولت (زرد ، نارنجی ، قرمز ؛ برخی LED های سبز) ،
  2. حدود 100 اهم برای 5.3 -> 3.3 ولت (برخی سبزها ؛ آبی ، سفید LED)

- کابل های جامپر و تخته نان

اختیاری ، برای نسخه باتری:

  • پاور 5 ولت میکرو USB ، یا
  • بدنه Pimoroni Zero LiPo و باتری LiPo

مرحله 2: Lazout و Assembly

Lazout و Assembly
Lazout و Assembly
Lazout و Assembly
Lazout و Assembly
Lazout و Assembly
Lazout و Assembly

PHAT اکسپلورر را طبق توضیحات سازنده جمع آوری کنید. من یک سرصفحه زن تک ردیفی برای اتصال ساده کابل های بلوز به پورت های ورودی/خروجی pHAT اضافه کرده ام. Pi خود را تنظیم کرده و کتابخانه Pimoroni را برای Explorer HAT/pHAT ، همانطور که توسط Pimoroni توضیح داده است ، نصب کنید. Pi را خاموش کرده و pHAT را روی Pi وصل کنید. بسته های باتری را از زنجیرهای LED با بریدن سیم ها و قلع انتهای سیم ها خارج کنید. دو کابل بلوز مردانه 2 برابر را در وسط ببرید ، انتهای سیم ها را قلع دهید. کابل های بلوز را به زنجیرهای LED بچسبانید و نقاط لحیم کاری را با استفاده از نوار چسب یا لوله کوچک کننده جدا کنید. قبل از لحیم کاری ، بررسی کنید که کدام سیم باید به پورت های پلاس یا زمین متصل شود و بر این اساس آنها را علامت گذاری کنید. من از سیم های بلوز با رنگ های مختلف استفاده کردم. فوم را برای نگه داشتن LED ها ، صفحات پخش کننده و صفحه نمایش در اندازه مناسب برش دهید. روی صفحه نگهدارنده LED موقعیت هایی که LED ها باید در آن قرار گیرند را مشخص کرده و سوراخ های 3-5 میلی متری را داخل فوم ایجاد کنید. سپس 24 LED را در موقعیت های داده شده وارد کنید. کاغذهای رنگی و صفحات پخش کننده را روی صفحه LED قرار دهید (تصاویر را ببینید) ، آنها قاب را روی بسته قرار دهید. لایه های کف را در قاب ثابت کنید ، به عنوان مثال. با استفاده از نوار چسب کابل های نوار LED را به پورت های "موتور" PHAT وصل کنید. برای نسخه قابل تنظیم ، پتانسیومترها ، دکمه ها ، LED های کنترل (و/یا وزوز) و مقاومتها را روی تخته نان قرار دهید و آنها را با پورتهای مربوطه در PHAT Explorer وصل کنید.

Pi خود را راه اندازی کنید و کتابخانه های مورد نیاز را ، همانطور که در وب سایت Pimoroni توضیح داده شده است ، نصب کنید ، سپس اسکریپت ارائه شده Python 3 را اجرا کنید. اگر یکی از زنجیرهای LED کار نمی کند ، ممکن است در جهت اشتباه متصل شود. سپس می توانید اتصالات مثبت/منفی را در PHAT تغییر دهید یا تغییری در برنامه ایجاد کنید ، به عنوان مثال. "eh.motor.one.backwards ()" را به "… به جلو ()" تغییر دهید.

پیوست اسکریپت هایی با تنظیمات ثابت را می توانید در برنامه تغییر دهید و مثالی که می توانید برخی از تنظیمات را با پتانسیومترها تغییر دهید ، پیدا کرده و چرخه نور را با استفاده از دکمه ها شروع و متوقف کنید. تنظیم اسکریپت ها متناسب با طرح "نور تنفس" شما نباید چندان دشوار باشد.

مرحله 3: اسکریپت های پایتون

کتابخانه Python Pimoroni برای Explorer HAT/pHAT آدرس بخش هایی را که به درگاه های ورودی/خروجی HATs متصل شده اند بسیار ساده می کند. دو مثال: "eh.two.motor.backwards (80)" دستگاه متصل به پورت PWM/موتور 2 را با حداکثر 80٪ شدت در جهت عقب هدایت می کند ، "eh.output.three.flash ()" یک LED را متصل می کند تا خروجی شماره سه فلش شود تا زمانی که متوقف شود. من چند تغییر در نور ایجاد کرده ام که اساساً با افزودن حداکثر چهار دکمه و پتانسیومتر ، سطح کنترل را افزایش می دهد. در پیوست یک برنامه پایتون به نام "Breathing light fixed lin linus.py "که در آن هر چهار تنظیمات پارامتر باید در برنامه اصلاح شوند. بعلاوه نسخه ای به نام "Breathing light var lin cosin.py" که در آن طول دو فاز کم نور را می توان با استفاده از دو پتانسیومتر و دقیق ترین نسخه "Breathing light var lin cosin3.py" برای نسخه چهار پتانسیومتر و دکمه فشاری تنظیم کرد. به برنامه ها به زبان پایتون 3 نوشته شده است.

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

- مرحله "استنشاق" ، جایی که LED های بالا کم نور می شوند و LED های پایین شدت را افزایش می دهند

- مرحله "نفس خود را نگه دارید" ، که در آن LED های بالا خاموش و LED های پایین روی حداکثر تنظیم شده است

- مرحله "بازدم" ، که در آن LED های پایینی کم نور می شوند و LED های بالایی شدت را افزایش می دهند

- مرحله "بازدم بمانید" ، جایی که LED های پایین خاموش شده و LED های بالایی حداکثر روشن می شوند.

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

پنجمین پارامتر حداکثر شدت را تعیین می کند. این به شما امکان می دهد حداکثر روشنایی LED ها را تنظیم کنید ، که اگر می خواهید از آن به عنوان نور شب استفاده کنید ، می تواند مفید باشد. علاوه بر این ممکن است به شما امکان دهد فرایند کم نور را بهبود ببخشید ، زیرا من تصور می کنم که تفاوت بین شدت 80 و 100 hard دشوار است.

من یک تابع سینوسی اختیاری (افزایش) برای افزایش/کاهش روشنایی اضافه می کردم ، زیرا ارتباط روان تری بین مراحل ایجاد می کند. با خیال راحت سایر عملکردها را امتحان کنید. به عنوان مثال. شما می توانید وقفه ها را حذف کرده و از دو عملکرد سینوسی متفاوت (پیچیده) برای هر دو زنجیره LED استفاده کنید و فرکانس و دامنه را با پتانسیومتر تنظیم کنید.

# لامپ "تنفس": دو دکمه و دو نسخه پتانسیومتر

# اصلاح مثال کرم شب تاب برای Pimoroni Explorer pHAT # در اینجا: افزایش/کاهش سینوئید مقادیر موتور/PWM # برای عملکرد خطی بی صدا کردن عملکرد خطی و خاموش کسین # این نسخه "var" ورودی های آنالوگ را می خواند ، تنظیمات از پیش تعیین شده را لغو می کند # خوانده می شود ورودی دیجیتالی ، دکمه های شروع و توقف "" "برای شروع هنگام روشن کردن Pi ممکن است از Cron استفاده کنید: Cron یک برنامه یونیکس است که برای برنامه ریزی کارها استفاده می شود و دارای عملکرد مناسبboot است که به شما امکان می دهد یک اسکریپت را اجرا کنید هر زمان که Pi شما بوت می شود. یک ترمینال باز کنید و crontab -e را برای ویرایش crontab خود تایپ کنید. تا انتهای فایل بروید ، تمام خطوطی که از #شروع می شوند را رد کرده و خط زیر را اضافه کنید (با فرض اینکه کد شما در /home/pi/firefly.py):reboot sudo python /home/pi/filename.py & crontab خود را ببندید و ذخیره کنید (اگر از نانو استفاده می کنید ، کلیدهای x-y و y را فشار دهید و برای خروج و ذخیره آن را وارد کنید). "" "import time import explorerhat as eh import ریاضی مقادیر ثابت #sinus xmax = 316 step = 5 # width step، π.χ. 315/5 63 مرحله می دهد/چرخه start_button = 0 # این وضعیت یک دکمه متصل به پورت ورودی شماره 1 stop_button = 0 # را مشخص می کند که این حالت یک دکمه فشاری متصل به پورت ورودی شماره 3 را مشخص می کند pause_1 = 0.02 # مجموعه طول استراحت در مراحل مرحله "استنشاق" ، در نتیجه سرعت و مدت زمان شیب pause_2 = 0.04 # مجموعه میزان "خروج" سطح شیب دار pause_3 = 1.5 # استراحت بین مراحل دم و بازدم (استنشاق را نگه دارید) pause_4 = 1.2 # استراحت در پایان بازدم فاز (بازدم خود را حفظ کنید) max_intens = 0.9 # حداکثر شدت/روشنایی max_intens_100 = 100*max_intens # همان در٪ # ممکن است به شما این امکان را بدهد که میزان "تنفس" LED ها را کاهش داده و چشمک زدن را کاهش دهید. l_cosin = # لیست با مقادیر مشتق از کوسینوس (100> = x> = 0) l_lin = # لیست با مقادیر خطی (100> = x> = 0) # ایجاد لیست تابع کسینوس برای i در محدوده (0 ، 316 ، 3): # 315 نزدیک به Pi*100 است ، 105 مرحله # چاپ (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] # ارزش تولید # چاپ (n_cosin) l_cosin = l_cosin + n_cosin # افزودن مقدار به لیست # چاپ (l_cosin) # ایجاد لیست خطی برای i در محدوده (100 ، -1 ، -1): # شمارش معکوس از 100 تا صفر n_lin = l_lin = l_lin + n_lin # print (l_lin) # یک لیست خسته کننده را چاپ می کند () print () "" برای شروع چرخه های نور ، دکمه "Start" (ورودی یک) "" ") print () print (" "" را متوقف کنید چراغ را فشار داده و دکمه "Stop" (ورودی سه) "" ") print () # صبر کنید تا دکمه Start در حالی که (start_button == 0) فشرده می شود را فشار دهید و نگه دارید: start_button = eh.input.one.read () # read دکمه شماره یک eh.output.one.blink () # چشمک زدن شماره LED یکبار. خواب (0.5) # دوبار در ثانیه # روشن شدن چراغ در حالی که (دکمه توقف == 0): # خواندن ورودی های آنالوگ ONE و TWO ، تنظیم تنظیمات set_1 = eh.an alog.one.read () # میزان قرمز-> نرخ شیب سبز را مشخص می کند pause_1 = set_1*0.02 # مقادیر بین 0 تا 0.13 ثانیه/مرحله چاپ ("set_1:"، set_1، " -> مکث _1:" ، pause_1) set_2 = eh.analog.two.read () # سبز را تعریف می کند -> نرخ شیب قرمز pause_2 = set_2*0.02 # مقادیر بین 0 تا 0.13 ثانیه/مرحله چاپ ("set_2:"، set_2، " -> مکث _2: "، pause_2) #" استنشاق "مرحله eh.output.one.on () # ممکن است یک LED یا بیپر" "برای x در محدوده (len (l_lin)) هدایت کند: fx = max_intens*l_lin [x] # منحنی خطی eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () "" "برای x در محدوده (len (l_cosin)): fx = max_intens*l_cosin [x] # منحنی خطی eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # بررسی کنید آیا دکمه توقف فشار داده شده است stop_button = eh.input.three.read () # "نفس خود را حفظ کنید" در پایان مرحله استنشاق مکث کنید eh.output.two.on () # LED را دو روشن کنید eh.motor.one. به عقب (0) eh.motor.two.backwards (max_intens_100) time. LED سه "" را برای x در محدوده (len (l_lin)) روشن کنید: fx = max_intens*l_lin [x] # منحنی خطی eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) "" "برای x در محدوده (len (l_cosin)): fx = max_intens*l_cosin [x] # منحنی خطی eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. به عقب (fx) time.sleep (pause_2) eh.output.three.off () # بررسی کنید که آیا دکمه Stop فشار داده شده است stop_button = eh.input.three.read () # بین مراحل "بازدم" و "استنشاق" euse مکث کنید. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #تیک بزنید اگر دکمه توقف فشار داده شده است = eh.input.three.read () # خاموش کردن ، چرخاندن همه پورت های خروجی eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () چاپ () چاپ ("خداحافظ")

اگر می خواهید از نور به عنوان یک دستگاه مستقل استفاده کنید ، به عنوان مثال به عنوان چراغ خواب یا بیداری ، می توانید منبع تغذیه تلفن همراه را به Pi اضافه کنید و بعد از راه اندازی برنامه را شروع کنید و از "Cron" برای روشن یا خاموش کردن آن در زمان های مشخص استفاده کنید. نحوه استفاده از "Cron" در جاهای دیگر با جزئیات گسترده توضیح داده شده است.

مرحله 4: نمونه های ویدئویی

در این مرحله شما تعدادی ویدئو را مشاهده خواهید کرد که نور را در حالت عادی (یعنی همه مقادیر> 0 ، #1) و شرایط شدید نشان می دهد ، زیرا همه مقادیر صفر (#2) ، فقط در حال افزایش (#3 و #4) ، و بدون سطح شیب دار (شماره 5 و #6).

مرحله پنجم: چند نکته

لطفاً از عبارات اشتباه ، غلط املایی و اشتباهات عذرخواهی کنید. من نه یک زبان مادری انگلیسی هستم و نه در زمینه برق ، الکترونیک یا برنامه نویسی اطلاعات کاملی دارم. این در واقع به این معنی است که من سعی می کنم در مورد مواردی که اصطلاحات صحیح را در زبان خودم نمی دانم ، یک درس انگلیسی بنویسم. بنابراین هرگونه اشاره ، تصحیح یا ایده ای برای بهبود استقبال می شود. H.

توصیه شده: