วันอาทิตย์ที่ 23 พฤศจิกายน พ.ศ. 2557

Ultrasonic Distance Sensor, Timer1, External Interrupt

การทดลองใช้งานโมดูล Ultrasonic Distance Sensor อย่างเช่น HC-SR04 

  • โมดูลนี้ใช้สำหรับวัดระยะห่างจากวัตถุหรือสิ่งกีดขวาง โดยส่งสัญญาณเสียงความถี่สูง
  • ใช้แรงดันไฟเลี้ยง +5V 
  • ในการสื่อสารกับไมโครคอนโทรลเลอร์ จะมีขา TRIG และ ECHO รับสัญญาณ Pulse ที่ขา TRIG และส่งสัญญาณเอาต์พุตออกที่ขา ECHO 
  • ระยะห่างจากวัตถุให้คำนวณจากความกว้างช่วง HIGH ของสัญญาณ ECHO
  • สำหรับ Arduino จะใช้คำสั่ง PulseIn() เพื่อวัดความกว้างในหน่วยเป็นไมโครวินาที (microseconds)


โจทย์ 1.1
  • ทดลองใช้งานโมดูล HC-SR04
  • เขียนโค้ด Arduino โดยไม่ใช่คำสั่ง PulseIn() ของ Arduino แต่ให้ใช้ Timer1 เพื่อวัดความกว้างของช่วงเวลา (ใช้ Timer1 สร้างฐานเวลาในการนับ)
  • ใช้ External Interrupt 0 หรือ 1 และใช้ ISR ที่เกี่ยวข้องอ่านค่าเวลา 2 ครั้ง (ขอบขาขึ้นและขอบขาลงของสัญญาณ ECHO) แล้วนำมาคำนวณช่วงกว้างของ HIGH แล้วนำค่าที่ได้ไปคำนวณระยะห่างจากสิ่งกีดขวาง
  • ใช้ออสซิลโลสโคปดูสัญญาณ ทั้ง TRIG และ ECHO
  • ต่อวงจรใช้งานโมดูล 16x2 LCD เพื่อแสดงผล
Timer1
  • เป็นตัวนับขนาด 16 บิต นับได้ตั้งแต่ 0 ถึง 65535
  • การใช้งานกับ Arduino Uno ใช้ในการสร้างสัญญาณ PWM (Servo) และทำงานในโหมด Phase Correct PWM 
Phase Correct PWM (Count 0>>255, 255>>0)ใช้วิธีนับขึ้น (BOTTOM to TOP) แล้วตามด้วยการนับลง (TOP to BOTTOM) ต่อหนึ่งคาบ
  • เริ่มนับจาก BOTTOM ไปยัง TOP จากนั้นจะนับถอยหลังไปยัง BOTTOM
  • Timer/Counter Overflow Flag (TOV0) ถูกเซตให้เป็น 1 เมื่อนับถึง BOTTOM และใช้สร้างอินเทอร์รัพท์ได้



โจทย์ 1.2
  • เหมือน 1.1 แต่เปลี่ยนไปใช้ Pin Change Interrupt แทน External Interrupt

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

IoT Cloud service (Mini-Project)

IoT Cloud service

รายงานความก้าวหน้าครั้งที่ 1
รายชื่อสมาชิกกลุ่ม
  1. นาย พรพรหม เกิดมูล  รหัสนักศึกษา 5401012620031
  2. นางสาว ปาริชาติ หล้าวงษา  รหัสนักศึกษา 5401012630142
การแบ่งงานในกลุ่ม
  • ศึกษาหาข้อมูลเพิ่มเติมเพื่อใช้ในการดำเนินงาน (พรพรหม , ปาริชาติ)
  • ใช้บอร์ด Arduino อ่านข้อมูลจากเซนเซอร์ (พรหรม)
  • ส่งข้อมูลไปเก็บที่ IoT Cloud Service (พรพรหม)
  • จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ (ปาริชาติ)
  • จัดทำรายงาน (ปาริชาติ)

การกำหนดโจทย์และขอบเขตการทำงาน
ข้อกำหนดในการสร้างระบบ
- ใช้บอร์ด Arduino เป็นอุปกรณ์อ่านข้อมูลจากเซนเซอร์ อย่างน้อย 1 บอร์ด
- ใช้เซนเซอร์ดังต่อไปนี้ หรือมากกว่า
- ใช้ LDR + ตัวต้านทาน เป็นเซนเซอร์วัดแสง อย่างน้อย 1 ชุด
- ใช้ LM35DZ เป็นตัววัดอุณหภูมิห้อง อย่างน้อย 1 ชุด (สามารถเลือกใช้โมดูลอื่นแทนได้ เช่น DHT11, DHT22, DS18B20 เป็นต้น)
- มีจอแสดงผล 16x2 LCD เพื่อดูสถานะการทำงาน
- มี LED กระพริบ แสดงสถานะ ในขณะที่อ่านและส่งข้อมูลผ่าน Serial ไปยังคอมพิวเตอร์
- ทั้งระบบใช้แรงดันไฟเลี้ยงจากพอร์ต USB (+5V) เท่านั้น
- ส่งข้อมูลไปเก็บที่ IoT Cloud Service อย่างน้อย 2 ชุด (ต่างบริษัท) พร้อมๆกัน
(ตัวเลือกเช่น บริการของบริษัท Xively.com และ plot.ly)
- การส่งข้อมูลมีสองวิธี
- Host-attached: อ่านและส่งข้อมูลเป็นชุด ด้วยคอมพิวเตอร์ (Linux) โดยใช้ภาษา Python, Node หรืออื่นๆ
แล้วนำข้อมูลที่ได้จาก Arduino (ผ่าน USB-Serial) รวมทั้งวันเวลาในขณะนั้นไปเก็บไว้บน Cloud อย่างน้อย 15 วินาที แต่ไม่เกิน 60 วินาที ต่อหนึ่งครั้ง และต้องส่งข้อมูลเป็นเก็บที่ IoT cloud ทั้งสองที่
- Standalone: ใช้ Arduino เชื่อมต่อกับโมดูล Ethernet (เช่น ชิป ENC28J60 หรืออื่นๆ) เพื่อส่งข้อมูลไปยัง IoT Cloud โดยไม่ต้องใช้คอมพิวเตอร์
- ทำการทดลองต่อเนื่อง อย่างน้อย 8 ชั่วโมง
- จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ 

การวางแผนการทำงาน


แผนการดำเนินงาน
  • ศึกษาหาข้อมูลเพิ่มเติม 
  • ใช้บอร์ด Arduino อ่านข้อมูลจากเซนเซอร์ 
  • ส่งข้อมูลไปเก็บที่ IoT Cloud Service
  • จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ 

อุปกรณ์ที่ใช้ในการทดลอง

ARDUINO UNO
บอร์ด ARDUINO UNO  ใช้ในการอ่านข้อมูลจากเซนเซอร์
Technical Specifications



ETHERNET SHIELD 
บอร์ด ETHERNET SHIELD ใช้เป็นตัวเชื่อมต่อกับอินเทอร์เน็ต

  • ใช้ Wiznet W5100 ethernet chip
Block Diagram

Pin Assignment


DHT11 Sensor
DHT11 Sensor ใช้เป็นตัววัดอุณหภูมิห้อง

Technical Specifications
Typical Application


Note: 3Pin – Null; MCU = Micro-computer Unite or single chip Computer

Overall Communication Process
  • MCU Sends out Start Signal to DHT

  • DHT Responses to MCU

 Data "0" Indication

Data "1" Indication

Electrical Characteristics


การดำเนินการที่ผ่านมา
  1. ศึกษาหาข้อมูลเพิ่มเติมเพื่อใช้ในการดำเนินงาน 
  2. สมัครสมาชิกเพื่อใช้งาน Cloud ของ IBM Bluemix และ Plotly (xively, )
  3. สามารถอ่านข้อมูลจากเซนเซอร์วัดแสงได้ 
  4. สามารถอ่านข้อมูลจากเซนเซอร์วัดอุณหภูมิห้องได้ 
รูปการต่อวงจร DHT11 Sensor ที่ใช้เป็นตัววัดอุณหภูมิห้อง


รูปการต่อบอร์ด arduino และ enthernet shield




วันศุกร์ที่ 19 กันยายน พ.ศ. 2557

StringStackLCD


โจทย์ฝึกปฏิบัติสำหรับสัปดาห์นี้
1) เขียนโค้ดสำหรับบอร์ด Arduino โดยสร้างเป็น C++ Class ดังต่อไปนี้
=> Class StringQueue เป็นโครงสร้างข้อมูลแบบ Queue สำหรับเก็บ String objects สร้างคลาส StringQueue และทดสอบการทำงานโดยใช้โค้ดตัวอย่างต่อไปนี้ และทดสอบโดยใช้ฮาร์ดแวร์จริง (ใช้บอร์ด Arduino และแสดงผลผ่าน Serial Monitor ของ Arduino IDE)
2) ใช้คลาส StringQueue ในข้อแรก นำมาเขียนโค้ด Arduino เพื่อให้มีพฤติกรรมการทำงานดังนี้ กำหนดให้มีความจุเช่น 10 ข้อความ
2.1) บอร์ด Arduino มีวงจรปุ่มกด Get ทำงานแบบ Active-Low (ใช้ตัวต้านทานแบบ Pull-up, 10k)
2.2) ผู้ใช้สามารถส่งข้อความ (ภาษาอังกฤษ) ทีละบรรทัด (ไม่เกิน 16 ตัวอักขระต่อบรรทัด) จากคอมพิวเตอร์ โดยส่งผ่าน Serial Monitor ของ Arduino IDE ไปยังบอร์ด Arduino ใช้ baudrate 115200
2.3) ข้อความแต่ละบรรทัดที่ถูกส่งไปยัง Arduino จะถูกจัดเก็บใน StringQueue ถ้าไม่เต็มความจุ แต่ถ้าเต็มความจุ ไม่สามารถเก็บข้อความใหม่ได้ Arduino จะต้องส่งข้อความ "Full" กลับมา และมี LED "Full" ติด
2.4) เมื่อมีการกดปุ่ม Get แล้วปล่อยหนึ่งครั้ง ข้อความแรก (ถ้ามี) ของ StringQueue จะถูกดึงออกมาแล้วส่งผ่าน Serial Monitor ไปยังคอมพิวเตอร์ และนำไปแสดงผลบนจอ 16x2 LCD ที่ต่อกับบอร์ด Arduino ด้วย แต่ถ้าไม่ข้อความใดๆ Arduino จะต้องส่งข้อความ "Empty" กลับมา เมื่อกดปุ่มแล้วปล่อย และให้มี LED "Empty" ติด
2.5) บรรทัดแรกของ LCD แสดงข้อความที่ถูกอ่านออกมาล่าสุดจาก StringQueue บรรทัดที่สอง ให้แสดงจำนวนข้อความที่มีอยู่ใน StackQueue ในขณะนั้น
2.6 16x2 LCD module สามารถยืมได้จากห้อง ESL และการเขียนโค้ดเพื่อใช้งาน LCD สามารถใช้ไลบรารี่ของ Arduino ได้



ภาพวงจร จาก Fritzing
Arduino ขา
2(ปุ่มGetค่า)3,4,5,6,11,12(LCD)
13(LEDFull)7(LEDEmpty)

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

ภาพจากการทดลอง























วันศุกร์ที่ 12 กันยายน พ.ศ. 2557

โจทย์ฝึกปฏิบัติ StringStack

โจทย์ฝึกปฏิบัติสำหรับสัปดาห์นี้
1) เขียนโค้ดสำหรับบอร์ด Arduino โดยสร้างเป็น C++ Class ดังต่อไปนี้
=> Class StringStack เป็นโครงสร้างข้อมูลแบบ Stack (กองซ้อน) สำหรับเก็บ String objects (http://arduino.cc/en/Reference/StringObject) และกำหนด API สำหรับคลาสดังกล่าว เป็นดังนี้
/////////////////////////////////////////////////////////////////////////
‪#‎include‬ <String.h>
class StringStack {
public:
StringStack( int capacity=10 ); // constructor
boolean put( String s ); // put a String object on stack
boolean get( String &s ); // get a String object from stack
inline int size(); // return the number of String objects on the stack
inline boolean isEmpty(); // return true if stack is empty, otherwise false
inline boolean isFull(); // return true if stack is full, otherwise false
private:
int capacity; // the max. capacity of the stack
int count; // used to count the number of string objects stored
String *buf; // used to store String objects on stack
};
/////////////////////////////////////////////////////////////////////////
จงสร้างคลาส StringStack และทดสอบการทำงานโดยใช้โค้ดตัวอย่างต่อไปนี้
และทดสอบโดยใช้ฮาร์ดแวร์จริง (ใช้บอร์ด Arduino และแสดงผลผ่าน Serial Monitor ของ Arduino IDE)
/////////////////////////////////////////////////////////////////////////
int num = 10; // capacity
StringStack st( num );
void setup() {
Serial.begin(115200);
}
char buf[20];
String str;
void loop() {
Serial.print( "\nPut strings: " );
for ( int i=0; i < num; i++ ) {
str = String( (i+1)*10 );
if ( !st.put( str ) ) {
Serial.println( "\nPut string error!" );
break;
} else {
Serial.print( str );
Serial.print( " " );
}
str = NULL;
delay(50);
}
delay(500);
Serial.print( "\nGet strings: " );
for ( int i=0; i < num; i++ ) {
if ( st.get( str ) ) {
str.toCharArray( buf, 20 );
Serial.print( buf );
Serial.print( " " );
} else {
Serial.println( "\nGet string error!" );
break;
}
delay(50);
}
delay(500);
}

ผลการทดลอง


จากภาพจะเห็นได้ว่า StringStack เมื่อมีการกดปุ่ม1 จะทำการเพิ่ม String เข้าไปใน Stack  ตามจำนวนที่กำหนด และเมื่อมีเงื่อนไขในการ Get ออกจาก Stack (ในCodeนี้ใช้การกดปุ่ม2) จะทำให้ ได้ค่า จากท้ายออกมาก่อน ดังที่ได้ ใส่ไปไว้ในตอนแรก และเมื่อใส่จนเต็ม จะ คืนแสดงว่า Full หรือ Get จนหมดแล้ว จะแสดงว่า Empty





Download Code1




2) ใช้คลาส StringStack ในข้อแรก นำมาเขียนโค้ด Arduino เพื่อให้มีพฤติกรรมการทำงานดังนี้
2.1) บอร์ด Arduino มีวงจรปุ่มกด Get ทำงานแบบ Active-Low (ใช้ตัวต้านทานแบบ Pull-up, 10k) 
2.2) ผู้ใช้สามารถส่งข้อความ (ภาษาอังกฤษ) ทีละบรรทัด (ไม่เกิน 20 ตัวอักขระต่อบรรทัด) จากคอมพิวเตอร์ โดยส่งผ่าน Serial Monitor ของ Arduino IDE ไปยังบอร์ด Arduino
2.3) ข้อความแต่ละบรรทัดที่ถูกส่งไปยัง Arduino จะถูกจัดเก็บใน StringStack (เก็บบนกองซ้อน) ถ้าไม่เต็มความจุ แต่ถ้าเต็มความจุ ไม่สามารถเก็บข้อความใหม่ได้ Arduino จะต้องส่งข้อความ "Full" กลับมา
2.4) เมื่อมีการกดปุ่ม Get แล้วปล่อยหนึ่งครั้ง ข้อความบนสุด (ถ้ามี) ของ StringStack จะถูกดึงออกมาแล้วส่งผ่าน Serial Monitor ไปยังคอมพิวเตอร์
แต่ถ้าไม่ข้อความใดๆ Arduino จะต้องส่งข้อความ "Empty" กลับมา เมื่อกดปุ่มแล้วปล่อย





ผลการทดลอง
เริ่มต้น ด้วยการบอกจำนวนของหน่วยความจำที่สามารถ Stock ได้ ในที่นี้ คือ 10 และเมื่อเริ่มการทำงาน ไฟจะติด เพื่อบอกสถานะว่าพร้อมทำงาน


การใส่อักษรมากกว่า 20 ตัว


จะเห็นได้ว่า INPUT จะได้แค่ 20 ตัวอักษรเท่านั้น


เมื่อใส่ครบตามจำนวนจะตอบค่า Full กลับมา และ ทำให้ ไฟแสดงสถานะของการทำงานดับ


และการกดปุ่ม GET ค่ากลับ จะเป็นแบบกองซ้อนกันของ INPUT


Download Code2

วันพฤหัสบดีที่ 28 สิงหาคม พ.ศ. 2557

RGB LED / PWM-based Dimming

โจทย์ Warm-up ทบทวน Arduino และการเขียนโปรแกรมภาษา C/C++

1) จงเขียนโค้ดสำหรับ Arduino และวงจรที่ทำงานได้ตามข้อกำหนดต่อไปนี้ [RGB LED / PWM-based Dimming]

  • วงจรทำงานโดยใช้ระดับแรงดันสำหรับ I/O ที่ 5V เท่านั้น
  • มีปุ่มกด 3 ปุ่ม (ให้ชื่อว่า R, G, B) ทำงานแบบ Pull-up (active-low) ให้ต่อวงจรปุ่มกดเอง เพื่อใช้งานกับบอร์ด Arduino
  • มีเอาต์พุต 3 ขา ต่อกับวงจร RGB LED (จะใช้แบบ Common-Anode หรือ Common-Cathode ก็ได้) พร้อมตัวต้านทานจำกัดกระแส 3 ตัว
  • เขียนโค้ดด้วยภาษา C++ สำหรับ Arduino เพื่อสร้าง Class ที่มีชื่อว่า "RGB_LED"
  • กำหนดให้ constructor สำหรับคลาส RGB_LED เป็นดังนี้                                          RGB_LED( int red_pin, int_green_pin, int blue_pin );                                                        โดยรับค่ามาเป็นหมายเลขของ I/O pins สำหรับ 3 ขาของ Arduino ที่จะถูกใช้งานเป็นเอาต์พุตแบบ PWM
  • มีเมธอดอย่างเช่น                                                                                                                      void setRed( int duty_cycle ), void setGreen( int duty_cycle ),                                           void setBlue( int duty_cycle ) เพื่อใช้กำหนดค่า duty cycle ของขาเอาต์พุต PWM และใช้ในการกำหนดความสว่างของแต่ละสี ใช้คำสั่ง analogWrite() ในการกำหนดค่า
  • กำหนดสมาชิก instance members ตามความจำเป็น เช่น ค่า duty cycles สำหรับแต่ละสี
  • ใช้คลาสดังกล่าวในการเขียนโค้ด (สร้าง object จากคลาสดังกล่าวและเรียกใช้เมธอด) เพื่อสาธิตการทำงานร่วมกับฮาร์ดแวร์จริง
  • เมื่อกดปุ่ม R, G หรือ B แล้วปล่อยแต่ละครั้ง จะทำให้ค่า duty cycle ของสีดังกล่าวเพิ่มขึ้นทีละ 8 ถ้าค่า duty cycle เกิน 255 ให้วนกลับมาเริ่มที่ 0 ใหม่ (ค่าเริ่มต้นสำหรับ duty cycles เป็น 0)
รูปที่ 1.1 แสดงภาพของวงจร LED จากโปรแกรมeagleโดยต่อแบบ active-low
หมายเหตุ ขาpinที่ต่อวงจรจากโปรแกรมeagle อาจไม่เหมือนกับที่ต่อในวงจรจริง

รูปที่ 1.2 แสดงภาพของวงจร LED โดยต่อแบบ active-low


ส่วนของโค้ด

#include "RGB_LED.h"


RGB_LED led(2,3,4,true);   // สร้าง RGB จาก Class

int IN_IN[] = {7,8,10} ;            // input ข้อมูลที่ pin 7,8 และ 10

int count[] ={0,0,0};                // Light

int ch[] = {1,1,1} ;                   // check status

int val[] = {0,0,0} ;                  // check bottom

void setup() {

  Serial.begin(9600);

  pinMode(IN_IN[0],INPUT);

  pinMode(IN_IN[1],INPUT);

  pinMode(IN_IN[2],INPUT);

}



void loop() {

  

  for(int i = 0 ; i < 3 ; i++){                              // check bottom +light

    val[i] = digitalRead(IN_IN[i]);

    if(val[i] == 0 && ch[i] == 1){ch[i] = 0;}

    if(val[i] == 1 && ch[i] == 0){count[i] = count[i]+8;
    ch[i] = 1;
    if(count[i] > 255) {count[i] = 0;}
   }
 }
    led.setColorR( 254 - count[0] );                    // lightRED
    led.setColorG( 254 - count[1] );                    // lightGreen
    led.setColorB( 254 - count[2] );                    // lightBule
  
  for(int j = 0 ; j < 3 ; j++){
   Serial.println((int) count[j]);  
   Serial.println((int) val[j]); }
  delay(100);


2) เหมือนข้อ 1 แต่เปลี่ยนพฤติกรรมการกดปุ่ม: ถ้ากดปุ่ม R, G หรือ B ค้างไว้อย่างน้อย 100 msec จะเพิ่มค่าขึ้นทีละ 8 (แล้วเริ่มนับเวลาใหม่) ถ้าค่า duty cycle เกิน 255 ให้วนกลับมาเริ่มที่ 0 ใหม่

ส่วนของโค้ด

#include "RGB_LED.h"

RGB_LED led(2,3,4,true);           // สร้าง RGB จาก Class
int IN_IN[] = {7,8,10} ;                    // input ข้อมูลที่ pin 7,8 และ 10
int count[] ={0,0,0};                        // Light
int ch[] = {1,1,1} ;                           // check status
int t[] = {0,0,0} ;                              // check time
int val[] = {0,0,0} ;                          // check bottom
void setup() {
  Serial.begin(9600);
  pinMode(IN_IN[0],INPUT); 
  pinMode(IN_IN[1],INPUT);
  pinMode(IN_IN[2],INPUT);
}

void loop() {
  
  for(int i = 0 ; i < 3 ; i++){               // check bottom +light
    val[i] = digitalRead(IN_IN[i]);
    if(val[i] == 0 && ch[i] == 1){
      t[i] = t[i] + 1;
    if(t[i] > 50){
    count[i] = count[i]+8;
    if(count[i] > 255) {count[i] = 0;}
    ch[i] = 0;
  }
}
    if(val[i] == 1 && ch[i] == 0){
      t[i] = 0;
    ch[i] = 1;
    
  }
}

    led.setColorR( 254 - count[0] );                  // lightRED
    led.setColorG( 254 - count[1] );                  // lightGreen
    led.setColorB( 254 - count[2] );                  // lightBule
  
  for(int j = 0 ; j < 3 ; j++){
   Serial.println((int) count[j]);  
   Serial.println((int) val[j]); }
  delay(100);







 PWM = 0%




LED RGB ดับ




PWM = 100%



LED RGB สว่าง



LED RGB สว่างทุกดวง




Downloadcode


วันอาทิตย์ที่ 17 สิงหาคม พ.ศ. 2557

Raspberry Pi Model B and B+ with BeagleBone Black Rev.B and Rev.C

BeagleBone Black vs Raspberry Pi – The Features


Raspberry Pi Model B  BeagleBone Black Rev.B
Processor Broadcom BCM2835 ARM11 @ 700 MHz
(Overclockable to 1GHz)
TI Sitara AM3359AZCZ100 Cortex A8 @ 1GHz(will be changed to AM3358BZCZ100 in future versions)
GPU VideoCore IV PowerVR SGX530
Video decoder VideoCore IV
1080p video decoding for H.264, MPEG2* and VC1*
1080p video encoding (H.264)* Extra license quired
N/A
RAM 512 MB SDRAM @ 400 Mhz 512 MB SDRAM @ 400 Mhz
StorageSD card slot 2GB eMMC & micro SD card slot
Ethernet 10/100M (USB to Ethernet chipset)  10/100M (Supported by SoC
USBhost 1 client / 1 host port
Video HDMI (1080p), Composite micro HDMI (1280×1024 max)
Audio Via HDMI 
Audio Jack
Via HDMI
Peripherals 12 –GPIO, USART, SPI, I2C (P1 and P5), CSI (camera serial interface) and DSI (display serial interface.)
SPI, I2C, SPI, CAN, Timers, LCD, MMC, Analog, 65 GPIO
Power USB 5V
322ma @ idle. Rated at 700mA
USB 5V
DC Jack
210 to 460mA @ 5V
Linux Support ARM Linux distributions supporting ARMv6.Two main OS supported: Debian and Arch Linux ARM
Any ARM Linux distribution.2 main OS supported: Ubuntu and Angstrom
Android Support Android 4.0.3 (work in progress, and no download available)
Some CyanoGenMod builds are also available but just too slow to be usable.
Android Jelly Bean (Stable version)

BeagleBone Black Rev.C ต่างจาก Rev.B คือ 


BeagleBone Black โดยออกบอร์ด Revision C หรือที่เราเรียกว่า Rev. C ซึ่งมีการปรับปรุงและเพิ่มเติมคุณสมบัติของบอร์ดเพิ่มขึ้นจาก Rev. B
           เพิ่มขนาดหน่วยความจำแฟลชแบบ eMMC บนบอร์ดจาก 2GB เป็น 4GB เพื่อตอบสนองความต้องการของกลุ่มลูกค้าและ Community ให้มีพื้นที่ใช้สอยหลังจากติดตั้ง OS แล้วมากขึ้น ซึ่งขนาดที่เพิ่มขึ้นนี้ยังส่งผลต่อการทำงานที่รวดเร็วขึ้นด้วยอีกเล็กน้อย (แม้ว่าตามสเปคไม่ได้ระบุไว้ แต่เท่าที่ลองใช้ดูเร็วขึ้นกว่าตัว 2GB เดิมพอสมควรเหมือนกันครับ)           เปลี่ยนระบบ Linux OS ติดตั้งบนบอร์ดมาจากโรงงาน เดิมบอร์ดที่แกะกล่องออกมาติดตั้ง Angstrom แต่ในรุ่นนี้จะเปลี่ยนเป็น Debian แทน ซึ่งตรงนี้ช่วยให้การใช้งานหรือการเรียนรู้ตัวบอร์ดสะดวกรวดเร็วและง่ายดายขึ้น เนื่องจาก Debian นั้น User-Friendly เหมาะกับการใช้งานทั่วไปมากกว่า Angstrom

Technical Specifications
  • Processor
    • 720 MHz super-scalar ARM Cortex-A8 (armv7a)
    • 3D graphics accelerator
    • ARM Cortex-M3 for power management
    • 2x Programmable Realtime Unit 32-bit RISC CPUs
  • RAM: 256 MB
  • Connectivity
    • USB client: power, debug and device
    • USB host
    • Ethernet
    • 2x 46 pin headers
      • 2x I2C, 5x UART, I2S, SPI, CAN, 66x 3.3V GPIO, 7x ADC           
ระบบปฏิบัติการที่รองรับการใช้งาน BeagleBone Black
  • Debian
  • Android
  • Ubuntu
  • Cloud9 IDE on Node.js w/ BoneScript library
  • plus much more
ที่มา : http://beagleboard.org/black
          http://www.electoday.com/index.php?topic=11675.0
          http://www.geeky-gadgets.com/beaglebone-black-rev-c-development-board-now-shipping-for-55-14-05-2014/
          http://elinux.org/Beagleboard:BeagleBoneBlack#BeagleBone_Black_Features 

raspberry pi model B+ มีอะไรที่ต่างจาก model B บ้าง    

  • USB Ports    จากเดิมที่ raspberry pi model B มี USB Ports ทั้งหมด 2 ช่อง มาคราวนี้ใน Model B+ เพิ่มเป็น 4 ช่องเลยทีเดียว แบบนี้เรียกได้ว่า บอกลา USB hub ไปได้เลย
  • GPIO pins   จากเดิมที่มี GPIO pins ทั้งหมด 26 pins ซึ่งอาจจะไม่เพียงพอกับความต้องการใช้งานของผู้ใช้หลายๆราย ใน Model B+ ได้เพิ่ม GPIO pins เข้าไปเป็น 40 pins
  • SD card Raspberry pi model B+   ได้เปลี่ยนจาก SD card ที่มีขนาดใหญ่และยื่นออกมานอกบอร์ด เป็น micro SD card เพื่อลดพื่นที่ลงและแก้ไขปัญหา SD card ยื่นออกมานอกบอร์ด
  • Audio Output    B+ เปลี่ยนจาก Audio Output แบบ 2 ขั้วให้เป็นแบบ 4 ขั้ว ทำให้สามารถส่งสัญญาณเสียง และ composite video ออกมาได้จากช่อง output เดียว
  • Display Output    จาก HDMI DSI Display Port Composite RCA เปลี่ยนเป็น HDMI DSI Display Port 4 pole 3.5 mm
  • Power Consumption    กระแสไฟฟ้าที่ใช้งานลดลงจาก 750 mA เหลือ 600 mA
  • Mounting    จาก 2 รู เป็น 4 รู




raspberry pi model B  raspberry pi model B+ 
USB Ports 2 4
GPIO pins 26 40
SD card SD card Micro SD
Audio Output 2 pole 3.5 mm 4 pole 3.5 mm
Display Output  HDMI 
DSI Display Port 
Composite RCA
HDMI 
DSI Display Port 
4 pole 3.5 mm
Power Consumption 750 mA 600 mA
Mounting 2 holes 4 holes

Technical Specifications

  • CPU:  ARM1176JZF-S 700 MHz processor
  • GPU: VideoCore IV, capable of smooth BluRay quality playback, with OpenGL ES 2.0
  • RAM: 256 MB (model A) or 512 MB (model B)
  • Connectors: USB, HDMI, Composite RCA, 3.5 mm audio jack, 10/100 Ethernet, micro USB power cord
  • Storage: SD/MMC/SDIO card
GPIO Header and PINS

         
ระบบปฏิบัติการที่รองรับการใช้งาน Respberry Pi 
  • RASPBIAN
  • PIDORA
  • OPENELEC
  • RASPBMC
  • RISC OS
  • ARCH LINUX

สามารถดาวน์โหลดได้ที่ : http://www.raspberrypi.org/downloads/