หน้าเว็บ

วันเสาร์ที่ 23 สิงหาคม พ.ศ. 2557

Bluetooth Control with App Inventor 2 EP.1

สร้างโปรแกรมควบคุม IPST-SE แบบไร้สายผ่าน Android ด้วยโมดูลบลูทูธและซอฟต์แวร์ App Inventor 2 ตอน 1


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


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

เปิดใช้งานโปรแกรม App Inventor 2


1.  เข้าไปที่ http://appinventor.mit.edu/  จากนั้นกด Create เพื่อเข้าสู่หน้าต่างการสร้าง Application

2. ถ้ายังไม่ได้ Login บัญชี Google ก็ต้อง Login ก่อน


3. จะมีหน้าต่างแสดงคำแนะนำวิธีการเชื่อมต่อกับแอนดรอยด์ ให้กด Continue ข้ามไปก่อน

4. มีหน้าต่างแสดงข้อความต้อนรับ ก็ให้กดที่ว่างๆ เข้าสู่หน้าหลักของการสร้าง Project


5. กดเลือก New Project เพื่อสร้าง Application ใหม่ขึ้นมา

6. กำหนดชื่อในที่นี้ใช้ชื่อว่า BlueStick  แล้วกดปุ่ม OK 

7. จะปรากฏหน้าต่างสำหรับการวางหน้าจอที่เรียกว่า Designer เป็นที่สำหรับวางปุ่มหรือข้อความสำหรับติดต่อผู้ใช้

8. และหน้าจอสำหรับการเขียนโค้ดที่เรียกว่า Blocks

เชื่อมต่อ App Inventor กับแอนดรอยด์ มี 3 แบบให้เลือก

  แบบที่ 1 เชื่อมต่อด้วย WIFI (เราจะเลือกใช้วิธีนี้)
  แบบที่ 2 เชื่อมต่อผ่านซอฟต์แวร์อีมูเลเตอร์
  แบบที่ 3 เชื่อมต่อตรงผ่านสาย USB


ขั้นตอนการเชื่อมต่อผ่าน WIFI


1. ดาวน์โหลดและติดตั้งโปรแกรม MIT AI2 Companion จาก Play Store ลงบนอุปกรณ์แอนดรอยด์  
2. ให้คอมพิวเตอร์และแอนดรอยด์ใช้ WIFI ชุดเดียวกัน

3. ที่คอมพิวเตอร์หน้าต่างของ App Inventor 2 ให้เลือกเชื่อมต่อแบบ AI Companion 



4. จะมีหน้าต่างแสดง QRCODE และเลขรหัสดังรูป


5. ที่แอนดรอยด์ให้เปิดแอพ MIT AI2 Companion  เลือกแสกน QRCODE หรือป้อนรหัสที่ปรากฏก็ได้


6. จากนั้นกด Connect หน้าจอแอนดรอยด์จะมีลักษณะเหมือนกับหน้าจอออกแบบของ App Inventor แล้ว


การเขียนโปรแกรมเพื่อติดต่อกับโมดูลบลูทูธ

ขั้นตอนออกแบบ


1. ลากบล็อก ListPicker มาวาง

2. ในส่วน Properties หัวข้อ Text เปลี่ยนชื่อเป็น Connect

3. ลากปุ่ม Button มาวางอีกสองปุ่ม เปลี่ยนชื่อเป็น ON และ OFF


4. ไปที่หัวข้อ Connectivity เลือก BluetoothClient1 มาวาง

ขั้นตอนการเขียนโค้ด

1. เลือกเปลี่ยนหน้าต่างไปที่หน้า Blocks


2.ลากบล็อกชุดแรกสำหรับเรียกรายการของอุปกรณ์บลูทูธมาแสดง


3.ลากบล็อกชุดที่ 2 หลังจากเลือกรายการจาก List แล้ว ให้ Connect บลูทูธจากแอดเดรสที่เลือก

4. ชุดบล็อกชุดที่ 3 เมื่อกดปุ่ม ON ให้ส่งค่าเลข 1 ออกไปยังบลูทูธ

5. ชุดบล็อกชุดที่ 4 เมื่อกดปุ่ม OFF ให้ส่งค่าเลข 0 ออกไปยังบลูทูธ

6. รวมโค้ดทั้งหมดก็จะเป็นดังนี้

ติดตามอ่านตอน 2 ได้เลยครับ


วันจันทร์ที่ 4 สิงหาคม พ.ศ. 2557

SSO-1 :Solid State AC Outlet

เต้ารับแบบโซลิดสเตตรีเลย์ควบคุมได้

 

SSO-1 :Solid State AC Outlet เป็นปลั๊กไฟที่ทำหน้าที่เปิดปิดอุปกรณ์ไฟฟ้าด้วยการควบคุมจากสัญญาญลอจิก อาจจะมาจากบอร์ดไมโครคอนโทรลเลอร์หรือวงจรอิเล็กทรอนิกส์ตัวใดก็ได้  โดยอุปกรณ์ที่เป็นหัวใจหลักก็คือ Solid State Relay หน้าตาดังแสดงในรูปที่ 1 และนำมาติดตั้งเข้ากับชุดปลั๊กไฟและสวิตช์เพื่อให้ใช้งานได้สะดวกและปลอดภัยกับการต่ออุปกรณ์ไฟฟ้าที่มีแรงดัน 220V

 
รูปที่ 1 หน้าตาของโซลิดสเตตรีเลย์เบอร์ S202S02
รูปที่ 2 โครงสร้างภายในของโซลิดสเตตรีเลย์

เบื้องต้นเกี่ยวกับโซลิดสเตตรีเลย์

โซลิดสเตตรีเลย์ คือรีเลย์ที่ไม่มีกลไกเคลื่อนไหว ภายในจะเป็นอุปกรณ์สารกึ่งตัวนำทั้งหมด ประกอบด้วย LED อินฟราเรดและออปโต้ไตรแอก ดังแสดงโครงสร้างภายในตามรูปที่ 2 สัญญาณควบคุมแรงดันตํ่าจะถูกส่งมายัง LED อินฟราเรด เมื่อ LED ทำงานจะขับแสงไปยังออปโต้ไตรแอกเพื่อให้นำกระแสให้วงจรส่วนไฟสูงครบวงจร  ซึ่งการทำงานเช่นนี้แรงดันฝั่งไฟสูงและไฟต่ำจะแยกออกจากกันอย่างเด็ดขาด จะพบอุปกรณ์แบบนี้ ในเครื่องจักรอุตสาหกรรม แต่ปัจจุบันมีการนำมาใช้ในเครื่องใช้ไฟฟ้าในบ้าน อาทิเครื่องซักผ้าอัตโนมัติ เป็นต้น  สำหรับโซลิดสเตตรีเลย์ที่เห็นในรูปสามารถสั่งซื้อได้จาก บริษัทอินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด (inex.co.th)

คุณสมบัติของ Solid State AC Outlet

  • ควบคุมอุปกรณ์ไฟฟ้า 220V กำลังสูงสุด 600W
  • มีสวิตช์สำหรับเปิดปิดโดยตรงได้ ในกรณีไม่ต้องการการควบคุม
  • ใช้สัญญาณการเปิด/ปิดด้วยลอจิก 0V และ 5V
  • มี LED แสดงสถานะการทำงานของรีเลย์
  • ความยาวสายควบคุม 50 เซนติเมตร 
  • ความยาวปลั๊กไฟ 100 เซนติเมตร

รูปที่ 3 วงจรแสดงการเชื่อมต่อปลั๊กไฟ Solid StateAC Outlet

 

การทำงานของ Solid State AC Outlet

  จากรูปที่ 3  จะเห็นอุปกรณ์ที่ต่อเป็นวงจรไม่ซับซ้อนมากนัก เริ่มจากสายสัญญาณควบคุม 5V จะถูกต่อผ่านตัวต้านทาน 1k เพื่อให้ LED ภายในของ Solid State Relay ทำงานส่งแสงไปกระตุ้นให้ต่อขาเอาต์พุตเข้าด้วยกัน ทำให้กระแสไหล 220V ไปที่ปลั๊กไฟได้  โดยในวงจรนี้ได้ต่อสวิตช์เปิด/ปิดตรง เพื่อใช้เปิด/ปิดในกรณีที่ไม่ต้องการควบคุมจากไมโครคอนโทรลเลอร์ได้ด้วย ขณะที่สั่งให้ ปลั๊กไฟทำงาน จะมี LED1 ต่อไว้เพื่อแสดงการทำงานด้วย โดยวงจรเมื่อประกอบลงกล่องเรียบร้อยแล้วจะเป็นดังรูปที่ 4

รูปที่ 4 รูปร่างหน้าตาของ Solid State AC Outlet เมื่อประกอบเสร็จ

 

การต่อใช้งาน Solid State Plug กับ IPST-SE

    การควบคุม Solid State Plug ทำได้ง่ายมาก โดยถ้าส่งสถานะลอจิก “1” จาก IPST-SE อุปกรณ์ไฟฟ้าที่ต่อพ่วงด้วยจะทำงาน ถ้าส่งสถานะลอจิก “0” อุปกรณ์ที่ต่อพ่วงด้วยจะไม่ทำงาน สำหรับอุปกรณ์ไฟฟ้าที่ต่อพ่วงด้วยจะต้องมีกระแสไม่เกิน 600W จะเป็นหลอดไฟ พัดลมหม้อหุงข้าวหรือคอมพิวเตอร์ก็ได้

รูปที่ 5 ตัวอย่างการเชื่อมต่อเพื่อควบคุมจากบอร์ด IPST-SE

 

ตัวอย่าง พัดลมทำงานเมื่ออุณหภูมิสูงกว่าที่ตั้งไว้

    ตัวอย่างนี้จะดัดแปลงตัวอย่าง MCP9701 Thermometer ในตัวอย่างของ IPST-SE ซึ่งนอกจากจะแสดงค่าอุณหภูมิที่หน้าจอแล้ว ให้เปิดพัดลมเมื่ออุณหภูมิสูงกว่า 25 องศาด้วย และจะปิดพัดลมเมื่ออุณหภูมิต่ำกว่า 25 องศาโดยตัวอย่างโค้ดแสดงในโปรแกรมที่ 1 สำหรับการต่ออุปกรณ์แสดงในรูปที่ 5 โดยจะต่อโมดูลวัดอุณหภมิ MCP9701 ไว้ที่ขา 24/A0 ส่วน Solid State Plug ต่อไว้ที่ขา 17

#include <ipst.h>         
int val,i;                
float Temp;               
void setup(){
  glcdClear();            
  setTextSize(2);         
  out(17,0);
}
void loop(){
  glcd(1,0,"FAN CONTROL");
  val=0;                  
  for (i=0;i<20;i++){
    val = val+analog(0);  
  }
  val = val/20;
  if(val>182){
    out(17,1);
    glcd(5,1,"FAN ON ");
  }
  else{
    out(17,0);
    glcd(5,1,"FAN OFF");
  }
  Temp = (float(val)*0.25) - 20.51 ; 
  glcd(3,1,"%f C",Temp);        
}

โปรแกรมที่ 1 สำหรับพัดลมทำงานเมื่ออุณหภูมิสูงกว่าค่าที่ตั้งไว้

วันจันทร์ที่ 30 มิถุนายน พ.ศ. 2557

IPST-SE Chasis For TPA Junior Robot Contest 2014


จากการแข่งขันหุ่นยนต์สสท.ยุวชน  TPA JUNIOR ROBOT 2014 หุ่นยนต์ที่ใช้ในการแข่งขัน Robo-Rescue จะเป็นหุ่นยนต์ที่สร้างขึ้นใหม่  เพื่อใช้งานกับการแข่งขัน Robo-Rescue ได้

โดยทาง inex มีแผนที่จะจัดจำหน่ายในเวลาอันใกล้นี้ 

ก่อนถึงช่วงนั้นสำหรับผู้สนใจสามารถดาวน์โหลดไฟล์แบบโครงหุ่นยนต์ไปสร้างด้วยตนเองก่อนได้

โดยไฟล์มี 2 แบบให้เลือก

  1. ไฟล์ AI (จากโปรแกรม illustrator) 
  2. ไฟล์ PDF 

โดยสามารถนำไปตัดอะคริลิคขนาด 3 มม. ด้วยเครื่องตัดเลเซอร์ได้ทันที


วันพฤหัสบดีที่ 26 มิถุนายน พ.ศ. 2557

HC-SR04 with Robo-Creator

HC-SR04 โมดูลวัดระยะทางด้วยอัลตร้าโซนิก

เป็นโมดูลวัดระยะทางที่ใช้หลักการสะท้อนของคลื่นอัลตร้าโซนิก ราคาประหยัด

 
มาพร้อมกับสาย สัญญาณเพื่อใช้เชื่อมต่อกับบอร์ดต่างๆ ตามมาตฐานของ inex ไม่ว่าจะเป็น POP-BOT XT , Robo-Creator หรือ IPST-SE  สำหรับตัวอย่างการเชื่อมต่อกับหุ่นยนต์รุ่น Robo-Creator ทำได้ดังนี้

1. เตรียมสายสัญญาณ


สายสัญญาณที่ใช้กับโมดูล HC-SR04 ปลายด้านหนึ่งจะใช้เชื่อมต่อกับบอร์ด Robo-Creator ได้ทันที ส่วนปลายอีกด้านจะต้องเลือกเชื่อมต่อ โดยสีของสายจะเป็นตัวบอกหน้าที่ตามรูป (การต่อสายผิดอาจจะทำให้โมดูล HC-SR04 เสียหายได้)

2. ขาเชื่อมต่อของโมดูล HC-SR04



โมดูล HC-SR04 มีขาเชื่อมต่อทั้งหมด 4 เส้นคือ
  • ขา Vcc : เป็นขาไฟเลี้ยง +5V
  • ขา Trig : เป็นขาส่งสัญญาณ
  • ขา Echo : เป็นขารับสัญญาณ
  • ขา Gnd : เป็นขากราวด์

3. ตัดสายสัญญาณออกด้านละ 1 เส้นเพื่อลดความสับสน



สายที่ให้มาในชุดมีสองเส้น เส้นละ 3 สาย แต่จุดต่อเชื่อมต่อมีเพียง 4 สาย ดังนั้นต้องตัดออก 2 เส้น โดยเส้นแรกให้ตัดสายสีดำทิ้ง ส่วนเส้นที่ 2 ให้ตัดสายสีแดงทิ้ง  แต่ถ้าไม่ต้องการตัด อาจจะถอดจุดต่อที่ส่วนหัวของขั้วต่อ JST เพื่อเอาสายออกมา 1 เส้นก็ได้ ดังรูป

4. ต่อสายเข้ากับโมดูล HC-SR04



นำสายที่ตัดออกแล้ว เหลือปลาย 4 เส้นเสียบเข้าที่โมดูล HC-SR04 ดังรูป

5. เชื่อมต่อสายเข้ากับบอร์ด Robo-Creator



  • ขา Trig ต่อเข้ากับขา 1 
  • ขา Echo ต่อเข้ากับขา 0
6. เขียนโปรแกรมเพื่ออ่านค่าแสดงที่หน้าจอ LCD

Exported from Notepad++
#include #define TRIG 1 #define ECHO 0 long RAW; float DIST; void setup(){ lcd("SW1 Press!"); sw1_press(); } void loop(){ out(TRIG,HIGH); delayMicroseconds(10); out(TRIG, LOW); RAW=pulseIn(ECHO,HIGH); DIST=(float(RAW)/2)/29.1; lcd("RAW=%l ",RAW); lcd("#nDIST=%f CM ",DIST); delay(300); }




โดยผลที่เกิดขึ้นที่หน้าจอเป็นดังนี้



วันจันทร์ที่ 18 พฤศจิกายน พ.ศ. 2556

POPXT with ZX-Relay16

การควบคุมบอร์ด ZX-Relay16 ด้วย POP-XT


ZX-RELAY16 

ใช้ไอซีขยายพอร์ตเบอร์ MCP23016 ซึ่งใช้การสื่อสารแบบ I2C บัส เมื่อนำมาต่อเข้ากับรีเลย์ก็สามารถควบคุมรีเลย์ได้ถึง 16 ช่อง โดยใช้สายสัญญาณเพียงแค่ 2 เส้นประกอบไปด้วยขา SCL สำหรับส่งสัญญาณนาฬิกาและขา SDA สำหรับรับส่งข้อมูล  โดยคุณสมบัติอื่นๆ มีดังนี้


   * ขับรีเลย์ 12V ได้ 16 ตัวพร้อมไฟการทำงานของรีเลย์
  •    * ต่อพ่วงได้ 8 บอร์ด ทำให้สามารถควบคุมรีเลย์ได้สูงสุดถึง 128 ตัว 
  •    * จุดต่อเอาต์พุตหน้าสัมผัสของรีเลย์เป็นเทอร์มินอลบล็อก 3 ขา มีทั้งจุด NC,NO และ COM สามารถใช้ไขควงขันเพื่อปลดหรือต่อสายได้ง่าย
  •    * พิกัดหน้าสัมผัส 220Vac 5A รองรับโหลดได้สูงสุด 600 วัตต์
  •    * ใช้งานได้กับไมโครคอนโทรลเลอร์ได้ทุกตระกูล 
  •    * จุดต่อระบบบัส I2C มีทั้งแบบ IDC และใช้คอนเน็กเตอร์ JST 
  •    * ใช้ไฟเลี้ยง +12V จากภายนอกเพื่อเลี้ยงรีเลย์ 

การเชื่อมต่อสายระหว่างบอร์ด ZX-RELAY16 กับ POP-XT

บอร์ด POP-XT ได้เตรียมขาสัญญาณสำหรับสื่อสารด้วยระบบบัส I2C ไว้แล้ว มีชื่อ 3/SCL และ 2/SDA  สามารถใช้สาย JST-8 ต่อเข้ากับบอร์ด ZX-RELAY16 ได้โดยตรง 



  แต่กรณีที่ต้องการใช้ไฟเลี้ยงเพียงชุดเดียว  (12V จาก ZX-RELAY16 ) จะต้องมีการปรับแต่งให้ดึงไฟเลี้ยง 5V จาก ZX-RELAY16 ส่งกลับมาเลี้ยงบอร์ด POP-XT ด้วย โดยทำการบัดกรีเชื่อมขาในตำแหน่งดังรูปเข้าด้วยกัน 


ขั้นตอนการเขียนโปรแกรม

ปกติถ้าพิมพ์ "MCP23016 ARDUINO" ที่ Google เราจะเจอตัวอย่างการเขียนโค้ดติดต่อกับอุปกรณ์ตัวนี้เยอะพอสมควรเลยครับ  แต่สำหรับบอร์ด ZX-RELAY16 ไม่จำเป็นต้องรับค่าอินพุต ดังนั้นโค้ดจะค่อนข้างสั้น
 หัวใจหลักที่ใช้สื่อสารด้วยระบบบัส I2C ถูกจัดการเรียบร้อยแล้วด้วยไลบรารี่ wire ดังนั้น ก่อนการใช้งาน นอกจาก #include   แล้ว จำเป็นต้อง #include "Wire.h" ด้วย
     ชุดคำสั่งในไลบรารี่ Wire ที่จำเป็นต้องใช้งานประกอบไปด้วย
          Wire.begin() สำหรับกำหนดค่าเริ่มต้นให้การสื่อสาร I2C บัส
          Wire.beginTransmission(address) สำหรับการเริ่มต้นสื่อสาร I2C บัส โดยจะต้องระบุแอดเดรสที่ต้องการสื่อสารด้วย
          Wire.endTransmission() สำหรับแจ้งการหยุดการสื่อสารข้อมูลในชุดนั้นๆ
          Wire.write() สำหรับส่งข้อมูลขนาด 1 ไบต์ไปยังระบบบัส I2C


รูปแบบการสื่อสารกับ MCP23016


การสื่อสารกับไอซี MCP23016 จะมีขั้นตอนดังนี้คือ
   1. ส่งแอดเดรสของไอซี MCP23016 ซึ่งในที่นี้ใช้ค่าแอดเดรสเท่ากับ 0x20
   2. ส่งตำแหน่งแอดเดรสที่ต้องการเขียนข้อมูลลงไป สำหรับ MCP23016 แอดเดรสที่ใช้งานคือ
                    IODIR0 ,IODIR1 สำหรับกำหนดขาพอร์ตให้เป็นอินพุตหรือเอาต์พุต  โดยถ้ากำหนดค่าด้วย 0 ขาพอร์ตจะเป็นเอาต์พุต ถ้ากำหนดค่าด้วย 1 ขาพอร์ตจะเป็นอินพุต (ในที่นี้บอร์ดขับรีเลย์เป็นอุปกรณ์เอาต์พุต ต้องกำหนดด้วย 0 เท่านั้น"
                    GP0,GP1 เป็นแอดเดรสสำหรับกำหนดให้ขาพอร์ตมีลอจิก "1" หรือลอจิก "0"
   3. ส่งค่าที่ต้องการเขียนไปยังตำแหน่งแอดเดรสที่ระบุ
   4. ส่งคำสั่งปิดการเชื่อมต่อกับระบบบัส I2C โดยทั้งหมดเอามาเขียนเป็นฟังก์ชั่นได้ดังนี้

ฟังก์ชั่น relay16() 


void relay16(byte CMD, byte VAL){
  Wire.beginTransmission(0x20);  // เริ่มต้นสื่อสาร
  Wire.write(CMD);   // ส่งตำแหน่งรีจิสเตอร์ที่ต้องการติดต่อ
  Wire.write(VAL);  //  ส่งค่าไปยังรีจิสเตอร์ที่ต้องการ
  Wire.endTransmission();  // หยุดการสื่อสาร

ตัวอย่างที่ 1 ส่งค่าให้รีเลย์ทั้ง 16 ตัวติดดับสลับกัน

#include <popxt.h>
#include "Wire.h"
#define ADDR     0x20             //seven bit address
#define GP0      0x00             // register addresses
#define GP1      0X01
#define IODIR0   0x06
#define IODIR1   0x07

void setup(){
  setTextSize(2);
   glcd(1,1,"Press OK");
   sw_ok_press();
   Wire.begin();
  relay16(IODIR0, B00000000);     // GP0 pins are outputs   
  relay16(IODIR1, B00000000);     // GP1.0 - GP1.3 are inputs   void loop(){
  relay16(GP0,0xAA);
  relay16(GP1,0xAA);
  sleep(500);
  relay16(GP0,0x55);
  relay16(GP1,0x55);
  sleep(500);
}
void relay16(byte CMD, byte VAL){
  Wire.beginTransmission(ADDR);  // เริ่มต้นสื่อสาร
  Wire.write(CMD);               // ส่งตำแหน่งรีจิสเตอร์ที่ต้องการติดต่อ
  Wire.write(VAL);               //  ส่งค่าไปยังรีจิสเตอร์ที่ต้องการ
  Wire.endTransmission();        // หยุดการสื่อสาร

ตัวอย่างที่ 2 ให้รีเลย์ติดทีละตัวไล่ลำดับไปและกลับ


#include <popxt.h>
#include "Wire.h"

#define ADDR     0x20         //seven bit address
#define GP0      0x00         // register addresses
#define GP1      0X01
#define IODIR0   0x06
#define IODIR1   0x07

unsigned int i=1;
void setup(){
   setTextSize(2);
   glcd(1,1,"Press OK");
   sw_ok_press();
   Wire.begin();
   relay16(IODIR0, B00000000);     // GP0 pins are outputs   
   relay16(IODIR1, B00000000);     // GP1.0 - GP1.3 are inputs   void loop(){
  i=0x0001;
  while(i<=0x4000){
    relay16(GP1,highByte(i));
    relay16(GP0,lowByte(i));
    sleep(200);
    i*=2;
  }
  i=0x8000;
  while(i>=0x0001){
    relay16(GP1,highByte(i));
    relay16(GP0,lowByte(i));
    sleep(200);
    i/=2;
  }
}
void relay16(byte CMD, byte VAL){
  Wire.beginTransmission(ADDR);  // เริ่มต้นสื่อสาร
  Wire.write(CMD);               // ส่งตำแหน่งรีจิสเตอร์ที่ต้องการติดต่อ
  Wire.write(VAL);               //  ส่งค่าไปยังรีจิสเตอร์ที่ต้องการ
  Wire.endTransmission();        // หยุดการสื่อสาร


















วันอังคารที่ 12 พฤศจิกายน พ.ศ. 2556

IPST-MicroBOX with Arduino 1.05

ใช้งาน IPST-MicroBOX ด้วยซอฟต์แวร์ Arduino พร้อมการดาวน์โหลดผ่าน PX-4000

 
บทความก่อนหน้านี้ แนะนำวิธีการใช้งาน ซอฟต์แวร์ Wiring กับบอร์ด IPST-MicroBOX ไป ผลตอบรับก็มีระดับนึงครับ แต่มีคนใช้งาน Arduino จำนวนมาก อยากให้ IPST-MicroBOX ใช้งานได้กับ Arduino บ้าง  มาลองดูกันเลยครับ





 IPST-MicroBOX ( IPST++ )หรือ IPST-SE ใช้งาน Arduino ได้

ก่อนอื่น ต้องไปดาวน์โหลดซอฟต์แวร์ Arduino เวอร์ชั่นที่รองรับ IPST++ กันก่อน ที่นี่ ครับ  หรือถ้าใครมี DVD หรือ CDROM ของ inex เวอร์ชั่นตั้งแต่เดือนตุลาคมเป็นต้นมา ก็จะมีซอฟต์แวร์ ArduinoIPST_SE_1.0.5_Setup130819.exe อยู่ในแผ่นให้ติดตั้งได้เลยครับ

แผ่น DVD รวมโปรแกรมของ inex

หลังจากนั้นก็ติดตั้งโปรแกรมตามขั้นตอนปกติ สำคัญตอนเลือกบอร์ด ถ้าใช้ IPST-MicroBOX อยู่ก็ให้เลือก Tools> Board > IPST-PlusPlus , ATMega16 @ 16MHz

เลือกบอร์ดที่ต้องการใช้งานจากเมนู Tools

ตอนนี้ก็สามารถเขียนโปรแกรม โดยใช้ซอฟต์แวร์ Arduino ได้แล้ว โดยบรรทัดบนสุด อย่าลืม
#include ไว้ด้วยนะครับ

การดาวน์โหลดโปรแกรมผ่านเครื่องโปรแกรม PX-4000

  ซอฟต์แวร์ Arduino ไม่มีคำสั่ง Build เหมือน Wiring ดังนั้นถ้าต้องการไฟล์ hex ไปใช้งานกับโปรแกรม AVRProg ต้องมีวิธีการพิเศษดังนี้
1. เปิดหน้าต่าง Preferences โดยไปที่  File > Preferences

เปิดหน้าต่าง Preferences เพื่อปรับเปลี่ยนการตั้งค่า

2.  เลือก ติ๊กที่ compilation เพื่อให้โปรแกรมแสดงขั้นตอนการคอมไพล์ เพราะเราจะใช้ขั้นตอนนี้ระบุตำแหน่งไฟล์ .hex ที่ใช้กับเครื่องโปรแกรม PX-4000

เปลี่ยนให้โปรแกรมแสดงขั้นตอนการคอมไพล์


3. ทดสอบเขียนโปรแกรมไฟกะพริบที่พอร์ต RB4

#include <ipst.h> // include file for IPST-SE
void setup(){
}
void loop()
{
  out_b(4,1);
  sleep(300);
  out_b(4,0);
  sleep(300);
}

4. กดปุ่ม Verify (Ctrl + R ) เพื่อคอมไพล์โค้ดให้ได้เป็น Hex โค้ดออกมา
5. หน้าต่างด้านล่างจะแสดงขั้นตอนการคอมไพล์โค้ด ถ้าไม่มีอะไรผิดพลาด จะขึ้นข้อความ Done Compliling และบรรทัดก่อนบรรทัดล่างสุดจะระบุตำแหน่งของไฟล์ hex ที่ได้จากการคอมไพล์เอาไว้  ให้ทำแถบแล้วใช้คีย์ลัด CTRL+C คัดลอกเอาไว้

เมื่อคอมไพล์เรียบร้อย โปรแกรมจะแสดงชื่อไฟล์ .hex ออกมา


5. เชื่อมต่อบอร์ด PX-4000 เข้ากับ IPST-MicroBOX

เสียบเครื่องโปรแกรม PX-4000 เข้ากับ IPST++


6. จากนั้นเปิดโปรแกรม AVRProg ขึ้นมา ให้กดปุ่ม  Browse

เลือกไฟล์ที่ต้องการโปรแกรมจากตำแหน่งที่ระบุใน Arduino 1.05

7. ที่หน้าต่างสำหรับกำหนดตำแหน่งไฟล์ ให้กด CTRL+V เพื่อ วางตำแหน่งของ File ที่คัดลอกไว้

วางตำแหน่งของไฟล์ Hex ให้กับโปรแกรม AVRProg



8. กด Program ที่ AVRProg  ดูผลเลยว่าโปรแกรมทำงานถูกต้องหรือเปล่า

โปรแกรมไฟล์ Hex ไปยัง IPST++


ขั้นตอนอาจจะดูยุ่งยากเล็กน้อยสำหรับการใช้งานซอฟต์แวร์ Arduino  หวังว่าคงสามารถเอาบอร์ด IPST-MicroBOX ไปใช้งานได้หลากหลายมากขึ้นนะครับ






วันศุกร์ที่ 1 พฤศจิกายน พ.ศ. 2556

การสลับแป้นคีย์บอร์ด บนเครื่อง Mac OSX ให้เหมือน Windows (~)

20 กว่าปีที่ใช้ windows แล้วใช้คีย์ ~ ในการเปลี่ยนภาษา เมื่อมาถึงยุค Mac ไม่ง่ายเลยที่จะปรับเปลี่ยนตัวเองไปใช้รูปแบบอื่น ต้องขอบคุณซอฟต์แวร์ KeyRemap4Macbook ครับ โดยขั้นตอนมีดังนี้ 




1. ดาวน์โหลดโปรแกรม KeyRemap4Macbook โดยเข้าไปที่ https://pqrs.org/macosx/keyremap4macbook/ 


 2. ติดตั้งโปรแกรมจากนั้น โปรแกรมจะให้รีสตาร์ตเครื่อง 1 ครั้ง 




3. เข้าไปใน Application เลือกเปิดโปรแกรม KeyRemap4Macbook 




 4. ที่หัวข้อ Change Backquote ( ' ) Key เลือกติ๊กเครื่องหมายถูกที่ หน้า BackQuote ( ' ) to Cmd+Space 

 เท่านี้นักเลงคีย์บอร์ดอย่างเรา ก็ซ่าได้บนเครื่อง Mac โดยไม่รู้สึกรำคาญใจอีกต่อไป

วันพุธที่ 16 ตุลาคม พ.ศ. 2556

การดาวน์โหลด IPST-MicroBOX ฉบับ IPST++ (wiring) ด้วย PX-4000

บอร์ด IPST-MicroBOX


สำหรับผู้ที่มีบอร์ด IPST-MicroBOX ลักษณะที่เห็นในรูป ถ้าต้องการอัพเกรดการเขียนโปรแกรม ไปใช้ซอฟต์แวร์ wiring ซึ่งมีขั้นตอนให้ทำตามดังนี้ 

เครื่องโปรแกรม PX-4000
 
ทุกอย่างก็ดูน่าจะ OK แต่สำหรับผู้ที่มีเครื่องโปรแกรมรุ่น PX-4000 การอัพเกรดวิธีนี้จะต้องใช้การดาวน์โหลดผ่านการสื่อสารอนุกรม  ต้องหาสายดาวน์โหลด เช่น
ตัวแปลง USB เป็น Serial รุ่น UCON-232
สาย UCON-4 ปลายเสียบเข้าโดยตรงกับบอร์ด Display IO หรือ Display Motor

UCON-232+ สาย CX-4  หรือสาย UCON-4 สำหรับการดาวน์โหลด พร้อมกันนี้ยังต้องมีบอร์ด
บอร์ด Display IO

Display IO หรือ Display Motor เสียบไว้กับบอร์ด IPST ของเราอีกด้วย

    แต่ถ้ามีเฉพาะบอร์ด IPST-MicroBOX และเครื่องโปรแกรม PX-4000 เท่านั้น จะทำอย่างไรดี

แนวคิดก็คือ เขียนโปรแกรมด้วย wiring แล้วคอมไพล์ให้เป็น hex โค้ด ก่อนดาวน์โหลดโปรแกรมด้วยเครื่องโปรแกรม PX-4000 ครับ

ติดตั้งโปรแกรม
1. โปรแกรม AVR Studio เพื่อเอาเฉพาะโปรแกรม AVRPROG มาใช้งาน  เพื่อให้ใช้งานได้สะดวกหลังจากติดตั้งแล้ว ให้เข้าไปที่ C:\Program Files (x86)\Atmel\AVR Tools\AvrProg แล้วคัดลอกลิงก์ ของ AVRProg มาไว้ที่ Desktop หรือ Start Menu เพื่อเรียกใช้งานได้ง่าย ๆ แบบนี้ครับ
การลาก ShortCut มาวางที่ Desktop
2. โปรแกรม Wiring 0100 โดยโหลดจากลิงก์นี้ครับ http://www.ipst-microbox.com/se/?page_id=45


3. ติดตั้งโปรแกรม Wiring 0100 ได้หน้าจอของโปรแกรมตามนี้ครับ
หน้าตาของโปรแกรม wiring 0100 เวอร์ชั่นเฉพาะสำหรับบอร์ด IPST และ IPST-SE
ทดสอบเขียนโปรแกรมง่ายๆ

1.  โปรแกรมไฟกะพริบที่พอร์ต RB4

#include <ipst.h> // include file for IPST-SE
void setup(){
}
void loop()
{
  out_b(4,1);
  sleep(300);
  out_b(4,0);
  sleep(300);
}

2. บันทึกไฟล์ไปยังตำแหน่งที่ต้องการ หรือกด Ctrl+Shift+S

เลือก Save As

3. เลือกบอร์ดให้เป็น IPST++
เลือกบอร์ดที่ใช้งานเป็น IPST-PlusPlus

4. ทำการคอมไพล์โปรแกรมโดยลักษณะการสร้าง Hex โค้ด โดยเลือกคำสั่ง Build หรือ Ctrl+B
เลือกคอมไพล์ให้เกิดเป็น hex code
5. เปิดตำแหน่งโฟลเดอร์ที่เก็บไฟล์ Sketch ของเราเอาไว้ โดยเลือกคำสั่ง Show Sketch Folder หรือ Ctrl+K

6. จะพบโฟลเดอร์ Build ซึ่งจะเก็บไฟล์ .hex งานของเราเอาไว้


7.เชื่อมต่อสายเครื่องโปรแกรม PX-4000 เข้ากับบอร์ด IPST ให้เรียบร้อยเปิดโปรแกรม AVRProg   Browse โปรแกรมไปที่ ตำแหน่งที่เก็บไฟล์ Hex เอาไว้ จากนั้นกดโปรแกรม เพื่อดูผลการทำงานได้เลยครับ