[TH] PyTk

บทความนี้กล่าวถึง pytk อันเป็นไลบรารีเชื่อมประสานกับผู้ใช้แบบกราฟิกส์ หรือ GUI (Graphics User Interface) ของภาษาไพธอนที่เรียกใช้ tkinter (TK Interface) ทำให้สามารถเขียนโปรแกรม GUI ที่ทำงานได้ทั้งระบบปฏิบัติการ Windows, Linux และ macOS โดยการทำงานของ tkinter ของไพธอนเป็นการเชื่อมประสานกับไลบรารี Tcl/Tk อีกชั้นหนึ่ง และบทความนี้ใช้ Thonny เป็น IDE ในการเขียนโปรแกรมตัวอย่าและติดตั้งไลบรารี (อ่านบทความการใช้ Thonny)

การใช้งานจะต้องมีไลบรารี pytk ซึ่งสามารถเขียนโค้ดเพื่อทดสอบการติดตั้งไลบรารีด้วยโค้ดโปรแกรมภาษาไพธอนดังต่อไปนี้

try:
    import tkinter as tk
except ImportError:
    import sys
    print("ไม่พบไลบรารี tkinter!!!")
    sys.exit(0)
print("พร้อมสำหรับ tkinter")
Read More

[TH] Thonny 4

Thonny เป็นเครื่องมือประเภทสภาพแวดล้อมแบบบูรณาการ หรือ IDE (Integrated development environment) ที่พัฒนาโดยชาวอสโตเนียชื่อ Aivar Annamaa ในปี ค.ศ. 2015 ภายใต้สิทธิ์การใช้งานแบบเปิดเผยรหัสโปรแกรม (Open Source) แบบ MIT และคุณสมบัติของโปรแกรมนั้นครอบคลุมการเขียนโค้ด ตรวจสอบโค้ด บริหารจัดการไลบรารีของภาษาไพธอน และรันโปรแกรมภาษาไพธอนที่เขียนขึ้นทำให้เป็นซอฟต์แวร์ที่ทำงานในส่วนของการเขียนและทดสอบการทำงานที่ใช้งานง่ายเหมาะสมกับผู้เริ่มต้น

          การติดตั้ง Thonny ทำได้โดยดาวน์โหลดไฟล์ชื่อ thonny-xxl-4.1.1.exe จากเว็บไซต์ thonny.org ดังภาพที่ ก-1

ภาพที่ ก-1 หน้าจอเว็บไซต์ thonny.org

Read More

[TH] Binary Search Tree

บทความนี้เป็นการเขียนโปรแกรมภาษา C/C++ กับบอร์ด Arduino Nano, Arduino Uno, LGT8F328P [NANO F328P-C] และ ET-BASE AVR EASY32U4 (ภาพที่ 1) หรือบอร์ดอื่น ๆ และแพล็ตฟอร์มอื่น ๆ ที่ใช้ภาษา C เพื่อเรียนรู้การเขียนโปรแกรมจัดการโครงสร้างข้อมูล (Data Structure) อีกประเภทหนึ่งซึ่งมีวิธีการจัดเก็บและจัดการที่แตกต่างกันไปอันมีชื่อว่าต้นไม้แบบ BST หรือ Binary Search Tree ดังในภาพที่ 2 ซึ่งเป็นโครงสร้างที่สามารถนำไปประยุกต์เกี่ยวกับการเก็บข้อมูลที่มีคุณลักษณะที่ข้อมูลทางกิ่งด้านซ้ายมีค่าที่น้อยกว่าตัวเอง และกิ่งด้านขวามีค่ามากกว่าต้นเอง หรือทำตรงกันข้ามคือกิ่งซ้ายมีค่ามากกว่า และกิ่งด้านขวามีค่าน้อยกว่า ทำให้การค้นหาข้อมูลในกรณีที่ต้นไม้มีความสมดุลย์ทั้งทางซ้ายและทางขวาบนโครงสร้าง BST ประหยัดเวลาหรือจำนวนครั้งในการค้นหาลงรอบละครึ่งหนึ่งของข้อมูลที่มี เช่น มีข้อมูล 100 ชุด ในรอบแรกถ้าตัวเองยังไม่ใช่ข้อมูลที่กำลังค้นหา จะเหลือทางเลือกให้หาจากกิ่งทางซ้ายหรือขวา ซึ่งการเลือกทำให้ข้อมูลของอีกฝั่งนั้นไม่ถูกพิจารณา หรือตัดทิ้งไปครึ่งหนึ่งโดยประมาณ แต่ถ้าเป็นกรณีที่ Binary Search Tree นั้นขาดความสมดุลย์จะส่งผลให้การค้นหามีความเร็วไม่แตกต่างกับการค้นหาแบบลำดับ (Sequential Search) เท่าใดนัก

ET-BASE AVR EASY32U4
ภาพที่ 1 บอร์ด ET-BASE AVR EASY32U4
Read More

[TH] Doubly Linked-List

บทความนี้เป็นการเขียนโปรแกรมภาษา C/C++ กับบอร์ด กับบอร์ด Arduino Nano, Arduino Uno, LGT8F328P [NANO F328P-C] และ ET-BASE AVR EASY32U4 หรือบอร์ดอื่น ๆ และแพล็ตฟอร์มอื่น ๆ ที่ใช้ภาษา C เพื่อจัดเก็บข้อมูลอุณหภูมิ/ความชื้นจากเซ็นเซอร์ DHT11 (ดังภาพที่ 1) ด้วยโครงสร้างข้อมูลแบบลิงค์ลิสต์คู่ โดยพื้นฐานของการจองหน่วยความจำ การเข้าถึง การยกเลิกการจองหน่วยความจำสามารถอ่านได้จากบทความก่อนหน้านี้ (Singly Linked List)

ภาพที่ 1 บอร์ด Arduino Uno และเซ็นเซอร์ DHT11
Read More

[TH] การตั้งค่า Slicer เบื้องต้นสำหรับการพิมพ์ 3 มิติ

บทความนี้เรามาดูกันเกี่ยวกับการตั้งค่า Slicer เพื่อปรับแต่งค่าตัวแปรต่างๆ ที่จำเป็นต่อการพิมพ์สามมิติให้เหมาะสม โดยใช้ PrusaSlicer ซึ่งค่าทั้งหมดถูกแบ่งเป็น 3 ส่วน ค่าที่ถูกใช้ในบทความนี้เป็นเพียงตัวอย่างบางส่วนเท่านั้น

สิ่งที่ต้องเตรียม

  1. PrusaSlicer ดาวโหลดได้ที่นี่

เริ่มต้นให้เราทำการดาวโหลดโปรแกรม PrusaSlicer และติดตั้งให้เรียบร้อย

เมื่อเปิดโปรแกรมขึ้นมาจะเป็นดังภาพที่ 1

ภาพที่ 1 PrusaSlicer
Read More

[TH] เครื่องพิมพ์ 3 มิติ Ender 3 V2

บทความนี้พูดคุยเกี่ยวกับเครื่องพิมพ์ 3 มิติ Ender 3 V2 ซึ่งเป็นรุ่นปรับปรุงจากรุ่นยอดนิยมของ Creality คือ Ender 3, Ender 3 Pro โดยได้มีการปรับปรุงเรื่องของความง่ายในการประกอบ การใช้งาน คุณภาพของชิ้นงาน เป็นต้น ทำให้เครื่องพิมพ์ 3 มิติรุ่นนี้เหมาะสมสำหรับมือใหม่ที่พึ่งเริ่มใช้งานเครื่องพิมพ์ 3 มิติเป็นอย่างมาก

รูปร่างหน้าตา

ภาพที่ 1 Ender 3 V2
Read More

[TH] Filaments

บทความนี้เป็นเรื่องการพิมพ์สามมิติเกี่ยวกับ Filament ซึ่งเป็นพลาสติกที่ถูกหลอมและนำไปขึ้นรูปเป็นวัตถุต่างๆ ตามต้องการได้ โดยพูดถึงคุณสมบัต ของ Filament ที่ได้รับความนิยม ซึ่งมี 3 ชนิดคือ PLA, PETG, ABS

ภาพที่ 1 เส้นพลาสติก PLA+ สีขาว

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

PLA

PLA เป็นพลาสติกที่ได้รับความนิยมอย่างมากในการพิมพ์สามมิติ วัสถุถูกผลิตจากวัสดุจากธรรมชาติ โดยมีคุณสมบัติคือ

  1. เป็นวัสดุที่แข็ง ยืดหยุ่นได้น้อย
  2. ทนความร้อนได้ต่ำ
  3. แข็งตัวได้ไว

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

PETG

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

  1. เป็นวัสดุที่แข็ง แต่ยืดหยุ่นได้มาก
  2. ทนความร้อนได้มากขึ้นกว่า PLA
  3. แข็งตัวได้ช้าลงเมื่อเทียบกับ PLA

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

ABS

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

  1. มีความแข็งแรงทนทานมาก ยืดหยุ่นได้
  2. ทนความร้อนได้สูงกว่า PETG

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

ข้อควรระวัง

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

ข้อแนะนำในการเลือกใช้ Filament

หากเป็นมือใหม่ควรเริ่มต้นจาก PLA ก่อนเนื่องจากพิมพ์ได้ง่ายมาก (แต่เราดันห้าวไปใช้ PETG ในการพิมพ์ครั้งแรก ถึงกับปวดหัวเลยครับ) การควบคุมปัจจัยต่างๆ ไม่จำเป็นมาก ใช้เวลาน้อยกว่า

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

สุดท้ายเมื่อต้องการใช้ชิ้นงานที่รับแรงกระแทกหรือคงทนมากๆ ก็ให้เปลี่ยนมาใช้ ABS เพราะมีความคงทนมากที่สุด

สรุป

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

(C) 2022, อ.จารุต บุศราทิจ / อ.ดนัย เจษฎาฐิติกุล

ปรับปรุงเมื่อ 2022-03-17, 2022-03-19

[TH] Hosting Unity WebGL game on the sever

บทความนี้กล่าวถึงการนำตัวเกมที่พัฒนาจาก Unity ในลักษณะของ WebGL ขึ้นไปไว้บนเซิฟเวอร์ที่ใช้ระบบปฏิบัติการ Ubuntu ใน Google compute engine

การพัฒนาเกมด้วยโปรแกรม Unity เราสามารถที่จะสร้างเกมเพียงครั้งเดียวและสร้างตัวเกมในหลายระบบได้ ไม่ว่าจะเป็น Windows, Android หรือเว็บ เป็นต้น ก่อนที่เราจะนำเกมของเราขึ้นเซิฟเวอร์ได้ต้องทำการปรับเปลี่ยน build target เป็น WebGL เสียก่อน โดยเข้าที่ File > Build Settings และเลือก Platform เป็น WebGL ดังภาพที่ 1

ภาพที่ 1 เลือก Platform เป็น WebGL

ในเบราเซอร์จะมีการเข้ารหัสบีบอัดไฟล์เพื่อลดการใช้งานข้อมูลลงซึ่งเราจำเป็นต้องเลือกการบีบอัดที่เบราเซอร์สนับสนุนใน Player Settings > Publishing Settings > Compression Format หากเราไม่ต้องการบีบอัดสามารถเลือกเป็น Disabled ได้ครับ

ภาพที่ 2 ปรับ Compression Format เป็น Disabled

จากนั้นทำการ Build และเลือกตำแหน่งที่ต้องการเก็บไฟล์เราจะได้ไฟล์คร่าวๆ ดังภาพที่ 3

ภาพที่ 3 ไฟล์ที่ได้จากการ Build

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

ภาพที่ 4 ตัวอย่างเกม

หลังจากอัพโหลดและระบุตำแหน่ง URL เรียบร้อยเราสามารถเข้าเล่นเกมได้ทันทีเลยครับ ทุกท่านสามารถเข้าไปทดลองเล่นได้ที่ https://www.jarutex.com/www/html/lab/

สรุป

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

(C) 2022, อ.จารุต บุศราทิจ / อ.ดนัย เจษฎาฐิติกุล

ปรับปรุงเมื่อ 2022-03-10

[TH] PIC18F458 Ep.5 GPIO and 7-Segments

บทความนี้เป็นการประยุกต์ใช้ GPIO ของ PIC18F458 เพื่อสั่งงานวงจรของแอลอีดี 8 หลอดที่จัดเรียงตำแหน่งกันเป็นเหมือนตัวเลขดังภาพที่ 1 โดยใช้หลอด LED จำนวน 8 หลอดมาจัดวางใหม่และเรียกว่า 7-Segment ที่สามารถนำไปประยุกต์แสดงผลตัวเลข และตัวอักษรได้อีกจำนวนหนึ่ง นอกจากนี้ บนตัวบอร์ดทดลองได้ติดตั้ง 7-Segment เอาไว้จำนวน 4 หลัก ทำให้สามารถเขียนโปรแกรมเพื่อควบคุมการแสดงผลข้อมูล 4 หลัก

ภาพที่ 1 ภาคแสดงผลด้วย 7-Segment บนบอร์ดทดลอง
Read More

[TH] Office Syndrome our series : PIRIFORMIS SYNDROME

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

ภาพที่ 1 กล้ามเนื้อ Piriformis
จาก www.dreamstime.com

Read More