วันพุธที่ 22 กุมภาพันธ์ พ.ศ. 2560

บอร์ด SIM900 Module ส่ง sms โทรออก รับสาย

 บอร์ด SIM900 Module ส่ง sms โทรออก รับสาย 

 การทำให้ Arduino มีความสามารถเหมือนโทรศัพท์ ที่สามารถโทรเข้า/โทรออก รับสาย/วางสาย ส่ง SMS ส่งคำสัง ussd เชื่อมต่ออินเตอร์เน็ต หรือทำงานต่าง ๆ ได้เหมือนโทรศัพท์มือถือ เราสามารถเพิ่มความสามารถโทรศัพท์มือถือนี้ลงไปให้กับ Arduino ได้ง่าย ๆ เพียงแค่เสียบหรือต่อ SIM Module ลงไป
บทความนี้ช้งาน SIM900 Shield Module แบบที่เป็นบอร์ด Shield สำหรับ Arduino เพียงเสียบลงไปก็สามารถใช้ความสามารถได้เหมือนโทรศัพท์มือถือแล้ว
SIM900 Module นี้สามารถติดต่อกับ Arduino ได้ผ่านทาง อินเตอร์เฟส UART หรือทางขา RX , TX ใช้สาญญาณ 2 เส้น โดยคำสั่งที่ติดต่อเรียกว่าคำสั่ง AT Command โดยในขั้นแรกเราจะมาลองเล่นกับ AT Command กันก่อน
หมายเหตุ :
  • การใช้งานบอร์ดจะมีขาจัมเปอร์ให้เซตว่าจะเลือก RX , TX เป็นขาอะไร ในกรณีนี้เราใช้ไลบารี SIM900 ซึ่งขา RX , TX จะเป็นขา 2 และ 3 ตามโปรแกรมในไลบารีที่เซตไว้ ซึ่งเราสามารถเลือกขาใหม่ตามโปรแกรมที่เราเขียนเองได้
  • ไฟที่ SIM900 ใช้บางครั้งมากกว่าไฟที่บอร์ด Arduino ที่ใช้ไฟจาก usb จะจ่ายได้ จึงต้องเสียบไฟเพิ่มเข้าบอร์ดด้วย

แบบที่ 1 . ทดสอบใช้คำสั่งงาน SIM900 ผ่านทาง AT Command
Arduino มีไลบารีสำหรับติดต่อ SIM900 Module พร้อมให้เราเรียกใช้งานแล้ว โดยดาวน์โหลดได้จากที่นี่ ดาวน์โหล ไลบารี SIM900 Arduino  เมื่อติดตั้งเสร็จแล้ว ลองทดสอบโปรแกรมตัวอย่าง GSM_GPRSLibrary_AT.inoจากนั้นเปิด Serial Monitor ขึ้นมา จะเห็นข้อความที่บอร์ด Arduino ติดต่อกับ GSM SIM900 Module ในลักษณะของ AT Command เราสามารถทดลองส่งคำสั่ง AT Command ได้ โดยการพิมพ์ AT แล้วกด Enter ก็จะมีผลตอบกลับ OK จาก SIM900 Module ซึ่งทุกคำสั่งที่ติดต่อกับ SIM900 จะเป็นคำสั่ง AT Command ทั้งหมด
เรามาลองเล่นคำสั่ง AT Command กัน
1. คำสั่งเช็คเครือข่ายที่ SIM900 ใช้อยู่ พิมพ์ AT+COPS? แล้ว enter SIM900 ก็จะตอบเครื่อข่ายที่กำลังเชื่อมอยู่ของผมเป็น dtac ขึ้นแบบนี้แสดงว่าเชื่อมต่อกับเครือข่ายได้แล้ว

+COPS: 0,0,"TH-DTAC"
OK
2. เมื่อเชื่อมต่อกับเครือข่ายมือถือได้แล้ว เราก็สามารถสั่งการมือถือให้โทรออก / รับสาย / วางสายได้ เราลองมาโทรออกกันดู โดยใช้คำสั่ง ATDเบอร์โทร; เช่นโทรไปเบอร์ 0854545454 พิมพ์คำสั่งดังนี้
atd0854545454 ;
OK
3. ต่อมาเราลองโทรเข้ามาที่เบอร์ใน SIM900 ก็จะพบว่า มีคำว่า RING และโชว์เบอร์ที่โทรเข้ามาด้วย ถ้าต้องการกดวางสายก็พิมพ์ ATH
RING
+CLIP: "0854545454",129,"",,"",0
ATH
OK
4. การส่ง SMS แบบง่าย ๆ ผ่านทาง AT command ทำได้โดยใช้หลาย ๆ คำสั่งประกอบกัน
  • พิมพ์ AT+CMGF=1 แล้ว Enter เพื่อเซตค่าเป็นแบบ SIMPLE TEXT MODE ในโหมดนี้สามารถส่งข้อความเป็นภาษาอังกฤษเท่านั้น
  • พิมพ์ AT+CMGS="0854545454" แล้ว Enter เพื่อเซตเบอร์ที่ต้องการจะส่ง
  • จะเห็น > แสดงรอให้พิมพ์ ้ข้อความภาษาอังกฤที่ต้องการส่งแล้ว ctrl +Z เพื่อให้ SIM900 ส่ง SMS ในกรณีนี้ Serial Monitor ส่ง Ctrl+Z ไม่ได้ อาจต้องใช้โปรแกรมอื่นเช่น Tera Term
มีคำสั่ง AT Command ให้เราได้เรียกใช้งานอีกมากมาย คลิกที่คู่มือ SIM900

แบบที่ 2 ทดสอบใช้คำสั่งงาน SIM900 ผ่านทาง ไลบารี SIM900
ไลบารี SIM900 ได้รวบรวมกลุ่มคำสั่ง AT Command ในการสั่งงาน SIM900 ให้เราใช้งานสะดวกขึ้นไม่ต้องพิมพ์ AT Command หลาย ๆ คำสั่งเอง เรามาดูตัวอย่างการส่ง SMS จากตัวอย่าง GSM_GPRSLibrary_SMS.ino สั่งเกตที่คำสั่งนี้
sms.SendSMS("3471234567", "Arduino SMS");
เพียงบรรทัดเดียวก็สามารถส่ง sms ไปยังเบอร์ที่ต้องการได้แล้ว

แบบที่ 3 ทดสอบโดยใช้โปรแกรมบนเครื่องคอม
SIM900 นี้ติดต่อแบบ UART แน่นอนว่าสามารถสื่อสารผ่านทางการเขียนโปรแกรมเช่น Visual Basic หรือ C# ทาง Serial Port ได้ โดยการ เลื่อนจัมเปอร์ Rx ไปที่ ขา 0 และจัมเบอรื TX ไปที่ขา 1 ของบอร์ด SIM900 ดาวน์โหลดโปรแกรมตัวอย่างทดสอบ SIM900 คลิกทีนี่
ถอด SIM900 Shield ออกก่อน จากนั้นอัพโปรแกรม ไฟกระพริบ Blink ลงไปเพื่อให้แน่ใจว่าขา 0 กับขา 1 ของ Arduino ไม่ได้ถูกใช้งาน เพราะเราจะใช้งาน 2 ขานี้ จากนั้นเสียบ SIM900 ลงไปคืน เพียงเท่านี้เราก็สามารถเขียนโปรแกรมติดต่อ SIM900 ผ่านทางเครื่องคอมพิวเตอรืด้แล้ว ดาวน์โหลดโปรแกรมทดสอบ SIM900 จากนั้นเลือก Baud Rate เป็น 9600 กด Open จากนั้นทดสอบคำสั่งต่าง ๆ ได้เลย โปรแกรมนี้เขียนโดย C#
ดาวน์โหลดไลบารี .Net SDK ตัวอย่างจากเว็บนี้ http://www.logiccodesoft.com/lcgsmsms.aspx

ตัวอย่างการใช้งาน  Arduino บอร์ด SIM900 Module เพิ่มเติม
โทรเข้าแล้วกดปุ่มสั่งงาน Arduino จากระยะไกล ด้วยการใช้งานฟังก์ชัน DTMF AT Command
โมดูล sim900 รุ่นนี้รองรับการใช้งาน คำสั่ง DTMF ทำให้เมื่อรับสายแล้ว สามารถเช็คได้ว่าผู้ใช้กดปุ่มอะไรเข้ามา เพื่อที่จะนำค่าปุ่มกด มาควบคุมอุปกรณ์ที่เราต้องการ ตัวอย่างในคลิปนี้จะเอาไปใช้เปิด/ปิดไฟ ผ่านโทรศัพท์มือถือ

วิธีการเปิดใช้งาน ง่าย ๆ เข้าไปพิมพ์คำสั่ง AT command ดังนี้
AT+DDET=1 จะได้รับตอบกลับเป็น OK เท่านี้ก็ใช้งานได้แล้ว คราวนี้ พอมีคนโทรเข้ามา เมื่อรับสายแล้ว คนโทรเข้ากดเลขอะไร ก็จะไปแสดงใน arduino ของเรา ได้แล้ว
 *** หมายเหตุ ฟังก์ชัน DTMF ไม่ใช่ทุกรุ่นของ SIM900 จะทำได้ ขึ้นอยู่กับ Firmware ของบอร์ดแต่ละตัว สำหรับรุ่นนี้รองรับคำสั่ง DTMF

ข้อมูลอุปกรณ์ GSM SIM Module เพิ่มเติม


*** บอร์ดนี้รองรับ SIM 2G ต้องใช้ SIM 2G ด้วย แนะนำ SIM DTAC ซิมคงกระพันครับ ***

โมดูลแสดงค่าตัวเลข 4 หลัก Four digital tube module LED display

โมดูลแสดงค่าตัวเลข 4 หลัก Four digital tube module LED display

่โมดูล แสดงเลข 7 segment แบบดิจิตอล 4 หลักนี้ มีขั้วอยู่ 5 เส้น ประกอบด้วย

  • ขั้วไฟบวก 3.3-5 โวลต์
  • ขั้วกราวน์
  • ขั้วสัญญาณ  SCLK สำหรับใหสัญญาณนาฬิกา
  • ขั้วสัญญาณ RCLK สำหรับแลตสัญญาณข้อมูล
  • ขั้วสัญญาณ DIO สำหรับส่งข้อมูลที่จะแสดงผล
ดังนั้นเราจึงใช้ Arduino 3 ขาในการควบคุม SCLK , RCLK , DIO ซึ่งสามารถกำหนดขาที่เราต้องการได้เองตามใจชอบ
 
วิธีใช้งานง่ายมาก สามารถทำได้ในเวลาเพียง 1 นาทีจากโคดตัวอย่างนี้
/*
 written by Jason Berger ,arduinoall, พ.ไพศาล
 reedited by Phaisarn Te. @060614
 
 8-Digit 7-Segment display driver.
 2x 74HC595 wired to 2x 4-digit 7-segment displays
 bits 0-7 select a digit
 bits 8-14 A-G
 
 */
char disp_c[8] ;

//กำหนด ขา pin
const int SCLK_pin= 4; 
const int RCLK_pin= 5;
const int DIO_pin = 6;


// 0-9   --> ใช้ค่า 0-9
// 0.-9. --> ใช้ค่า 10-19
// space --> ' '
// A-Z, a-z --> 'A' 'B' ... 'a' 'b'

int  disp[8];

//time values for delay workaround
unsigned long prev =0;
unsigned long waitMS=0;

void setup()
{

  pinMode(RCLK_pin,OUTPUT);
  pinMode(DIO_pin,OUTPUT);
  pinMode(SCLK_pin,OUTPUT);

  showText('O','P','E','N'); // แสดงข้อความต้อนรับ
}  

int n;
unsigned long start=millis();
byte b = 0;
void loop()
{
  showDisplay();
  if(b==0){
    b++;
    wait(3000);     // หน่วงเวลาแสดงข้อความต้อนรับ
  }
  else{
    if ( millis() > (prev + waitMS))
    {
      //code to loop in here


      //ระหว่าง loop แก้ไขแสดงค่าอื่นๆได้

      // แสดงผลแบบตัวอักษร ตัวอย่างแสดงคำว่า Ardu
     // showText('A','r','d','u'); //  แก้ค่าที่จะให้แสดงผลตรงนี้


      // แสดงผลแบบตัวเลข ตัวอย่างแสดงค่า 95.42
      // showText(9,15,4,2); //15 --> แสดงเลข 5.


       // แสดงผลตัวอย่าง การ run เลข
      showText((n/1000)%10,(n/100)%10+10,(n/10)%10,n%10);  //แก้ค่าที่จะให้แสดงผลตรงนี้
      n++;
      if(n>10000) {
        n=0;
      }
      
      // หน่วงเวลา
      wait(1000);
    }
  }
}

void showText(char a, char b , char c,char d){
  disp_c[0] = d;
  disp_c[1] = c;
  disp_c[2] = b;
  disp_c[3] = a;
}
void showDisplay()
{
  setDisp();
  for(int i=0; i<8; i++)
  {
    setDigit(i,disp[i]);
  }
}

void setDigit(int dig, int character)
{
  int digits[]= {
    128,64,32,16,8,4,2,1        };

  //character set (0-9)0-9
  //            (10-19)0.-9.
  //            (20-45)A-Z
  //            (46-71)a-z
  //            (72)- (73) space
  int characters[]= {
    3,159,37,13,153,73,65,31,1,9,
    2,158,36,12,152,72,64,30,0,8,
    17,1,99,3,97,113,67,145,243,135,145,227,85,19,3,49,25,115,73,31,129,129,169,145,137,37,
    5,193,229,133,33,113,9,209,247,143,81,227,85,213,197,49,25,245,73,225,199,199,169,145,137,37,
    253,255        };

  digitalWrite(RCLK_pin, LOW);
  shiftOut(DIO_pin, SCLK_pin, LSBFIRST, characters[character]);
  shiftOut(DIO_pin, SCLK_pin, LSBFIRST, digits[dig]);
  digitalWrite(RCLK_pin, HIGH);
}

void setDisp()
{
  for (int i=0; i<8;i++)
  {
    int val = disp_c[i];
    if((val >= 32)&&(val <= 47)){ // ! ถึง / ไม่ให้แสดง
      switch (val){
      case 45 :
        val = 72;
        break;  // เครื่องหมาย -
      default :
        val = 73;
        break;  // ค่าอื่นระหว่างนี้ ไม่ให้แสดง
      }
    }
    else if((val >= 48)&&(val <= 57)) //0-9
    {
      val -= 48;
    }
    else if((val >= 65)&&(val <= 90)) //A-Z
    {
      val -= 45;
    }
    else if((val >= 97)&&(val <= 122)) //a-z
    {
      val -= 51;
    }

    disp[i] = val;

  }
}   
void wait( unsigned long milsec)
{
  prev = millis();
  waitMS = milsec;
}

//ขั้นที่ 1 กำหนด ขา pin โดยนำขาของโมดูลไปต่อกับขาของ Arduino ดังรูป 
const int SCLK_pin=4; // ขา SCLK ไปต่อกับ Arduino ขา 4
const int RCLK_pin=5; // ขา RCLKไปต่อกับ Arduino ขา 5
const int DIO_pin =6; // ขา DIO ไปต่อกับ Arduino ขา 6

// ขั้นที่ 2 กำหนดข้อความต้อนรับในการณีที่เราต้องการแสดงข้อความต้อนรับสามารถแก้ได้ที่โคดนี้
showText('O','P','E','N'); // แสดงข้อความต้อนรับคำว่า OPEN
...
...
...
wait(3000);     // หน่วงเวลาแสดงข้อความต้อนรับ

// ขั้นที่ 3 กำหนดข้อความแสดงผล สามารถกำหนดให้เป็นตัวเลขหรือตัวอักษรได้ตามข้อมูลนี้
//character set (0-9)0-9
  //            (10-19)0.-9.
  //            (20-45)A-Z
  //            (46-71)a-z
  //            (72)- (73) space
เช่น     // แสดงผลแบบตัวอักษร ตัวอย่างแสดงคำว่า Ardu
     // showText('A','r','d','u'); //  แก้ค่าที่จะให้แสดงผลตรงนี้


      // แสดงผลแบบตัวเลข ตัวอย่างแสดงค่า 95.42
      // showText(9,15,4,2); //15 --> แสดงเลข 5.


       // แสดงผลตัวอย่าง การ run เลข
      showText((n/1000)%10,(n/100)%10+10,(n/10)%10,n%10);  //แก้ค่าที่จะให้แสดงผลตรงนี้
      n++;
      if(n>10000) {
        n=0;
      }
      // หน่วงเวลาแสดงผล
      // wait(1000);



โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module

โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module

การใช้งาน โมดูลแยกสี TCS230 ถ้าคุณต้องการ ทำให้ Arduino สามารถมองเห็นสีของสิ่งรอบตัว เพื่อเอาไปประมวลผลตามที่ต้องการ เช่น ทำเป็นตัวอ่านค่าสี RGB หรือนำค่า RGB ไปแสดงบนหน้าจอคอมพิวเตอร์ โมดูลนี้จะช่วยเพิ่มความสามารถนี้ให้กับ Arduino โมดูล TCS230 Color Recognition Sensor ใช้ไฟเลี่ยง 3.3 - 5 โวลต์ ใช้สายสัญญาณ 3 เส้น มีสายสำหรับควบคุมไฟ LED อีก 1 เส้น สามารถสั่งเปิดไฟตอนกำลังอ่านค่าสี และสั่งให้ปิดเมื่ออ่านค่าสีเสร็จแล้วได้
โมดูล TCS230 Color Recognition Sensor module ตัวนี้ใช้เซ็นเซอร์ TAOS TCS230 เป็นตัวแยกความถี่ของแสง โดยใช้ photodiodes 
การแปลงแสงเป็นความถี่ อ่านได้จากค่า photodiodes ที่อยู่ในชิฟของ โมดูล TCS230 มีจำนวนทั้งหมด 8x8 ชิ้น สามาถรอ่านสี แดง เขียว ฟ้า แสงสว่างจากแหล่งกำเนิดแสงโดยตรง ซึ่งค่าที่อ่านมาได้จะเป็นค่าความถี่ของแสง แดง เขียว ฟ้า ยังไม่ใช่ค่า RGB ที่เราใช้กันในคอม แต่ไม่ต้องห่วงมีคนใจดีเขียนโคดแก้สมการทางแสงอันวุ่นวายมาให้พร้อมใช้งาน เราแค่เรียกใช้ให้ถูก ก็ใช้ได้แล้ว
การควบคุมเซนเซอร์ โมดูล TCS230 นี้ ทำได้โดยควบคุมจากขา s2 และ s3 และขา OUT จะให้ออกมาเป็นสัญญาณเวฟสี่เหลี่ยม(50% duty cycle) เป็นความถี่ที่อ่านได้จากเซนเซอร์แสง photortional โดยตรง สามารถขยายความเข้มของค่าที่อ่านได้ โดยควบคุมอัตราขยายที่ขา s0 และ s1

ความสามารถของชิฟ TCS230
  • High-Resolution Conversion of Light Intensity to Frequency
  • Programmable Color and Full-Scale Output Frequency
  • Communicates Directly With a Microcontroller
  • Single-Supply Operation (2.7 V to 5.5 V)
  • Power Down Feature
  • Nonlinearity Error Typically 0.2% at 50 kHz
  • Stable 200 ppm/°C Temperature Coefficient
  • Low-Profile Surface-Mount Package
การจัดขาของชิฟ TCS230

หลักการทำงานของ โมดูล TCS230
จากรูปเราได้รู้เกี่ยวกับโมเดลแม่สีแสง RGB , บอร์ด Color มีกลุ่มของเซนเซอร์ที่สามารถตรวจจับแสง สีแดง เขียว และน้ำเงิน และเมื่อรวมกันก็จะได้เป็นแสงสีต่าง ๆ ที่เราเห็นกัน , ถ้าเรารู้ข้อมูลของแสง RGB แต่ละตัว ก็จะสามารถรู้ว่ารวมกันแล้วจะได้เป็นสีอะไร โมดูลนี้มีเซนเซอร์สีแดง เขียว และน้ำเงินรวมกันถึง 8x8 ตัว สามารถรับแสงแต่ละค่าและเมื่อเอามาเข้าสมการรวมกันแปลงค่าออกมา ก็จะได้ค่าสีที่เรามองเห็น แปลว่า Arduino ของเรา แยกแยะสีออกได้แล้ว เย้เย้

โมดูล TCS230 มีเซนเซอร์ photodiodes ขนาด 8x8 ตัว โดย มีเซนเซอร์สีนำ้เงิน 16 ตัว สีเขียว 16 ตัว สีแดง 16 ตัวและ 16 ตัวสำหรับแสงสีขาว โดยจะให้สัญญาณเอาต์พุตออกมาทางขา s2 และ s3 เช่น ถ้า s2 และ s3 ให้สัญญาณ 0 หรือ L ออกมา แปลว่า อ่านได้ค่าแสงสีแดง แล้ว ถ้า s2 และ s3 ให้ค่าออกมาเป็น L และ H แสดงว่าเป็นสีน้ำเงิน ตามตารางในรูปนี้


เราสามารถขยายสัญญาณนี้ได้โดยควบคุมที่ขา s0 และ s1 โดย มี 4 ระดับ คือ ถ้า s0 กับ s1 เป็น L L หรือ 0 0 แปลว่าปิดการทำงาน เช่นกัน ถ้า s0 กับ s1 เป็น H L แปลว่า ขยายสัญญาณที่ 20 %


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

วิธีการต่อใช้งาน โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
การต่อสายจากโมดูล -> บอร์ด Arduino
Vcc -> 5v
Gnd -> Gnd
s0 -> 5v
s1 -> 5v
s2 -> 12
s3 -> 13
OUT -> 5
LED -> 7
จากนั้น ดาวน์โหลด ไลบารีจากที่นี่
หลังจากติดตั้งเรียบร้อยแล้ว

เปิดโปรเจกใหม่ ก็อปโคดตามนี้ลงไปวาง อาจจะยาวหน่อย ไม่ต้องไปสนใจ 555
วิธีการเล่น  โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
เราได้ต่อบอร์ดและอัพโหลดโคดกันไปเรียบร้อยแล้ว ต่อมาก็มาถึงเวลาเล่นของเราซักที

1. เปิด SerialPort monitor ที่มุมบนซ้ายขึ้นมา แล้วกดปุ่ม reset บนบอร์ด 1 ครั้งเบา ๆ โปรแกรมจะบอกว่า ให้เอาสีดำวางไว้ติดกับตัวเซนเซอร์ เพื่อปรับระดับค่าสีดำ แล้วกดปุ่ม send เพื่อปรับสีดำ


2. ต่อมาโปรแกรมก็จะบอกให้ เอาสีขาวมาวางไว้ติดกับเซนเซอร์ กดปุ่ม send เพื่อปรับสีขาว

3. เมื่อปรับค่าสีดำและสีขาวเรียบร้อยแล้ว ก็สามารถนำสีที่ต้องการมาวางไว้หน้าเซนเซอร์ แล้วกดปุ่ม Send เพื่ออ่านค่าสีได้แล้ว ตัวอย่างเอาสีน้ำเงินออกฟ้ามาวาง ก็อ่านค่าสี RGB ได้  16,61,110

การประยุกต์ใช้งาน โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
อย่าลืมนะครับ โมดูลนี้มี สายสัญญาณไว้สำหรับควบคุม LED ให้เปิดปิด ได้ตามที่ต้องการ ไม่ควรเปิด LED ไว้ตลอด เพราะนอกจากจะเปลืองไฟแล้ว หลอด LED ยังมีอายุการใช้งานสั้นกว่าที่ควรเป็นด้วย
เราสามารถต่อจอ LCD เพื่อนำค่า RGB ที่อ่านได้ไปแสดงบนจอ หรือจะลองต่อออกไปแสดงผลที่หน้าจอคอมพิวเตอร์ได้ผ่านการสื่อสารแบบ Serial Port อาจจะใช้โปรแกรม C# หรือตามที่ถนัดได้ตามใจชอบครับ
ผมลองทำ C# เล่น ๆ อ้างอิงตามโคดตัวอย่างในบทความนี้ มาให้ได้ทดลองเล่น


ดาวน์โหลดไปพร้อมโคดทั้งหมดได้ที่นี่ครับ
ถ้าทำไม่ได้ยินดีให้คำปรึกษาฟรี ๆ ครับ โพสถามในนี้ได้เลย

หวังว่าคงสนุกกับการแยกสีสันรอบตัวกับ Arduino ทุกอย่าง ArduinoAll นะครับ


อุปกรณ์โมดูลวัดค่าสี RGB Colour Sensor (TCS230/TCS3200)


การใช้งาน โมดูล Arduino SD Card module

การใช้งาน โมดูล Arduino SD Card module

ถ้าต้องการบันทึกข้อมูลการใช้งานต่าง ๆ เช่น Log File ค่าที่อ่านได้จากเซนเซอร์ ต่าง ๆ การใช้ความสามารถของ การบันทึกข้อมูลลงบน SD Card เป็นอีกทางเลือกที่เหมาะสม เพราะสามารถเก็บข้อมูลได้บริมาณมาก อุปกรณ์บันทึกข้อมูลมีราคาไม่แพง ต่อใช้งานง่าย
เราจะมาลองต่อใช้งาน Arduino SD Card Module กัน วิธีการใช้งานแบบรวดเร็ว

การต่อสายโมดูล Arduino SD Card module
2. เปิดดูโปรแกรมตัวอย่างวิธีใช้งาน ReadWrite.ino อัพโหลดลง บอร์ด Arduino

#include <SPI.h>
#include <SD.h>

File myFile;

// change this to match your SD shield or module;
//     Arduino Ethernet shield: pin 4
//     Adafruit SD shields and modules: pin 10
//     Sparkfun SD shield: pin 8
const int chipSelect = 4;

void setup()
{
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
   pinMode(SS, OUTPUT);
   
  if (!SD.begin(chipSelect)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
// close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    
    // read from the file until there's nothing else in it:
    while (myFile.available()) {
    Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
  // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
// nothing happens after setup
}
3. ต่อวงจรจากโมดูล ไป Arduino Uno ดังนี้
3.3V -> 3.3V
Gnd -> Gnd
MISO -> 12
MOSI -> 11
SCLK -> 13
CS -> 4
4. ทดสอบการทำงานโดย เปิด Serial Monitor ใน Arduino IDE แล้วกดปุ่ม Reset บนบอร์ด Arduino ก็จะเห็น ข้อมูลการเขียน/อ่าน ไฟล์ที่เราต้องการ