คลังเก็บหมวดหมู่: มารู้จักอาดุยโน่(Arduino)กันเถอะ

เครือบแผ่นปริ้น(pcb)ด้วยหมึกUV (solder mask)

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

แผ่นปริ้นที่กัดเสร็จแล้ว

กาวไวแสงสามารถสั่งซื้อได้ทางออนไลน์ทั่วไปครับ

หลอดดักยุงมีหลายขนาด ช่างโหน่งเลือกใช้ขนาด8วัตต์ครับ ส่วนความห่างระหว่างหลอดกับชิ้นงานประมาณ10-15เซ็นต์ครับ การกำหนดระยะห่างจะมีผลต่อการฉายแสงต้องทดลองจับเวลาดูทั้งนี้ขึ้นอยูกับแผ่นฟิล์มไวแสงที่จะมีความไวต่างกันใช้ในกรณีที่ทำแผ่นปริ้นท์ และในกรณีที่ใช้กับกาวไวแสงช่างโหน่งใช้เวลา10นาที

เราอาจจะใช้โคมไฟตั้งโต๊ะแบบนี้ก็ได้ครับทดลองและจับเวลาดูครับ

อุปกรณ์ที่ต้องเตรียมประกอบด้วย

1.แผ่นปริ้นที่กัดและเคลือบยางสนแล้ว

2.กาวเคลือบปริ้น Uv Solder Mask

3.ไฟฉายแสงแบ็คไลท์

4.ถุงพลาสติกใส

5.กระดาษไขหรือแผ่นฟิล์มที่ถ่ายตำแหน่งบัดกรี

6.กระจกใสสำหรับทับแผ่นงาน

ขั้นตอนการทำแบบบนโปรแกรมCircuit wizard

เปิดโปรแกรม แล้วกำหนดพื้นที่ที่เราไม่ต้องการให้กาวแข็ง คือตำแหน่งสีฟ้าครับ ทำตามขั้นตอนตามนี้

ตำแหน่งที่เราต้องการให้คลิกเม้าส์ข้างขวา ไปที่Layer เลือก Both Sides แบบก็จะเปลี่ยนเป็นสีน้ำเงิน

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

Attiny85ควบคุมปิด/เปิดไฟถนน

โครงงานAttiny85ทำชุดควบคุมปิด/เปิดไฟถนน

หลังจากที่เราเรียนรู้การติดตั้งบอร์ดattiny85แล้ว จากนี้เรามาทดลองสร้างโครงงานต่างๆเพื่อใช้งานใกล้ตัวเราครับ.

หลักการทำงาน

เซ็นเซอร์ตรวจวัดความเข็มของแสง(LDR)เป็นตัวต้านทานที่มีค่าเปลี่ยนแปลงตามความเข้มของแสงคือเมื่อแสงสว่างมากจะมีความต้านทานน้อยแต่ในทางกลับกันหากแสงสว่างน้อยจะมีความต้านทานมาก

ในวงจรLDR จะต่อเข้าที่ขา2(A3)ของไอซีและมีตัวต้านทานค่า15Kต่อเข้าไฟบวก5โวลท์ ขา2เป็นวงจรตรวจวัดแรงดันถ้าไฟเข้ามามากโปรแกรมก็จะสั่งให้รีเลย์ทำงาน กล่าวคือเมื่อแสงมากLDRความต้านทานน้อยและต่อวงจรลงไฟลบทำให้ไฟที่ผ่านตัวต้านทาน15Kไฟไหลผ่านได้น้อยเปรียบเหมือนกับเราจับช๊อตลงกับไฟลบ แต่ในทางกลับกันเมื่อแสงสว่างน้อย LDR จะมีความต้านทานมากไฟที่ไหลผ่านความต้านทาน15Kก็มากขึ้นส่งแรงดันไฟเข้าขา2ของไอซี โปรแกรมก็จะสั่งให้รีเลย์ทำงานครับ.

ตามรูปข้างต้นเรากำหนดคำสั่งและขาที่ออกดังนี้ครับ

เซ็นเซอร์ตรวจวัดความเข้มของแสง(LDR)ต่อเข้าขา2ของไอซี(ในคำสั่งคือA3)

ไฟเตือนต่อเข้าขา5ของไอซี(ในคำสั่งคือ0)

ไฟทำงานต่อเข้าขา3ของไอซี(ในคำสั่งคือA2)จากนี้ต่อไปขับรีเลย์เพื่อเป็นสวิทปิด/เปิดไฟครับ.

smart
smart
smart
smart

Download Code & Pcb layout

Attiny85 Street Light Code

Street Light Pcb Street Light Part

ติดต่อช่างโหน่ง โทร.0887666003 Id Line:0887666003 Email:solarwato@gmail.com

เรียนรู้การโปรแกรมไมโครคอนโทลเลอร์จิ๋วAttiny85

เรียนรู้พื้นฐานการโปรแกรมไมโครคอนโทลเลอร์จิ๋ว8ขาAttiny85

ไมโครคอนโทลเลอร์ที่ขนาดเล็กตัวนี้ทำอะไรได้มากเกินตัวครับ สำหรับงานที่ไม่ซับซ้อนมากมายและต้งการพื้นที่จำกัด ช่างโหน่งแนะนำไอซีตัวนี้เลยครับAttiny85 เป็นไอซีหน่วยความจำขนาด8k(ศึกษาในเน็ตครับว่าคืออะไร)ฉะนั้นโครงงานต่างๆขนาดเล็กที่มีขาออกและขาเข้า5ตำแหน่งจะกำหนดให้เป็นขาเข้าหรือขาออกก็ได้ครับ และที่สำคัญคือมีวงจรสํญญาณนาฬิกาภายในทำให้เราไม่ต้องต่ออุปกรณ์สัญญาณนาฬิกาภายนอกให้เปลืองเนื้อที่อีกครับ.

โครงสร้างขาใช้งานAttiny85

ตามรูปแสดงให้เห็นขาต่างๆทั้งหมด8ขา จะมีขาที่ต่อออกไปใช้งานอยู่5ขาคือขา2,3,5,6,7 ซึ่งแต่ละขาก็จะทำหน้าที่ตามคำสั่งที่เขียนในโปรแกรมครับ เช่นสัญญาณภายนอกที่เข้ามาจะเป็นA1,A2,A3 หรือจะสั่งให้เป็นขาออกก็ได้ครับและสัญญาณคลื่นความถี่จะเป็นขา5,6 ของไอซีหรือขา0,1(pwm)ในคำสั่งของโปรแกรมครับ เช่นสมุติว่าเราเขียนให้คลื่นความถีออกมาแต่เรากำหนดให้ไปออกที่ขา3ของไอซีหรือA2 ซึ่งความถีจะไม่ออกมาแต่ถ้ากำหนดให้ออกที่ขา5หรือ6ของไอซี คลื่นความถี่ก็จะออกมาครับดังนี้เป็นต้น.

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

smart

บอร์ดUnoสำหรับติดตั้งอพแด็ปเตอร์attiny

smart

อะแด็ปเตอร์attiny สั่งซื้อได้ในเน็ตครับ

smart

ให้เสียบตรงที่ขา13ครับและอีกด้านนึงให้เสียบที่ไฟ+5โวลท์ ก็เป็นอันว่าเสร็จหลังจากนั้นเสียบUSBเข้าคอมครับ แล้วดำเนินการต่อ

กำหนดให้บอร์ด Arduino UNO ให้เป็นสะพาน(ArduinoISP)เชื่อมต่อไปattiny ก่อนแล้วกดUpload

ตามรูปข้างต้นยังไม่มีรายการบอร์ดattinyอยู่ในBoard manager เราต้องเพิ่มบอร์ดattinyเข้าไปก่อนครับ ซึ่งในรูปข้างต้นยังไม่ได้ติดตั้ง

ให้เราเข้าไปที่preferencesเพื่อเพิ่มข้อมูล

ลบข้อมูลเก่าแล้วคัดลองข้อมูลด้านล่างนี้ไปใส่แทนแล้วกดOk

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

คัดลอกข้อมูลนี้ไปใส่แทนโดยลากให้ทึบทั้งหมดแล้วกดCtrlกับCพร้อมกันหลังจากนั้ไปคลฺิ็กในช่องที่กำหนดลบข้อมูลเก่าออกแล้วกดCtrlกับVข้อมูลใหม่ก็จะมาแทนที่แล้วกดOKปิดส่วนนี้ไปครับ

เสร็จแล้วเข้ามาที่board managerอีกครั้ง

พิมพ์attinyในช่องว่างจะปรากฎโปรแกรมดังภาพ แล้วกดinstall

เมื่อinstallเสร็จแล้วกดปิดครับ

เข้ามาเปิดที่toolอีกครั้งจะเห็นattiny ถูกเพิ่มเข้ามาครับ

เสร็จแล้วตั้งค่าตามนี้ เราพร้อมที่จะโปรแกรมเข้าไปที่attinyแล้วครับ

เสร็จแล้วทดสอบเขียนโปรแกรมไฟกระพริบตามนี้ครับ ขาที่ต่อออกมาจากไอซีคือขา7(ในคำสั่งคือขา2)ใช้หลอดLEDด้านบวกขายาวต่อเข้าไอซี ด้านลบขาสั้นต่อผ่านตัวต้านทานค่า1Kลงไฟลบครับ เมื่อUploadโปรแกรมแล้วไฟจะกระพริบเป็นอันว่าattinyพร้อมใช้งานแล้วครับ.

ติดต่อช่างโหน่ง

โทร.0887666003 Id Line:0887666003 Email:solarwato@gmail.com

การโปรแกรมไอซีatmega328

การโปรแกรมไอซีatmega328

เปิดโปรแกรมArduino1.0.1 โหลดข้อมูลเข้าในโปรแกรมกดโหลดโปรแกรมเข้าในไอซี

…………………………………………………

…………………………………………………

ในรูปข้างต้นเปิดโปรแกรมตัวอย่างที่มีในArduino1.0.1เป็นโปรแกรมไฟกระพริบ โปรแกรมนี้เป็นโปรแกรมที่ทดสอบง่ายที่สุด ขา13ของไอซีต่อLEDผ่านรีซิตเตอร์1Kลงไฟลบ(GND)

ในบทความที่กล่าวมาเป็นเทคนิคต่างๆที่ช่างโหน่งได้ทดลองทำดูแล้วสำเร็จจึงนำมาเผยแพร่สำหรับมือใใหม่ที่เริ่มเล่นไอซีตระกูลนี้ครับ ต่อไปเป็นเทคนิคการนำไอซีมาต่อการทำงานโดยตรง(StandAlone)ทั้งขาแบบตะขาบ(DIP)และขาแบบชิพ32ขา(TQFP)มีความยากและง่ายต่างกันครับ.

การนำไอซีไปใช้งาน(Standalone)

โครงสร้างภายในของไอซีแบบต่างๆมีการออกแบบต่างกันครับเพราะฉะนั้นการออกแบบแผ่นวงจรและการนำตัวไอซีที่เราโปรแกรมแล้วไปใช้งานหรือที่ฝรั่งเรียกว่า standalone ลงในแผ่นวงจรต้องมีเทคนิคที่แตกต่างกันครับ ก่อนอื่นเราต้องรู้จักขาของไอซีแต่ละแบบแล้วนำมาออกแบบครับ.

…………………………………………………

………………………………………………..

ในรูปเป็นขาแบบตะขาบ(DIP)และขาแบบชิพ(TQFO) จำนวนและตำแหน่งขาต่างกันครับ การต่อพื้นฐานตามรูปข้างต้นยกเว้นขาAref ไม่ต้องต่อแต่อาจจะใช้Cค่า0.1ไมโครต่อลงไฟลบไว้เพื่อลดการรบกวนจากภายนอกครับ.

การออกแบบวงจร

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

…………………………………………………

…………………………………………………

ตัวอย่างการออกแบบสำหรับชิพTQFP 32ขา จะมีบางขาที่ต่อร่วมกันจะสังเกตุว่ากราวด์(Gnd)จะมีพื้นที่มากแต่การนำไปลงแผ่นปริ้นยังต้องระวังคลื่นแม่เหล็กเหนี่ยวนำโดยเฉพาะการต่อไฟไปเลี้ยงวงจรด้วยครับ.

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

ส่วนการออกแบบไอซีแบบขาตะขาบไม่ค่อยมีปัญหาอะไรแต่ราคาค่อนข้างสูงครับ แต่เลือกไม่ได้ครับเพราะเราไม่สามารถทำแผ่นปริ้นที่มีขนาดเล็กได้ครับ.

การอ่านข้อมูลที่เขียนบนไอซีและการป้องกันCopy

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

………………………………………………..

…………………………………………………

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

……………………………………………………..

…………………………………………………

ตัวเชื่อมต่อตัวนี้ต่อเข้าทางUSBของคอมพิวเตอร์เลยครับ สายที่ต่อออกทั้งหมดมี6เส้นครับ

…………………………………………………

…………………………………………………

ไอซีแบบตะขาบ(DIP)

Miso—pin18 ต่อเข้าขา18

Mosi—pin17 ต่อเข้าขา17

Sck—pin19 ต่อเข้าขา19

Res—pin1  ต่อเข้าขา1

Vtg–pin7,20 ต่อเข้าขา7และ20

Gnd–pin8,22 ต่อเข้าขา8และ22

ไอซีแบบชิพ(TQFP)32ขา

Miso—pin16 ต่อเข้าขา16

Mosi—pin15 ต่อเข้าขา15

Sck—pin19 ต่อเข้าขา19

Res—pin29  ต่อเข้าขา29

Vtg–pin4,6,18 ต่อเข้าขา4และ6และ18

Gnd–pin3,5,21 ต่อเข้าขา3และ5และ21

การโปรแกรมและการใช้งาน

เมื่อเปิดโปรแกรมขึ้นมาขั้นตอนแรกเราต้องเลือกเบอร์ไอซีที่เราใช้งานอยู่ในที่นี้ช่างโหน่งใชAtmega328

……………………………………………..

……………………………………………..

ต่อไปโหลดโปรแกรมที่จะเขียนลงไปในไอซีครับ โดยไฟล์ที่ใช้นี้ต้องเป็นไฟล์ภาษาเครื่องหรือHexfiles

……………………………………………..

…………………………………………….

เราจะเอาHexFiles(เฮ็กไฟล์)นี้มาจากใหนครับ ในโปรแกรมของArduino ก็เป็นนามสกุลINOจะแปลงเป็นนามสกุลHexได้อย่างไรครับ ในโปรแกรมอาดุยโน่ที่เขียนลงไปในเครื่องต้องเป็นภาษาเครื่องเท่านั้นครับ(HexFiles)ซึ่งโปรแกรมเขาไม่ได้แสดงออกมาให้เราเห็นเขาทำสำเร็จสะดวกสำหรับการใช้งานครับแต่หากเราต้องการHexFilesมีวิธีดังนี้ครับ ช่างโหน่งใช้ระบบวินโด้XPอยู่นะครับหากใครใช้ระบบอื่นอยู่ก็หาที่เก็บHexFilesตามนี้ครับ.

………………………………………………..

…………………………………………………

เข้าไปที่Start—Run แล้วพิมพ์%temp% เราก็จะเข้าไปถึงสถานที่เก็บHexFilesเมื่ออาดุยโน่แปล(compiles)ก่อนที่จะเขียนลงไอซีครับ แต่เมื่ออาดุยโน่เขียนเสร็จแล้วไฟล์ที่เก็บไว้ในtempก็จะถูกลบไปโดยอัตโนมัตเราจะไม่ให้ลบได้อย่างไรงานนี้ต้องไปกำหนดค่าที่โปรแกรมอาดุยโน่ครับ.

…………………………………………………

…………………………………………………

เปิดโปรแกรมอาดุยโน่ขึ้นมาเข้าไปที่Preferences กดเครื่องหมายถูกตามรูปแล้วกดOKด้านล่างครับ เมื่อเรากดแปล(compiles)เราจะปรากฏเห็นHexFilesอยู่ในสถานที่ที่กล่าวมาในข้างต้นครับ.

…………………………………………………

………………………………………………..

เราได้HexFilesแล้วก็ก๊อปไปเก็บไว้ที่แฟ้มอื่นเพื่อสะดวกต่อการหาไปเขียนครับในที่นี้ช่างโหน่งก๊อปไปที่ฮาร์ดดิส ไดร์Cครับ.

…………………………………………….

……………………………………………..

เมื่อโหลดได้แล้วก็กดAuto Programeครับ.

………………………………………..

………………………………………..

โปรแกรมก็จะเขียนจนเสร็จครับ หากขึ้นเออเร่อ(Error)มาก็ตรวจเช็คการต่อสายและอุปกรณ์ครับ.

การโหลดข้อมูลในไอซีมาเก็บไว้

หากในตัวไอซีนั้นไม่มีการล๊อครหัสไว้เราก็สามารถโหลดเอาข้อมูลมาเก็บไว้แต่ข้อมูลนี้เป็นภาษาเครื่องนะครับ(HexFiles)เราสามารถสำรองข้อมูลในไอซีตัวนั้นเก็บไว้เพื่อเขียนในตัวใหม่หากตัวเดิมเสียหายไปครับ.

……………………………………………..

………………………………………………

การใส่รหัสเพื่อป้องกันการก๊อบ(Copy)

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

…………………………………………………

…………………………………………………

ใส่รหัสเข้าไปแล้วกดSave ถ่ายรูปจำไว้ด้วยนะครับเดี๋ยวจะลืม เมื่อเสร็จแล้วเราไม่สามารถโหลดข้อมมูลออกมาได้ครับ

ไมโครคอนโทรลเลอร์ arduino

ไมโครคอนโทรลเลอร์ arduino

ช่างบ้านนอกอย่างเราในแต่ละวันหาอะไรทำไม่เคยว่าง อยู่กับบ้านอยู่กับตัวเองก็ประหยัดและมีความสุขดีครับ ในสมัยก่อนเคยคิดหาไมโครคอนโทลเลอร์ที่จะมาใช้งานก็มีแต่ของค่ายPIC ที่ง่ายที่สุดในขณะนั้นคือเบอร์16F84 ราคาก็ไม่แพงซึ่งมีโค้ด(Source Code)คือโปรแกรมที่ต้องใส่ลงในตัวไอซีค่อนข้างแพร่หลาย ส่วนอีกค่ายหนึ่งในตระกูลAVR 80c51 โค้ดก็ใช้ภาษาโปรแกรมที่เรียกว่าภาษาC เป็นภาษาเขียนโปรแกรมที่ง่ายและเขียนโปรแกรมต่างต่างๆใให้เราได้ใช้งานมากมายครับ แต่ค่ายAvrในขณะนั้นยังไม่มีไอซีขนาดเล็กเช่นตระกลูPIC และคนที่เริ่มเรียนการเขียนโปรแกรมหันมาหาไมโครคอนโทลเลอร์ตระกูลPicกันมากเพราะมีโค้ดเฉพาะของเขาเองซึ่งมีคำสั่งไม่กี่ตัวครับ.

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

การโปรแกรมลงไอซี

ในแต่ละตระกูลของไมโครคอนโทลเลอร์ มีโปรแกรมที่จะแปลภาษาแล้วเขียนลงไปในไอซีซึ่งโปรแกรมแปลภาษาที่เราเขียนเป็นภาษาเครื่องฝรั่งเรียกว่าการคอมพาย(compile) เหตุที่เราต้องแปลภาษาเป็นภาษาครื่องเพราะไอซีมันรู้จักแต่รหัส0กับ1 มันไม่รู้จักภาษาที่เราเขียนหรอกครับ จึงเป็นความสะดวกสบายสำหรับคนใช้งานครับ แต่ในตระกูลPICมีโปรแกรมที่เขียนหรือโค้ดมากมายและโปรแกรมที่ใช้แปลก็มากมายหลายคนก็สับสนว่าจะใช้โปรแกรมใหนดี ผิดกับตระกูลAVR โปรแกรมคอมพายหรือแปลภาษามีที่นิยมมากคือแปลภาษาC และที่สำคัญคือเป็นโปรแกรมที่เปิดเผยมากหรือที่ฝรั่งเรียกกันว่าโอเพนซ๊อต(OpenSource)เราหาดูและศึกษากันได้ง่ายครับ.

อะไรคืออาดุยโน่(Arduino)

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

การโปรแกรมไอซีตระกูลAVR

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

โปรแกรมที่ใช้เขียนคำสั่ง

ในตระกูลAVRที่ได้พัฒนามาเป็นอาดุยโน่มีโปรแกรมที่แจกฟรีคือarduino1.0.1หรือเวอร์ชั่นอื่นๆเพื่อนำมาใช้งานในการเขียนคำสั่งและโปรแกรมไอซีครับ.

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

การเตรียมโปรแกรมสำหรับใช้งาน

โปรแกรมที่เราได้มาอาจใช้งานได้กับโค้ดง่ายๆพื้นฐานทั่วไปได้โดยไม่มีปัญหา แต่ถ้าเป็นโค้ดที่มีความสลับซับซ้อนกันมากเราต้องมีตัวช่วยครับซึ่งตัวช่วยนี้ฝรั่งเขาเรียกว่าไลบรารี่(library) ซึ่งตัวช่วยนี้จะเขียนข้อมูลต่างๆสำหรับโค้ดที่เราจะเขียนการทำงานต่างๆจะย่อไว้เก็บไว้ในส่วนที่เก็บโปรแกรมครับ ซึ่งถ้าโปรแกรมแปลแล้วไม่รู้ให้ไปถามหาข้อมูลตรงนี้ครับ ดังนี้เมื่อเราแปล(คอมพาย)ไม่ผ่านเราต้องเก็บตัวช่วยนี้เข้าไว้ในส่วนที่เก็บโปรแกรมซึ่งในระบบวินโด้จะเก็บไว้ที่Program Filesครับ.

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

การแปลหรือcompile เป็การตรวจสอบข้อมูลที่เขียนว่าเข้าหลักเกณฑ์ของโปรแกรมหรือไม่ก่อนที่เราจะส่งโปรแกรมเข้าไปในไอซีครับ โดยในโปรแกรมาอาดุยโน่จะเป็นเครื่องหมายถูกครับ ซึ่งถ้าแปลไม่ผ่านก็จะขึ้เออเร่อ(Error)ด้านล่างครับ

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

ขั้นตอนการโปรแกรมไอซี

การโปรแกรมไอซีก็มีอยู่หลายวิธีครับอาจจะโปรแกรมภาษาเครื่องหรือที่เรียกว่าเฮ็กไฟล์(Hex Files)ลงไปโดยตรงหรือโปรแกรมผ่านโปรแกรมอาดุยโน่ครับ ในที่นี้ช่างโหน่งจะแนะนำวิธีโปรแกรมผ่านอาดุยโน่1.0.1ครับ.

เมื่อเราทดลองแปลภาษาที่เราเขียนผ่านแล้วเราจะเอาลงไปในไอซีได้อย่างไร ปัจจุบันการโปรแกรมพัฒนาโดยนำตัวถ่ายทอดข้อมูลหรือสะพานเชื่อมต่อระหว่างคอมพิวเตอร์ลงไปในไอซีหรือที่เรียกว่าบู๊ตโหลดเดอร์(Boot Loader) ปรกติไอซีที่มาจากโรงงานจะไม่มีตัวถ่ายทอดนี้อยู่ภายในเราต้องเอาตัวถ่ายทอดหรือที่เรียกว่าอับโหลด(Up Load)นี้เก็บเข้าไว้ในไอซีเสียก่อนครับซึ่งก็ไม่ยากและก็ไม่ง่ายครับไม่ว่าจะเป็นมือใหม่หรือมือเก่า ช่างโหน่งเองเป็นมือกลางเก่ากลางใหม่ก็ยังปวดหัวเลยครับกว่าจะจับจุดได้.

การติดตั้งตัวถ่ายทอดในไอซีใหม่(เปิดบริสุทธิ)

การที่จะเปิดบริสุทธิไอซีก็ไม่ยากเราก็ใช้บอร์ดอาดุยโน่ที่มีขายทั่วไปมาเป็นตัวเขียนอัดโปรแกรมลงไปครับ

ในที่นี้ช่างโหน่งในบอร์ของUNOมีชิพแบบTQFP 32 ขา ตัวเล็กราคาถูกกว่าแบบขาตะขาบครับช่างบ้านนอกทุนน้อยจะศึกษาอะไรก็ลำบากหน่อยครับ เมื่อได้มาแล้วก็หาวิธีต่อสายซึ่งมีมากมายอยู่ในเน็ตครับ.

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

ใช้บอร์ดเป็นเครื่องมือเขียนตัวถ่ายทอด(Boot Loader Board)

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

1.ต่อสายไฟถูกต้อง สายโปรแกรมถูกต้อง ต่อสัญญาณนาฬิกาถูกต้อง

2.การต่อสัญญาณนาฬิกาก็สำคัญครับอุปกรณ์ทีกำหนดความถี่ก็มีผลเช่นกันครับ เราควรต่อสายให้สั้นที่สุดใกล้กับไอซีมากที่สุดครับ ส่วนความถีให้ใช้ความถี่สูงในกาเขียนไว้ดีที่สุดครับเช่น16-20Mhz ในงานนี้ช่างโหน่งใช้ 16Mhzครับ โดยไม่ต้องคำนึงว่าไอซีเบอร์นี้จะใช้ความถี่เท่าไหร่ในการทำงานครับ.

3.ไฟที่ใช้เลี้ยงไอซีที่เปิดบริสุทธิควรแยกไฟต่างหากใช้แรงดันไม่เกิน5โวลท์ครับ.

ขั่นตอนเปิดบริสุทธิ(ติดตั้งBootloader)

1.เปิดโปรแกรมarduino1.0.1โปรแกรมไฟล์ลงไปที่บอร์ด

กดUpLoad ลงไปที่บอร์ดเพื่อใช้บอร์ดเป็นตัวโปรแกรมข้อมูลส่วนที่ทำหน้าที่เป็นสะพานเขียนโปรแกรมลงไปในไอซี(Bootloader)โดยเลือกการโปรแกรมแบบParallel

เหตุที่เลือกตัวนี้ช่างโหน่งเองก็ไม่ทราบเหตุผลแต่ลองทำตามดูสำเร็จครับ เมื่อทำบอร์ดเป็นตัวโปรแกรมเสร็จแล้วเลือกเบอร์ไอซีที่เราจะโปรแกรมครับ ในที่นี้ช่างโหน่งทดลองสองเบอร์คือAtmega328และ8ครับ ส่วนเบอร์อื่นๆก็หลักการไม่ต่างกันครับ

ถ้าเป็นเบอร์328 ก็เลือกไปที่Arduino Uno

ถ้าเป็นAtmega8 ก็เลือกไปที่ล่างสุดครับ ส่วนเบอร์อื่นๆทดลองดูตามนี้ครับ

หลังจากเลือกเรียบร้อยแล้วก็กด Burn Bootloader ขั้นตอนนี้ต้องรอคอยครับ หากสำเร็จไม่มีขึ้นเออเร่อ(Error)ตัวสีส้มก็ผ่านครับ แต่บางครั้งไม่ผ่านขึ้นข้อความต่างๆให้ตรวจดูตามนี้ครับ

1.การต่อสายถูกต้องหรือไม่ การลงโปรแกรมสามารถลงใหม่ได้เรื่อยๆครับถึงแม้ว่าจะเคยลงBootloaderมาแล้ว

2.เลือกเบอร์ไอซีถูกต้องหรือไม่ หากเขียนเบอร์ไอซีที่ต่างกันให้ปิดโปรแกรมแล้วเปิดใหม่หรือไม่แน่ใจปิดแล้วเปิดคอมใหม่

3.ไอซีที่โปรแกรมมีปัญหาครับลองเอาตัวอื่นๆหรือตัวใหม่มาทดลองก่อนเพื่อให้แน่ใจว่าทำตามขั้นตอนของเราถูกต้องครับ

เมื่อสร้างสะพานที่เป็นตัวนำโปรแกรมที่เราเขียนสำเร็จแล้วต่อไปเป็นโปรแกรมที่เราเขียนลงไปในไอซีเพื่อใช้งานครับ

ตัวโปรแกรมข้อมูลลงไปเพื่อใช้งาน

เครื่องมือที่จะโปรแกรมหรือเรียกว่าอับโหลดข้อมูลลงในไอซีมีมากมายหลายวิธีครับแต่ที่ช่างโหน่งใช้คือเสียบจากUSBของคอมพิวเตอร์ลงไปที่ตัวไอซีโดยตรงครับ หรือที่เรียกว่าUSB TO TTL

ตัวนี้ราคาไม่เกินร้อยบาทครับในเมืองไทยมีขายมากมาย ที่สำคัญคือการต่อสายเข้าไปไอซีครับ มีจุดสำคัญอยู่บ้างครับ

การต่อสายไฟ

1.DTR–Capacitor0.1Mfd(Mila)–Reset จากDTR ต่อผ่านคาปาซิตเตอร์แบบไมล่าค่า0.1ไมโครแล้วต่อเข้าขา1รีเซ็ต

2.Rx–pin3 Atmega จากRx ต่อสลับกันเข้าขา3 Tx ของไอซี

3.Tx–pin2 Atmega จากTx ต่อสลับกันเข้าขา3 Rx ของไอซี

4.Vcc–+5v จากVcc ต่อเข้าขา7ของไอซี

5.Gnd–0v จากGnd ต่อเข้าขา8ของไอซี

อ่านต่อ