สารบัญ:

นาฬิกาฝึกการนอนหลับของเด็ก: 6 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาฝึกการนอนหลับของเด็ก: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาฝึกการนอนหลับของเด็ก: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาฝึกการนอนหลับของเด็ก: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: วิธีการนอนหลับภายใน 2 นาที 2024, กรกฎาคม
Anonim
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก
นาฬิกาฝึกการนอนหลับของเด็ก

ฉันต้องการนาฬิกาเพื่อช่วยให้ลูกแฝดวัย 4 ขวบของฉันเรียนรู้ที่จะนอนให้นานขึ้นอีกหน่อย (ฉันมีเวลาพอที่จะตื่นตอน 5:30 น. ในวันเสาร์ตอนเช้า) แต่พวกเขาก็ยังอ่านเวลาไม่ได้ หลังจากดูสินค้าสองสามรายการในเว็บไซต์ช็อปปิ้งยอดนิยม ฉันคิดว่า มันยากแค่ไหนที่จะสร้างมันขึ้นมา!

นี่คือสิ่งที่ฉันคิดว่าฉันต้องการในโครงการนี้ มันจะใช้ RGB LED บางตัว (ส่วนใหญ่เพราะฉันมีประมาณห้าสิบตัวจากโปรเจ็กต์อื่น) เพื่อแสดงสีที่ต่างกันสามสี สีแดงหมายถึงกลับไปนอนเร็วเกินไปที่จะตื่น สีเหลืองหมายความว่าพวกเขาสามารถลุกขึ้นและเล่นอย่างเงียบ ๆ ในห้องของพวกเขา แน่นอนว่าสีเขียวหมายความว่าคุณสามารถลุกขึ้นได้ ฉันยังต้องการที่จะปรับเวลาเพราะฉันอยากจะนอนให้นานขึ้นในบางวัน (วันหยุดสุดสัปดาห์/วันหยุดเทียบกับวันธรรมดาและอื่นๆ)

เสบียง

Raspberry Pi Zero W

ไฟ LED RGB สองดวง

ตัวต้านทาน 220 โอห์ม 6 ตัว

พบไฟล์ (.stl, python, html) ที่นี่

สกรู สายไฟ และชิ้นส่วนขนาดเล็กต่างๆ ตามต้องการ

ขั้นตอนที่ 1: การพิมพ์ 3 มิติ

การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ
การพิมพ์ 3 มิติ

ลูกสาวของฉันเหมือนยูนิคอร์นจริงๆ ดังนั้นสำหรับโปรเจ็กต์นี้ ฉันรีมิกซ์ Unicorn Nightlight ของ Riven02 ซึ่งเป็นเพลงรีมิกซ์ของ Unicorn Trophy ของ Apachcreation ซึ่งสามารถพบได้บน Thingiverse.com และใช้ภายใต้ใบอนุญาต Creative Commons Non-Commercial ฉันแก้ไขฐานยูนิคอร์นให้พอดีกับสายไฟสำหรับราสเบอร์รี่ pi ศูนย์ ฉันบังเอิญมี AMZ3D Red PLA วางอยู่รอบ ๆ ดังนั้นฐานและหัวของยูนิคอร์นจะเป็นสีแดง ฉันใช้ PLA แบบใส/โปร่งแสงสำหรับแตร ไฟล์.stl และการตั้งค่าที่ฉันใช้คือ:

Unicorn.stl

  • ความสูงของชั้น: 0.02
  • ความหนาของผนัง:.8
  • จำนวนเส้นผนัง: 2
  • เติม: 15%
  • รูปแบบการเติม: Grid

UnicornBase.stl

  • ความสูงของชั้น: 0.02
  • ความหนาของผนัง:.8
  • จำนวนเส้นผนัง: 2
  • เติม: 15%
  • รูปแบบการเติม: Grid

Horn.stl

  • ความสูงของชั้น: 0.02
  • ความหนาของผนัง: 0.8
  • จำนวนเส้นผนัง: 3
  • เติม: 0

ขั้นตอนที่ 2: วงจร

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

วงจรค่อนข้างง่าย ฉันเลือกพิน GPIO ที่แตกต่างกันหกตัวเพื่อควบคุมการเปิด/ปิดสำหรับสีต่างๆ ของ RGB หมุดเหล่านั้นและสี LED ที่เกี่ยวข้องคือ:

  • ปักหมุด 11 เป็น RGB 1 สีแดง
  • ปักหมุด 13 เป็น RGB 1 สีเขียว
  • ปักหมุด 15 เป็น RGB 1 BLUE
  • ปักหมุด 16 ถึง RGB 2 RED
  • ปักหมุด 18 ถึง RGB 2 สีเขียว
  • ปักหมุด 36 ถึง RGB 2 BLUE
  • ปักหมุด 39 ลงกราวด์

แต่ละพินเชื่อมต่อกับตัวต้านทานผ่านตัวต้านทาน จำกัด กระแส 220 โอห์ม (ยกเว้นกราวด์แน่นอน) ฉันบัดกรีตัวต้านทานในแนวเดียวกันและปิดด้วยท่อหดความร้อน

ขั้นตอนที่ 3: การเตรียมราสเบอร์รี่ Pi

ฉันต้องการตั้งเวลาสำหรับนาฬิกาฝึกการนอนหลับโดยใช้อินเทอร์เฟซบนเว็บ ดังนั้นฉันจึงต้องตั้งค่าเซิร์ฟเวอร์ Apache และ PHP บน Raspberry Pi สิ่งแรกที่คุณควรทำเมื่อติดตั้งซอฟต์แวร์ใหม่บน Raspberry Pi คือต้องแน่ใจว่าเป็นเวอร์ชันล่าสุดโดยพิมพ์:

sudo apt-get update

หลังจากนั้นเราสามารถลงมือทำธุรกิจได้จริงๆ เราจะทำโดยการติดตั้ง Apache2:

sudo apt-get ติดตั้ง apache2 -y

สิ่งนี้ควรติดตั้งเว็บเซิร์ฟเวอร์ Apache คุณสามารถทดสอบสิ่งนี้ได้โดยใช้เบราว์เซอร์บน Raspberry pi และไปที่:

localhost/

หรือโดยการนำทางจากเบราว์เซอร์ของคอมพิวเตอร์เครื่องอื่นไปยังที่อยู่ IP ของ Raspberry Pi วิธีค้นหาประเภทที่อยู่ IP ของคุณ:

ชื่อโฮสต์ -I

การทำเช่นนี้จะนำไปสู่หน้า Apache Web Server เริ่มต้น ซึ่งสามารถเปลี่ยนแปลงได้โดยแทนที่ index.html ที่อยู่ในไดเร็กทอรี /var/www/html/ สามารถแทนที่ด้วยไฟล์ index.html ของฉันเอง

ต่อไปเราจะตั้งค่าเว็บเซิร์ฟเวอร์ Apache เพื่อให้สามารถเรียกใช้ไฟล์ PHP ได้ เริ่มต้นด้วยการพิมพ์:

sudo apt-get ติดตั้ง 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 โดเมนแบบคงที่_name_servers=192.168.1.1

แทนที่ด้วยข้อมูลเครือข่ายของคุณ สิ่งเดียวที่คุณต้องทำตอนนี้คือรีบูต

sudo รีบูต

ตำแหน่งของไฟล์จากลิงก์ของ Google ไดรฟ์ควรเป็นดังนี้:

  • 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

ในตัวแก้ไข ให้เลื่อนลง และก่อนถึงบรรทัด exit 0 ให้เพิ่ม:

หลาม /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

จากวันที่และเวลานำเข้า วันที่และเวลาเป็นเวลานำเข้า dt GPIO.setmode(GPIO. BOARD) GPIO.setwarnings (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) คืนค่า a, b def ledlight(color): if (color == "red"): GPIO.output(red1, GPIO. สูง) GPIO.output(red2, GPIO. HIGH) p1.stop() p2.stop() GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) elif (color == "blue"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.stop() p2.stop() GPIO.output(blue1, GPIO. HIGH) GPIO.output(blue2, GPIO. สูง) elif (สี == "สีเขียว"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.start(100) p2.start(100) GPIO.output(blue1, 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 (สี == "ปิด"): GPIO.output(red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) p1.stop() p2.stop() while True: settime = readset() ชั่วโมง นาที = settime ถ้านาที == 0: if dt(dt.now().year, dt.now().month, dt.now().day, hour-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().วัน ชั่วโมง-1 นาที+30): ledlight("red") elif dt(dt.now().year, dt.now().เดือน dt.now().วัน ชั่วโมง-1 นาที+30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().วัน ชั่วโมง นาที): 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("green") else: ledlight("off") elif dt(dt.now().year, dt.now().month, dt.now().วัน โฮ 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().วัน ชั่วโมง นาที-30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().วัน ชั่วโมง นาที): ledlight("yellow") 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("สีเขียว") อื่น: ledlight("ปิด") 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: หนึ่งปีต่อมา …

หนึ่งปีต่อมา …
หนึ่งปีต่อมา …

หนึ่งปีต่อมา:

สาวๆ ของฉันกำลังหลับใหลอีกสักหน่อย เราเคยชินกับการตื่นมาเจอเด็กน้อยในห้องบอกว่า "พ่อคะ ไฟเขียวแล้ว" และนั่นก็เยี่ยมมาก สรุปคือ เราตื่นนอนเวลา 05.30 น. ในวันเสาร์เท่านั้นเมื่อเราวางแผนอีกต่อไป

สิ่งที่ฉันวางแผนจะปรับปรุงในอนาคต:

  • อาจเพิ่มเซ็นเซอร์หรือสิ่งของอื่นๆ เช่น ไมโครโฟนและลำโพง
  • อาจแก้ไขรหัสเพื่อทำงานร่วมกับผู้พูดเพื่อใช้เป็นนาฬิกาปลุก เนื่องจากลูกๆ ของฉันกำลังจะเข้าโรงเรียนในไม่ช้า

แนะนำ: