جدول المحتويات:

ضوء التنفس يتحكم فيه Raspberry Pi: 5 خطوات
ضوء التنفس يتحكم فيه Raspberry Pi: 5 خطوات

فيديو: ضوء التنفس يتحكم فيه Raspberry Pi: 5 خطوات

فيديو: ضوء التنفس يتحكم فيه Raspberry Pi: 5 خطوات
فيديو: Raspberry Pi Pico W LESSON 11: Controlling a Dimmable LED with a Potentiometer 2024, يوليو
Anonim
ضوء التنفس يتحكم فيه Raspberry Pi
ضوء التنفس يتحكم فيه Raspberry Pi

"ضوء تمرين التنفس" الموصوف هنا هو ضوء نابض بسيط وغير مكلف نسبيًا قد يدعمك في تمارين التنفس ويساعدك على الحفاظ على إيقاع تنفس مستمر. يمكن استخدامه أيضًا على سبيل المثال كضوء ليلي مهدئ للأطفال. في المرحلة الحالية هو أكثر من نموذج أولي عملي.

يمكنك أيضًا استخدامه كمثال غير مكلف وبسيط لبناء مثال على "الحوسبة المادية" باستخدام Raspberry Pi ، على سبيل المثال لاستخدامها كمشروع تعليمي على مستوى المبتدئين ، يوجد هنا مدخلات تناظرية (مقياس جهد دوار) وإدخال رقمي (زر ضغط) بالإضافة إلى إخراج رقمي (LED) ومخرج PWM (سلاسل LED) ، وتظهر آثار التغييرات مباشرة.

يمر الضوء عبر دوائر متكررة تتكون من أربع مراحل: الانتقال الأخضر (العلوي) إلى الأحمر (السفلي) ، ومرحلة الأحمر فقط ، والانتقال من الأحمر إلى الأخضر ، ومرحلة الأخضر فقط. يتم تحديد طول هذه الأطوار من خلال الثوابت التي يمكن تعديلها بواسطة مقاييس الجهد. يمكن بدء العملية وإيقافها مؤقتًا واستئنافها وإيقافها عن طريق الضغط على أزرار الدفع. تشير مصابيح LED إلى المرحلة الحالية ، وهي تستند إلى مثال "Firefly Light" بواسطة Pimoroni (انظر هنا). على غرار "Firefly Light" ، فهو يتطلب Raspberry Pi (Zero) و Pimoroni Explorer pHAT (أو HAT) وسلاسل إضاءة IKEA SÄRDAL LED. يتم توصيل الأحدث بمنافذ PMW / المحرك من pHAT. بدلاً من استخدام البرطمان ، قمت بوضع مصابيح LED في إطار صورة ايكيا. لقد كنت أحاول تحسين نص Python الأصلي "اليراع الخفيف" قليلاً ، مع تنفيذ وظيفة الجيوب الأنفية الاختيارية لتغييرات السطوع / عرض النبضة وقدمت مرحلتين "تعليق" بين مراحل التعتيم. أثناء تعديل المعلمات للعثور على نمط ضوئي يشعر بمزيد من الراحة ، وجدت أن الجهاز يمكن أن يساعد في دعم نمط تنفس منتظم محدد بشكل واضح للغاية. وبالتالي ، قد يجد البعض منكم هذا "ضوء التنفس" مفيدًا للتأمل أو لأغراض التدريب. نظرًا لأن Explorer pHAT يحتوي على أربعة مدخلات رقمية وأربعة مدخلات تناظرية ، فمن السهل جدًا تنظيم ما يصل إلى أربعة معلمات مختلفة باستخدام مقاييس الجهد الانزلاقية أو الدوارة ، وإدخال وظائف البدء / إعادة التشغيل / الإيقاف للأضواء باستخدام أزرار الضغط. سيسمح لك ذلك باستخدام الجهاز وتحسين المعلمات وفقًا لاحتياجاتك دون الحاجة إلى توصيل شاشة بـ Pi.

بالإضافة إلى ذلك ، يأتي Explorer pHAT مزودًا بأربعة منافذ خارجية رقمية ، والتي تسمح بإضافة مصابيح LED أو صفارات ، بالإضافة إلى منفذين 5V ومنفذين أرضيين ومنفذين PWM للخارج للمحركات أو الأجهزة المماثلة. يرجى التأكد من أنك تستخدم المقاومات الصحيحة لتقليل الجهد الكهربائي لمصابيح LED الخاصة بك.

تجعل مكتبة Pimoroni Explorer pHAT python من السهل للغاية التحكم في جميع منافذ الإدخال / الإخراج هذه.

في هذه الإصدارات القابلة للتوجيه من الجهاز مع 0 و 2 و 4 مقاييس الجهد والأزرار موصوفة. اختر ما يناسب احتياجاتك.

لتشغيل الجهاز بشكل مستقل ، يمكن للمرء استخدام إما حزمة طاقة ، أو مزيج من رقاقة Pimoroni LiPo وبطارية LiPo ، كما هو موصوف لـ "Firefly Light".

الإصدارات المحدثة 28 ديسمبر 2018: تمت إضافة إصدار "أربعة مقاييس فرق الجهد وأربعة أزرار ضغط". 30: تمت إضافة رمز لنسخة 4-poti وصور تافهة.

الخطوة 1: المواد المستخدمة / المطلوبة

المواد المستخدمة / المطلوبة
المواد المستخدمة / المطلوبة
المواد المستخدمة / المطلوبة
المواد المستخدمة / المطلوبة
المواد المستخدمة / المطلوبة
المواد المستخدمة / المطلوبة

- Raspberry Pi Zero (4.80 جنيه إسترليني في Pimoroni ، المملكة المتحدة) ، وبطاقة micro SD (> = 8 جيجابايت) مع Raspian

- Pimoroni Explorer pHAT (10 جنيهات إسترلينية في Pimoroni ، المملكة المتحدة). اختياري: رأس صف واحد ، كابلات توصيل

- IKEA SÄRDAL سلسلة أضواء LED مع 12 مصباح LED (2 × ، 3.99 يورو لكل منها في ايكيا ألمانيا) ، أو أي سلسلة مماثلة من مصابيح LED 3-5 فولت. - إطار صور IKEA RIBBA (13 × 18 سم ، 2.49 يورو في ايكيا ألمانيا).

- قطعة من فوم البولي يوريثان (2 × 18 × 13.5 سم) لتثبيت المصابيح. يمكن استخدام رغوة الستايرو كبديل.

- قطعة بلاستيك معتم (18 × 13.5 سم) تعمل كناشر.

- ورقتان من الورق الشفاف الملون (9 × 13.5 سم لكل منهما). لقد استخدمت الأحمر والأخضر.

- قطعة من الصاج البلاستيكي الرقيق شديد التعتيم (18 × 13.5 سم) ، تعمل بمثابة حاجز خارجي. لقد استخدمت ورقة بيضاء رقيقة من البولي كربونات. اختياري ، للإصدار القابل للضبط:

لضبط توقيت التدرج ومدة الهضبة ، أو بدلاً من ذلك معلمات أخرى مثل السطوع. - 10 أو 20 أو 50 كيلو أوم من مقاييس الجهد (حتى أربعة ، استخدمت اثنين 10 كيلو أوم على التوالي أربعة 50 أوم).

كأزرار بدء / إيقاف / إيقاف مؤقت / استئناف: - أزرار ضغط (حتى أربعة ، استخدمت أربعة أو اثنين)

كمؤشرات لمراحل الدائرة: - المصابيح الملونة والمقاومات الضرورية (ستعتمد على خصائص المصابيح التي ستستخدمها).

  1. حوالي 140 أوم لـ 5.2 -> 2 ، 2 فولت (أصفر ، برتقالي ، أحمر ؛ بعض المصابيح الخضراء) ،
  2. حوالي 100 أوم لـ 5.3 -> 3.3 فولت (بعض المصابيح الخضراء والأزرق والأبيض)

- كابلات توصيل ولوح توصيل

اختياري ، للإصدار الذي يعمل بالبطارية:

  • حزمة طاقة 5 فولت Micro-USB ، أو
  • رقاقة Pimoroni Zero LiPo وبطارية LiPo

الخطوة الثانية: لازوت والتجميع

لازوت والجمعية
لازوت والجمعية
لازوت والجمعية
لازوت والجمعية
لازوت والجمعية
لازوت والجمعية

قم بتجميع Explorer pHAT كما هو موضح من قبل الشركة المصنعة. لقد أضفت رأس أنثى لصف واحد للتوصيل المبسط لكابلات التوصيل بمنافذ الإدخال / الإخراج pHAT. قم بإعداد Pi وتثبيت مكتبة Pimoroni لـ Explorer HAT / pHAT ، كما هو موضح بواسطة Pimoroni. قم بإيقاف تشغيل Pi وأرفق الرقم الهيدروجيني على Pi. قم بإزالة حزم البطارية من سلاسل LED عن طريق قطع الأسلاك وصفيح نهاية الأسلاك. قطع اثنين من كابلات العبور الذكور 2x في المنتصف ، القصدير نهاية الأسلاك. قم بلحام كبلات العبور بسلاسل LED ، وعزل نقاط اللحام باستخدام شريط لاصق أو أنابيب الانكماش. قبل اللحام ، تحقق من الأسلاك التي يجب توصيلها بالمنافذ الإضافية أو الأرضية ، وقم بتمييزها وفقًا لذلك. لقد استخدمت أسلاك توصيل بألوان مختلفة ، قم بقطع الرغوة لتثبيت مصابيح LED والناشر وألواح الشاشة بالحجم المناسب. على لوحة تثبيت LED ، حدد المواضع التي يجب أن توضع فيها مصابيح LED وثقب 3-5 مم في الرغوة. ثم أدخل 24 LEDs في المواضع المحددة. ضع الأوراق الملونة وألواح الموزع على لوحة LED (انظر الصور) ، ضع الإطار فوق العبوة. إصلاح طبقات الرغوة في الإطار ، على سبيل المثال باستخدام شريط لاصق. قم بتوصيل كبلات شريط LED بمنافذ "المحرك" في Explorer pHAT. بالنسبة للإصدار القابل للضبط ، ضع مقاييس الجهد وأزرار الانضغاط ومصابيح التحكم (و / أو الصفارات) والمقاومات على لوح التجارب وقم بتوصيلها بالمنافذ المقابلة في Explorer pHAT.

ابدأ Pi وقم بتثبيت المكتبات المطلوبة ، كما هو موضح في موقع Pimoroni على الويب ، ثم قم بتشغيل نص Python 3 المقدم. إذا كانت إحدى سلاسل LED لا تعمل ، فقد تكون متصلة بالاتجاه الخاطئ. ثم يمكنك إما تغيير اتصالات زائد / ناقص على الرقم الهيدروجيني أو إجراء تغيير في البرنامج ، على سبيل المثال قم بتغيير “eh.motor.one.backwards ()” إلى “… forward ()”.

ستجد مرفقًا نصوصًا ذات إعدادات ثابتة يمكنك تغييرها داخل البرنامج ومثال يمكنك من خلاله تعديل بعض الإعدادات باستخدام مقاييس الجهد ، وبدء دورة الضوء وإيقافها باستخدام أزرار الضغط. لا ينبغي أن يكون من الصعب للغاية ضبط البرامج النصية بما يتناسب مع التخطيط الخاص بك لـ "ضوء التنفس".

الخطوة الثالثة: نصوص بايثون

مكتبة Python الخاصة بـ Pimoroni لـ Explorer HAT / pHAT تجعل من السهل للغاية معالجة المكونات المتصلة بمنافذ الإدخال / الإخراج الخاصة بـ HAT. مثالان: "eh.two.motor.backwards (80)" يقود الجهاز المتصل بمنفذ PWM / المحرك 2 مع أقصى كثافة 80٪ في الاتجاه المعاكس ، "eh.output.three.flash ()" يجعل مؤشر LED متصلًا لإخراج المنفذ رقم ثلاثة ، وميض حتى يتم إيقافه. لقد قمت بتوليد بعض الاختلافات في الضوء ، وأضف بشكل أساسي مستويات متزايدة من التحكم عن طريق إضافة ما يصل إلى أربعة أزرار ضغط ومقاييس فرق الجهد..py "حيث يتعين تعديل إعدادات المعلمات الأربعة داخل البرنامج. بالإضافة إلى إصدار يسمى "Breathing light var lin cosin.py" حيث يمكن تعديل طول مرحلتى التعتيم باستخدام مقياسين للجهد والنسخة الأكثر تفصيلاً "التنفس الخفيف var lin cosin3.py" لأربعة مقاييس الجهد وإصدار زر الضغط. البرامج مكتوبة بلغة Python 3.

في جميع الحالات ، يمكن استحضار عملية ركوب الدراجات وإيقافها باستخدام زرين ضغط ، في إصدار الأزرار الأربعة ، يمكنك أيضًا مقاطعة العملية وإعادة تشغيلها. بالإضافة إلى ذلك ، يمكن توصيل أربعة مصابيح LED (ملونة) بمنافذ الإخراج الرقمية ، للإشارة إلى المراحل المحددة. تتكون دورة الجهاز من أربع مراحل:

- مرحلة "الشهيق" ، حيث يتم تعتيم المصابيح العلوية منخفضة وتزيد المصابيح السفلية من شدتها

- مرحلة "حبس أنفاسك" ، حيث يتم إيقاف تشغيل مصابيح LED العلوية وتعيين مصابيح LED السفلية على الحد الأقصى

- مرحلة "الزفير" ، حيث يتم تعتيم مصابيح LED السفلية منخفضة وتزيد مصابيح LED العلوية من شدتها

- مرحلة "البقاء الزفير" ، حيث يتم إيقاف تشغيل مصابيح LED السفلية وتضيء مصابيح LED العلوية كحد أقصى.

يتم تحديد طول جميع المراحل الأربع بواسطة معلمة رقمية فردية ، والتي قد تكون ثابتة في البرنامج و / أو يمكن تعديلها باستخدام مقياس الجهد.

تحدد المعلمة الخامسة أقصى كثافة. يسمح لك بضبط أقصى سطوع لمصابيح LED ، والذي يمكن أن يكون مفيدًا إذا كنت ترغب في استخدامه كضوء ليلي. بالإضافة إلى ذلك ، قد يسمح لك بتحسين عملية التعتيم ، حيث لدي انطباع بأنه من الصعب رؤية فرق بين كثافة 80 و 100٪.

كنت أقوم بإضافة وظيفة اختيارية (مشتركة) للجيوب الأنفية لزيادة / تقليل السطوع ، لأنها توفر اتصالاً أكثر سلاسة بين المراحل. لا تتردد في تجربة وظائف أخرى. على سبيل المثال يمكنك التخلص من الفواصل واستخدام وظيفتين مختلفتين (معقدتين) للجيوب الأنفية لكل من سلاسل LED وضبط التردد والسعة بواسطة مقاييس الجهد.

# مصباح "التنفس": زران وإصداران لمقياس الجهد

# تعديل لمثال اليراع لمتصفح Pimoroni Explorer pHAT # هنا: زيادة / تقليل قيم المحرك / PWM # للوظيفة الخطية ، إلغاء كتم صوت وظيفة التمام الخطية وكتم الصوت # هذا الإصدار "var" يقرأ المدخلات التناظرية ، ويتجاوز الإعدادات المحددة مسبقًا # يقرأ إدخال رقمي وأزرار لبدء وإيقاف "" "للبدء عند تشغيل Pi ، يمكنك استخدام Cron: Cron هو برنامج Unix يستخدم لجدولة المهام ، ولديه وظيفة @ reboot التي تتيح لك تشغيل برنامج نصي عندما يقوم Pi بالتمهيد. افتح Terminal ، واكتب crontab -e لتعديل crontab الخاص بك. قم بالتمرير طوال الطريق إلى أسفل الملف ، متجاوزًا جميع الأسطر التي تبدأ # ، وأضف السطر التالي (بافتراض أن الكود الخاص بك في /home/pi/firefly. "" استيراد وقت استيراد explorerhat مثل eh استيراد قيم ثابتة للرياضيات #sinus xmax = 316 خطوة = 5 # عرض خطوات ، على سبيل المثال يعطي 315/5 63 خطوة / زر بدء الدورة = 0 # هذا يحدد حالة زر الضغط المتصل بمنفذ الإدخال رقم 1 stop_button = 0 # هذا يحدد حالة زر الضغط المتصل بمنفذ الإدخال رقم 3 pause_1 = 0.02 # مجموعات طول من الفواصل ضمن خطوات في مرحلة "الاستنشاق" ، وبالتالي زيادة معدل ومدة التوقف مؤقتًا_2 = 0.04 # مجموعات "الزفير" توقف معدل التدرج 3 = 1.5 # فاصل بين مرحلتي الشهيق والزفير (استمر في الاستنشاق) وقفة_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 خطوات # print (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] # إنشاء قيمة # طباعة (n_cosin) l_cosin = l_cosin + n_cosin # إضافة قيمة إلى القائمة # print (l_cosin) # إنشاء قائمة خطية لـ i في النطاق (100 ، -1 ، -1): # العد التنازلي من 100 إلى صفر n_lin = l_lin = l_lin + n_lin # print (l_lin) # يظهر طباعة قائمة مملة () طباعة ("" "لبدء دورات الضوء ، اضغط على زر" ابدأ "(الإدخال الأول)" "" طباعة () طباعة ("" "للإيقاف على الضوء ، اضغط مع الاستمرار على زر "إيقاف" (الإدخال الثالث) "" ") print () # انتظر حتى يتم الضغط على زر البدء بينما (start_button == 0): start_button = eh.input.one.read () # read الزر رقم واحد eh.output.one.blink () # blink LED number one time.sleep (0.5) # قراءة مرتين في الثانية # أضواء التشغيل بينما (stop_button == 0): # قراءة المدخلات التناظرية ONE و TWO ، وتحديد الإعدادات set_1 = إيه يعرف alog.one.read () # الأحمر-> معدل التدرج الأخضر pause_1 = set_1 * ستتراوح قيم 0.02 # بين 0 و 0.13 ثانية / خطوة طباعة ("set_1:"، set_1، "-> pause _1:"، pause_1) set_2 = eh.analog.two.read () # يعرف الأخضر -> توقف معدل التدرج الأحمر مؤقتًا_2 = set_2 * 0.02 # قيم تتراوح بين 0 و 0.13 ثانية / خطوة طباعة ("set_2:"، set_2، "-> pause _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.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # تحقق مما إذا كان زر الإيقاف مضغوطًا stop_button = eh.input.three.read () # "exhale" stage eh.output.three.on () # قم بتشغيل 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. backwards (fx) time.sleep (pause_2) eh.output.three.off () # تحقق مما إذا كان زر الإيقاف مضغوطًا stop_button = eh.input.three.read () # pause بين مرحلتي "الزفير" و "الشهيق" إيه. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () # تحقق من الضغط على زر الإيقاف stop_button = eh.input.three.read () # shutdown ، قم بتشغيل جميع منافذ الإخراج 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" لتشغيله أو إيقاف تشغيله في أوقات معينة. كيفية استخدام "كرون" موصوفة بالتفصيل في مكان آخر.

الخطوة 4: أمثلة على الفيديو

في هذه الخطوة ، ستجد عددًا من مقاطع الفيديو التي تعرض الضوء في ظل الوضع العادي (على سبيل المثال ، جميع القيم> 0 ، # 1) والظروف القصوى ، حيث تم ضبط جميع القيم على الصفر (# 2) ، والتدرج فقط (# 3 ) ، وليس منحدر (# 5 ).;

الخطوة الخامسة: بعض الملاحظات

يرجى الاعتذار عن أي شروط خاطئة وأخطاء مطبعية. أنا لست متحدثًا أصليًا للغة الإنجليزية ، ولا أمتلك معرفة تفصيلية في مجال الكهرباء أو الإلكترونيات أو البرمجة. وهو ما يعني في الواقع أنني أحاول كتابة تعليمات باللغة الإنجليزية حول أشياء لا أعرف فيها المصطلحات الصحيحة في لغتي. لذلك نرحب بأي تلميحات أو تصحيحات أو أفكار للتحسين

موصى به: