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

ساعة التدريب على النوم للأطفال: 6 خطوات (بالصور)
ساعة التدريب على النوم للأطفال: 6 خطوات (بالصور)

فيديو: ساعة التدريب على النوم للأطفال: 6 خطوات (بالصور)

فيديو: ساعة التدريب على النوم للأطفال: 6 خطوات (بالصور)
فيديو: تدريب الطفل على النوم 2024, يوليو
Anonim
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال
ساعة تدريب نوم الأطفال

كنت بحاجة إلى ساعة لمساعدة توأمي البالغ من العمر 4 سنوات على تعلم النوم لفترة أطول قليلاً (كان لدي ما يكفي من الاضطرار إلى الاستيقاظ في الساعة 5:30 صباحًا يوم السبت) ، لكنهم لا يستطيعون قراءة الوقت بعد. بعد تصفح بعض العناصر على موقع تسوق شائع جدًا ، فكرت ، "ما مدى صعوبة إنشاء واحدة فقط ؟!"

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

اللوازم

Raspberry Pi Zero W

اثنان RGB LED

ستة مقاومات 220 أوم

تم العثور هنا على الملفات (.stl ، python ، html)

مختلف البراغي الصغيرة والأسلاك والأجزاء الصغيرة حسب الحاجة.

الخطوة 1: الطباعة ثلاثية الأبعاد

طباعة ثلاثية الأبعاد
طباعة ثلاثية الأبعاد
طباعة ثلاثية الأبعاد
طباعة ثلاثية الأبعاد
طباعة ثلاثية الأبعاد
طباعة ثلاثية الأبعاد

إن ابنتي تشبه حيدات القرن حقًا ، لذا بالنسبة لهذا المشروع ، قمت بإعادة مزج Riven02's Unicorn Nightlight ، وهو عبارة عن ريمكس من Apachcreation's Unicorn Trophy ، والذي يمكن العثور عليه على Thingiverse.com واستخدامه بموجب ترخيص Creative Commons غير تجاري. لقد قمت بتعديل قاعدة يونيكورن لتناسب سلك طاقة لقرص التوت. تصادف وجود بعض AMZ3D Red PLA حولها ، لذا فإن قاعدة وحيد القرن ورأسها سيكونان باللون الأحمر. لقد استخدمت جيش التحرير الشعبى الصينى الشفاف / الشفاف للقرن. ملفات.stl والإعدادات التي استخدمتها هي:

يونيكورن

  • ارتفاع الطبقة: 0.02
  • سمك الجدار:.8
  • عدد خط الجدار: 2
  • إنفيل: 15٪
  • نمط الملء: الشبكة

UnicornBase.stl

  • ارتفاع الطبقة: 0.02
  • سمك الجدار:.8
  • عدد خط الجدار: 2
  • إنفيل: 15٪
  • نمط الملء: الشبكة

هورن. stl

  • ارتفاع الطبقة: 0.02
  • سمك الجدار: 0.8
  • عدد خط الجدار: 3
  • إنفيل: 0

الخطوة 2: الدائرة

الدائرة
الدائرة
الدائرة
الدائرة
الدائرة
الدائرة

الدائرة سهلة للغاية. اخترت ستة دبابيس GPIO مختلفة للتحكم في التشغيل / الإيقاف للألوان المختلفة لـ RGB. تلك المسامير وألوان LED المقابلة هي:

  • دبوس 11 إلى RGB 1 أحمر
  • دبوس 13 إلى RGB 1 أخضر
  • دبوس 15 إلى RGB 1 أزرق
  • دبوس 16 إلى RGB 2 RED
  • دبوس 18 إلى RGB 2 أخضر
  • دبوس 36 إلى RGB 2 BLUE
  • دبوس 39 على الأرض

يتم توصيل كل دبوس بالمقاوم من خلال المقاوم الحد من التيار 220 أوم (باستثناء الأرض بالطبع). لقد قمت بلحام المقاوم في خط وغطيته بأنابيب الانكماش الحراري.

الخطوة 3: تحضير Raspberry Pi

أردت أن أكون قادرًا على ضبط أوقات لساعة مدرب النوم باستخدام واجهة الويب. لذلك كنت بحاجة إلى إعداد خادم Apache و PHP على Raspberry Pi. أول شيء يجب عليك فعله دائمًا عند تثبيت برنامج جديد على Raspberry Pi هو التأكد من تحديثه عن طريق كتابة:

sudo apt-get update

بعد ذلك ، يمكننا حقًا البدء في العمل. سنفعل ذلك عن طريق تثبيت Apache2:

سودو apt-get install apache2 -y

يجب أن يقوم هذا بتثبيت خادم الويب Apache. يمكنك اختبار ذلك باستخدام متصفح على Raspberry Pi والانتقال إلى:

localhost /

أو بالانتقال من متصفح جهاز كمبيوتر آخر إلى عنوان IP الخاص بـ Raspberry Pi. للعثور على نوع عنوان IP الخاص بك:

اسم المضيف -أنا

سيؤدي القيام بذلك إلى صفحة خادم ويب Apache افتراضية. يمكن تغيير ذلك عن طريق استبدال index.html الموجود في الدليل / var / www / html /. يمكن استبداله بملف index.html الخاص بي.

بعد ذلك سنقوم بإعداد خادم الويب Apache لنكون قادرين على تشغيل ملفات PHP. ابدأ بكتابة:

sudo apt-get install php libapache2-mod-php -y

يجب أن تكون الآن قادرًا على وضع ملف sleepset.php في / var / www / html باستخدام ملف index.html.

للانتقال إلى هذه الصفحة في شبكتك الخاصة ، ستحتاج إلى إعداد Raspberry Pi الخاص بك بعنوان IP ثابت (أو يمكنك فقط محاولة اكتشاف عنوان IP الجديد عندما يتم تجديد شبكتك بين الحين والآخر). ستحتاج إلى تحرير ملفين حتى يعمل هذا. ستحتاج إلى تحرير ملف /etc/dhcpcd.conf بما يلي:

واجهة wlan0

ip_address ثابت = 192.168.1. الموجهات الثابتة = 192.168.1.1 domain_name_servers = 192.168.1.1

استبدل بمعلومات الشبكة الخاصة بك. الشيء الوحيد الذي عليك القيام به الآن هو إعادة التشغيل.

sudo إعادة التشغيل

يجب أن يكون وضع الملفات من رابط محرك جوجل على النحو التالي:

  • يجب وضع index.html و sleepset.php في الدليل / var / www / html
  • يجب وضع sleepset.txt و sleeptrainer1_1.py في دليل / home / pi / pythoncode (تلميح: سيتعين عليك إنشاء هذا الدليل)

بعد وضع هذه الملفات في الدليل الصحيح ، يجب تعديل ملف rc.local لتشغيل برنامج sleeptrainer1_1.py عند بدء التشغيل. ستحتاج إلى وصول على مستوى الجذر لتعديل ملف rc.local ، لذا اكتب:

sudo nano /etc/rc.local

في المحرر ، قم بالتمرير لأسفل ، وقبل الخروج من سطر 0 ، أضف:

python /home/pi/pythoncode/sleeptrainer1_1.py &

هناك شيئان يجب تذكرهما هنا:

  1. استخدم مسار الملف المطلق بحيث لا يعتقد LINUX أن ملف sleeptraner1_1.py موجود في نفس الدليل مثل rc.local.
  2. لا تنسى علامة العطف (&) في النهاية. سيسمح هذا لـ LINUX بتشغيل هذا الملف في الخلفية ومتابعة التمهيد.

الآن ، احفظ الملف عن طريق كتابة ctrl-x ثم y عندما يُطلب منك الحفظ ثم ENTER.

ثم اكتب sudo reboot.

يجب أن يُذكر في مكان ما هنا أنه (على الأقل) يجب عليك تغيير كلمة مرور Raspberry Pi باستخدام الأمر passwd. إذا لم تكن قد فعلت هذا حتى الآن ، فسيكون الآن هو الوقت المناسب.

الخطوة 4: الكود

التالي هو الكود من ملف sleeptrainer1_1.py. لقد استخدمت كائن datetime لمقارنة الأوقات بتلك المقروءة في ملف sleepset.txt. يتكون الملف النصي من سطرين ، الأول لمدة ساعة والثاني لمدة دقيقة. ينام sleeptrainer1_1.py لمدة دقيقة واحدة بين تكرار الحلقة لعدم ربط المعالج. كان الضوء الأخضر في الأصل ساطعًا للغاية ، لذلك استخدمت تعديل عرض النبض لتعتيمه عند استخدامه مع اللون الأحمر لجعل اللون الأصفر.

كود بايثون:

استيراد RPi. GPIO كـ GPIO

من تاريخ استيراد التاريخ والوقت كوقت استيراد GPIO.setmode (GPIO. BOARD) GPIO.set warnings (False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1 ، GPIO. OUT) GPIO.setup (red2، GPIO. OUT) GPIO.setup (green1، GPIO. OUT) GPIO.setup (green2، GPIO. OUT) GPIO.setup (blue1، GPIO. OUT) GPIO.setup (blue2 ، GPIO. OUT) p1 = GPIO. PWM (green1، 100) p2 = GPIO. PWM (green2، 100) def readset (): setfile = open ("/ home / pi / pythoncode / sleepset.txt"، 'r') a = setfile. readline () b = setfile.readline () a = int (a) b = int (b) return a، b def ledlight (color): if (color == "red"): GPIO.output (red1، GPIO. عالية) GPIO.output (أحمر 2 ، GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1، GPIO. LOW) GPIO.output (blue2، GPIO. LOW) elif (اللون == "أزرق"): GPIO.output (red1، GPIO. LOW) GPIO.output (red2، GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1، GPIO. HIGH) GPIO.output (blue2، GPIO. عالية) elif (color == "green"): GPIO.output (red1، GPIO. LOW) GPIO.output (red2، GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (أزرق 1 ، GPIO. LOW) GPIO.output (blue2، GPIO. LOW) elif (color == "yellow"): p1.start (60) p2.start (60) GPIO.output (red1، GPIO. HIGH) GPIO.output (red2، GPIO. HIGH) GPIO.output (blue1، GPIO. LOW) GPIO.output (blue2، GPIO. LOW) elif (color == "off"): GPIO.output (red1، GPIO. LOW) GPIO.output (red2، GPIO. LOW) GPIO.output (blue1، GPIO. LOW) GPIO.output (blue2، GPIO. LOW) p1.stop () p2.stop () بينما صحيح: ضبط = إعادة ضبط () ساعة ، دقيقة = ضبط إذا كانت الدقائق == 0: إذا كانت dt (dt.now (). year، dt.now (). month، dt.now (). day، hour-2) <dt.now () <dt (dt.now ().year، dt.now (). month، dt.now (). day، hour-1، minutes + 30): ledlight ("red") elif dt (dt.now (). year، dt.now ().month، dt.now (). day، hour-1، minutes + 30) <dt.now () <dt (dt.now (). year، dt.now (). month، dt.now (). day ، ساعة ، دقيقة): مصباح ليد ("أصفر") elif dt (dt.now (). year ، dt.now (). month ، dt.now (). اليوم ، الساعة ، الدقيقة) <dt.now () <dt (dt.now (). year، dt.now (). month، dt.now (). day، hour + 1، minutes): ledlight ("green") else: ledlight ("off") elif dt (dt.now (). year ، dt.now (). month ، dt.now (). day ، ho ur-2) <dt.now () <dt (dt.now (). year، dt.now (). month، dt.now (). day، hour، minutes-30): ledlight ("red") elif dt (dt.now (). year، dt.now (). month، dt.now (). day، hour، minutes-30) <dt.now () <dt (dt.now (). year، dt.now (). month ، dt.now (). day ، hour ، minutes): ledlight ("yellow") elif dt (dt.now (). year، dt.now (). month، dt.now (). day، hour، minutes) <dt.now () <dt (dt.now (). year، dt.now (). month، dt.now (). day، hour + 1، minutes): ledlight ("أخضر") else: ledlight ("off") time.sleep (60)

ملف index.html هو نموذج أساسي مصمم بلغة HTML. يأخذ محتويات مربعي نص ويمررهما إلى ملف sleepset.php لمعالجة النموذج. يقوم ملف PHP ببساطة بالكتابة فوق ملف sleepset.txt بالبيانات المحدثة.

الخطوة 5: وضع كل ذلك معًا

ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا

بعد الانتهاء من الترميز وطباعة جميع الأجزاء ، حان وقت التجميع. لقد اتبعت هذه الخطوات لتجميعها معًا:

  1. حفر فتحتين صغيرتين بحجم RGB LED في الجزء السفلي من القرن ووضع LEDS في هذه الثقوب.
  2. ضع القرن في الفتحة الموجودة في رأس وحيد القرن واسحبه حتى يصبح مشدودًا. استخدم الغراء من الداخل لتأمين القرن.
  3. قم بتوصيل Raspberry Pi Zero W بداخل رأس وحيد القرن. (باستخدام مسدس الغراء الساخن ربما)
  4. اربط رأس يونيكورن بقاعدة يونيكورن.
  5. قم بتوصيل سلك الطاقة ، وربط المجموعة بأكملها بالحائط.
  6. قم بتوصيل الساعة.

في هذه المرحلة لديّ ساعة مدرّب نوم للأطفال تعمل.

الخطوة 6: بعد عام …

بعد سنة واحدة …
بعد سنة واحدة …

بعد سنة واحدة:

بناتي ينمن لفترة أطول قليلاً. لقد اعتدنا على الاستيقاظ على أطفال صغار في غرفتنا قائلين ، "أبي ، الضوء أخضر." وهذا شيء عظيم. قصة قصيرة طويلة ، نستيقظ فقط في الساعة 5:30 صباحًا يوم السبت عندما نخطط لذلك بعد الآن.

الأشياء التي أخطط لتحسينها في المستقبل:

  • ربما يتم إضافة بعض المستشعرات أو عناصر أخرى مثل الميكروفون ومكبرات الصوت.
  • ربما قم بتحرير الكود للعمل مع مكبر صوت لاستخدامه كمنبه حيث سيبدأ أطفالي المدرسة قريبًا.

موصى به: