i-Stamp2P24

Page 1

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


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.