วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2563

ตอนที่ 6 เซ็นเซอร์บนบอร์ด KidBright มีอะไรบ้าง

     สวัสดีอีกครั้งจ้ะทุกคน วันนี้เรามาดูกันซิว่าบอร์ด KidBright มีเซ็นเซอร์อะไรมาให้บ้าง เอ้าทุกคนหยิบบอร์ดมาดูกันเร้ววว



    อันที่วง ๆ ไว้คือเซ็นเซอร์ที่เค้าให้มามี 2 อัน อันซ้ายมือเป็นชิปวัดอุณหภูมิสังเกตเป็นรูปปรอทที่มีลูกศรชี้ไหมเอ่ย ส่วนอันทางขวาเป็นเซ็นเซอร์วัดแสง (หรือเรียกว่า LDR) มีรูปสัญลักษณ์ที่ผู้เขียนดูเป็นรูปพระอาทิตย์คว่ำแต่บางคนอาจจะมองเป็นรูปหลอดไฟ (แหะ ๆ มันก็มีแสงออกมาเหมือนกันแหละเนาะ) เราสามารถสั่งให้เซ็นเซอร์อ่านค่าและแสดงผลบนจอ LED 16x8 ด้วยคำสั่งง่าย ๆ เหมือนกันทั้งสองเซ็นเซอร์เลย ดูภาพด้านล่างจ้ะ


    จากโค้ดที่เขียนสังเกตว่า Forever ก็มาอีกแล้วเป็นบล็อกพื้นฐานที่ต้องมีในทุกโปรแกรมเพราะต้องการให้บอร์ดทำงานไปเรื่อย ๆ อย่างต่อเนื่อง ในการอ่านค่าแสงภายในคำสั่ง Forever จะใช้บล็อก LED scroll ต่อเข้ากับ Light level sensor คือให้ค่าระดับความเข้มของแสงแสดงออกที่จอแสดงผล แล้วตามด้วย Delay 3 วินาทีเพื่อหน่วงเวลาให้จอแสดงค่าให้ครบไม่งั้นเราจะอ่านค่าไม่ได้ เมื่อเปลี่ยนเป็นอ่านค่าอุณหภูมิก็แต่เปลี่ยนจาก Light sensor เป็น Temperature sensor

    บางคนอาจสงสัยว่าเราจะใช้ Delay กี่วินาทีเพื่อให้จอแสดงผลแสดงค่าได้ครบถ้วนดีนะ อันนี้ขึ้นอยู่กับจำนวนตัวอักษรที่ต้องการแสดงผล ถ้าตัวอักษรมีหลายตัวก็จะใช้เวลา Delay เยอะหน่อย ลองปรับแต่งดูว่าจะเอาเท่าไหร่ 

    แล้วถ้าไม่อยากปรับล่ะ แนะนำให้เปลี่ยนคำสั่ง Delay เป็นคำสั่ง Wait LED matrix ready จ้ะก็จะได้ผลเหมือนกันเด๊ะ โดยไม่ต้องไล่หาเวลา Delay ดูตามภาพด้านล่าง


    คำสั่ง Wait LED matrix ready ใช้สำหรับรอให้จอแสดงผลแอลอีดีแสดงค่าให้ครบก่อนแล้วค่อยทำงานลำดับถัดไป ในที่นี้คือการวนกลับไปด้านบนแค่นี้ก็ไม่ต้องใส่ค่าเวลาแล้ว ลำดับต่อไปเรามาลองเล่นแค่เซ็นเซอร์วัดแสงก่อนนะการวัดแสงจะแสดงค่าเป็นเปอร์เซนต์จาก 0 ถึง 100 เรียงระดับจากมืดที่สุดไปสว่างที่สุด ให้เลือกเฉพาะชุดคำสั่งที่มี Light Sensor มาแฟลชลงบอร์ด ตอนนี้ลองเอานิ้วมือมาบังแสงหรือปิดเซ็นเซอร์ดูแล้วสังเกตค่าที่อ่านได้ว่าเปลี่ยนไปไหม ดูวิดีโอว่าทำยังไงตั้งแต่ต้นเลยเนาะ




    เซ็นเซอร์แสงมีประโยชน์มากและสามารถประยุกต์ใช้ได้หลายอย่าง เช่น ใช้ควบคุมการปิดเปิดไฟในอาคาร ถ้าแสงน้อยให้เปิดไฟหรือแสงมากให้ปิดไฟอัตโนมัติ  ใช้ตรวจวัดปริมาณแสงในการปลูกพืชแบบสมาร์ทฟาร์มในโรงเรือน หรือใช้เก็บข้อมูลสภาพแวดล้อม เป็นต้น 

    ตอนหน้าเราลองมาจำลองสถานการณ์การใช้งานกัน สมมติใช้เซ็นเซอร์แสงวัดค่าแสงในห้อง ถ้าแสงน้อยให้เปิดไฟ ถ้าแสงมากให้ปิดไฟ งานนี้ต้องใช้ if...do...อีกแล้ว ติดตามตอนหน้านะจ๊ะ



#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง

วันอาทิตย์ที่ 30 สิงหาคม พ.ศ. 2563

ตอนที่ 5 เสียงดนตรีกับ KidBright มาเล่น Baby shark กัน

     ตามที่สัญญาไว้ตอนนี้เราจะมาเล่นกับบัซเซอร์ (Buzzer) ด้วยกัน 

    บัซเซอร์มีลักษณะเป็นก้อนกลม ๆ ดำ ๆ แปะอยู่บนบอร์ด ใครหาไม่เจอว่าอยู่ตรงไหนให้กดไปดูตอนที่ 1 นะจ๊ะ นอกจากจอแสดงผลแอลอีดีแล้วบัซเซอร์ก็เป็นเอาต์พุตที่ติดมากับบอร์ดอีกตัวหนึ่งที่ทำหน้าที่ส่งเสียงออกมาได้ เราสามารถใช้บล็อกคำสั่งป้อนค่าตัวโน้ตและความยาวโน้ตให้กับบอร์ดเพื่อเล่นเสียงตามที่เราต้องการ จินตนาการดูว่าถ้าเราใส่ค่าโน้ตต่าง ๆ เป็นชุดเข้าด้วยกันเราก็สามารถทำให้ KidBright ร้องเพลงได้นั่นเอง

    เวลาเราใส่โน้ตมีสิ่งที่ต้องรู้ 2 อย่าง คือ จะใช้โน้ตอะไรและความยาวเสียงเท่าไหร่ ในบล็อกคำสั่งจะเขียนชื่อโน้ตเป็นตัว C D E ... สำหรับคนที่ไม่คุ้นเคยกับการเล่นดนตรีอาจจะงงว่าคืออะไร เพราะเคยได้ยินแค่โด เร มี ฯ (ร้องว่า โด่ว เร มี้...) ถ้าเทียบกันเป็นตัว ๆ โด เร มี = C D E (ร้องว่า สี่ ดี อี๊...😁😁😁) ดูตามตารางเทียบโน้ตด้านล่างนะ 

    เวลาเขียน C4 คือโน้ตตัวโดเสียงกลาง ถ้านั่งที่เปียโนโน้ต C4 จะเป็นคีย์สีขาวอยู่แถว ๆ กลางตัวเราโน้ต เร มี ฟา (D4 E4 F4) ขยับสูงขึ้นไปทางขวาจะได้เสียงสูงไปเรื่อย ๆ ขยับไป 7 ตัวจะเจอโดอีกครั้งที่เรียกว่า C5 คือตัวที่สูงไปอีก 1 octave ขยับไป 2 octave คือ C6 และ 3 octave คือ C7นอกนี้มันก็มีตัวแปลก ๆ อีก คือ #, b #=ดึงเสียงสูงขึ้นครึ่งเสียงและ b=ดึงเสียงต่ำลงครึ่งเสียง คือตัวคีย์สีดำ ๆ เล็ก ๆ บนเปียโนนั่นเอง


    
อีกอย่างที่ควรรู้ก่อนเขียนคือความสั้นยาวของตัวโน้ตซึ่งเป็นการกำหนดตามจังหวะเพลงแต่ละเพลง ใน KidBright IDE มีการกำหนดความยาวโน้ตเป็น 4, 2, 1, 1/2, 1/4 มีสัญลักษณ์สากลดังนี้ 

    โน้ตตัวอ้วน ๆ กลม ๆ สีขาวเรียกโน็ตตัวกลมมีค่าความยาวเสียงมากที่สุดเป็น 4 จังหวะเทียบได้กับโน้ตตัวขาว 2 ตัว โน้ตตัวขาวมีความยาว 2 จังหวะเท่ากับโน้ตตัวดำ 2 ตัว ไล่ลงมาเรื่อย ๆ เป็นเขบ็ตหนึ่งชั้น และเขบ็ตสองชั้นที่มีความยาวสั้นที่สุดที่ 1 ใน 4 เท่าของโน้ตตัวดำ

    เอาล่ะเมื่อพร้อมแล้ว ก่อนอื่นมาเลือกเพลงกันดีกว่า เอาเพลงอะไรดีมาลองใส่เล่นดู เอาง่าย ๆ แบบ Baby shark เนาะ เริ่มด้วยลากบล็อก Forever มา....แล้วใส่ตามภาพ ตั้งระดับความดังของบัซเซอร์ไว้ซัก 30% ก็พอด้วยคำสั่ง Set Volume เพราะ KidBright เสียงดังมากกกก


 




    ตอนจบของเพลงมีการหยุดจังหวะ เราใช้คำสั่ง Rest Duration ตามด้วยโน้ตตัวดำทำให้เพลงหยุดเล่นไป 1 จังหวะ แล้ววนกลับไปเริ่มเล่นใหม่

    ลองเล่นกันดูนะจ๊ะ ทีนี้ใครอยากให้ KidBright เล่นเพลงอะไรก็หาโน้ตมาหรือจะแต่งเองก็ไม่ว่ากัน ครั้งหน้าเจอกันเล่นอะไรดี สลับไปเล่นอินพุตที่เป็นเซ็นเซอร์บ้างกันเนาะ 



#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง

วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2563

ตอนที่ 4 กดปุ่มเลือกได้ ป้อนอินพุตให้ KidBright

    ตอนนี้ขอเพิ่มความซับซ้อนอีกนิดนึง ตอนก่อน ๆ ที่ผ่านมาเราเล่นกับ LED display ซึ่งเป็นเอาท์พุตตัวหนึ่งที่สั่งให้แสดงข้อความหรือแสดงรูปให้เราโดยไม่สนใจว่าจะมีอินพุตเข้ามาหรือไม่ ตอนนี้เราจะลองเพิ่มอินพุตเข้าไปดูโดยใช้อินพุตที่มีมาให้แล้วในบอร์ดคือสวิตช์ S1 และ S2 กำหนดไว้ว่าถ้าเรากดสวิตช์ S1 หน้าจอจะแสดงรูปหัวใจแดง แต่ถ้ากด S2 จะแสดงรูปหัวใจไม่มีสี เขียนเป็นแผนภาพได้ดังนี้


    บล็อกคำสั่งที่เราควรมองหามาใช้คือ การรับค่ากดสวิตช์ S1 กะ S2 และบล็อก if...do....หรือ if...do...else...  
    การใช้งาน if...do...else...คือ การบอกให้บอร์ดเช็คค่าสถานะถ้าตรงตามที่กำหนดก็ทำงานลำดับต่อไป
if.....do....             =  ถ้า...(เกิดอันนี้ขึ้น)...แล้วทำ....(อันนั้น)... 
if.....do.....else.... =  ถ้า...(เกิดอันนี้ขึ้น)...แล้วทำ....(อันนั้น)....ไม่เกิดเลยก็...(ทำแบบนี้แทน)..... 

แบบเนี้ยในโปรแกรมเราเรียก Logic งั้นเราก็ลองไปไล่หาคำสั่งในแถบเมนู Logic ได้เล้ย


    เปิดมาปุ๊บเจอคำสั่งที่ต้องการทั้งหมดเลยไม่ว่าจะเป็นบล็อก if...do... / if...do...else....  แล้วก็บล็อก Switch 1 pressed (กดสวิตช์ S1) Switch 2 pressed (กดสวิตช์ S2) ตอนนี้ใช้ บล็อก if...do... ก่อน ลากมาสิจ๊ะรออะไร เอา 3 บล็อกนี้ก่อน

    เอาบล็อกมาประกอบร่างตามภาพด้านล่างเลยแล้วอย่างลืมบล็อก Forever เพราะเราต้องการให้บอร์ดทำงานวนรอบไปเรื่อย ๆ ไม่เอาครั้งเดียวจบน้อมันจะไม่ทันเห็นอะไรเลย  แต่เดี๋ยวก่อนสังเกตอะไรไหมที่บล็อก if...do...ที่ภาพโปรแกรมมันดูแปลก ๆ เพราะมี else if โผล่มาทำไงดี... 
    
ไม่ต้องกังวลไปดูวิดีโอนี้ก่อน 



จากภาพก็จะตรงกับแผนภาพที่เขียนไว้ตอนต้น ถ้ากดสวิตช์ S1 หน้าจอจะแสดงรูปหัวใจแดง แต่ถ้ากด S2 จะแสดงรูปหัวใจไม่มีสี หลังกดปุ่มโปรแกรมจะหยุดไว้ 2 วินาทีตามค่า Delay ที่ตั้งไว้แล้วจึงกดใหม่ได้อีกครั้ง ลองทำดูจะพบว่ารูปหัวใจมันค้างไว้ตามปุ่มสุดท้ายที่เรากด แล้วถ้าเราเปลี่ยนมาใช้ if...do...else....แบบภาพด้านล่างล่ะ


    จากภาพนี้ขอใส่ลูกเล่นเพิ่มให้อีกนิดนึง คือบล็อกคำสั่งก่อนบล็อก Forever สังเกตว่าบล็อกคำสั่งอยู่นอกบล็อก Forever คือ LED 16x8 scroll และ  Delay เมื่อเราเริ่มโปรแกรมบอร์ดจะแสดงข้อความแบบเลื่อนเพียงครั้งเดียวว่า "Press Switch"   และตั้ง Delay ไว้ 6 วินาทีให้เพียงพอที่จะเลื่อนแสดงข้อความทั้งหมด แล้วค่อยเริ่มการรอรับค่า ถ้ากดสวิตช์ S1 หน้าจอจะแสดงรูปหน้ายิ้ม ค้างไว้ให้ดู 2 วินาที แต่ถ้ากด S2 ก็จะแสดงรูปหน้าบึ้งและค้างไว้ให้ดู 2 วินาที แต่ถ้าไม่กดอะไรเลย (else) จะทำปากหยัก ดังนั้นเมื่อเริ่มโปรแกรมตอนหลังข้อความ Press Switch ไม่มีการกด S1 หรือ S2 เกิดขึ้นซักอย่างเลยหน้าจอจึงขึ้นรูปปากหยัก วนอยู่อย่างนั้นไปเรื่อย ๆ เว้นแต่เราจะกดสวิตช์ตัวใดตัวหนึ่ง ออ ลืมบอก ถ้าหา else if ในบล็อกไม่เจอให้ทำเหมือนเดิมแบบเดียวกับบล็อก if...do...ในวิดีโอด้านบนนะจ๊ะ
    
มาลองดูผลจากโปรแกรมตัวนี้กันที่วิดีโอด้านล่างนี้


ครั้งหน้าเล่นอะไรอีกดีนะเอาบัซเซอร์ไหม มีแสง แล้วต้องมีเสียง แต่ไม่เอาควันนะเออ.... 



#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง

วันพฤหัสบดีที่ 27 สิงหาคม พ.ศ. 2563

ตอนที่ 3 KidBright แสดงหัวใจกระพริบและอนิเมชั่น

     ตอนที่ 3 แล้ว ตามที่สัญญาไว้ว่ากลับมาครั้งนี้จะมาเล่นอะไรสนุก ๆ กับจอแสดงผลกันอีกซักที เริ่มด้วยบล็อกโค้ดที่เป็นแบบตามภาพ ถ้าเรา Flash โปรแกรมลงบอร์ดจะเกิดอะไรขึ้นนะ

    จากภาพบล็อกที่ลากมาต่อกันจะมาจากแถบเมนู Basic ทั้งหมด วิธีสังเกตง่าย ๆ ว่าบล็อกไหนมาจากแถบเมนูไหนให้สังเกตสีที่หน้าชื่อเมนูนั้น ๆ บล็อกด้านในของแต่ละเมนูจะมีสีเดียวกันหมด อย่างเมนู Basic จะมีรูปสี่เหลี่ยมเป็นสีเขียวบล็อกคำสั่งด้านในจะเป็นสีเขียวทั้งหมด ส่วน เมนู Math มีรูปเครื่องหมายเป็นสีน้ำเงินบล็อกคำสั่งด้านในก็จะเป็นสีน้ำเงินหมด เมนูอื่น ๆ ก็จะเป็นเช่นเดียวกัน การจดจำลักษณะสีแบบนี้จะเป็นประโยชน์มากในอนาคตเวลาที่เราอยากเลือกบล็อกคำสั่งตามคู่มืออื่น ๆ แต่ไม่รู้ว่าอยู่ตรงไหน ก็ให้ไล่สีดูเอา

                             

    กลับมาที่บล็อกโค้ดรูปหัวใจด้านบนสุด ซึ่งมีบล็อกคำสั่งไม่กี่อย่าง เริ่มด้วย Forever ครอบชุดคำสั่งด้านในไว้แสดงว่าจะมีการทำงานวนซ้ำไปเรื่อย ๆ ไม่จบสิ้น ภายในเริ่มที่ LED16x8 อันนี้คือบล็อกคำสั้งที่เราสามารถวาดรูปใส่ลงไปได้เลยโดยลากบล็อก LED16x8 จากแถบเมนู Basic มาวางบนพื้นที่สีขาว แล้วคลิกเม้าส์ลงไปบนบล็อกเพื่อสร้างรูปตามต้องการ จากรูปลองวาดหัวใจสีแดงดูถ้าอยากปรับตำแหน่งไฟที่กดเอาไว้แนะนำให้ลองกดที่ลูกศรด้านมุมบนขวาของบล็อกคำสั่งจะสามารถขยับรูปที่เราวาดได้ ต่อมาคำสั่ง Delay 1 เป็นการตั้งค่าให้บอร์ดทำงานค้างที่คำสั่งก่อนหน้าให้ครบ 1 วินาทีก่อน ดังนั้นจอแสดงผลจะแสดงรูปหัวใจสีแดงค้างไว้ 1 วินาที



กดที่ลูกศรมุมบนขวาเพื่อเลื่อนรูปภาพ

    ลำดับต่อมารูปหัวใจจะไม่มีสี และจอแสดงผงจะแสดงรูปนี้ค้างไว้ 1 วินาที่ตามที่ได้ตั้งค่า Delay 1 เอาไว้ โปรแกรมจะวนกลับไปเริ่มต้นใหม่ไปเรื่อย ๆ ทำให้เราได้หัวใจกระพริบสลับกัน หาอยากให้กระพริบเร็วหรือช้ากว่านี้ก็ไปปรับลดหรือเพิ่มเวลาหลังคำสั่ง Delay เอานะจ๊ะ

    เราอาจรูปบนจอ LED หลาย ๆ บล็อกต่อเนื่องกันโดยกดลูกศรเลื่อนที่มุมบนขวาทำให้เราสร้างรูปภาพที่วิ่งได้แบบอนิเมชั่นก็ได้นะ วาดรูปนึงแล้วทำอีกรูปให้ขยับรูปไปเรื่อย ๆ วางเรียงกันเหมือนว่ารูปวิ่งได้ก็เก๋ไก๋ไปอีกแบบ  แต่อย่าลืมใส่เวลา Delay คั่นไว้ด้วยเดี๋ยวมองไฟไม่ทัน ลองดูภาพข้างล่างสิถ้าเราเขียนไปจนจบเราจะเห็นหัวใจวิ่งมาจากทางขวาเรื่อย ๆ แต่การทำแบบนี้จะใช้พื้นที่เขียนโปรแกรมเยอะหน่อยนะ ดังนั้นถ้าพื้นที่สีขาวไม่พอเขียนให้ลองขยาย-ย่อพื้นที่โดยการเลื่อนลูกกลิ้งบนเมาส์ขึ้น-ลง พื้นที่สีขาวก็ขยับเลื่อนไปมาได้โดยการกดเมาส์ปุ่มซ้ายแช่ไว้แล้วลากไปมา ส่วนเมาส์ปุ่มขวาก็มีประโยช์ลองกดที่บล็อกคำสั่งใด ๆ แล้วเลือก Duplicate จะสามารถก๊อปปี้บล็อกคำสั่งนั้นเพิ่มได้ด้วย 

ส่วนหนึ่งของโปรแกรมหัวใจวิ่ง

ลองดูผลลัพธ์ที่วิดีโอด้านล่าง


ฝากวิดีโอไว้อีกอันให้ลองทำเล่นดูนะทุกคน

ครั้งหน้าปรับโหมดมาเล่นอินพุตด้วยจะสนุกยิ่งขึ้นจ้า




#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง

วันพุธที่ 26 สิงหาคม พ.ศ. 2563

ตอนที่ 2 การเตรียมพร้อมและโค้ดตัวแรกกับบอร์ด KidBright

    ในตอนที่แล้วเราได้เกริ่นถึงบอร์ด  KidBright V.1.3 กันไปแล้วว่าประกอบด้วยอินพุตและเอาท์พุตอะไรบ้างที่เราสามารถใช้งานได้ มาคราวนี้มาดูกันว่าต้องเตรียมความพร้อมอะไรก่อนบอร์ดจึงจะทำงานได้ ผู้เขียนขอแบ่งการเตรียมพร้อมออกเป็น 2 ส่วน คือ ฝั่งฮาร์ดแวร์ และฝั่งซอฟแวร์

    ในฝั่งฮาร์ดแวร์นี้ก็ไม่มีอะไรยาก คือการต่อสายเพื่อจ่ายไฟให้บอร์ดด้วยสาย USB นั่นเอง บอร์ด KidBright จะมีขั้วต่อไฟเข้าบริเวณด้านบนขวา เป็นพอร์ตแบบ micro USB ลักษณะเหมือนสายชาร์จโทรศัพท์บางรุ่น ตัวบอร์ดรับไฟเข้าที่แรงดัน 5 โวลต์ จึงสามารถเสียบตรงเข้ากับพอร์ต USB ของคอมพิวเตอร์ได้เลยโดยตรง สาย USB นี้ใช้เป็นทั้งสายไฟและสายส่งข้อมูลระหว่างบอร์ดกับคอมพิวเตอร์ในเส้นเดียวกัน ***ข้อควรระวังก่อนต่อสาย USB ให้วางบอร์ดไว้บนโต๊ะไม้เรียบ ๆ หรือพื้นที่ไม่มีสื่อนำไฟฟ้าถ้าต่อขาตั้งลอยขึ้นมาได้จะดีมากเพราะบอร์ด KidBright มีขั้วไฟฟ้าด้านหลังที่สามารถลัดวงจรภายในได้ หากไม่มีขาตั้งให้หาเทปโฟมกาวสองหน้าลอกกระดาษออกฝั่งเดียวมาติดไว้ด้านหลัง แต่ทั้งนี้และทั้งนั้นบอร์ด KidBright เมื่อเสียบสายแล้วจับได้ไฟไม่ดูดนะ***


    ในฝั่งของซอฟแวร์เราต้องมีโปรแกรมใช้ในการเขียนโค้ด ถ้าเป็นสมัยก่อนต้องเรียนกันเป็นปี ๆ กว่าจะท่องไวยกรณ์และคำศัพท์ในภาษาโปรแกรมคอมพิวเตอร์ได้แต่ปัจจุบันมันง่ายมากเพราะมีการพัฒนาซอฟแวร์ IDE (integrated development environment) แบบบล็อกคำสั่ง (Blockly) มาให้ลากแปะตามลำดับได้ สำหรับบอร์ด KidBright เราสามารถใช้ KidBright IDE ของเนคเทคหรือ KBide จากทาง Maker Asia ก็ได้เช่นกัน แต่ในบทความชุดนี้ขอเน้นไปที่ KidBright IDE ก่อนน่าจะเหมาะกับมือใหม่อย่างเรา ๆ มากกว่าเนาะ

    เริ่มไปโหลดซอฟแวร์เลย ให้เข้าไปที่ https://www.kid-bright.org/ จะหน้าตาแบบนี้ 


ให้เลือกตัวเลือกทางซ้าย เข้าสู่เว็ปไซต์ KidBright ส่วนทางขวาเป็น KidbrightAI-น้องขนมชั้น เป็นฝั่งที่ใช้บอร์ดตัวอื่น ยังไม่ต้องสนใจจ้า พอกดเข้าไปจะเจอแถบเมนูด้านบนให้กด download

คราวนี้ก็เลือกเลยตามระบบปฏิบัติการของเครื่องคอมพิวเตอร์เรา ของผู้เขียนเป็น Windows10 64 bit ก็เลยเลือกเวอร์ชั่นล่าสุด KidBright IDE (Version 1.6, 64 bits) ตัวเวอร์ชั่นใหม่จะดีกว่าตัวก่อนหน้าเพราะเสถียรกว่าและมีการเพิ่ม plugin มาเพียบเลยไม่ต้องไปโหลดมาเอง


พอได้ไฟล์เป็น zip file มาเรากดเข้าไปดูจะมี KidBright-insataller อยู่ ให้ติดตั้งโดยใช้ไฟล์ KidBright-installer.exe รอโปรแกรมทำงานแล้ว KidBrightIDE ก็จะเปิดขึ้นมาอัตโนมัติ ถ้า Windows Firewall ถามเราว่าจะอนุญาตให้โปรแกรมเข้าถึงเครื่องคอมพิวเตอร์เราไหม ก็กดอนุญาตไป เท่านี้เราก็พร้อมจะเล่นแล้ว หน้าตา KidBright IDE ก็จะเป็นตามภาพ

ในเวอร์ชั่น 1.6 มีอะไรบ้าง หน้าตาก็จะประมาณวิดีโอด้านล่างนี้ 

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

    โค้ดตัวแรกที่เราเขียนนี้ตั้งใจว่าจะสั่งให้จอแสดงผลแสดงข้อความตามที่เราต้องการ ในที่นี้ให้เขียนว่า KidBright for dummies โดยให้เลื่อนเมาส์ไปที่แถบทางซ้ายมือและคลิกที่ Basic ใช้เมาส์ลากคำสั่งออกที่ต้อง ใช้ (ดูตามภาพด้านล่าง) มาวางทางพื้นที่ขาว ๆ ด้านข้างแล้วค่อยเอาคำสั่งมาประกอบร่างกัน 


จากภาพชุดคำสั่งที่เราดึงออกมาจากเมนู Basic ถ้าเราไม่ได้แก้ไขอะไรแล้วเขียนโปรแกรมลงบอร์ดเลย ชุดคำสั่งในภาพนี้หมายความว่าเรากำลังจะสั่งให้บอร์ด KidBright ใช้จอแสดงผล LED แสดงตัวเลื่อนให้ครบข้อความก่อนหน้า (LED16x8 Scroll When Ready) ข้อความว่า "Hello World" แล้วหยุดรอ 0.5 วินาที (Delay 0.5) ก่อนจะเริ่มทำงานใหม่ไปเรื่อย ๆ เพราะมีคำสั่ง Forever ครอบคำสั่งทั้งหมดอยู่ ซึ่งบอร์ดจะทำงานตามชุดคำสั่งข้างในวนไปเรื่อย ๆ อยู่อย่างนั้นตลอดไปจนกว่าจะถอดสาย USB ออก (หยุดจ่ายไฟ) สำหรับคำสั่ง LED16x8 Scroll When Ready จริง ๆ จะใช้ LED16x8 Scroll แทนก็ได้ แต่ต้องปรับ Delay ให้พอดี

เมื่อต้องการแสดงข้อความใด ๆ เราสามารถแก้ไขข้อความในช่อง "Hello World" ให้เป็นข้อความที่ต้องการได้รวมถึงการแก้ไขค่าของเวลาในช่อง Delay โดยใช้เมาส์คลิกไปที่ช่องที่บรรจุข้อความ Hello World และตัวเลขหลัง Delay เลยตามลำดับ ในที่นี้จะแก้ข้อความเป็น "Kidbright for dummies" และใช้เวลา Delay 2 วินาที


แก้ไขเรียบร้อยก็เอาเมาส์คลิกบนพื้นที่สีขาวตรงไหนก็ได้ สุดท้ายหน้าตาโปรแกรมก็จะเหมือนภาพด้านล่างนี้


และแล้วโปรแกรมแรกของเราก็เสร็จสิ้น กดเซฟไฟล์ตั้งชื่อตามต้องการแล้วต่อไปเราจะเขียนชุดคำสั่งนี้ลงในบอร์ด เราเรียกว่าสร้างโปรแกรม (Build) หรือแฟลช (Flash)โปรแกรมลงไปบนบอร์ด KidBright ตอนนี้ให้เราเสียบสาย USB ต่อบอร์ดเข้ากับเครื่องคอมพิวเตอร์ได้เลย เครื่องคอมพิวเตอร์จะทำการตรวจพบบอร์ดโดยอัตโนมัติและตั้งชื่อเป็น COM... ซึ่งสามารถตรวจสอบชื่อได้ใน Device manager ของเครื่องคอมพิวเตอร์เรา แต่ถ้ายังไม่อยากดูไม่เป็นไรลองแฟลชโปรแกรมลงเลยก็ได้ กดไปที่ลูกศรดังภาพ 



หลังจากกดแฟลชโปรแกรมแล้วให้สังเกตที่หน้าจอ Kidbright IDE จะแสดงขั้นตอนต่าง ๆ ตั้งแต่เช็คโปรแกรม เช็คบอร์ด และเช็คการเขียนโปรแกรมลงบอร์ด โดยจะขึ้น OK ทุกขั้นตอน แล้วเราจะเห็นข้อความเราปรากฎบนจอ LED ลองดูวิดีโอด้านล่างแสดงขั้นตอนทั้งหมดและผลลัพธ์ที่ได้




เย้..เท่านี้เราก็ได้เขียนโปรแกรมตัวแรกแล้ว หากใครอยากเล่นต่อก็ลองเปลี่ยนข้อความหรือปรับเวลา Delay แล้วเปรียบเทียบผลลัพธ์ที่ได้ดูนะจ๊ะ ยังไม่หมดนา...ครั้งหน้ามาลองดูว่าจอแสดงผลจะทำอะไรสนุก ๆ ได้อีก



#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง

วันอังคารที่ 25 สิงหาคม พ.ศ. 2563

ตอนที่ 1 เริ่มรู้จักกันกับบอร์ด KidBright

    สวัสดีผู้อ่านทุกท่าน Blog นี้ถือว่าเป็นงานชิ้นแรกเลยที่ทำไว้เพื่อเก็บข้อมูลให้ตัวเองและอาจจะเป็นประโยชน์สำหรับเด็ก ๆ หรือผู้ที่ไม่เคยเล่นอะไรอย่างงี้มาก่อนและอยากเรียนรู้ว่ามันคืออะไร ต้องออกตัวก่อนเลยว่าเราก็ไม่ได้เป็นคนเชี่ยวชาญอะไรมากมาย เริ่มรู้จักพวกบอร์ดไมโครคอนโทรลเลอร์มาแค่ไม่กี่ปี เริ่มหยิบมันมาดูเพราะอยากรู้ว่ามันอะไรยังไงเนี่ย ส่วนหนึ่งเพราะคิดว่าไม่เรียนรู้ไม่ได้แล้วเทคโนโลยีก็ไปเร็วไปไวเหลือเกิน ส่วนจะถามใครก็ไม่ได้ก็เลยต้องลองเรียนรู้เองนี่แหละ Blog นี้เลยตั้งใจให้ผู้อ่านได้เห็นการใช้งาน KidBright อย่างง่าย ๆ ในมุมที่คนที่เป็นผู้ใช้งานอย่างเราเริ่มทำความคุ้นเคยกะสิ่งนี้

    เมื่อครั้งเริ่มต้นจากศูนย์ ไม่รู้อะไรก็หยิบบอร์ดไปเรื่อยมาเล่นเริ่มที่ Microbit บอร์ดน่ารัก ๆ ที่ใคร ๆ ก็ว่าเล่นง่ายที่สุดขนาดเด็กประถมที่อังกฤษยังเล่นเป็น (แต่เราว่ายากอะ นั่งอ่าน tutorial ของ BBC ยังงง) ตามมาที่ Arduino หรือ บอร์ดของค่ายไทยอย่าง ATX และ iduino ของ Inex บอร์ดตระกูล Arduino ที่สามารถโหลด library หรือโปรแกรมที่มีคนเขียนไว้มาแก้ไขได้มากมาย ล่าสุดสักเกือบสองปีที่แล้วได้มาเจอกับบอร์ด KidBright v1.3 ซึ่งได้รับมาจาก เนคเทค (สวทช.) ส่งให้โรงเรียนทั่วประเทศได้ใช้งานกันฟรี ๆ อันนี้คือดีงามมาก

                               ที่มา doc.inex.co.th                                                            ที่มา microbit.org

    เมื่อได้โอกาสก็เริ่มต้นทดลองเล่นดูยังอดเปรียบเทียบบอร์ด KidBright กะ Microbit ไม่ได้ บอร์ดทั้งสองมีปุ่มให้กดและมีหน้าจอแสดงผลมาให้ และสังเกตได้เลยว่า KidBright มีขนาดใหญ่กว่ากันเยอะก็เพราะข้อดีคือ KidBright มีช่องไว้เสียบแจ๊คกะช่องบัดกรีพินรับสัญญาณอินพุตและส่งสัญญาณเอาท์พุตเพื่อต่อกับเซ็นเซอร์และอุปกรณ์ภายนอกได้เลย แถมยังมีพอร์ต I2C ที่ขยายการเชื่อมต่ออุปกรณ์อื่น ๆ ได้อีกในขณะที่บอร์ด Microbit เราต้องซื้อบอร์ดขยายพอร์ตเพิ่มอีกตัว และที่ชอบที่สุดที่ควรต้องพูดถึงคือบอร์ด KidBright เชื่อมต่อ Bluetooth และ WiFi ได้นะ เอามาทำงานออนไลน์ IoT ได้  ข้อเสียอย่างเดียวคือสัญญาณอินพุตเอาท์พุตของ KidBright ต้องเป็นดิจิตอลเท่านั้นน่ะสิ ส่วนนี้อึดอัดมากเพราะเซ็นเซอร์ส่วนใหญ่ส่งสัญญาณอนาล็อค แน่นอนมันมีวิธีแก้ไขให้ KidBright สามารถรับสัญญาณอนาล็อคได้แต่ผู้ใช้งานมือใหม่อย่างเราจะรู้ได้อย่างไรหนอได้แต่นั่งเล่นโปรแกรมซิมไปซึมไป รอจนกระทั่งทีมงาน Inex ออกบอร์ดขยายที่เรียกว่า iKB-1 มาช่วยทำให้การนำบอร์ด KidBright ไปใช้ได้ง่ายขึ้นมาก ๆ สามารถต่อเซ็นเซอร์และมอเตอร์ได้ด้วยทำรถหุ่นยนต์วิ่งได้เป็นคัน ๆ เลยทีเดียว 

    ล่าสุดจาก NECTEC ตั้งแต่เวอร์ชั่น 1.5 เป็นต้นไปบอร์ด KidBright มีพอร์ตอินพุตแบบอนาล็อคมาพร้อมบนบอร์ดแล้ว และมีการออก plugin ให้เพื่อต่อเชื่อมพอร์ต I2C กับบอร์ดที่มีชิป ADS1115 เพื่อใช้เพิ่มจำนวนพอร์ตอินพุตแบบอนาล็อคได้อีกมากมายเหมาะกับการต่อเชื่อมเซ็นเซอร์หลายตัวพร้อมกัน นอกจากนี้ก็มีช่องต่อมอเตอร์เซอร์โวให้อีกสองตัว   เอาไว้เขียนไปเรื่อย ๆ แล้วจะมีตัวอย่างการใช้งานให้ดูนะ ตอนนี้ขอยังไม่ลงลึกเรื่องบอร์ดอื่น ๆ ดูเวอร์ชั่น 1.3 เป็นหลักก่อน

    สิ่งที่จะเน้นในบทความนี้คือ เมื่อเริ่มต้นจากไม่รู้อะไรเลยเราจะเรียนรู้การใช้งาน KidBright ได้ยังไง ตอบแบบกำปั้นทุบดินคือต้องหยิบมันมาดูซะ แต่วิธีการดูเราต้องดูอย่างเป็นระบบ บอร์ดไมโครคอนโทรลเลอร์พวกนี้มีตุ่มมีช่องมีลายวงจรวุ่นวายน่าปวดหัวไปหมด แต่ทุก ๆ บอร์ดถูกออกแบบให้เป็นสมองกลเสมือน ทำหน้าที่เหมือนกันคือมีการรับข้อมูลเรียกว่าอินพุต คำนวณประมวลผลทำงาน แล้วสั่งการเป็นการส่งสัญญาณเอาท์พุตออกไปอุปกรณ์ภายนอก ให้เราดูภาพด้านล่าง 


    โดยทั่วไปเรามักวัดค่าอะไร ๆ ในสิ่งแวดล้อมด้วยเซ็นเซอร์ Sensor มาจาก Sense หรือประสาทสัมผัส มนุษย์เรามีสัมผัสรับรู้ที่เราเรียนมาตั้งแต่เด็ก ประสาทสัมผัสทั้ง 5 มี ตา-มองเห็น หู-ได้ยิน จมูก-รับกลิ่น ลิ้น-รับรส ผิวหนัง-สัมผัสลักษณะ เป็นสิ่งที่ทำให้เรารับรู้สภาพแวดล้อมที่เป็นสิ่งเร้าแลัวคิดประมวลผลตัดสินสั่งการให้ร่างกายทำงาน เช่น เมื่อมีแสงจ้าเราจะหลับตา หากได้กลิ่นเหม็นจะรีบปิดจมูก หรือเมื่อสัมผัสของร้อนจะรีบปล่อยมือ เช่นเดียวกันกับระบบควบคุมด้วย KidBright เพียงแต่เราต้องโปรแกรมบอกให้บอร์ดทำงานทีละขั้นตอนเริ่มจากว่าจะอ่านค่าจากเซ็นเซอร์ตัวไหน นำค่าที่ได้มาคำนวณแล้วเปรียบเทียบประมวลผล แล้วจึงส่งสัญญาณออกไปสั่งอุปกรณ์ภายนอกให้ทำงานตามเกณฑ์ที่เรากำหนด การคิดคำนวณและส่งสัญญาณเอาท์พุตเกิดขึ้นที่ชิป ESP32 บน KidBright ส่วนอุปกรณ์รับเอาท์พุตเพื่อทำงานก็จะนำมาต่อเชื่อมภายหลัง ขึ้นอยู่กับว่าอยากให้ทำอะไรส่วนใหญ่ที่ใช้ก็จะเป็น หลอดไปแอลอีดี มอเตอร์ เป็นต้น

    บอร์ดเปล่า ๆ ที่ได้มาเค้ามีภาคอินพุตและเอาท์พุตรวมถึงเซ็นเซอร์มาให้แล้วเราแค่ต้องเรียนรู้แยกประเภทมันก่อน ในการใช้งานระดับพื้นฐานให้ดูภาพด้านล่างสีส้มหมายเลข 1-4 เป็นอินพุต ส่วนหมายเลข 5-7 เป็นเอาท์พุต


มาลองไล่ดูกัน

อินพุตหรือภาครับสัญญาณที่ป้อนเข้าสมองกล พอร์ตอินพุตเป็นพอร์ตเปล่าๆ บางพอร์ตของ KidBright ได้ต่อเซ็นเซอร์กะปุ่มกดเอาไว้แล้ว

    หมายเลข 1 สวิตช์ S1 และ S2 กดติดปล่อยดับ กดปุ๊บ บอร์ดจะรับรู้ว่ากดปุ่มนะ

    หมายเลข 2 เซ็นเซอร์วัดอุณหภูมิ  

    หมายเลข 3 เซ็นเซอร์วัดความเข้มของแสงที่ระดับ 0 ถึง 100

    หมายเลข 4 พอร์ตอินพุต IN1-IN4 รับค่าสัญญาณแบบดิจิตอล 

                       IN1-IN4 นี้เอาเซ็นเซอร์ที่ส่งสัญญาณดิจิตอลมาต่อได้เพิ่มเติมอีก 4 ชนิด รองรับแรงดันไฟฟ้าได้ 0 ถึง 5V

    เวลาเราใช้งานที่สมองกลของบอร์ดเราจะสั่งว่าไปอ่านค่าจากอินพุตตัวที่เราต้องการ แล้วหลังจากนั้นสั่งเอาท์พุตที่เชื่อมต่อกับอุปกรณ์ให้ทำงาน เช่นกันกับพอร์ตอินพุต KidBright  มีพอร์ตเอาท์พุตว่างไว้ 2 พอร์ต และอีก 2 พอร์ตได้ต่อกับอุปกรณ์แสดงผลและลำโพงเอาไว้

    หมายเลข 5 หน้าจอแสดงผลแอลอีดีขนาด 16x8

    หมายเลข 6 บัสเซอร์หรือลำโพงใช้สร้างเสียงต่าง ๆ  

    หมายเลข 7 พอร์ตเอาท์พุต OUT1-OUT2 ส่งสัญญาณดิจิตอล 

                     OUT1-OUT2 ทำงานแบบ Open-drain รองรับการเชื่อมต่อกับอุปกรณ์ที่ใช้กระแสไฟฟ้าไม่เกิน 200mA

เริ่มต้นก็ยังไม่ต้องไปสนใจพอร์ต IN1-IN4 กับ OUT1-OUT2 เอาแค่ทดลองสั่งการให้บอร์ดใช้เซ็นเซอร์ปุ่มกด ร่วมกับอุปกรณ์แสดงผลและบัซเซอร์เป็นอินพุตเอาท์พุตก่อน 

มาตอนหน้าจะเริ่มด้วยเตรียมบอร์ดและทดลองสั่งการอะไรง่าย ๆ กันดู


ตอนที่ 11 KidBright ต่อ Output ควบคุมพัดลมตามเวลาและอุณหภูมิผ่านรีเลย์

     เมื่อเรามีบอร์ดควบคุมอย่าง KidBright และมีรีเลย์พร้อมกับแหล่งจ่ายไฟภายนอกเราก็สามารถควบคุมการทำงานของอุปกรณ์ขนาดใหญ่ขึ้นได้      บอกเสร...