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

Bluetooth ตอนที่ 7 เขียนโปรแกรมติดต่อกับ UniconBoard


  ในบทความนี้จะเป็นตัวอย่างการเชื่อมต่อบลูทูธระหว่างโทรศัพท์มือถือระบบปฏิบัติการแอนดรอย์ที่พัฒนาด้วยโปรแกรม AppInventor ติดต่อสื่อสารข้อมูลแบบไร้สายบลูทูธโดยใช้โมดูลบลูทูธที่ชื่อว่า BlueStick ที่ทำการเชื่อมต่ออยู่กับบอร์ดทดลองไมโครคอนโทรลเลอร์ UniconBoard ที่ทำหน้าที่ประมวลผลข้อมูลต่างๆที่ถูกมาจากมือถือ 
      สร้างโปรเจ็คขึ้นมาใหม่ ตั้งชื่อตามใจชอบ  หลังจากนั้นออกแบบหน้าตาโปรแกรมดังภาพ ซึ่งประกอบด้วยคอมโพเน้นต่างๆดังนี้คือ    HorizontalArangement1,HorizontalArrangement2 , Button1,Button2 ,Notifier1,BluetoothClient1  เราสามารถปรับเปลี่ยนชื่อของคอมโพเน้นต่างๆได้ตามต้องการเพื่อให้ง่ายต่อการจำหรือการนำไปใช้งาน แล้วยังสามารถปรับแต่งปุ่มต่างด้วยรูปภาพได้ โดยแต่ละปุ่มของผมก็จะใช้สำหรับสื่อความหมายดังนี้คือ ปุ่มบลูทูธคอนเนคสำหรับเชื่อมต่อบลูทูธ  ปุ่มบลูทูธดิสคอนเนคสำหรับยกเลิกการเชื่อมต่อ  ปุ่่มหลอดไฟติด เมื่อกดแล้วไฟที่หลอด Led จะติด และหลอดไฟไม่ติด ใช้แทนการปิดไฟ หลอด Led ก็จะดับ


เปิดเครื่องมือ Blocks Editor ขึ้นมา แล้วทำการเขียนโค๊ดดังภาพ  ซึ่งแบ่งหน้าที่การทำงานเป็นสองส่วนคือ ส่วนที่เกี่ยวข้องกับการเชื่อมต่อบลูทูธ กับส่วนที่เกี่ยวข้องกับการส่งข้อมูลผ่านบลูทูธ  หลังจากเขียนโค๊ดโปรแกรมเสร็จเรียบร้อยแล้วให้ทำการดาวน์โหลดและติดตั้งโปรแกรมลงบนโทรศัพท์มือถือ หรือจะใช้วิธีการจำลองการทำงานบนโทรศัพท์มือถือก่อนก็ได้


ที่บอร์ดไมโครคอนโทรลเลอร์ UniconBoard นั้น ให้เราทำการเชื่อมต่อชุดโมดูลสื่อสารไร้สายบลูทูธ ที่ชื่อว่า BlueStick เข้ากับตำแหน่งขาพอร์ตของ UniconBoard ดังนี้คือ


ขา  RX(0) ของ UniconBoard   ต่อเข้ากับขา  TX ของ BlueStick
ขา  TX(1) ของ UniconBoard   ต่อเข้ากับขา  RX ของ BlueStick
เพื่อให้การเชื่อมต่อเป็นไปง่ายขึ้นสามารถเชื่อมต่อบลูทูธเข้ากับ ADX-Btstick ก่อนแล้วค่อยนำไปเชื่อมต่อกับ UniconBoard


BlueStick


เป็นอุปกรณ์บลูทูธที่ใช้โปรไฟล์พอร์ตอนุกรม (Serial port profile : SPP) ในการติดต่อเพื่อใช้งาน จึงเหมาะอย่างยิ่งสําหรับใชในสื่อสารขอมูลอนุกรมแบบไร้สายผานคลื่นวิทยุระบบบลูทูธ
คุณสมบัติทางเทคนิค
• ความไวในการทํางาน -80dBm
• กําลังส่งสูงสุด +4dBm
• เป็นอุปกรณ์ที่ เข้ากันได้ตามมาตรฐานบลูทูธ V2.0 + EDR (Enhanced Data Rate) ถ่ายทอดข้อมูลด้วยอัตราเร็ว 3 เมกะบิตต่อวินาที
• ความถี่ใช้งาน 2.4GHz
• เป็นอุปกรณ์บลูทูธที่ทํางานในโหมดสเลฟ และใช้โปรไฟล์พอร์ตอนุกรม (SPP)
• ระยะทําการสูงสุด 10 เมตร
• อัตราบอดตั้งต้น 9,600 บิตต่อวินาที โดยใช้รู ปแบบข้อมูล 8 บิต, บิตหยุด 1 บิต และไม่มีบิตตรวจสอบพาริตี้ หรือ 8N1
• ตั้งค่าอัตราบอดใหม่ได้ ประกอบด้วย 1200, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 บิตต่อวินาที
• รหัสประจําตัวสําหรั บใช้ในการจั บคู่ ตั้งได้ ตั้งแต่ 0000 ถึง 9999 (4 หลัก) ค่าตั้งต้นคือ 1234
• ย่านไฟเลี้ยง +3.3 ถึง +5.5V
• มีวงจรสื่อสารข้อมูลอนุกรมหรือ UART ในตัว
• มีสายอากาศติดตั้งภายในตัว
• ขนาด 1.5 ซม. x 4.0 ซม.
ในชุดประกอบด้วย : โมดูล BlueStick, คอนเน็กเตอร์ IDC ตัวผู้ 4 ขาทั้งแบบขาตรงและขางอ


ADX-Btstick



บอร์ดใช้งานโมดูล BlueStick
มีจุดต่อ IDC ตัวเมียสำหรับติดตั้งโมดูล BlueStick
จุดเชื่อมต่อ TxD และ RxD สามารถเชื่อมต่อกับคอนเน็กเตอร์ JST ของ INEX ได้


Code ตัวอย่างการรับข้อมูลผ่าน SerialPort


void setup() {
  pinMode(30,OUTPUT);
  Serial.begin(9600);
  Serial1.begin(9600);
}
void loop() {
  
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.println(inByte, DEC);  
    if(inByte==1)
    {
      digitalWrite(30,HIGH);
    }
    else {
      digitalWrite(30,LOW);

    }

  }
}

4 ความคิดเห็น:

  1. พี่ครับ ถ้าต้องการให้รับข้อมูลจาก บอร์ด unicon ผ่านทาง Bluetooth แล้วสั่งให้โทรออกทำยังไงครับพี่
    เช่น ถ้า บอร์ดส่ง เลข 1 ออกมาแล้วให้โทรออกนะครับพี่

    ตอบลบ
    คำตอบ
    1. สามารถทำได้โดยใช้คำสั่ง ByteAvailabelToRecive เพื่อตรวจสอบข้อมูลที่ถูกส่งเข้ามา หลังจากนั้นก็หาตัวแปรซักตัวเพื่อเก็บค่าข้อมูลนั้น แล้วนำตัวแปรไปใส่ในเงื่อนไขการโทรออก โดยใช้เครื่องมือ contrack picker เพื่อแสดงรายชื่อในโทรศัพท์และ phone call เพื่อโทรออกครับ

      ลบ
  2. พี่ช่วยเขียนเป็น blog ใน app inverter ให้ดูได้ใหมครับ

    ตอบลบ
  3. ROBO PICA มี port TX RX ครับแต่ไม่ทราบว่าจะใช้อุปกรณ์ BlueStick ADX-Btstick ได้ไหมครับ

    ตอบลบ