Raspberry Pi ร้องเพลงชาติไทย Rev.1.0.3

หลังจากเมื่อบทความตอนที่แล้วเราได้ทดลองสร้าง Python เพื่อทำนาฬิกาปลุกบน Raspberry Pi กันไปแล้วนะครับ วันนี้เราจะนำโค้ดอันเก่า มาปรับปรุงกันใหม่ ให้เป็น Raspberry Alarm Clock เพื่อร้องเพลงเคารพธงชาติตอน 6 โมงเย็น พร้อมด้วย ไฟ LED กระพริบแสดงสถานะกันนะครับ โดยไฟ LED จะกระพริบอยู่สองแบบ คือแบบ Normal เพื่อให้เราว่าโปรแกรมเรายังทำการนับเวลาอยู่นะ และมีไฟกระพริบบอกในขณะทำการร้องเพลง เมื่อร้องจบ ก็จะกลับมาแสดงสถานะปกติครับ เอาละครับเพื่อไม่ให้เป็นการเสียเวลาเรามาเริ่มกันดีกว่า

pi05001

อันดับแรก เรามาดู Hardware กันก่อนครับ

อุปกรณ์ทดลองก็มี
R 1K  3 ตัว
LED สีแดง 2 ตัว (ใช้บอกสถานะขณะทำการร้องเพลง)
LED สีส้ม 1 ตัว (ใช้บอกสถานะ normal)
แผ่นต่อวงจร (Breadboard)
สายจั๊ม
บอร์ด Raspberry Pi
และ ลำโพงเล็กๆ

สำหรับวงจรนะครับ จะใช้อุปกรณ์ต่อตามขาดังนี้
GPID0 (ขา 3) ต่อเข้า LED ส้ม ขา +
GPIO1 (ขา5) ต่อเข้า LED แดง1 ขา +
GPIO4 (ขา7) ต่อเข้า LED แดง2 ขา+
GND (ขา9) ต่อเข้าปายขาตัวท้านทาน 1k ทุกตัว เพื่อให้ครบวงจร

ถ้า งง ก็ไปดูขา GPIO และ การต่อใกล้ๆ กันเลยครับ

pi05002

สำหรับคนที่จะดูรายชื่อขา GPIB ก็ลองไปศึกษาเพิ่มเติมได้ครับที่
–> http://elinux.org/RPi_Low-level_peripherals

ตัวอย่างการนับขา GPIO ให้หันบอร์ดเข้าหาตัว (ทำให้ตัว Raspberry Pi ตั้งหัวขึ้น) และอ่านเรียงตามนี้นะครับ

pi05003

 

หลังจากนั้นก็โปรแกรม python เข้าไป สำหรับโค้ด rev 1.0.3 ตัวนี้ ผมได้ทำการแก้ไขโดยเพิ่มการ Import RPi.GPIO เข้าไป เพื่อให้สามารถส่งสัญญาณออก port GPIO ให้ LED สามารถกระพริบได้ครับ ไปดูโค้ดกันเลยครับ

# Application: Raspberry Pi sing the national anthem
# Rev 1.0.3 (12-August-2013)
# Made By : ChokeLive (chokelive@gmail.com)
# website: www.chokelive.com

import time
import pygame
import RPi.GPIO as GPIO

pygame.init()
clock = pygame.time.Clock()

GPIO.setmode(GPIO.BOARD)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(5,GPIO.OUT)
GPIO.setup(7,GPIO.OUT)
GPIO.output(3,GPIO.LOW)
GPIO.output(5,GPIO.LOW)
GPIO.output(7,GPIO.LOW)

ledFlag = 0
while True:
        clock.tick(1)
        theTime=time.strftime("%H:%M:%S", time.localtime())
        print theTime

        # Blink Normal LED
        if ledFlag == 0:
                ledFlag = 1
                GPIO.output(3,GPIO.HIGH)
        else:
                ledFlag = 0
                GPIO.output(3,GPIO.LOW)

        if theTime == "18:00:00":
                print "Play Sound!!"
                pygame.mixer.init()
                pygame.mixer.music.load("thaination.mp3")
                pygame.mixer.music.play()
                while pygame.mixer.music.get_busy():
                        pygame.time.Clock().tick(3)

                        GPIO.output(3,GPIO.LOW)

                        # Blink Sound LED
                        if ledFlag == 0:
                                ledFlag = 1
                                GPIO.output(5,GPIO.HIGH)
                                GPIO.output(7,GPIO.LOW)
                        else:
                                ledFlag = 0
                                GPIO.output(5,GPIO.LOW)
                                GPIO.output(7,GPIO.HIGH)

สำหรับการทำงานนะครับ โปรแกรมก็จะนับเวลาไปเรื่อยๆ มีการ print เวลาออกหน้าจอ command (ถ้า SSH เข้าไปก็จะเห็น) ทุกๆ 1 วินาที และจะมีไฟ LED สีส้มกระพริบบอกสถานะอยู่ตลอดเวลา หลังจากนั้น เมื่อเวลาดำเนินไปถึง 18:00 น. ตัว Pi ก็จะทำการเล่นเพลงเคารพธงชาติ พร้อมด้วย LED สีแดงจะแสดงสถานะกระพริบกันสลับไปมาระหว่างการร้องเพลงชาติ หลังจากเพลงชาติจบแล้ว ไฟสีส้มก็จะมากระพริบตามปกติครับ

ถ้าใครนึกภาพไม่ออกลองไปดู youtube ที่ผมได้ถ่ายเป็น clip Video ไว้ครับ

 

ลองไปทดลองศึกษาและเล่นดูครับ สนุกแถวได้ความรู้ด้วยครับ แล้วพบกันใหม่ตอนหน้าครับ

 

Leave a Comment