Newbies
microcontroller
project
edi
tor
tp ial@
ema
g
e. azin
com
กองบรรณาธิการ
มาเริ่มเลนไมโครคอนโทรลเลอร ดวยภาษาเบสิกกับ i-Stamp2P24 ประเดิมคอลัมน์ใหม่ด้วยบอร์ดพัฒนาโครงงานส�ำหรับ BASIC Stamp2P ไมโครคอนโทรลเลอร์ที่ว่ากันว่าใช้งานง่ายที่สุดในโลกตัวหนึ่ง มาเริ่มต้นลองเล่น ไมโครฯ ด้วยโปรแแกรมภาษาเบสิกที่เริ่มต้นได้ไม่ยาก
1.1
1.2
รูปที่ 1 โมดูล BS2P24-IC ของ Parallax (1.1) กับ i-Stamp2P24 ของ inex (1.2) 48
The Prototype Electronics
นี่คือคอลัมน์ที่เกิดขึ้นส�ำหรับผู้สนใจที่ต้องการเริ่มต้นลองเล่นและ ใช้งานไมโครคอนโทรลเลอร์ ซึ่งไม่จ�ำกัดรูปแบบฮาร์ดแวร์ ซอฟต์แวร์ที่ใช้ ในการพัฒนาโปรแกรม และไม่ยึดติดกับค่ายใดๆ เป็นหลัก โครงงานที่น�ำ เสนอในแต่ละโครงงานจะเน้นการสร้างที่ง่ายๆ ไม่ซับซ้อน เลือกใช้ไมโคร คอนโทรลเลอร์ที่มีจ�ำหน่ายในประเทศ เลือกใช้ซอฟต์แวร์ส�ำหรับพัฒนา โปรแกรมที่แจกฟรี เลือกใช้เครื่องโปรแกรมไมโครคอนโทรลเลอร์ที่มีราคา ไม่แพง และจัดหาได้ในประเทศเช่นกัน รวมถึงการแนะน�ำให้สร้างโครงงาน เครื่องโปรแกรมไมโครคอนโทรลเลอร์ในราคาประหยัดด้วย เนื่องในโอกาสเปิดแพรคลุมป้ายคอลัมน์ใหม่นี้ ขอเลือกใช้ไมโคร คอนโทรลเลอร์ที่มีชื่อเสียงในระดับโลกและได้รับการยอมรับในวงการนัก เล่นไมโครคอนโทรลเลอร์และระบบสมองกลฝังตัวทั่วโลกว่า มีประสิทธิภาพ สูง ใช้งานง่าย ราคาประหยัด นั่นคือ เบสิกแสตมป์ (BASIC Stamp) อันเป็น ผลงานในระดับลายครามของ Parallax (www.parallax.com) รุ่นที่เลือกมา ประเดิมคือ เบสิกแสตมป์ 2P24 โดยเลือกใช้โมดูลไมโครคอนโทรลเลอร์ ที่พัฒนาขึ้นในประเทศนั่นคือ โมดูล i-Stamp2P24 ซึ่งพัฒนาโดยบริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จ�ำกัด (inex - www.inex.co.th) ซึ่งเป็นตัวแทน จ�ำหน่ายสินค้า Parallax อย่างเป็นทางการในประเทศไทย ในรูปที่ 1 แสดง ภาพเปรียบเทียบโมดูล BS2P24-IC ของ Parallax กับ i-Stamp2P24 ของ inex ทั้งคู่มีการท�ำงานและจัดขาที่เหมือนกัน
คุณสมบัตขิ อง i-Stamp2P24
รู้จักกับ i-Stamp2P24 i-Stamp2P24 เปนโมดูลไมโครคอนโทรลเลอรเบสิกแสตมป 2P24 ที่ พัฒนาโดยบริษัท อินโนเวตีฟ เอ็กเพอริเมนต จ�ำกัดในประเทศไทยภายใต ความรวมมือของ Parallax Inc. โดย i-Stamp2P24 ไดรับการออกแบบใหมี การจัดขาเหมือนกับขาพอรตของ BS2P24-IC เกือบทั้งหมด ยกเวนเพียงขา 24 ทีไ่ มใชงาน การจัดขาและวงจรของ i-Stamp2P24 ในรปู ที่ 2 แสดงการจดั ขาใชงานของ i-Stamp2P24 วงจรสมบูรณแสดง ในรปู ที่ 3 หัวใจของวงจรคอื IC2 ซึง่ เปนไมโครคอนโทรลเลอรเบอร SX48BD ซึง่ ภายในบรรจุโปรแกรมแปลภาษาพเี บสิก 2P หรือเรียกวา เบสิกแสตมป 2P อินเตอรพรตี เตอร มีเซรามิกเรโซเนเตอร 20MHz เปนอปุ กรณกำ� เนิด สัญญาณนาฬิกาเพือ่ กำ� หนดจงั หวะการทำ� งาน ทางดานหนวยความจ�ำของ i-Stamp2P24 ใชไอซีหนวยความจ�ำออี พี รอมอนุกรม 24LC128 มีความจุ 16 กิโลไบต (16KB) บรรจุค�ำสั่งของ PBASIC-2 ทีใ่ ชรันโ ปรแกรมของเบสิก แสตมป 2P ได 4,000 ค�ำสั่ง โดยแบงออกเปน 8 ชวง ชวงละ 2 กิโลไบต โดย ไมโครคอนโทรลเลอรสามารถเรียกโปรแกรมเพื่อท�ำงานไดคราวละ 1 ชวง หรือไมเกิน 2 กิโลไบต แตสามารถเรียกใชงานโปรแกรมตอเนื่องกันได การ เก็บรักษาขอมูลทำ� ไดนาน 10 ปและมีรอบของโปรแกรมใหมไ ด 100,000 รอบ
• ใช้เบสิกแสตมป์ 2P อินเตอร์พรีตเตอร์ ลขิ สิทธิถ์ กู ต้องจาก
Paralalx Inc., USA.
• ความถีส่ ญั ญาณนาฬิกา 20MHz ประมวลผลด้วยความเร็ว 12,000
ค�ำสัง่ ภาษาพีเบสิกต่อวินาที
• ขนาดหน่วยความจ�ำ 16 กิโลไบต์ เก็บข้อมูลได้นาน 10 ปี เขียนลบ
ได้ 100,000 รอบ
• หน่วยความจ�ำแรม 32 ไบต์ • หน่วยความจ�ำแรมสแครตช์แพด (scratch pad RAM) 128 ไบต์ • ใช้ไฟเลีย้ ง +5V ต้องการกระแส 65mA ในขณะท�ำงาน และ 200 A m
ในโหมดสลีป
•
เชือ่ มต่อกับคอมพิวเตอร์ผา่ นพอร์ตอนุกรมส�ำหรับดาวน์โหลดโปรแกรม และสือ่ สารข้อมูล รองรับการใช้งานกับตัวแปลงสัญญาณพอร์ต USB เป็นพอร์ตอนุกรม RS-232
• พอร์ตอินพุตเอาต์พตุ 16 ช่อง • จ่ายกระแสซอร์ส/ซิงก์ตอ่ ขา 30mA/30mA • สามารถขับ LED และเซอร์โวมอเตอร์ขนาดเล็กได้โดยตรง • สร้างสัญญาณเสียง, DTMF (สัญญาณปุม่ โทรศัพท์) และ PWM
โดยไม่ตอ้ งใช้อปุ กรณ์ตอ่ เพิม่
• รองรับการเชือ่ มต่อกับอุปกรณ์ภายนอกทีท่ ำ� งานผ่านระบบบัส I C 2
ของ NXP และบัส 1 สายของ Dallas Semiconductor
• ขาเชือ่ มต่อใช้คอนเน็กเตอร์ชบุ ทองอย่างดี • พัฒนาโปรแกรมด้วยซอฟตแวร์เบสิกแสตมป์เอดิเตอร์ V2.39 ขึน้ ไป • มีไฟแสดงสภาวะการท�ำงาน • ขนาดของโมดูล 1.5 x 1.2 นิว้ เมื่อเขียนโปรแกรมภาษาพีเบสิกเรียบรอยแลวจะดาวนโหลดลงมายัง i-Stamp2P24 ผานพอรตอนุกรม (หรือพ อรต USB โดยใชตัวแ ปลงสัญญาณ พอรต USB เปนพอรตอนุกรม RS-232 ชวย) สัญญาณไฟฟาจะถูกแปลง ระดับสัญญาณใหเปนระดับทีทีแอลดวยวงจรแปลงระดับสัญญาณซึ่งใช IC1 ไอซีเบอร MAX3232 รวมทั้งสัญญาณที่ใชในการรีเซตดวย อยางไร ก็ตามผูใชงานสามารถท�ำการรีเซตระบบไดดวยการตอสวิตชกดติดปลอย ดับเขาทีข่ า RESET สวนการโปรแกรมขอมูลใชการโปรแกรมในลักษณะอนุกรมดวยการ ตอข าสัญญาณ TxD, RxD, DTR และ กราวดข องพอรตอนุกรม (หรือพอรต อนุกรมเสมือนทไี่ ดจ ากตัวแปลงสัญญาณพอรต USB เปนพ อรตอนุกรม) เขาสูข า SIN, SOUT, ATN และกราวดข อง i-Stamp2P24 นอกจากนั้นทขี่ า 6 และ 7 ของพอรตอนุกรมตองตอถ ึงกันด วย เพื่อใหสามารถโปรแกรมขอมูล บน i-Stamp2P2424 ไดต ลอดเวลาอยางอัตโนมัติ ดังแสดงในรูปท ี่ 4
รูปที่ 2 การจัดขาใช้งานของ i-Stamp2P24
IC2 จะแปลภาษาทเี่ ขียนขึ้นแ ลวเก็บขอมูลของโปรแกรมลงใน IC3 ซึ่ง เปนไอซีหนวยความจ�ำออี ีพรอมอนุกรมขนาด 16 กิโลไบตเบอร 24LC128 นั่นคือ IC3 ท�ำหนาทีเ่ ปนหนวยความจ�ำโปรแกรมของระบบ
The Prototype Electronics
49
Newbies microcontroller : Basic Stamp2P
รูปที่ 3 วงจรสมบูรณ์ของโมดูล i-Stamp2P24 i-Stamp2P24 มีขาพอรตอินพพุตเอาตพุตดิจิตอล 16 ขา เรียกชื่อวา P0 ถึง P15
สัญญาณนาฬิกาที่ใชไดมาจากเซรามิกเรโซเนเตอร 20MHz
สร้างบอร์ด¾ั²นาโครงงานสําËรับ i-Stamp2P24
การจัดหนวยความจําภายใน i-Stamp2P24
วงจรสมบูรณแสดงในรูปที่ 5 จะเห็นไดวา มีการแบงภาคจายไฟออก เปน 2 สวน สวนแรกส�าหรับภาคจายไฟ +5V ใชไอซี LM2940CT-5.0 อีก สวนหนึ่งส�าหรับเลี้ยงเซอรโวมอเตอร ในวงจรไดจัดสรรใหขาพอรต P8, P9 และ P10 ตอไปยังคอนเน็กเตอร IDC เพื่อใชขับ RC เซอรโวมอเตอรขนาด เล็ก สวนขาพอรตทั้งหมดจะตอมายังจุดบัดกรีเพื่อสรางวงจรหรือจะตอเขา กับคอนเน็กเตอร IDC ตัวผูหรือตัวเมียส�าหรับตอสายเพอใชงานก็ไดแลวแต ความตองการ
i-Stamp2P24 มีหนวยความจ�าหลักอยู 2 ประเภทคือ หนวยความ จ�าแรมส�าหรับเก็บขอมูลชั่วคราว และจะหายไปเมื่อไมมีไฟเลี้ยงวงจร ซึ่ง ยังสามารถแบงไดอีก 2 กลุมคือ หนวยความจ�าขอมูลส�าหรับเก็บคาตัว แปร (Variable RAM) 32 ไบตและหนวยความจ�าสแครตชแพดแรม (scratchpad RAM) 64 ไบต อีกประเภทหนึ่งคือ หนวยความจ�าอีอีพรอม ท�าหนาที่เปนสวนเก็บขอมูลของโปรแกรมพีเบสิกและขอมูลอื่นๆ ที่เกี่ยวของ ซึ่งขอมูลไมสูญหายในกรณีที่ไฟเลี้ยงหายไป เนื่องจากหนวยความจ�าอีอี พรอมเปนหนวยความจ�าแบบนอน-โวลาไทล (non-volatile) ซึ่งเปนหนวย ความจ�าประเภทเก็บรักษาขอมูลไวไดโดยไมตองใชไฟเลี้ยง เปรียบเทียบกับ คอมพิวเตอรแลว หนวยความจ�าอีอีพรอมก็เหมือนกับฮารดดิสกนั่นเอง โดย มันสามารถเก็บไดทั้งโปรแกรมและแฟมขอมูล
ลายทองแดงของแผนวงจรพิมพขนาดเทาแบบแสดงในรูปที่ 6 และ แบบการลงอุปกรณแสดงในรูปที่ 7 เมื่อไดแผนวงจรพิมพมาก็ลงอุปกรณ ที่ จุดตอขาพอรต P0 ถึง P15 เลือกไดวา จะติดตั้งคอนเน็กเตอร IDC ตัวเมีย เพื่อใชกับสายตอวงจรและเบรดบอรดหรือไม ถาตองการใชงานบอรดนี้เปน บอรดทดลองดวย ก็ควรติดตั้งคอนเน็กเตอร IDC ตัวเมียไวเลย ซึ่งก็มีภาพ การลงอุปกรณครับพรอมทั้งติดตั้งเบรดบอรดเพื่อการทดลองแสดงในรูปที่ 8
i-Stamp2P24 ตองการไฟเลี้ยง +5V กระแสอยางนอย 65mA ผูใช งานเพียงตอสาย +5V และกราวดเขามายัง i-Stamp2P24 ก็จะสามารถใช งานไดทันที ไมจ�าเปนตองใชอุปกรณส�าหรับสรางวงจรภาคจายไฟเพิ่มเติม อีก
50
รูปที่ 4 การต่อขาสัญญาณ ของโมดูล i-Stamp2P24 กับคอมพิวเตอร์
The Prototype Electronics
จุดเชื่อมตอกับคอมพิวเตอรใชแจกโมดูลาร 4 ขา รองรับทั้งกับสายตอ พอรตอนุกรมและสายแปลงสัญญาณ USB เปนพอรตอนุกรม (UOCN-4) ที่แนะน�าใหสรางใน TPE ฉบับนี้ดวย สวนโมดูล i-Stamp2P24 มีคอนเน็ก เตอร SK1 รองรับ
ทดสอบบอร์ด
มีขั้นตอนดังนี้
(1) น�ำ i-Stamp2P24 มาติดตั้งลงบนคอนเน็กเตอร์ตัวเมีย 24 ขาที่ว่างบนบอร์ด โดยสังเกตทิศทางให้ถูกต้อง (2) เชื่อมต่อบอร์ดพัฒนาโครงงานนี้เข้ากับคอมพิวเตอร์ โดยใช้สายต่อพอร์ตอนุกรมหรือสายแปลงสัญญาณพอร์ต USB เป็น RS-232 (UCON-4) ดังรูปที่ 9 (3) จ่ายไฟให้แก่บอร์ด จะเห็นไฟ ON ที่ตัว i-Stamp2P24 ติดสว่าง (4) เปิดโปรแกรมเบสิกแสตมป์เอดิเตอร์ ทีห่ น้าต่างเอดิเตอร์ เข้าไปในเมนู Run เลือก Identified ถ้าทุกอย่างถูกต้อง จะปรากฏ หน้าต่างแสดงการติดต่อถูกต้องดังรูปที่ 10 (5) ถาป รากฏขอความตามรูปที่ 11 แสดงวา การเชื่อมตอ ระหวางคอมพิวเตอรก ับ i-Stamp2P24 ลมเหลวซึ่งอาจเกิดจาก สายเชื่อมตอระหวางคอมพิวเตอรกับบอรดทดลองขาดหรือตอ ไมถูกตอง ใหต รวจสอบสายเชื่อมตอวาต อถ ูกตองหรือไม โดย มีไดอะแกรมการตอสายที่ใชในการเชื่อมตอหรือที่เรียกวาสาย ดาวนโหลดแสดงในรูปท ี่ 12 หรืออ าจเกิดจ ากไมไดจ ายไฟให แกตัวบ อรด หรือติดตั้ง i-Stamp2P24 ผิดต �ำแหนง หรือต ัวอินเตอร พรตี เตอรเสียหาย ซึ่งในกรณีห ลังเกิดขึ้นไ ดย ากมาก ใหตรวจ สอบก ารจ า ยไฟ ว า ถู ก ขั้ ว ห รื อ ไม สายไฟเ ลี้ ย งต อ แ น น หนา สมบูรณดหี รือไม รวมถึงก ารติดตั้ง i-Stamp2P24
รูปที่ 5 วงจรของบอร์ดพัฒนาโครงงานส�ำหรับ i-Stamp2P24
(6) ทดลองเขียนโปรแกรมง่ายๆ โดยเริ่มจากเลือกไดเร็ก ตีฟหรือชนิดของเบสิกแสตมป์ที่ต้องการใช้งาน ในที่นี้คือ เบสิก แสตมป์ 2P ไปที่เมนู Directive เลือก BS2P จะปรากฏข้อความ '{$STAMP BS2P} ขึ้นบนบรรทัดแรก กด Enter (7) ไปที่เมนู Directive เลือก PBASIC ตามด้วย Version 2.5 เพื่อเลือกรุ่นของซอฟต์แวร์ที่ใช้ในการพัฒนา จะปรากฏ ข้อความ '{$PBASIC 2.5} กด Enter (8) ยังอยู่ที่เมนู Directive ล�ำดับต่อไปเป็นการเลือก ต�ำแหน่งของพอร์ตที่เชื่อมต่อกับ i-Stamp2P24 โดยเลือก Port ตามด้วยต�ำแหน่ง COM ที่ต่อกับ i-Stamp2p24 จะปรากฏ ข้อความ '{$PORT COM1} กด Enter ในกรณีที่ใช้ตัวแปลงพอร์ต USB เป็นพอร์ตอนุกรม RS-232 จะต้องตรวจสอบต�ำแหน่งของ พอร์ตอนุกรมที่ไดรเวอร์ของตัวแปลงพอร์ตสร้างขึ้น
(9) พิมพ์ค�ำสั่ง DEBUG "welcome"
(10) กดปุม Run จะปรากฏหนาตางตรวจสอบการเชื่อม ตอเบสิกแสตมปกบั คอมพิวเตอร ตามดว ยหนาตางดาวนโหลด โปรแกรม และสดุ ทายปรากฏหนาตาง Debug Terminal แสดง ขอความ welcome ดังในรปู ที่ 13 อันเปนการสงั่ ให i-Stamp2P24 สงขอความ welcome ไปแสดงยงั หนาตาง Debug Terminal ของ โปรแกรมเบสิกแสตมปเอดเิ ตอร หากกดสวิตช RESET บนบอรด โปรแกรมจะแสดงขอ ความซำ �้ อกี รูปที่ 6 ลายทองแดงขนาดเท่าแบบของแผ่นวงจรพิมพ์ของบอร์ดพัฒนาโครงงาน ส�ำหรับ i-Stamp2P24
The Prototype Electronics
51
Newbies microcontroller : Basic Stamp2P
(11) หากเขียนโปรแกรมทดลองเรียบรอยแลว และตองการเก็บในรูป แฟมขอมูล ใหบันทึกแฟมขอมูลโดยก�าหนดใหมีนามสกุล .BSP เสมอ เพียงเทานั้นก็จะสามารถเรียนรูและใชงานเบสิกแสตมป 2P ดวย i-Stamp2P24 และบอรด พัฒนาโครงงานไดอยางสมบูรณ
รูปที่ 9 การต่อบอร์ดพัฒนา โครงงานส�าหรับ i-Stamp2P24 กับคอมพิวเตอร์
รูปที่ 7 การลงอุปกรณ์ของบอร์ดพัฒนาโครงงานส�าหรับ i-Stamp2P24
รูปที่ 10 หน้าต่างแสดงการติดต่อกับโมดูล i-Stamp2P24 ของ คอมพิวเตอร์ โดยในช่อง COM11 จะปรากฏชื่อ BASIC Stamp2P40 Vxx (xx เปนเลขเวอร์ชั่น) เปนการแจ้งให้ทราบว่า โปรแกรมสามารถติดต่อกับ เบสิกแสตมป 2P อินเตอร์พรีตเตอร์ได้แล้วพร้อมท�างาน
รูปที่ 11 ไดอะล็อกบ็อกแจ้งไม่พบโมดูล i-Stamp2P24
รูปที่ 8 บอร์ดพัฒนาโครงงานส�าหรับ i-Stamp2P24 ที่ติดตั้งคอนเน็กเตอร์ และเบรดบอร์ดพร้อมส�าหรับการทดลอง 52
The Prototype Electronics
รูปที่ 12 ไดอะแกรมการต่อสายดาวน์โหลดแบบพอร์ตอนุกรมของบอร์ด พัฒนาโครงงานส�าหรับ i-Stamp2P24
ตัวอยางการทดลองงายๆ ของ i-Stamp2P24 และบอรดพัฒนาโครงงานฝมือคุณเอง 2. Easy LCD interface
1. Roulette Stamp เมื่อเริ่มตนท�างาน LED ต�าแหนง 0 ติด เมื่อกดสวิตช LED ทั้งแปดตัว จะติดสวางเหมือนไฟวิ่ง และเมื่อปลอยสวิตช LED จะวิ่งชาลง จนกระทั่ง หยุดวิ่ง มี LED ติดเพียงตัวใดตัวหนึ่ง แสดงผลการเสี่ยงทายออกมา
+5V
DSP1 LCD 16x2 P11 P10 P9
i-Stamp2P24
2
4 RS ^ _ ^ 2 H e l l o , I 2 a m 1 2 5 R/W B A S I C 2 S T A MP 2 2 p 1 2 6 E D4 D5 D6 D7 11 12 13 14 1
P12
3 R1 1k
P13 P14 P15
เปนตัวอยางการติตดอโมดูล LCD ใหแสดงขอความตามที่ตองการ เมื่อรันโปรแกรมที่หนาจอแสดงผลของโมดูล LCD ปรากฏขอความ ^_^
Hello,I
BASIC '*************************************************** ' Stamp Roulette example
STAMP
am 2p
พรอมกับกะพริบ
'*************************************************** ' {$STAMP BS2P} ' {$PBASIC 2.5} DRAW
VAR
DELAY_LOOP DIRL=$FF
Bit
VAR Byte
DRAW=0
OUTL=128 LOOP1:
' Define Bit TO keep draw status ' Define Byte variable TO keep delay LOOP
' Define P0-P7 as outputs ' Clear draw status ' Define first state OUTPUT (%10000000)
IF IN8=0 THEN SHIFT_OP ' Get INPUT8 to Shift output
IF DRAW=0 THEN LOOP1
' Check status, back to loop if zero
FOR DELAY_LOOP=0 TO 39 ' Shift LED with delay
PAUSE DELAY_LOOP*5 MIN 20 ' Multiple delay dycle, start from 20 ms.
GOSUB SHIFT_LED
NEXT
DRAW=0
PAUSE 1000
GOTO LOOP1
SHIFT_OP:
DRAW=1
GOSUB SHIFT_LED PAUSE 20
GOTO LOOP1
SHIFT_LED:
' GOTO subroutine Shift LED
' END of LOOP ' Clear draw status ' Delay 1 sec. ' Goto loop ' Set draw status ' GOTO subroutine Shift LED ' Delay 20 ms. ' Goto loop
IF OUTL=1 THEN RELOAD ' Reload value if OUTL = 1 OUTL=OUTL/2
' Shift TO NEXT OUTPUT
GOTO SHIFT_EXIT
' RETURN
OUTL=128
' Define default value (%10000000)
RELOAD:
'************************************************** ' Basic LCD interfacing '************************************************** ' {$STAMP BS2P} ' {$PBASIC 2.5} ' INITIAL BEFORE USE LCDOUT OR LCDIN COMMAND GOSUB INITLCD LOOP1: ' TURN DISPLAY ON LCDCMD 9,$0C LCDOUT 9,$80+0,["^_^ Hello,I am"] LCDOUT 9,$C0+0,["BASIC STAMP 2p"] PAUSE 500 ' Turn display off LCDCMD 9,$08 PAUSE 500 GOTO LOOP1 INITLCD: ' Delay 50 mS after VCC rise TO 4.5V PAUSE 50 LCDCMD 9,$30 ' Send wakeup sequence TO LCD PAUSE 5 ' LCD delay LCDCMD 9,$30 ' Delay 1 millisecond PAUSE 1 LCDCMD 9,$30 ' Delay 1 millisecond PAUSE 1 LCDCMD 9,$20 ' Set 4-Bit mode LCDCMD 9,$28 ' Set 2-line mode with 5x8 font LCDCMD 9,$06 ' Set auto-increment cursor (no shift) LCDCMD 9,$01 ' Clear the display RETURN
SHIFT_EXIT:
RETURN
' RETURN
The Prototype Electronics
53
Newbies microcontroller : Basic Stamp2P
3. Easy port expanding '**************************************************** ' 1-Wire thermometer application '**************************************************** ' {$STAMP BS2P} ' {$PBASIC 2.5} '************* Byte MODE,LOW SPEED ****************** ' No Reset MODE0 CON 0 MODE1 CON 1 ' Reset before DATA MODE2 CON 2 ' Reset after DATA MODE3 CON 3 ' Reset before AND after DATA '************** Bit MODE,LOW SPEED ***************** ' No Reset MODE4 CON 4 MODE5 CON 5 ' Reset before DATA MODE6 CON 6 ' Reset after DATA MODE7 CON 7 ' Reset before AND after DATA
' DS18B20 USE LOW SPEED ONLY (~20kbits/Sec (NOT include reset pulse))
เป น ตั ว อย า งการขยายพอร ต อิ น พุ ต เอาต พุ ต อย า งละ 4 ขาผ า นการ ติดตอกับไอซีขยายพอรตผานระบบบัส I2C จากวงจรไอซี PCF8574A ชวย i-Stamp2P24 ขยายพอรตเอาตพุต 4 ขาซึ่งตอกับ LED และขยายพอรตอินพุต อีก 4 ขาซึ่งตอกับสวิตชโดยใชขาพอรตของ i-Stamp2P24 เพียง 2 ขา '*************************************************** ' I2C bus port expanding example
'*************************************************** ' {$STAMP BS2P} ' {$PBASIC 2.5} ID_READ
CON
ID_WRITE CON BUFFER IN1:
OUT1:
VAR
%01110001 %01110000 Byte
' SLAVE ID , R/W Bit = 1 <READ> ' SLAVE ID , R/W Bit = 0 <WRITE> ' For data input and output
I2COUT 0,ID_WRITE,[$FF] I2CIN
0,ID_READ,[BUFFER]
BUFFER.NIB1 = BUFFER.NIB0
' Turn off LED & clear latch ' Read input ' Swap nibble high & low
I2COUT 0,ID_WRITE,[BUFFER] ' Write output
GOTO
IN1
4. Easy thermometer
เปนตัวอยางการติดตอกับไอซีวัดอุณหภูมิเบอร DS18B20 ดวยการใช ค�าสั่งติดตอกับอุปกรณบัสหนึ่งสาย ซึ่งเปนหนึ่งในคุณสมบัติที่โดดเดนของ i-Stamp2P24 คาอุณหภูมิที่อานไดจะน�าไปแสดงผานทางหนาตาง Debug Terminal เมื่อรันโปรแกรม หนาตาง Debug Terminal จะปรากฏขึ้นมาพรอมกับ แสดงขอความ EXTERNAL POWER และตามดวยคาอุณหภูมิในบรรทัดถัดมา จากนั้นทดลองน�าปลายหัวแรงแชที่จายไฟแลวมาอังที่ตัวถังของไอซี DS18B20 สังเกตการแสดงผลของหนาตาง Debug Terminal จะเห็นวาคาอุณหภูมิจะ คอยๆ เพิ่มขึ้น และเมื่อน�าปลายหัวแรงออกอุณหภูมิก็จะคอยๆ ลดลง 54
The Prototype Electronics
TEMP VAR Word ' Holds the temperature value POINT VAR Byte ' For 0.5 degree SIGN VAR Byte ' For Positive or Negative temperature POWER VAR Bit ' Power supply status START: OWOUT 6,MODE1,[$CC,$B4]' Send SKIP ROM and Read power supply OWIN 6,MODE6,[POWER] ' Read power supply IF POWER = 1 THEN SHOW2 SHOW1: DEBUG HOME,"PARASITE POWER",CR GOTO CHECK SHOW2: DEBUG HOME,"EXTERNAL POWER",CR CHECK: IF POWER = 1 THEN EXTERNAL ' Use external power supply PARASITE: OWOUT 6,MODE1,[$CC,$44] ' Delay for parasite power PAUSE DELAY GOTO DONE EXTERNAL: ' Send SKIP ROM and CONVERT-TEMP. OWOUT 6,MODE1,[$CC,$44] DONE: OWIN 6,MODE4,[TEMP] ' Get the temperature data from DS18B20 IF TEMP = 0 THEN DONE ' Send READ ScratchPad command OWOUT 6,MODE1,[$CC,$BE] OWIN 6,MODE2,[TEMP.LOWBYTE,TEMP.HIGHBYTE,SKIP 6] SIGN = "-" IF TEMP.HIGHBYTE.BIT0 = 1 THEN NEG SIGN = " " POS: POINT = "5" IF TEMP.LOWBYTE.BIT0 = 1 THEN HALF1 POINT = "0" HALF1: TEMP = TEMP.LOWBYTE/2 DEBUG "TEMP= ",SIGN,DEC3 TEMP,".",POINT," C" GOTO START NEG: POINT = "5" IF TEMP.LOWBYTE.BIT0 = 1 THEN HALF2 POINT = "0" HALF2: ' 2’s complement TEMP.LOWBYTE = ~TEMP.LOWBYTE + 1 TEMP = TEMP.LOWBYTE/2 DEBUG "TEMP= ",SIGN,DEC3 TEMP,".",POINT," C" GOTO START DELAY CON 1000 ' Change delay for parasite here
5. Servo controller
รายการอุปกรณ
C1 - ตัวเก็บประจุ 220mF 25V อิเล็กทรอไลต 1 ตัว C2, C3, C5, C6 - ตัวเก็บประจุ 0.1mF 63V โพลีเอสเตอร 4 ตัว C7 ถึง C9 - ตัวเก็บประจุ 470mF 16V อิเล็กทรอไลต (LOW ESR) 3 ตัว BD1 - ไดโอดบริดจ 1A 50V เบอร W04M 1 ตัว IC1 - LM2940T-5.0 1 ตัว R1 - ตัวตานทาน 1/4W 5% 1kW 1 ตัว SW1 และ SW3- สวิตชเลื่อน 3 ขาลงแผนวงจรพิมพ 2 ตัว SW2 - สวิตชกดติดปลอยดับ 1 ตัว K1 - แจกโมดูลาร 4 ขาแบบ 6P4C 1 ตัว K2 - แจกอะแดปเตอร 1 ตัว K3 และ K4 - เทอรมินอลบล็อก 2 ขา เบอร DT-126 2 ตัว LED1 - LED สีแดง 3 มม. 1 ตัว คอนเน็กเตอร IDC ตัวผู 3 ขา 3 ตัว, คอนเน็กเตอร IDC ตัวเมีย 12 ขาแถว เดี่ยว 2 ตัว, แผนระบายความรอนส�าหรับ IC1 พรอมสกรูและนอตยึด, แผน วงจรพิมพ อุปกรณเสริม โมดูล i-Stamp2P24, คอ นเน็กเตอร IDC 40 ขา ตัวเมีย แถว คู 1 ตัว, เบรด บอรด ขนาด 400 จุด, สาย ตอ พอรต อนุกรม (CX-4) หรือ สาย แปลง สัญญาณ USB เปน พอรต อนุกรม (UCON-4), อะแดปเตอร ไฟ ตรง +6V 500mA ขึ้นไ ป (ไม เกิน +12V) หมายเหตุ - อุปกรณหลักทั้งหมดสามารถหาซื้อไดที่ อิเลคทรอนิคส ซอรซ บานหมอ โทรศัพท. 0-2623-9460-6, 0-2623-8364-6 - คอนเน็กเตอร IDC 3 ขาตัวผูตองใชแบบ 40 ขามาตัด เปนตัวอยางการขับ RC เซอรโวมอเตอรอยางงายของ i-Stamp2P24 ซึ่ง ใชค�าสั่ง PULSOUT เพียงค�าสั่งเดียวกับ เมื่อเริ่มท�างาน แกนของมอเตอรจะ ถูกขับใหหมุนไปทางซาย จากนั้นจะหมุนกลับมาทางขวา แลวกลับไปทางซาย อีกครั้ง สลับไปมาเชนนี้ตลอดเวลา หากแกนหมุนของมอเตอรไมไดเคลื่อนที่ ยังต�าแหนงขวาหรือซายสุด อาจสามารถปรับแตงคาความกวางของสัญญาณ พัลสได โดยปรับคาที่พารามิเตอร DURATION ของค�าสั่ง PULSOUT
- ตัวเก็บประจุ C7 ถึง C9 สามารถใช 1000mF 16V อิเล็กทรอไลต 2 ตัว แทนได (ใสเพียง 2 ตัว) - บอรดส�าเร็จพรอมใชงาน, สาย UCON-4 และโมดูล i-Stamp2P24 ดูราย ละเอียดการสั่งซื้อไดในหนา TPE Shop ทายเลม
'************************************** ' RC servo controller example '************************************** ' {$STAMP BS2p} ' {$PBASIC 2.5} X VAR Word OUTPUT 8 HERE : FOR X = 1 TO 100 PULSOUT 8,1250 ' PAUSE 10 NEXT FOR X = 1 TO 100 PULSOUT 8,2500 ' PAUSE 10 NEXT
www.tpemagazine.com Send pulse for driving motor to left end
Send pulse for driving motot to another end
GOTO HERE
The Prototype Electronics
55