เริ่มเรียนรู้ Physical Programming ด้วย Scratch และ GPIO บน Raspberry Pi ตอนที่ 2

[ตอนที่ 1][ตอนที่ 3][ตอนที่ 4] [ตอนที่ 5]

ผมได้เกริ่นให้ท่านรู้จักกับ Scratch มาแล้วอย่างคร่าว ๆ ในตอนที่ 1  ในตอนที่ 2 จะกล่าวถึงเรื่อง Physical Programming กันละ ครับ

อะไรคือ Physical Programming

เริ่มต้นที่ความหมายของ Physical Programming กัน หากท่านค้นหาภาพโดยใช้คำค้นว่า "physical programming" ใน Google  ท่านจะได้ภาพออกมามากมาย หากสังเกตุดูแล้ว ภาพที่สื่อถึงกิจกรรมการเขียนโปรแกรมคอมพิวเตอร์แบบที่มีคนกำลังพิมพ์คำสั่งอยู่หน้าคอมพิวเตอร์นั้นมีน้อยมาก ดูๆ ไปแล้วจะเหมือนกับการทำพวกงานประดิษฐ์ หรือ ค่ายวิทยาศาสตร์เสียมากกว่า


แผนภาพ 1 ความสัมพันธ์ระหว่างส่วนต่าง ๆ ใน Physical Programming

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






จุดหนึ่งที่น่าสนใจของ Physical Programming  คือ การเพิ่มบทบาทของผู้ทำงานที่ไม่ได้จำกัดอยู่กับนักคอมพิวเตอร์เท่านั้น แต่มันขยายวงออกไปยัง นักออกแบบ นักประดิษฐ์ วิศวกร  เกษตกร ครู เด็กนักเรียน หรือคนที่สนใจทั่วไป อีกด้วย และหากท่านต้องการนิยามที่เป็นทางการสักหน่อย ท่านอาจสนใจแวะเข้าไปอ่านได้ที่ http://courses.ischool.berkeley.edu/i290-4/f08/slides/Thursday_Week2_Intro_Physical_Computing.pdf  หรือ https://en.wikipedia.org/wiki/Physical_computing#In_Scientific_Applications ก็จะเห็นภาพชัดเจนขึ้นครับ

Scratch กับ Physical Programming

มีนักพัฒนานำ Scratch ไปดัดแปลงเพื่อใช้ในเรื่อง Physical Programming ในรูปแบบของ modification (ดู ตอนที่ 1) หลายรายได้แก่

สำหรับ Raspbian เอง แม้ว่าจะยังใช้งาน Scratch 1.4 ก็จริง แต่ก็ได้มีการเพิ่มคุณสมบัติที่ทำ Scratch บน Raspbian สนับสนุน Physical Programming คือ GPIO Server และ Remote Sensing Protocol

Scratch GPIO Server

Raspbian Jessie ได้มีการเพิ่มคุณสมบัติ GPIO Server  เข้ามาทำให้ Scratch สามารถติดต่อกับ GPIO Pin ได้โดยตรง รวมไปถึง Extension board ของ Raspberry Pi ด้วย เช่น

  • SenseHat จากโครงการ AstroPi (https://astro-pi.org/)
  • PiBrella (http://pibrella.com/)
  • ExplorerHat (https://shop.pimoroni.com/products/explorer-hat)
  • PiFace (http://www.piface.org.uk/)

 นอกจากนี้ GPIO Server ยังอนุญาตให้ Scratch เข้าถึงทรัพยากรอื่นคือ USB Camera / Camera Module, IP Address และ Datetime ด้วย

Remote Sensing Protocol

เป็นคุณสมบัติที่เพิ่มเติมเข้ามาเพื่อให้ Scratch สื่อสารกับโปรแกรมอื่นได้ผ่าน TCP Network โดยที่ Scratch จะเปิด port สื่อสารหมายเลข 42001 ไว้และสื่อสารกับโปรแกรมอื่นผ่านกลุ่ม Sensing blocks  และ Broadcast  block

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

  • ข้อความเดี่ยว หรือ ข้อความที่อยู่ภายในเครื่องหมาย " " เช่น cat, "hello world"
  • ตัวเลข เช่น 0.2, 123, -1.5
  • ค่าทางตรรกะ คือ true หรือ false

ทั้งหมดในตอนนี้กล่าวถึงความหมายและตัวอย่างของ Physical Programming แบบกว้าง ๆ และกล่าวถึง Scratch ใน Raspbian ว่าสนับสนุนการสร้าง Physical Programming อย่างไร ตอนต่อไปก็จะเริ่มกล่าวถึงตัวอย่างการใช้ Scratch ในการทำโครงงานกันครับ

[อ่านตอนที่ 1]



















Previous
Next Post »