"Skills, Knowledge, Abilities, and Experiences

are only useful....

If you are at the right place "

A to D, Recording to magnetic tape

ปี 2528 ผมเรียนอยู่ ปวช.ปี2 ช่างอิเล็กทรอนิกส์ ที่วิทยาลัยเทคนิคมีนบุรี ขอบๆ กรุงเทพ ผมมีเพื่อนสนิทคนนึงเขาเอาบัตร ATM ของธนาคารไทยพาณิชย์ มาอวดให้เพื่อนในห้องเรียนดูกัน มันเป็นอะไรที่โคตรเท่ห์เลย เพราะสมัยนั้นธนาคารไทยพาณิชย์เป็นธนาคารแห่งแรกที่นำตู้เอทีเอ็มมาติดตั้งที่ศูนย์การค้าสยาม (น่าจะปี 2526) มันเป็นเรื่องไกลตัวที่คนธรรมดาๆ จะมีบัตรเอทีเอ็มใช้งาน (จะเปิดบัญชีธนาคารยังรู้สึกว่าเป็นเรื่องไกลตัวเลย ยิ่งไม่ได้เป็นคนทำงานมีเงินเดือนยิ่งแล้ว ไม่รู้ว่าจะมีบัญชีธนาคารไปทำไม) ได้เห็นเพื่อนมีผมก็อยากมีบ้าง ณ.ตอนนั้นธนาคารกสิกรกับธนาคารกรุงเทพเริ่มเอาเครื่องมาติดตั้งตามสาขาใหญ่ๆ กันบ้างแล้ว แต่ไม่ใช่จะไปขอสมัครทำบัตรกันง่ายๆ นะครับ ผมไปสมัครขอทำบัตร ATM กับธนาคารกรุงเทพ เจ้าหน้าที่เขาถามผมว่าจะทำบัตร ATM เพื่อเอาไปทำไม? ผมตอบคำถามเขาไม่ถูกเลยว่าจะมีบัตรเพื่อไปทำอะไร และก็เลยสรุปว่าไม่ได้ทำ จนวันหลังต่อมาได้ไปสมัครของธนาคารกสิกร และก็สมัครผ่านมีบัตรมาอวดเพื่อนๆ เป็นรายที่สองในห้องเรียน55+ (มีแต่บัตร แต่น่าจะมีเงินในบัญชีไม่เกิน 500 บาท) นั้นคือจุดเริ่มต้นที่ทำให้ผมสนใจอยากเรียนรู้ทางด้านเทคโนโลยีเกี่ยวกับเรื่องพวกนี้ อยากรู้ว่ามันทำงานอย่างไร กอรปกับผมได้เรียนสาขาอิเล็กทรอนิกส์ด้วย ผมจึงวางแผนไว้ว่าผมอยากทำโครงงานเครื่องอ่านเขียนข้อมูลลงบัตรแถบแม่เหล็กไว้ส่งอาจารย์สำหรับโปรเจ็คเมื่อตอนเรียน ปวส. ความรู้สมัยนั้นหาได้ยากเหลือเกิน แหล่งเดียวที่อาจจะมีความรู้เรื่องเหล่านี้มาให้อ่านได้บ้างก็จากหนังสือวารสารอิเล็กทรอนิคส์เซมิคอนดัคเตอร์ ซึ่งแทบจะไม่เคยนำข้อมูลความรู็เรื่องเหล่านี้มาลงเป็นบทความให้ศึกษา  จนผมเรียนจบ โครงงานส่งอาจารย์ที่ผมอยากจะทำไม่สำเร็จตามเป้าหมาย แต่ก็สำเร็จได้สัก 40~50% ของที่คาดหวังได้ แต่ก็ได้เกรด […]

เพิ่ม 16 Bit INDEX ให้กับ MCS-51

16 bit INDEX for MCS-51

เนื่องจาก MCS-51 มี DPTR เพียงตัวเดียวเท่านั้น ในงานบางอย่างเรามีความจำเป็นต้องใช้ Index หลายตัว ซึ่งเราอาจจะแก้ปัญหาได้ด้วยการเก็บค่า Index ให้อยู่ใน Internal RAM และใช้วิธีสลับค่าไปมาระหว่าง DPTR กับค่าใน RAM นั้นซึ่งก็ใช้งานได้ดี แต่อาจจะใช้เวลาอยู่บ้างและค่อนข้างจะต้องเขียนคำสั่งยาวสักหน่อย  เคยอ่านบทความแนะนำของ SILA Research ที่ได้เขียนเป็นบทความแนะนำเทคนิคการเพิ่ม DPTR ไว้ด้วยการนำ Register R0 และ R1 ไว้ดังนี้ครับ โดยใน MCS-51 จะมีคำสั่งที่เกี่ยวข้องไว้ให้เรียบร้อยแล้วคือ MOVX A,@R0  MOVX @R0,A และทั้งสองคำสั่งนี้สามารถใช้ได้กับ r1 ด้วย ปัญหาอยู่ที่ว่า การนับ Address ขนาด 16 bit จะเป็นไปได้อย่างไรในเมื่อ r0 และ r1 มีค่าเพียง 8 bit เท่านั้น คำตอบก็คือ […]

MCS51, ROM & RAM

MCS-51, ROM&RAM

หน่วยความจำโปรแกรมของ MCS-51 เป็นบริเวรหน่วยความจำสำหรับเก็บข้อมูลและคำสั่งใช้งานต่างๆ ซึ่งแม้ว่าจะไม่มีการจ่ายกระแสไฟฟ้าให้กับระบบข้อมูลเหล่านั้นก็ยังไม่สูญหาย โครงสร้างของหน่วยความจำโปรแกรมมีลักษณะเช่นเดียวกับหน่วยความจำที่บรรจุอยู่ในไอซี หน่วยความจำประเภทต่างๆ เช่น หน่วยความจำแบบ ROM (Read Only Memory) หรือ EPROM (Erasable Programmable Read Only Memory) เป็นต้น MCS-51 สามารถอ่านข้อมูลหน่วยความจำโปรแกรมได้สูงสุดไม่เกิน 64 กิโลไบต์ และแยกหน่วยความจำโปรแกรมออกเป็น 2 ลักษณะ คือ หน่วยความจำโปรแกรมภายใน (Internal Program Memory) ซึ่งเป็นหน่วยความจำ ROM หรือ EPROM ที่อยู่ภายในตัวไอซีไมโครคอนโทรลเลอร์เอง และหน่วยความจำโปรแกรมภายนอก (External Program Memory) ซึ่งเป็นการใช้ไอซีหน่วยความจำมาทำหน้าที่เป็นหน่วยความจำโปรแกรมของระบบ หน่วยความจำโปรแกรมภายใน ไมโครคอนโทรลเลอร์ในตระกูล MCS-51 มีขนาดของหน่วยความจำโปรแกรมถายในแตกต่างกันออกไปเพื่อความเหมาะสมกับการนำไปใช้งานในลักษณะต่างๆ กัน เช่น 8051 และ 8052 มีหน่วยความจำแบบ ROM ขนาด 4 […]

What is NETPIE ?

NETPIE

NETPIE (Network Platform for Internet of Everything) คือบริการบน Cloud Platform ที่พัฒนาโดย NECTEC สำหรับใช้สื่อสารระหว่างอุปกรณ์ IoT บนเครือข่ายไร้สาย ทำให้อุปกรณ์ต่างๆ สามารถสื่อสารคุยกันได้โดยที่เราไม่ต้องพัฒนาตัว Server ขึ้นเอง เนื่องจาก NETPIE จะเป็นตัวกลางให้เรา ผู้สนใจสามารถเข้าไปสมัครใช้บริการ (ฟรี) หรือศึกษารายละเอียดเพิ่มเติมได้ที่ https://netpie.io หากสนใจใช้งานต้องสมัครสมาชิกและนำข้อมูลรหัสต่างๆ ไปใส่ในโปรแกรม และจะต้องติดตั้งไลบรารี่ NETPIE ลงในอุปกรณ์ IoT ด้วย  ไลบรารี่ NETPIE รองรับอุปกรณ์เกือบทั้งหมดที่นิยมเล่นใช้งานกันไม่ว่าจะเป็น Arduino, Raspberry Pi, Android, Python, HTML5 และอื่นๆ

ระบบ IT สำหรับองค์กรขนาดเล็กจำเป็นแค่ไหน?

V-LAN

เคยตั้งใจอยากจะวางระบบ IT สำหรับบริษัทเล็กๆ ที่มีพนักงาน Officeไม่เกิน 50 คน (ไม่รวมพนักงานฝ่ายผลิต) แต่ก็ทำไม่สำเร็จเพราะนำเสนอไม่ผ่านด้วยผู้บริหาร ณ ตอนนั้นอาจจะยังไม่เห็นความจำเป็นของมัน และพอดีผมก็ได้ออกจากงานนั้นมาเสียก่อนด้วยเลยไม่ได้ทำให้สำเร็จ แต่ก็อยากเอามาเล่าถึงที่ไปที่มาให้ฟังกัน บริษัทที่ผมเคยทำงานมานั้นไม่ได้มีระบบ IT ใดๆ เลยนอกจะระบบ Router Internet จากผู้ให้บริการที่กระจายสัญญาณ WiFi ให้กับพนักงานใช้งาน (ไม่มีแม้แต่การพ่วงต่อ Switch และเดินสาย LAN) งานบางงานที่สำคัญหน่อยอย่างเช่นระบบบัญชีก็เช่าระบบโปรแกรมบัญชีที่เป็น Cloud และเดินสาย LAN แบบต่อตรงไปที่ PC หนึ่งเครื่องเพื่อดึงข้อมูลการแสกนเวลาของพนักงานเท่านั้น ปัญหาจุกจิกรายวันมีเกิดขึ้นเสมอๆ โดยที่ผู้บริหารไม่ได้ให้ความสนใจกับเรื่องเหล่านี้ แต่ผมกลับมองว่าเป็นเรื่องเสียน้อยเสียยากเสียมากเสียง่ายมากกว่า คือแทนที่พนักงานจะทำงานได้อย่างมีประสิทธิภาพกลับต้องมาเสียเวลาไปกลับการเรียกช่างหรือรอช่างบริการเข้ามาแก้ปัญหาและเสียค่าใช้จ่ายโดยไม่จำเป็น เนื่องจากพนักงานในออฟฟิตไม่มีความรู้เรื่อง IT และวิธีแก้ปัญหา (หรืออาจจะมีความรู้แต่ไม่อยากทำเพราะถือว่าหน้าที่ไม่ใช่) ปัญหาที่พบเสมอๆ ก็เช่น จากที่ยกตัวอย่างทำให้บริษัทต้องเสียเวลาและ คชจ. ที่ไม่จำเป็นอยู่เสมอๆ ผมเลยคิดว่าจะดีกว่าหรือไม่หากมีการติดตั้งระบบ Network ภายในและมีอุปกรณ์ช่วยอำนวยความสะดวกในการใช้งาน เช่น อย่างไรก็ตามสิ่งที่คิดไว้ไม่ทันได้ทำให้เกิดขึ้นได้ ด้วยเวลาที่ต้องยุ่งไปกับการจัดการงานอื่นๆ และการเขียนโครงการนำเสนอที่ไม่ละเอียดพอ จึงไม่สามารถทำให้ผู้บริหารมองเห็นประโยชน์ของมันว่าจะต้องลงทุนเท่าไหร่ ทำไปแล้วจะได้ประโยชน์อะไรกลับมาเท่าใด

Why 11.0592MHz

Clock Machine Cycle

เคยสงสัยเล่นๆ ว่าทำไม CPU หรือ MCU ของแต่ละบริษัทที่ผลิตออกมาจำหน่าย ถึงมีการกำหนดความถี่ของสัญญาณนาฬิกาที่แตกต่างกัน แต่ก็พอจะเข้าใจแบบเหมารวมไปว่าก็คงเป็นเรื่องของเทคนิคการออกแบบและเทคโนโลยีของการผลิตตามยุคสมัย ซึ่งก็คงจะเหมือนๆกันกับ CPU ของเครื่องคอมพิวเตอร์ที่เมื่อกว่า 30 ปีก่อนที่มีความเร็วไม่กี่สิบ MHz จนปัจจุบันปาเข้าไปกว่า 3~4GHz เข้าไปแล้ว ยิ่งเร็วก็ยิ่งดีและก็เป็นเรื่องของการแข่งขันทางการตลาดด้วย แต่จริงๆ แล้วหากศึกษาในรายละเอียดลึกๆ ลงไป ทำให้เข้าใจเหตุผลเชิงลึกของบางแง่มุมของมันด้วย ดังยกตัวอย่าง MCU ของตระกูล MCS-51 ซึ่งผมได้อ่านเจอจากคู่มือการใช้งานเล่มหนึ่งซึ่งได้อธิบายไว้ดังนี้ครับ MCU 8051 มีวงจรออสซิลเลเตอร์อยู่ภายในสำหรับการสร้างพัลส์ของสัญญานนาฬิกา ซึ่งจะนำไปเป็นฐานเวลาหรือการกำหนดจังหวะการทำงานของหน่วยการทำงานทั้งหมดให้สอดคล้องกัน (Synchronization) โดยปกติแล้วมักจะทำโดยการใช้คริสตอลเชื่อมต่อเข้ากับขาสัญญาณ XTAL1 และ XTAL2 และมีตัวเก็บประจุต่อลง GND หรืออาจจะเป็นสัญญาณนาฬิกาจากวงจรภายนอกก็ได้ พัลส์ความถี่ของสัญญาณนาฬิกาจะเรียกว่า Pulse (ใช้สัญลักษณ์ตัวอักษร P) และคาบเวลาสัญญาณนาฬิกานี้เรียกว่า คาบเวลาออสซิลเลเตอร์ (Oscillator period)  คาบเวลาออสซิลเลเตอร์จำนวนสองคาบเรียกว่า State (ใช้สัญลักษณ์เป็นตัว S) ซึ่งจะนำไปใช้เป็นช่วงเวลาพื้นฐานการทำงานย่อยของไมโครคอนโทรลเลอร์ เช่น การนำคำสั่ง (Fetch)  […]

RS-485 ญาติพี่น้องของ RS-232

16 bit INDEX for MCS-51

ปัจจุบันหากพูดถึงเรื่องการเชื่อมต่ออุปกรณ์คอมพิวเตอร์เข้ากับเครื่องมือ, เน็ตเวิร์ค, เครื่องจักร, และอุปกรณ์ต่อพ่วงต่างๆ เรามักจะนึกถึงแต่ USB, HDMI หรืออื่นๆ ไม่กี่อย่าง คือหมายความว่าจุดเชื่อมต่อถูกยุบให้มีความหลากหลายน้อยลงเพื่อให้ใช้งานได้ง่ายไม่ยุ่งยากเหมือนแต่ก่อน ที่มีช่องเชื่อมต่อหลากหลายแบบ ช่องเชื่อมต่อหนึ่งที่น่าจะยังพอจำกันได้ก็คือ RS-232 (ที่บางทีมักนิยมเรียกกันว่าพอร์ต COM:1, COM:2) ซึ่งสมัยก่อนหากเป็นงานในออฟฟิตสำนักงานก็มักใช้สำหรับเชื่อมต่อกับพวกปริ้นเตอร์ (แบบ Serial), เครื่องอ่านบาร์โค๊ด (รุ่นเก่าๆ) ส่วนหากใครเป็นช่างหรือวิศวกรในโรงงานอุตสาหกรรม จะพบว่าช่องต่อ RS-232 นี้มีความสำคัญและถูกนำไปใช้งานอย่างมากแม้กระทั่งปัจจุบันนี้ก็ยังค่อนข้างมีความจำเป็นอยู่  สมัยผมทำงานโรงงาน เครื่องจักรสำคัญๆ แทบทั้งหมดไม่ว่าจะเป็น Test Instrument, Auto Insertion, Injection, SMD machine หรือราคาไม่กี่หมื่นจนเครื่องจักรราคาเป็นสิบล้านก็ต้องใช้ RS-232 เป็นช่องทางในการสื่อสารระหว่างเครื่องจักรและคอมพิวเตอร์ทั้งนั้น แต่กว่าสิบปีที่ผ่านมานี้ (หรืออาจจะ 20 ปีก็ได้แล้วมั๊ง5+)  เครื่องคอมพิวเตอร์ใหม่ๆ ไม่ได้มีช่อง RS-232 มาให้ หรือหากจะมีมาให้ก็จะเป็นการ์ดเสียบที่ต้องสั่งเพิ่มเติม (ไม่ได้ Onboard กับ Mainboard ของเครื่องคอมพิวเตอร์) และยิ่งปัจจุบันนี้การ์ด RS-232 ก็ค่อนข้างหาซื้อได้ยากแล้ว […]

LCD & MCU RAM Mapping

DDRAM Maping

เดี๋ยวนี้หากใครที่เป็น Hobbyist ที่ชอบทำโครงงานอิเล็กทรอนิกส์ ยิ่งโดยเฉพาะพวกไมโครคอนโทรลเลอร์ที่จะต้องเอาอุปกรณ์แสดงผลอย่าง LCD Module มาต่อใช้งาน และสามารถหาซื้อ LCD Module ได้อย่างแพร่หลายและราคาถูกกว่าแต่ก่อนมาก ส่วนมากที่มีขายในท้องตลาดก็จะเป็นหน้าจอขนาด 16, 20 หรือ 24 ตัวอักษร และแสดงผลแบบ 2 หรือ 4 บรรทัด ส่วนวิธีการนำมาต่อเข้ากับไมโครคอนโทรลเลอร์และการเขียนโปรแกรมควบคุมก็ทำได้โดยง่าย สามารถดาวโหลด Datasheet และมี Clip ใน Youtube อธิบายวิธีการเชื่อมต่อสายสัญญานและเขียนโปรแกรมควบคุมให้ดูมากมาย ผมเองสมัยเรียนไม่มีอุปกรณ์พวกนี้ให้ซื้อหามาใช้งาน จนเรียนจบได้ทำงานในโรงงานซึ่งมีการใช้ LCD Module นี้กับผลิตภัณฑ์ของบริษัทเยอะมาก (หน้าจอแสดงผลของเครื่องโทรศัพท์) และก็เพราะทำงานอยู่แผนก Engineer ที่สามารถค้นหา Data sheet มาดูการอธิบายการเชื่อมต่อและใช้งานของมันได้ เวลาว่างจากเวลางานผมเลยมักจะเอาอุปกรณ์ในโรงงานมาเชื่อมต่อกับไมโครคอนโทรลเลอร์และเขียนโปรแกรมควบคุมมันเล่นว่าจะควบคุมมันได้ตามที่เราเข้าใจจากการอ่าน Datasheet ของมันหรือไม่  สิ่งที่อยากเอามาแชร์ก็คือว่าหลายๆ ครั้งที่ผมลองดาวโหลด Datasheet ของ LCD Module ในอินเตอร์เน็ต บางครั้ง LCD Module […]

MCS-51, ไมโครคอนโทรลเลอร์ที่ถูกลืม

MCS-51

รู้จักไมโครคอนโทรลเลอร์ตระกูล 8051 ปัจจุบันถึงแม้ว่าวงการเรียนรู้ไมโครคอนโทรลเลอร์ในบ้านเราเริ่มเปลี่ยนไปเล่น MCU ใหม่ๆ ที่มีความสามารถมากขึ้น ทำงานได้ซับซ้อนและรองรับเทคโนโลยีใหม่ๆ เช่น IoT และก็พัฒนาให้การใช้งานมันได้ง่ายกว่าแต่ก่อนอย่างมาก ไมโครคอนโทรลเลอร์รุ่นก่อนๆ ที่เป็นระบบ 8 Bit จึงดูเสื่อมความนิยมลงไปเรื่อยๆ แต่อย่างไรก็ตามผมเชื่อว่าในโรงงานอุตสาหกรรมยังจะยังคงใช้ไมโครคอนโทรลเลอร์ที่เป็นระบบ 8 Bit นั้นไปอีกนาน เพราะความเสถียรที่มีการพัฒนามาอย่างยาวนาน โดยเฉพาะเครื่องมือควบคุมหรือเครื่องจักรต่างๆ ในโรงงาน แต่สำหรับผลิตภัณฑ์ต่างๆ ก็คงมีการเปลี่ยนไปใช้ MCU ใหม่ๆ เนื่องจากมีการปรับเปลี่ยนการออกแบบผลิตภัณฑ์ให้ทันสมัยอยู่ตลอดเวลา ถึงอย่างไรผมเชื่อว่าการเรียนรู้ไมโครคอนโทรลเลอร์ 8 Bit ก็ยังมีประโยชน์สำหรับผู้เริ่มต้น ซึ่งจะทำให้เป็นพื้นฐานสำหรับการเรียนรู้ไมโครคอนโทรลเลอร์ตัวใหม่ๆ ได้อย่างง่ายดายขึ้น ไมโครคอนโทรลเลอร์ของบริษัท Intel ตระกูล MCS-51 ได้มีการนำไปใช้งานอย่างแพร่หลายตั้งแต่ยุค 80  ผมเองสมัยเรียนไม่เคยได้ยินหรือได้ทดลองเล่นมันมาก่อน จนเมื่อได้เริ่มทำงานในโรงงานอุตสาหกรรม ครั้งแรกที่เห็นได้เห็นรู้จักไมโครคอนโทรลเลอร์ก็จะเป็น MCS-48 ซึ่งถูกเอามาใช้ในพวกเครื่องมือวัดและทดสอบต่างๆ ของโรงงานที่ผมทำงาน ขณะเดียวกันเมื่อมีการย้ายผลิตภัณฑ์ที่ผลิตจากบริษัทแม่ในต่างประเทศเข้ามาผลิตยังโรงงานในประเทศไทย ซึ่งผลิตภัณฑ์เหล่านั้นเป็นหัวเครื่องรับโทรศัพท์ระบบ Key Telephone ซึ่งเกือบทั้งหมดจะใช้ไมโครคอนโทรลเลอร์ตระกูล MCS-51 ซึ่งในขณะเดียวกันก็เริ่มมีบริษัทเอกชนสองสามแห่งในไทยเริ่มพัฒนาไมโครคอนโทรลเลอร์บอร์ดออกมาจำหน่าย และก็เริ่มมีหนังสือวารสารและวิชาการต่างๆ ที่เผยแพร่ความรู้ของไมโครคอนโทรลเลอร์ และมีการเรียนการสอนในสถาบันการศึกษาต่างๆ […]

ARDUINO Microcontroller ที่เด็กประถมก็ใช้งานเป็น

Arduino MCB

ช่างน่าอิจฉาคนสมัยนี้จริงๆ ที่มีเครื่องไม้เครื่องมือให้เล่น เรียนรู้ พัฒนาได้โดยง่ายและราคาแสนถูกว่าแต่ก่อน และเป็นที่แพร่หลายเป็นอย่างมาก มากจนเรียกได้ว่าเด็กประถมสมัยนี้ก็รู้จักใช้งานมันเป็น เมื่อก่อนกลุ่มคนที่รู้จัก Microcontroller มักจะเป็นคนที่เรียนมาทางด้านอิเล็กทรอนิกส์คอมพิวเตอร์และไอที ยิ่งกว่าสามสิบกว่าปีที่แล้วคำว่าไมโครคอนโทรลเลอร์ยังกำกวมกับคำว่า Singleboard Computer (SBC) เพราะมักจะออกแบบโดยใช้ IC CPU ของไมโครคอมพิวเตอร์ขนาดเล็ก เช่น Z80, 8088, CDP1802, ฯลฯ ซึ่งเป็น CPU ตัวเดียวกันกับที่ใช้ในเครื่องคอมพิวเตอร์ยุค 8 bit จนยุคถัดมาจึงได้มีการแยก IC ที่เป็นระบบของ Single Board Computer (SBC) และของ Microcontroller (MCU) ออกจากกันอย่างชัดเจน เช่นบอร์ด Rasberry Pi ที่เป็น SBC ที่นิยมในปัจจุบัน ส่วนบอร์ดของกลุ่มไมโครคอนโทรลเลอร์ที่เป็นที่นิยมก็มีหลากหลายกลุ่มมาก เช่น Aduino, ESPxxxx, Nucleo32,64 ของทาง ST และอื่นๆ อีกเป็นต้น  สำหรับกลุ่มไมโครคอนโทรลเลอร์ ย้อนกลับไปยุคแรกๆ […]

Get in Touch !