วันพฤหัสบดีที่ 1 ธันวาคม พ.ศ. 2559

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

Docker#3 Docker compose

จากความเดิมตอนที่แล้ว ( ตอนที่1 | ตอนที่ 2) ซึ่งจะเห็นได้มีขั้นตอนหลายอย่าง หากต้องมาทำทุกครั้งเวลา ติดตั้ง server ใหม่ ก็จะไม่สะดวก  คราวนี้  เราจะเขียน script ขั้นตอน ทั้งหมดไว้ในไฟล์ docker-compose.yml

Docker #2 Laravel 5.3 on LEMP stack

Laravel 5.3 on LEMP stack

วันนี้เราจะมาทดลองติดตั้ง Laravel 5.3 บน LEMP stack บน Docker

ให้ติดตั้ง PHP7 และ Composer ก่อนใน windows ให้เรียบร้อยก่อน จากนั้นให้สร้าง Laravel project ตั้งชื่อว่า blog  โดยใช้คำสั่ง

d:\docker\www> composer create-project --prefer-dist laravel/laravel blog

วันพุธที่ 23 พฤศจิกายน พ.ศ. 2559

Docker #1 (LEMP Stack)

วิธีการติดตั้ง LEMP Stack โดยใช้ Docker 


ทดลองโดยใช้ Docker Toolbox ติดตั้งเครื่องมือให้เรียบร้อย วิธีการ เริ่มจาก Setup ติดตั้ง Install Docker Toolbox และ กด Next ไปเรื่อย ๆ ก็จะได้ Docker Quick Start Terminal ซึ่งจะเป็นเครื่องมือที่ใช้ในการปรับแต่ง Docker

เมื่อเราเรียก Terminal ขึ้นมา มันจะสร้าง Virtual machine ชื่อว่า Default มี IP 192.168.99.100 ทำหน้าที่เป็น Docker Host เราจะสร้าง Container (คล้าย ๆ กับ Virtual machine แต่ใช้ Kernel ของ Host ทำให้มีขนาดเล็กลงกว่ามาก) ที่ทำงานบน Docker Host นี้อีกที

วันพฤหัสบดีที่ 17 พฤศจิกายน พ.ศ. 2559

Subnet Review

 ทบทวนก่อนไปติว CCNA1-2

HOST Subnet
1111 1111 : 255 => 1 /32
1111 1110 : 254 => 2 /31
1111 1100 : 252 => 4   (2) /30
1111 1000 : 248 => 8   (6)     /29
1111 0000 : 240 => 16  (14)    /28
1110 0000 : 224 => 32  (30) /27
1100 0000 : 192 => 64  (62)    /26
1000 0000 : 128 => 128 (126)   /25

วันพฤหัสบดีที่ 3 พฤศจิกายน พ.ศ. 2559

Mikrotik HotSpot

ในปัจจุบันนี้ มีการใช้งาน HotSpot กันแพร่หลาย เนื่องจากบริหารจัดการผู้ใช้งานระบบเครือข่ายได้ง่ายกว่าการใช้รหัสผ่านร่วมกันหลาย ๆ คน อีกทั้งยังสามารถปรับแต่งการให้บริการของแต่ละกลุ่ม แต่ละผู้ใช้ตามความต้องการ สามารถตัดการเชื่อมต่อ ตรวจสอบ และแก้ไขได้สะดวกกว่า เป็นต้น

HotSpot นั้นมักจะมากับอุปกรณ์เครือข่ายที่มีราคาแพง อย่างเช่น Cisco, Aruba ถ้าเป็น Opensource อย่าง ChilliSpot หรือ CoovaChilli ก็มีความซับซ้อนในการติดตั้งสูง และ บางตัวก็หยุดพัฒนาต่อไปแล้ว Mikrotik เป็น OS Router (รวมถึง Hardware) ที่ใช้งานง่าย ติดตั้งผ่านระบบ GUI จึงเป็นอีกทางเลือกที่นำมาทดลองใช้งาน

วันพฤหัสบดีที่ 6 ตุลาคม พ.ศ. 2559

Http Post using Loopj to Laravel 5.3

ความเดิมตอนที่แล้ว เรื่อง การ Get HTTP โดยใช้ Loopj  วันนี้ เราลองมา post ข้อมูลจาก Android ลงใน HTTP ดูบ้าง

เริ่มต้นเตรียม Post method ไว้ก่อน กรณีไม่ใช้ Laravel 5.3

ตั้งชื่อ script เช่น mypost.php (ใน web server directory)
<?php
    echo "id: ".$_POST["id"]." message:".$_POST["message"];


วันจันทร์ที่ 3 ตุลาคม พ.ศ. 2559

git for beginner

git เป็นเครื่องมือที่ใช้ในการทำพัฒนาซอฟต์แวร์เป็นทีม, ควบคุมเวอร์ชั่น, เก็บไฟล์ต่าง ๆ ที่โปรแกรมเมอร์ทุกคนควรรู้ วันนี้ มาใช้ git ในการเก็บ source code ที่เขียน และ ดึงมาใช้ แบบง่าย ๆ สำหรับผู้เริ่มต้น  ดังนี้
  1. สมัครสมาชิก  https://github.com/ ก่อน ถ้าสามารถใช้งานได้ฟรี (แต่ source code จะต้องเปิดเผยทั้งหมด) หรือถ้ามี email มหาวิทยาลัย สามารถใช้ education pack https://education.github.com/pack (จะสามารถตั้งเป็น private ได้) หลังจากสมัครเสร็จแล้ว ก็ให้ login เข้าไปสร้าง repository ได้
  2. ติดตั้ง program git client ในเครื่องผมใช้ตัวนี้ https://git-scm.com/download/win เวลาติดตั้งก็ next ไปเรื่อย ๆ เพียงเท่านี้ ก็พร้อมจะใช้งาน git ได้แล้ว
โดยผมจะแบ่งเป็น 3 วิธี คือใช้ผ่าน command line,  GUI (Sourcetree) และ ผ่าน Tool ของ Android Studio ดังนี้

วันเสาร์ที่ 1 ตุลาคม พ.ศ. 2559

Read HTTP data with LoopJ

บทนำ

Software ในปัจจุบันจะแยกการทำงานของ "Service" หรือที่เป็น back-end กับ front-end (พวก GUI ต่าง ๆ ออกจากกัน) และ นิยมแลกเปลี่ยนข้อมูลกันด้วย JSON Format บทความนี้จะแนะนำวิธีการอ่าน JSON ใน Android จาก HTTP Server  ดังนี้ (ขอแนะนำให้อ่าน PHP-Array ก่อนครับ)

Service:  Laravel 5 + MySQL
Android: loopJ

โดยปรกติ วิธีการอ่านข้อมูลจาก HTTP นั้น เราสามารถใช้ HttpURLConnection เพื่ออ่านมาเป็น InputStream ได้ แต่การใช้งานให้ดี เราควรจะต้องเขียนในลักษณะแยกการทำงาน เป็น Thread ออกไป ซึ่งมีการนำ AsynTask มาใช้ เพื่อให้โปรแกรมทำงานได้เร็วยิ่งขึ้น การเขียน AsynTask มีความซับซ้อนสำหรับมือใหม่พอสมควร (แต่ก็ต้องหัดอยู่ดีแหละ) วันนี้ ผมมี Library LoopJ มาฝากครับ

PHP Array

การประกาศตัวแปร PHP Array ใช้

$var = array("value1","value2","value3");
$var1 = array("value0", $var);

ถ้าเป็น array 2 มิติ ก็จะใช้เป็น
$var2 = array(array("value1.1","value1.2"),array("value2.1","value2.2"));

ตั้งแต่ PHP 5.3 ขึ้นไป สามารถใช [ ] แทน คำว่า array

เช่น
$var = ["value1","value2","value3"];
$var2 = [
                 ["value1.1","value1.2"],
                 ["value2.1","value2.2"]
             ];

จะเห็นได้ว่าเขียน code สั้นลง

วันศุกร์ที่ 30 กันยายน พ.ศ. 2559

Wireless Personal Area Networks

Wireless Personal Area Networks (WPAN) เป็นกลุ่มของเทคโนโลยีที่ใช้สำหรับการติดต่อในระยะใกล้ ในช่วง 10-30 เมตร เทคโนโลยีเหล่านี้ ถูกออกแบบมาใช้ในการส่งข้อมูลโดยไม่ใช้สายเคเบิ้ล ทำให้ง่ายต่อการติดตั้ง สะดวก และดูสวยงามกว่าการเดินสาย โดยเฉพาะในจุดที่การเดินสายเคเบิ้ลทำได้ลำบาก

เทคโนโลยีของ WPAN สามารถนำไปประยุกต์ใช้ได้ในหลายที่ เช่น ในระบบบ้านอัจริยะ การแลกเปลี่ยนข้อมูลระหว่างอุปกรณ์ หรือแม้แต่ใช้ควบคุมอุปกรณ์ในโรงงานอุตสาหกรรมต่าง ๆ ทำให้จัดการได้สะดวก และมีประสิทธิภาพมากยิ่งขึ้น

WPAN จะเน้นไปที่ใช้กำลังไฟฟ้าต่ำ ต้นทุนต่ำ และมีความปลอดภัย โดย WPAN จะแบ่งออกเป็น 2 กลุ่มใหญ่ ๆ คือที่เป็น Low Data Rate ได้แต่ Bluetooth, ZigBee และ High Data Rate: WirelessHD, WHDI, WiGig, UWB

Low Rate WPAN:

Bluetooth มีชื่อมาจากกษัตริย์ Harald Bluetooth จากประเทศเดนมาร์ก มีบริษัท Ericsson เป็นผู้ริเริ่มตั้งแต่ปี 1994 ส่งข้อมูลที่ย่านความถี่ 2.4 GHz ใช้ ออกแบบใช้กับอุปกรณ์ขนาดเล็ก อุปกรณ์พกพา กินกำลังไฟต่ำ ตามมาตรฐาน IEEE 802.15.1 ที่กำหนดมาตรฐานการส่งข้อมูลของ Physical layer และ Mac layer ซึ่งได้รับการรับรองในปี 2002 แต่ต่อมา กลุ่มบริษัทผู้ผลิต Bluetooth รวมตัวกัน ตั้งแต่เป็น Bluetooth SIG (Special Interest Group) ได้แต่ Sony, Nokia, Microsoft, Apple เป็นต้น และ IEEE 802.15.1 ก็เลิกพัฒนาแล้ว Bluetooth SIG จึงทำหน้าที่พัฒนาดูแลตรงนี้ต่อแทน

Bluetooth ในตอนเริ่มต้น ได้ทดสอบการส่งข้อมูลไร้สาย แทนการใช้ สาย RS-232 Serial port โดยการ พัฒนา RFCOMM ซึ่งเป็น Serial port emulator


รูปแสดง RFCOMM แทน RS-232

Bluetooth รุ่นที่ 1.1 - 1.2: สนับสนุนความเร็วสูงสุด 1 Mbps
Bluetooth รุ่นที่ 2.1: สนับสนุนความเร็วสูงสุด 2-3 Mbps
Bluetooth รุ่นที่ 3: สนับสนุนความเร็วสูงสุด 24 Mbps
Bluetooth รุ่นที่ 4: เน้นที่การประหยัดพลังงาน Bluetooth Low Energy (BLE)

Bluetooth Protocol Stack

รูปแสดง Bluetooth Protocol Stack

Physical Layer - กำหนดการส่งข้อมูลในระดับบิต แปลงบิตเป็นคลื่นวิทยุ ตามที่ออกแบบน OSI Physical Layer มี Bluetooth transceiver เป็นตัวรับส่งข้อมูล Bluetooth เฟรม ประกอบด้วย Access Code (72 บิต), Header (52 บิต) และ Payload (0-2745 บิต) ข้อมูลที่ถูกส่งจะใช้ Gaussian Frequency Shift Keying (GFSK) ร่วมกับ หลักการของ FHSS ในการส่งข้อมูล

Link Manager - จัดการการส่งข้อมูล ควบคุม Physical Link 2 ชนิด ได้แก่
  • Asynchoronous Connectionless (ACL) Link  ส่งข้อมูลแบบ packet switching สำหรับ Point-to-Multipoint แบบ Asymmetric data (ที่ความเร็ว 723.2/57.6 kbps) และสามารถ ส่ง packet ใหม่ กรณีที่เกิดข้อผิดพลาดขึ้น ACL ใช้ในการสร้าง SCO Link
  • Synchronous Connection Oriented (SCO) Link ส่งข้อมูลแบบ circuit switching สำหรับ Point-to-point  แบบ Symmetric data (ที่ความเร็ว 433.9 kbps และ 64 kbps x 3 แชนแนล สำหรับเสียง) ระหว่าง Master และ Slave ทั้ง Master และ Slave สามารถมี SCO Link ได้สูงสุดไม่เกิน 3 SCO Link 

ใน Link Mnager ใช้ 3 วิธีในการควบคุมความผิดพลาดของข้อมูล คือ Forward Error Correction (FEC) และ Automatic Retransmission reQuest (ARQ) ดังนี้
  • 1/3 FEC จะทำซ้ำข้อมูลเพิ่มจากเดิม 2 เท่า เช่น Header ของ Bluetooth มีขนาด 18 บิต หลังผ่านกระบวนการ 1/3 FEC จะทำการคัดลอกบิตเพิ่มอีก 36 บิต รวมเป็น 54 บิต ด้วยวิธีการนี้ หากมีข้อผิดพลาดเกิดขึ้น ก็สามารถแก้ไขบิตได้เลย โดยที่ไม่จำเป็นต้องส่งข้อมูลกลับมาใหม่ อย่างไรก็ดี ความเร็วในการส่งข้อมูล จะถูกลดลง เหลือ 1/3 เท่าเช่นกัน จึงไม่แนะนำให้ใช้กับข้อมูล แต่ใช้กับ ส่วนหัวข้อมูล เนื่องจากมีความสำคัญและมีจำนวนบิตไม่มากเกินไป 
  • 2/3 FEC จะทำซ้ำข้อมูลเพิ่มจากเดิมเพียง 1/3 เท่า เช่น ข้อมูล ของ Bluetooth มีขนาด 8 บิต หลังผ่านกระบวนการ 2/3 FEC มีการเพิ่มบิตจากเดิมเพียง 3 บิต (8/3 ≈ 3) รวมเป็น 11 บิต ด้วยวิธีการนี้ หากมีข้อผิดพลาดเกิดขึ้นไม่เกิน 1 บิต จะสามารถแก้ไขบิตได้เลย แต่หากผิดมากกว่านั้น สามารถตรวจสอบข้อผิดพลาดได้ แต่ไม่สามารถแก้ไขได้ จึงต้องพี่งพากลไกร้องขอการส่งข้อมูลใหม่
  • ARQ เป็นกระบวนการร้องขอให้ต้นทางส่งข้อมูลมาใหม่ จนกว่าจะได้รับการตอบรับ (Acknowledgement)  หรือหมดเวลา (timeout) ที่ถูกกำหนดไว้ในอุปกรณ์

Bluetooth Power Mode:




รูปแสดงการเชื่อมต่อของ Bluetooth และ การประหยัดพลังงาน

ใน piconet ของ Bluetooth จะมีอุปกรณ์ ทำหน้าที่เป็น Master เชื่อมต่อกับ Slave ไม่เกิน 7 ตัว และ ตัวที่เป็น Slave ก็สามารถเป็น Master ของ piconet อื่น ๆ ได้ Slave จะไม่สามารถติดต่อกันเองโดยตรงได้ โดยปรกติ หาก Slave กำลังรับส่งข้อมูลกับ Master จะอยู่ใน Active โหมด อย่างไรก็ดี Slave สามารถประหยัดพลังงาน โดยมีโหมดประหยัดพลังงาน 3 โหมด คือ โหมด Sniff จะลดอัตราการรับส่งข้อมูลลง, โหมด Hold Slave มีการเชื่อมต่อกับ Master โดยเวลายังคงเข้าจังหวะ (Synchronize) กัน และ โหมด Park เป็นโหมดที่ประหยัดพลังงานมากที่สุด หลับในช่วงเวลานานและอาจจะมาเข้าจังหวะกับ Master เป็นบางครั้ง

Logical Link Control Adaptation Protocol (L2CAP) - เป็น Logical Link Control Layer ที่รับผิดชอบเกี่ยวกับการแบ่งและรวมแพ็คเก็จ ที่รับมาจาก Layer ที่อยู่ติดกัน บริหารจัดการ การเชื่อมต่อ (Connection) รวมถึงควบคุมการไหลของข้อมูล และให้บริการ QoS ได้

Application Profile - เป็น Application ที่กำหนดการทำงานของอุปกรณ์ Bluetooth นั้น เทียบเท่ากับการทำงานใน Applciation layer ใน OSI เช่น A2DP สำหรับหูฟังไร้สาย, AVRCP สำหรับรีโมทควบคุมอุปกรณ์, และ HFP สำหรับรถยนต์เชื่อมต่อกับโทรศัพท์ เพื่อรับสาย เป็นต้น


ZigBee

เป็นชื่อของเทคโนโลยีไร้สายในการเชื่อมต่อกับอุปกรณ์ระยะใกล้ ความเร็วต่ำ (< 250 kbps) กินพลังงานน้อย แบตเตอรี่สามารถใช้งานได้นาน และสามารถเชื่อมต่อกันได้หลายรูปแบบ (เช่น แบบดาว, แบบต้นไม้,  และ แบบตาข่าย (mesh) )

ZigBee จะแบ่ง Node ออกเป็น 3 ชนิดคือ
  1. Reduced Function Device (RFD) - คือ อุปกรณ์ปลายทาง เช่น สวิทช์ โคมไฟ ไม่สามารถจะส่งต่อแพ็คเก็จข้อมูลได้
  2. Full Function Device (FFD) คือ อุปกรณ์ Zigbee ที่สามารถส่งต่อมูลได้
  3. PAN Coordinator คือ อุปกรณ์ Zigbee ที่เป็น FFD ตัวแรก ที่จัดตั้งเครือข่าย piconet ขึ้นมา โดยส่วนมากจะเป็น Sink Device เช่น โทรศัพท์ PAN Coordinator มีหน้าที่กำหนดเวลา เพื่อใช้ในการเข้าจังหวะ การเชื่อมต่อระบบเครือข่าย รวมถึงสามารถทำ QoS กำหนดความสำคัญของโหนดต่าง ๆ ที่ใช้สิทธิ์ในการส่งข้อมูล


รูปแสดงตัวอย่าง ZigBee Topology
(จาก http://www.icpdas-usa.com/images/zigbee_topology.jpg)

ZigBee ใช้วิธีการส่งข้อมูลแบบ DSSS โดยแบ่งเป็น 27 channel ของ 3 ช่วงความถี่ คือ 
  1. 868 MHz (1 channel กว้าง 600 kHz) มีใช้ในยุโรป ส่งข้อมูลที่ความเร็วสูงสุด 20 Kbps
  2. 915 MHz (10 channel แต่ละ channel กว้าง 2 MHz) มีในในอเมริกา และ ออสเตรเลีย ส่งข้อมูลที่ความเร็วสูงสุด 40 Kbps
  3. 2.450  GHz ใช้งานทั่วโลก (16 channel แต่ละ channel กว้าง 5 MHz) ซึ่งเป็นช่วงความถี่ที่กว้างมากที่สุด มีใช้งานในประเทศไทย (XBee) ส่งข้อมูลได้ที่ความเร็วสูงสุด 250 Kbps 

การส่งข้อมูลของ Zigbee จะใช้ superframe โดยจะมี beacon เป็นข้อมูลอธิบายข้อมูลของ superframe คือ ซึ่ง แบ่งเป็น 2 ส่วน 
  •  Content Access Period (CAP) อุปกรณ์ใน piconet จะใช้ CSMA/CA เพื่อขอใช้สิทธิ์ในการส่งข้อมูล
  • Guaranteed Time Slots (GTS) ใช้สำหรับข้อมูลที่มีความสำคัญ โดย PAN จะเป็นคนกำหนด frame interval ว่าให้ โหนดใด ใน piconet มีสิทธิ์ในการส่งข้อมูล (หรืออาจจะไม่ใช้ GTS แล้วกำหนดเป็นช่วงเวลา CAP แทนก็ได้)

การเชื่อมต่อ piconet ของ ZigBee จะแบ่งเป็น 2 แบบคือ
  • child piconet: PicoNet Coordinator (PNC) มี piconet เป็นของตัวเอง แต่เป็น child ให้กับ piconet วงอื่น ในลักษณะของ parent piconet
  • neighbour piconet: PNC มี piconet เป็นของตัวเอง แยก piconet กัน และติดต่อระหว่าง piconet กันเอง เพื่อใช้ synchronize เวลาสำหรับการรับส่งข้อมูลระหว่าง piconet กัน


High Rate WPAN:

High Rate WPAN คือเทคโนโลยีไร้สายระยะใกล้ที่ออกแบบมาเพื่อใช้กับการส่งข้อมูลความเร็วสูง เช่น วิดีโอที่ไม่มีการบีบอัด พหุสื่อ (Multimedia) ต่าง ๆ กินกำลังไฟน้อย ต้นทุนต่ำ เชื่อมต่อได้ง่าย อัตโนมัติ สามารถรับประกันการให้บริการได้ รวมถึงมีบริการด้านความปลอดภัย ซึ่งมีมาตรฐานที่น่าสนใจ 3 แบบ คือ WHDI, WirelessHD, และ WiGig (อยู่ระหว่าง WPAN/WLAN ระยะการเชื่อมต่อ 30-100 เมตร)

WHDI
Wireless Home Digital Interface (WHDI) เป็นมาตรฐานของคุณสมบัติอุปกรณ์ไฟฟ้าที่เชื่อมต่อกับโทรทัศน์ที่มีความละเอียดสูงแบบไร้สาย โดยการส่งวิดีโอความละเอียดสูง (1080p) จากเครื่องเล่นวิดีโอ เช่น บูลเรย์ดีวีดี หรือ โทรศัพท์มือถือ และอุปกรณ์อื่น ๆ ที่สนับสนุน WHDI ออกแบบและพัฒนาโดยกลุ่มบริษัทชั้นนำต่าง ๆ  เช่น AMIMON, Sony, Samsung, LG, Sharp เป็นต้น นอกจากนี้ WHDI ยังสนับสนุนการเชื่อมต่อ HDMI รวมถึงระบบการป้องกันการคัดลอกวิดีโอด้วย

แม้ว่าตัวแนวคิดของ WHDI ในการส่งข้อมูลด้วยความเร็วสูงจะแพร่หลาย แต่รายละเอียดทางเทคนิคทั้งหมด ไม่ได้เป็นมาตรฐานเปิดเหมือนมาตรฐานของ IEEE การสนับสนุนของอุปกรณ์ต่าง ๆ จะจำกัดมากกว่ามาตรฐานอื่น

WirelessHD
WirelessHD เป็นการส่งข้อมูลที่ความถี่ 60 GHz สนับสนุนความเร็ว 10-28 Gbps ในระยะ 10 เมตร พัฒนาตามมาตรฐาน 802.15.3c (มาตรฐานนี้ หยุดพัฒนา เมื่อเดือน พ.ย. 2009) เพื่อใช้ส่งวิดีโอความละเอียดสูง มีบริษัทหลายบริษัทเข้าร่วม เช่น Sony, Dell, Sharp เป็นต้น มีสินค้ามากมาย เช่น คอมพิวเตอร์พกพา  โปรเจคเตอร์ ตัวส่งวิดีโอไร้สาย เป็นต้น

WirelessHD แบ่ง Physical Layer ออกเป็น 3 โหมด

  • Low Rate Physical (LRP) ส่งข้อมูลที่ความเร็ว 2.5 - 40 Mbps
  • Medium-or-High Rate Physical (MHRP) 476 Mbps - 2 Gbps
  • High Rate Physical (HRP) ส่งข้อมูลที่ความเร็ว 7-25 Gbps

 สนับสนุน HDMI และ USB และมีการใช้เทคนิค Spatial multiplexing ในเมื่อส่งข้อมูลด้วยความเร็วสูง


รูปแสดง การส่งข้อมูลโดยใช้เทคนิค Spatial Multiplexing

Spatial multiplexing เป็นการแบ่งเฟรมออกเป็นขนาดเล็ก ๆ ของแต่ละสตรีมข้อมูล แล้วแยกส่วนส่งไปตามเสาอากาศหลายเสาพร้อมกันแบบขนาน เพื่อเพิ่มความเร็วในการส่งข้อมูล และยังใช้งานร่วมกับเทคนิคบีมฟอร์มมิ่งในการเพิ่มความถูกต้องของข้อมูล


WiGig
WiGig ถูกพัฒนาจาก WiFi ที่ใช้ส่งข้อมูลระหว่างอุปกรณ์อิเล็คทรอนิคต่าง ๆ เช่น โทรศัพท์มือถือ แท๊ปเล็ต และ เซ็นเซอร์ต่าง ๆ จนไปถึงยุคของ Internet of Things (IoTs)  WiGig ถูกกำหนดภายใต้ IEEE802.11ac ทำงานที่ความถี่ 5 GHz ซึ่งเป็นที่นิยมในประเทศไทย และ IEEE802.11ad ทำงานที่ความถี่ 60 GHz มีความเร็วสูงสุดถึง 7 Gbps

มี Protocol Adaptation Layer (PAL) เพื่อช่วยในการเป็นตัวกลางของการติดต่อระหว่างชั้น MAC กับ อุปกรณ์วิดีโอต่าง ๆ เช่น HDMI, USB 3.0, PCIe เป็นต้น

นำเทคนิค Beamforming มาช่วยทำให้การส่งสัญญาณจากผู้ส่ง ส่งไปหาผู้รับได้ชัดเจน มีประสิทธิภาพมากยิ่งขึ้น เทคนิคนี้อาศัยการป้อนข้อมูลกลับจากผู้รับ เพื่อให้ผู้ส่งปรับ เฟส และ แอมพลิจูน รวมถึงพารามิเตอร์อื่น ๆ ให้ส่งไปยังผู้รับได้ถูกต้องมากยิ่งขึ้น นั่นหมายความว่า ผู้ส่งจะต้องมีหน่วยความจำ หน่วยประมวลผล ที่มากกว่าเดิม เพื่อคำนวณเรื่องนี้ และ ถูกกำหนดเป็นมาตรฐานของ IEEE802.11ac และ IEEE802.11ad ด้วย

IEEE802.11ad ในช่วงความถี่ 60 GHz รวมถึงการ compatible กับ WiFi ในย่าน 2.4 และ 5 GHz ใช้การมอดูเลชั่น 2 แบบคือ (1) Single-carrier สำหรับอุปกรณ์พกพา เพราะใช้พลังงานน้อยกว่า สนับสนุนที่ความเร็วสูงสุดถึง 4.6 Gbps  (2) OFDM สนับสนุนการส่งข้อมูลที่ความเร็วการส่งข้อมูลสูงสุดถึง 7 Gbps

รายละเอียดของ WiGig จะอธิบายเพิ่มเติมในเรื่อง WLAN กับ IEEE 802.11 series

วันเสาร์ที่ 3 กันยายน พ.ศ. 2559

Hadoop training #day3


Impala เป็นตัว query คล้ายกับ Hive แต่เป็น in-memory database ที่ไม่ได้ใช้ MapReduce

Flume ใช้ในการจัดการ data stream ลักษณะของ log ประกอบด้วย

  • source (ที่มาของ streamming เช่น log ของ web server, twitter) 
  • sink (ปลายทาง hdfs) แล้วนำมาใช้ใน hive ต่อไป
zookeeper: ไว้ monitor health (Fail-Over)

เปลี่ยนเป็น text mode:  
systemctl set-default multi-user  (ครั้งต่อไป)
systemctl get-default   (ครั้งต่อไป)

ปัจจุบัน:  init 3

Spark: ทำงานเร็วกว่า Map Reduce 100 เท่า ใน memory และ 10 เท่า ใน disk (ไม่ใช้ MapReduce)
แต่ต้องเขียน code ซึ่ง สนับสนุน Java Scala Python R มาด้วย component ย่อย ๆ 
SQL, Streamming, MLib และ GraphX

spark-master ทำงาน namenode, 
spark-worker ทำงานที่ datanode

Presto เป็น เครื่องมือทำ Distributed SQL (พัฒนา โดย Facebook) สำหรับ Big Data เช่น Active Query 300 PB data warehouse มากกว่า 30,000 query  มี Airbnb, dropbox ก็ใช้ Presto

Presto ใช้ Hive metastore เท่านั้น ไม่ได้ใช้ feature SQL (beeline)  มี Presto (Coordinator - Worker) คล้ายกับ Spark ไม่ใช้ Map Reduce ทำงานได้ เร็วกว่า Hive เพราะทำงานเป็น in Memory

WebHDFS เป็น HTTP Rest API ยิงข้าม service เป็น WebHDFS กับ HttFS สามารถ download/upload file เข้าสู่ datanode โดยขอติดต่อที่ namenode ก่อน แล้ว namenode จะ redirect ไปยัง datanode ที่รับผิดชอบเอง เมื่อ datanode ที่รับผิดชอบได้ไฟล์แล้วก็จะมาทำสำเนา replicate ระหว่าง datanode เองภายหลัง

Cobbler เป็น Linux server provisioning tools มี dhcp เพื่อให้เครื่องลูกที่เปิดมา เชื่อมต่อและ download image ไปติดตั้ง คล้ายกับ Norton Ghost



Hadoop Training #day2

ตัวข้อมูลของ Big Data ใหญ่จนไม่สามารถนำมารวมกันประมวลผลครั้งเดียวได้ (TB หรือ PB) แต่ในทางกลับกัน โปรแกรมที่ประมวลมีขนาดเล็ก (ไม่กี่ MB) ทำให้เรากระจายโปรแกรม ไปประมวลผลกับข้อมูลที่กระจายไปอยู่ในที่ต่าง ๆ ข้อมูลอยู่ที่ไหน เครื่องนั้นต้องประมวลผล เป็นลักษณะ Batch processing

Hadoop เริ่มแรกมีข้อจำกัด เกี่ยวกับการแบ่งงานไปให้ Map/Reduce จึงได้พัฒนาการจัดการกับ namenode โดยใช้ YARN (Yet Another Resource Negoitator) เข้ามาช่วยจัดการ ประกอบด้วย Resource manager ที่มาแทน Task Tracker

กำหนด memory และ cpu core ให้กับ yarn สำหรับ namenode และ datanode ใน yarn-site.xml

Cloudera Hadoop (CDH) = opensource software distro ที่เอา CentOs มา onTop

Hadoop platform
  • Cloudera
  • Hartonwork
  • MapR
 ทดลอง ใช้ Map/Reduce กับโปรแกรม wordcount.java

Hive
Hive เป็นงานของ Data Warehouse ไม่เน้น insert, delete, update แต่เน้น select เพื่อวิเคราะห์ข้อมูล โดย facebook พัฒนา HiveQL ให้ใกล้เคียง standard SQL มากที่สุด (SQL interface สำหรับ MapReduce) ปัจจุบันเปลี่ยนเป็น beeline

Mahout (มา-ฮู) เป็นเครื่องมือทำ Machine learning

Yarn พัฒนา Resource manager เพื่อเปิดโอกาสให้ data processing ตัวอื่น (นอกเหนือจาก Map Reduce ทีเป็น Hadoop version แรก) เข้ามาร่วมประมวลผลด้วย

Sqoop
เป็นเครื่องมือที่ใช้ในการ import/export ข้อมูลระหว่าง mysql (MariaDB) กับ File
ปัญหา JAVA_HOME ต้องไปแก้ใน /etc/default/bigtop-utils เพิ่ม export JAVA_HOME=/opt/jdk1.8.0_92/

Hue
GUI สำหรับใช้งาน hadoop




วันพฤหัสบดีที่ 1 กันยายน พ.ศ. 2559

tmux note

tmux
Ctrl+B (ปล่อย keyboard) Shift+"  (แบ่งแนวนอน)
Ctrl+B (ปล่อย keyboard) Shift+%  (แบ่งแนวตั้ง)

Ctrl+B  (ปล่อย keyboard) Left arrow (move left screen)
Ctrl+B  (ปล่อย keyboard) Right arrow (move right screen)
Ctrl+B  (ปล่อย keyboard) Up arrow (move Up screen)

Ctrl+B (ปล่อย keyboard) [  (ปล่อย) สามารถเลื่อนจอได้  กด q ออก

Hadoop Training #day1

Step (1 ก.ย. 59) :

  • เตรียม Virtual machine โดยใช้ CentOS 
    • Virtualbox + Enable Virtualization Technology + Oracle Virtualbox Extension pack
[root@localhost ~]# lsb_release
LSB Version: :core-4.1-amd64:core-4.1-noarch

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • เตรียม Network ภายใน โดยการเลือก สร้าง Nat Network ของ Virtual Box ก่อน และ เลือกให้ VM (CentOS) นั้น ใช้ Nat Network ที่สร้างขึ้นมา (ใน Virtual box นั้น โหมด NAT กับ NAT Network ต่างกัน ตรงที่ VM ที่ กำหนดเป็น NAT จะอยู่กันคนละ Network โดยใช้ Network interface ของ Host ในการเชื่อมต่อ Internet แต่ถ้าเป็น NAT Network VM แต่ละตัวที่อยู่ใน Host จะสามารถเชื่อมต่อถึงกันได้ และสามารถเชื่อมต่อ Internet ได้ 
  • จากนั้นให้ Disable SELinux เพื่อไม่ให้ระบบความปลอดภัยของ Linux มา Block การทำงาน เพราะ SE Linux จะสนใจเฉพาะ Policy ต่าง ๆ ไม่ดู Permission (ไม่สนใจ iptables)
  • add Trust network (10.0.2.0/24 ของ NAT Network) ใน Firewalld (ที่ไปเรียกใช้ iptables)
  • กำหนดให้ network interface ทำงานโดยอัตโนมัติเวลาเปิดเครื่อง (Connect automatically)
  • กำหนดชื่อเครื่องใน /etc/hosts
  • ติดตั้ง java พร้อม run alternatives เพื่อให้เลือกใช้ java ที่ติดตั้งใหม่
  • disable yum repository ทั้งหมด และใช้ cdh repository แทน
[root@localhost Hadoop]# rpm -ivh cloudera-cdh-5-0.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:cloudera-cdh-5-0                 ################################# [100%]
  • จากนั้นแก้ไข repository ให้ใช้ packet ใน localhost และ ทำ clone vm รวมทั้งหมดเป็น 3 vm
ทำการ clone vm เป็น 3 vm กำหนด แรม 3.5 GB ให้กับ namenode และ 1 GB ให้กับ datanode

ตรวจสอบค่า IP กับ /etc/hosts ว่าตรงกันหรือไม่ สามารถ ping กันได้ทุกเครื่องไหม

กำหนด share folder ให้ name node เพื่อสามารถเข้ามาเอาไฟล์ repository ที่จะใช้ติดตั้ง hadoop
และ start web server ( systemctl start httpd และ systemctl enable httpd เพื่อให้ start ทุกครั้งที่เปิดเครื่อง)

setup SSH Key โดย ssh-keygen เพื่อให้ ssh ข้ามเครื่องโดยที่ไม่ได้ใส่ password

Hadoop configuration

core-site.xml: hdfs default File system เพื่อกำหนดว่าหัวหน้า (namenode) อยู่ที่ไหน พอร์ตไหน

hdfs-site.xml: เป็น hadoop configuration

  • namenode ดูแล metadata ที่เป็นข้อมูล file:///hadoop/name เพื่อเก็บ metadata,
  • datanode.data.dir บอกว่า datanode เก็บ data ที่ไหน (file:///hadoop/data)
  • dfs.replication บอกว่าทำกี่สำเนา (ถ้าไม่ใส่ default คือ 3 สำเนา)
  • dfs.permissions.superusergroup กำหนด group ของ user ชื่อว่า hadoop
หลังจาก start namenode web server แล้ว ตรวจสอบที่ พอร์ต  http://namenode1:50070 สามารถตรวจสอบ สถานะ และ การอ้างอิง datanode (หลังจากที่ start hdfs service ของ datanode แล้ว)

Introduction to Hadoop

Hadoop เป็นเครื่องมือที่ใช้ทำ Big Data
Big Data ประกอบด้วย

  • Volume - ข้อมูลมีขนาดใหญ่ ปริมาณมาก ระดับ Terabytes
  • Velocity - ข้อมูลมาเร็ว เช่น Facebook
  • Variety - ข้อมูลมีความหลากหลาย ไม่ใช่มีแค่ตารางในระบบฐานข้อมูล เช่น ไฟล์รูป วิดีโอ ไม่มีโครงสร้าง (unstructured) หรือ เป็นกึ่งโครงสร้าง เช่น JSON Format 
งาน Big Data ใช้ศาสตร์เดิมคือ Data Warehouse และ Data Mining มี Tool เก่า ๆ เช่น Matlab, spss sas ซึ่งใช้งานบนเครื่องเดียว ในส่วนของ Hadoop จะประมวลผลหลายเครื่อง ระบบ distributed

ตัวอย่าง 
Google มีข้อมูลที่ต้องประมวลผล ระดับ PB (1 PB = 1000 TB), Facebook ระดับ 600 TB
hdcservice.moph.go.th เก็บข้อมูลของกระทรวงสาธารณสุข ตามดู KPI ซึ่งต้องเอาข้อมูลจากโรงพยาบาลทั้งประเทศ ถูกส่งไปยังสาธารสุขจังหวัด (100 ล้านเรคคอร์ด) และ ส่งต่อมายังกระทรวง (1000 ล้านเรคคอร์ด) แต่ละโรงพยาบาลมีการเก็บข้อมูลไม่เหมือนกัน

ปัจจุบัน กระทรวงกำหนด โครงสร้าง และ ให้แต่ละจังหวัดส่งมารวม แต่ปัญหาคือ เก็บข้อมูลได้ไม่ครบ และเวลา Query ก็ใช้เวลานานมาก ก็เลยใช้ระบบ Distributed ช่วย โดยการตั้ง Server ของแต่ละจังหวัด และ ใช้ Hadoop เขียน SQL ไป query จาก 9 เครื่องของแต่ละจังหวัด จะเร็วกว่า Query พันล้านเรคคอร์ด ในเครื่องที่กระทรวงเครื่องเดียว

โครงการ Open Computer Project:
Facebook ในยุคแรก มีเครื่องที่มี power supply 1 ตัว และ harddisk แบบง่าย ๆ ไม่มีการทำ hotswap และ RAID แต่อย่างใด แต่ใช้ software ในการจัดการ

โครงการ Facebook และ Google ใช้ Opensource เป็นส่วนใหญ๋ เช่น Linux, Java MySQL, Hadoop

Hadoop คืออะไร?
Hadoop เริ่มจาก Google ในปี 2004 ที่ตีพิมพ์บทความวิจัย MapReduce และ GFS (Google File System) ที่ใช้ในการเก็บ Link ทั่วโลก เพื่อทำ Search Engine จากนั้น Mr. Dough Cutting สร้างโครงการ MapReduce และ HDFS (Hadoop File System) ที่ชื่อ Hadoop เพราะลูกเล่นตุ๊กตาช้าง และ ตุ๊กตาตัวนี้ ชื่อว่า Hadoop เกิดมากลางปี 2006 มีบริษัทใหญ่ ๆ มาร่วมด้วยจำนวนมาก

Yahoo มาร่วมทดลองเป็นคลัสเตอร์ 4000 โหนด และ Facebook พัฒนา SQL เพื่อให้ Query ได้

Map Reduce - เป็น Job scheduling เพื่อประมวลผล เขียนด้วย Java สืบทอดคลาส Map Reduce
HDFS - เป็น file system ที่ถูกจัดเก็บในหลาย ๆ เครื่อง

ทีม Facebook ไม่อยากที่จะ Java (MapReduce โดยตรง) ก็เลยพัฒนาเครื่องมือที่ชื่อว่า Hive มา Ontop MapReduce โดยการเขียน SQL Command โดยอิงจาก SQL standard และ Hive จะแปลงเป็น MapReduce ของ Java มา และจากนั้นก็มีเครื่องมือต่าง ๆ มากมาย เพื่อใช้แปลงเป็น MapReduce

HDFS Data Replication
ทำสำเนาข้อมูลข้ามเครื่อง (datanodes) เป็นเครื่องที่เก็บข้อมูล ไฟล์ที่ลงมาเก็บจะถูกหั่นเป็น block มีขนาดคงที่ (128 MB) ถ้าไฟล์ใหญ่กว่านั้น ไฟล์ก็จะถูกหั่น (part-0, จำนวนสำเนา r:2, บล็อคข้อมูล {1,3})
ค่า default ในการทำสำเนา มี 3 สำเนา กระจายไป 3 เครื่อง เสมือนเป็น RAID ข้ามเครื่อง ถ้าเครื่องไหนพัง สำเนาข้อมูลไม่ครบ เครื่องที่เหลือ ก็จะโดนทำสำเนาให้ครบ 3 โดยอัตโนมัติ (ถ้ายังมีที่ว่าง) ทันที ขึ้นกับว่าในเครื่องมีเนื้อที่เหลือขนาดไหน และเป็นการทำ Load balance เพื่อช่วยในการเข้าถึงข้อมูลได้อีกด้วย

การแบ่ง block 128 MB ของ HDFS นั้นเป็นการแบ่งในเชิง logical ถ้าเข้าไปดูไฟล์ที่เก็บใน /hadoop/data ก็จะเห็นว่าไฟล์ไม่เกิน 128 MB แต่ถ้าเกินไฟล์ก็จะถูกหั่นและมีไฟล์ที่เก็บ metadata ในการกำหนดจำนวน block (แบบ logical) สามารถสั่ง cat ต่อไฟล์ binary file กันได้เลย

ในกรณีที่เครื่องที่ล่ม กลับคืนมา มันก็จะลบ สำเนาที่ทำเพิ่ม และ ใช้ข้อมูลเดิม แต่ถ้าข้อมูลใหม่มีการ update ระบบจะตรวจสอบเวลา ว่าอันไหน ใหม่กว่า (ทุกเครื่องต้อง sync NTP กัน) และ ก็จะ copy มาทับในเครื่องเดิมที่ล่มไป และ ก็ลบสำเนาใหม่ที่เพิ่มมา หรืออาจจะตรวจสอบก่อนว่าลบเครื่องเก่าที่ up ขึ้นมาใหม่

ข้อพิจารณา: พื้นที่ 25 % ถูกกันไว้สำหรับทำ MapReduce (เสมือนกับการทดเลข) และ 75% / 3 ทำ 3 สำเนา เป็นพื้นที่จริงที่เหลือให้ใช้งาน (25%) แต่เราสามารถใช้เครื่อง Desktop ธรรมดา ใส่ Harddisk 4 ลูก ทำเป็น low cost server ได้ ไม่ทำ raid มี power supply เดียว

HDFS Architecture
ประกอบด้วย Namenode (เสมือนเป็นหัวหน้า) ดูแล metadata ของ Datanode ทั้งหมด เพื่อ หาที่อยู่ของชิ้นไฟล์ที่ถูกแบ่งว่าอยู่ที่ไหน และให้ Client เข้าไปเอาเอง หรือ เพื่อให้ Client เข้าไปเขียนไฟล์  ถ้าหัวหน้าล่ม (namenode down) ตัวที่เป็น namenode ในระบบ production จะถูก set เป็น High Availability (HA) ถ้าเครื่องที่ 1 ล่ม อีกเครื่องสามารถมาแทนได้

 ในระบบใหญ่มากจะใช้ secondary name node ซึ่ง มีได้หลายเครื่อง เพื่อช่วย namenode หลัก แต่ถ้า namenode หลักล่ม ก็จะล่มไป (คนละแบบกับ HA mode)

แต่ละเครื่องที่ใช้สามารถมีเนื้อที่ Disk ไม่เท่ากันได้ แต่ไฟล์มันจะไม่เกลี่ยกัน (ต้องตรวจสอบเครื่องมือที่ใช้เกลี่ยไฟล์)

Note: Hadoop ต่างกับ noSQL ตรงที่ noSQL เน้นการ read data เป็นหลัก ดังนั้น noSQL จะ write ที่จุดเดียว และ มีการสั่ง replicate ไปหลาย ๆ โหนด เพื่อให้ read ได้จากหลายโหนด แต่ Hadoop จะ write ได้หลายที่ และ มีการทำสำเนา



วันอังคารที่ 30 สิงหาคม พ.ศ. 2559

CDMA Simple Example

การเข้ารหัสแบบ CDMA เป็นการนำข้อมูลไปรวมกับ ชุดรหัส ใน WLAN จะเรียกว่า Barker code ถ้าในระบบ Cellular จะเรียกว่า Chipping code หรือ Pseudo Noise code (PN code) ซึ่งเป็นการทำให้ข้อมูลมีความซ้ำซ้อน (redundant) ทำให้ทนต่อสัญญาณรบกวนได้มากขึ้น สามารถใช้ช่วงความถี่ได้เต็มประสิทธิภาพ โดยที่ไม่ต้องแบ่งความถี่เหมือน FDMA และ ไม่ต้องแบ่งเวลาเหมือน TDMA แต่ใช้ Code ในการแบ่งแทน

เช่น
ระบบนี้ มีผู้ใช้ 3 คน กำหนด บิต 0 แทนด้วยข้อมูล +1 โวลท์ และ บิต 1 แทนด้วยข้อมูล -1 โวลท์ ให้นำข้อมูลมา XOR (เหมือนกันได้ 0 ต่างกันได้ 1) กับ PN Code เพื่อเข้ารหัสข้อมูลก่อนจะส่งไป ซึ่งเป็นหลักการของ Spread Spectrum โดยเทคนิค DSSS ที่ได้กล่าวมาแล้ว

ข้อมูลผู้ใช้ 1 เมื่อรวมกับ PN Code ได้ผลลัพท์เป็น XOR D1

ข้อมูลผู้ใช้ 2 เมื่อรวมกับ PN Code ได้ผลลัพท์เป็น XOR D2

ข้อมูลผู้ใช้ 3 เมื่อรวมกับ PN Code ได้ผลลัพท์เป็น XOR D3



ข้อมูลที่ได้จากการ XOR ของทุกคน จะถูกเอามารวมกันได้เป็น Composite waveform เดียว ที่ฝั่งข้อมูลของผู้ใช้ 3 คนแล้ว ซึ่ง Composite waveform นี้เอง คือสัญญาณที่ส่งไปยังผู้รับ หากต้องการถอดรหัสข้อมูลของผู้ใช้แต่ละคน สามารถใช้ PN Code ของผู้ใช้คนนั้น ในการถอดรหัสต้นฉบับออกมาได้ ดังนี้


นำ Composite waveform มาคูณกับ Code ในแต่ละบิต และหาผลรวมของแต่ละบิตข้อมูล จากนั้นให้หารด้วยจำนวนบิต ก็จะได้ค่าโวลท์ที่เป็นข้อมูลเริ่มต้น สามารถแปลงโวลท์ ที่ได้เพื่อหาบิตข้อมูลได้


ทำกระบวนการเดียวกัน สำหรับผู้ใช้คนที่ 2 และ 3



เบื้องหลังการทำงาน
เนื่องจากการนำบิตมาเข้ารหัส โดยทดสอบให้บิต 0 มีค่าเป็น 1 โวลท์ และ บิต 1 มีค่าเป็น -1 โวลท์ ค่าของผลคูณของโวลท์ จะมีค่าเทียบเท่ากับการทำ XOR ที่ใช้ DSSS



แต่ถ้ากำหนดบิต 0 เป็น -1 โวลท์ และ บิต 1 เป็น 1 โวลท์ เมื่อนำมาคูณกัน ผลคูณจะเทียบเท่ากับ XNOR เพื่อให้สอดคลองกับการทำงานของ DSSS ที่ใช้ PN Code ไป XOR กับข้อมูล ในการทดลองอันนี้ จึงกำหนดค่าของบิต 0 เป็น 1 โวลท์ และ บิต 1 เป็น -1 โวลท์แทน


ถ้าหารเรานำ PN Code ทั้งหมด มาคูณกันแล้วบวกกันทั้งหมดจะเห็นได้ว่าผลรวมสุดท้ายจะมีค่าเป็น 0 เนื่องจากว่า PN Code ของทุกผู้ใช้ที่รวมกันจะต้องหักล้างกันหมด หรือที่เรียกว่า ออโทกอแนล (Orthogonal) กัน ถ้าไม่หักล้างกันพอดี ก็จะไม่สามารถใช้ PN Code ในการเรียกข้อมูลที่ผสมเข้าไปของแต่ละคนออกมาได้ 

ทดลองกำหนดข้อมูลของผู้ใช้แต่ละคนอยู่ในรูปของตัวแปร d1, d2 และ d3 จะเห็นได้ว่าข้อมูลเมื่อนำมาคูณกันและบวกทั้งหมด หลังจะสามารถถอดค่าของข้อมูลดังเดิมตามตัวอย่างนี้



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

Workshop #1: Wireless Power Transmitter

ทดลองสร้างวงจร ที่ผลิตคลื่นวิทยุเองแบบง่าย ๆ โดยใช้หลักการของการจ่ายกระแสไฟฟ้ากระแสตรง 9 โวลท์ ให้กับตัวเก็บประจุ (C) ซึ่งตัวเก็บประจุ จะทำการสะสมประจุไฟฟ้าไว้ (Charge) จนเต็ม แล้วก็จ่ายไฟ (Discharge) ให้กับ ตัวเหนี่ยวนำ (L) แล้วก็กลับมาสะสมใหม่ สลับไปมา  เมื่อมีกระแสไฟฟ้าผ่านตัวเหนี่ยวนำ มันก็จะสะสมไฟฟ้าไว้ ชั่วคราวในรูปของสนามแม่เหล็ก เมื่อกระแสไฟฟ้ามีการเปลี่ยนแปลง จากการจ่ายของตัวเก็บประจุ ก็จะทำให้สนามแม่เหล็กเปลี่ยนแปลง

เมื่อมีการนำขดลวดอีกชุด มาวางใกล้กัน ในตำแหน่งที่พอเหมาะ สนามแม่เหล็กของขดลวดชุดแรก ก็จะเหนี่ยวนำ ให้เกิดสนามแม่เหล็กในขดลวดชุดที่สอง พอเกิดสนามแม่เหล็กในขดลวดชุดที่สอง ก็จะมีสนามไฟฟ้าเกิดขึ้น ทำให้เกิดเป็นแรงดันไฟฟ้า ตามกฎการเหนี่ยวนำแม่เหล็ก นำไปขับให้ LED สามารถติดไฟได้ ซึ่งเป็นหลักการเดียวกับการทำเครื่องชาร์จไฟฟ้าไร้สาย ที่ชาร์จไฟโทรศัพท์มือถือในปัจจุบันนี้เอง เรียกว่า Inductive charging



ทดสอบได้ โดยใช้วงจรอย่างง่าย ๆ ดังนี้




อุปกรณ์: 
ตัวเก็บประจุ 2A104J 100nF, ตัวเหนี่ยวนำ BD139 100 µH, ตัวต้านทาน, แบตเตอรี่, ขดลวดทอดแดง, LED

ทดสอบผลการทำงาน
เมื่อเลื่อนชุดขดลวดที่ต่อกับ LED มาใกล้ จะทำให้หลอด LED ติด

ตรวจวัดความถี่จาก oscilloscope วงจรที่สร้างส่งความถี่ออกมาประมาณ 39 MHz


แล้วก็ใช้ SDR ตรวจความถี่ดูอีกที พบว่าความถี่กลางอยู่ที่ประมาณ35 MHz แล้วก็มี 50 kHz harmonic 



Prototype: Kullawat Chaowanawatee
เรียบเรียง: Warodom  Werapun
Reference: http://www.instructables.com/id/Easy-Wireless-LEDs/?ALLSTEPS

Radio Frequency Communications

คลื่นวิทยุ เป็นตัวกลางที่ได้รับความนิยมสูงสุดในการส่งข้อมูลแบบไร้สาย ส่วนประกอบต่าง ๆ ที่จำเป็นในการการสร้างแหล่งกำเนิดคลื่นแม่เหล็กไฟฟ้า เพื่อให้มีคลื่นวิทยุแผ่กระจายออกไปนั้น จำเป็นต้องมี 4 องค์ประกอบพื้นฐานดังนี้

  1. ตัวกรอง (Filter)
  2. ตัวผสม (Mixers)
  3. ตัวขยายสัญญาณ (Amplifier)
  4. เสาอากาศ (Antenna)

ตัวกรองความถี่
ตัวกรองความถี่ ทำหน้าที่ในการกรองความถี่ ที่ไม่ต้องการออกไป โดยใช้หลักการของ ตัวต้านทาน ตัวเหนี่ยวนำ และ ตัวเก็บประจุ (RLC) ที่มีการตอบสนองต่อความถี่ต่างกัน ในการกำหนดความถี่ที่เราต้องการ เช่น L มีค่าความต้านทานของขดลวดต่อกระแสไฟฟ้าสลับ (เป็นค่าเฉพาะของตัวอุปกรณ์)  = 2ϖfL  ซึ่งหมายถึง ถ้ามีความถี่สูง ความต้านทานจะมีค่ามาก นั่นคือ L สามารถนำมาใช้ทำวงจร กรองความถี่สูง (เพราะ f มาก ความต้านทานมาก)  ในขณะเดียวกัน  C มีค่าความต้านทานในการเก็บประจุ (เป็นค่าเฉพาะของตัวอุปกรณ์) =  1/(2ϖfC) ซึ่งหมายถึง ถ้ามีความถี่สูง ความต้านทานจะมีค่าน้อย นั่นคือ C สามารถนำมาใช้ทำวงจร กรองความถี่ความถี่ต่ำ (เพราะ f มาก ความต้านทานน้อย) ทำให้สามารถกรองความถี่ต่ำผ่านไปไม่ได้ ความถี่สูงผ่านง่าย (High Pass) ความถี่ที่ถูกกรองจะโดนลดกำลังขยายลง ส่วนความถี่ที่ปล่อยผ่านก็จะปล่อยผ่าน (x 1 กำลังขยาย) วงจรกรองความถี่แบ่งออกเป็น 4 แบบ คือ
  • Low-pass filter คือกรองให้ความถี่ต่ำที่เกินค่า Threshold ที่กำหนดผ่านได้ ความถี่สูงถูกกรองทิ้งไป
  • High-pass filter คือกรองให้ความถี่สูงที่เกินค่า Threshold ที่กำหนดผ่านได้ ความถี่ต่ำถูกกรองทิ้งไป
  • Band-pass filter คือกรองความที่ ที่อยู่ในช่วงที่กำหนดผ่านได้ ความถี่ ที่ต่ำกว่าในช่วง หรือ สูงกว่าในช่วงจะถูกกรองทิ้งไป

นอกจากนี้ตัวกรองยังสามารถใช้กรองความถี่ฮาโมนิค ที่เกิดขึ้นเองตามธรรมชาติเมื่อมีการส่งข้อมูลโดยใช้คลื่นวิทยุ โดยความถี่ฮาโมนิคจะมีค่าเป็นจำนวนเท่าของความถี่ที่ใช้ส่ง แต่จะมีกำลังส่งลดลง ซึ่งกรองทิ้งไปโดยใช้ตัวกรองความถี่

ตัวผสม
การส่งข้อมูลแบบไร้สายด้วยคลื่นวิทยุ Input signal (ข้อมูลที่ต้องการส่ง) จะต้องถูกนำมารวมกับ Local Oscillator (หรือเป็นคลื่นพาหะ carrier signal) เพื่อใช้ส่งข้อมูลไป โดยตัวผสมทำหน้าที่รวมสัญญาณข้อมูลไว้ด้วยกัน

(Ref: https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/IdealMixer.svg/350px-IdealMixer.svg.png)

ผลลัพธ์ที่ผ่านตัวผสม จะเกิดเป็นสัญญาณใหม่ที่มีความถี่ที่เกิดจาก ผลต่างและผลรวมของความถี่ของคลื่นทั้งสองที่รับเข้ามา (เรียกว่า heterodynes) เช่น มี สัญญาณเข้าความถี่ (f1) 0.75 MHz ผสมรวมกับ ความถี่ (f2) 1 MHz จะได้ผลลัพธ์ของสัญญาณ 2 ความถี่ คือ 0.25 MHz และ 1.75 MHz




 
(Ref: http://www.electronics-radio.com/articles/radio/rf-mixer/rf-mixing-basics.php)

ตัวผสมสามารถเปลี่ยน (Shift) ความถี่ของสัญญาณจากช่วงหนึ่งไปยังอีกช่วงหนึ่งตามที่กำหนดไว้ โดยส่วนมาก ความถี่ผลลัพธ์ที่ส่งออกไปจะถูกกำหนดไว้แล้ว เช่น หากต้องการส่งข้อมูลกระจายเสียงที่ความถี่ 88 MHz ผลรวม หรือผลต่างของความถี่ที่ผ่านตัวผสมสุดท้ายจะต้องมาตรงกับที่ 88 MHz ความถี่ ที่ไม่ต้องการก็ใช้ตัวกรอง กรองความถี่ออกไป ความถี่ของข้อมูลที่นำเข้ามา โดยส่วนมากจะเป็นความถี่ต่ำเพื่อให้ประมวลผลได้ง่าย จากนั้นนำมารวมเข้ากับคลื่นพาหะ เพื่อให้สะดวกต่อการส่งข้อมูล ซึ่งเป็นความถี่ที่สูงกว่าความถี่ของข้อมูล โดยความถี่ที่จะนำมาผสมจะต้องกำหนดไว้ให้เหมาะสมกับความถี่ที่ต้องการให้เป็นความถี่ผลลัพธ์ที่จะส่งออกไปยังฝั่งผู้รับ

การผสมสัญญาณ (Mixer) และ การทำมอดูเลชั่น (Modulation) ต่างก็เป็นการรวมคลื่น แต่มีวัตถุประสงค์ต่างกัน การมอดูเลชั่นเป็นการเข้ารหัสข้อมูลโดยการนำคลื่นพาหะมาเปลี่ยนแปลงตามข้อมูลที่ต้องการจะฝังลงไป แต่การผสมสัญญาณ (Mixer) นั้นเป็นการนำคลื่นมารวมกัน (ไม่จำเป็นต้องเป็นคลื่นพาหะ) เพื่อ เพื่อเปลี่ยนระดับความถี่ 

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

ตัวขยายสัญญาณ จัดเป็นอุปกรณ์แบบแอคทีฟ จำเป็นต้องมีแบตเตอรี่เพื่อช่วยในการเพิ่มกำลังส่ง ที่มีคุณสมบัติเหมือนเดิมยกเว้นความแรงของสัญญาณ

เสาอากาศ
เป็นอุปกรณ์ทำจากโลหะ ต่อเข้ากับวงจรที่ใช้ในการรับ/ส่งคลื่นวิทยุ มีหลายชนิด และการรูปแบบ (ดูเพิ่มเติมในบทถัดไป)

ระบบการส่งด้วยคลื่นวิทยุที่จำเป็นประกอบด้วย ตัวกรอง ตัวผสม ตัวขยายสัญญาณและเสาอากาศ แต่ผู้ออกแบบระบบจำเป็นต้องพิจารณาการนำไปใช้งานถึงปัจจัยต่าง ๆ ที่มีผลต่อการออกแบบระบบในการกระจายสัญญาณ เช่น ขนาด และ ตำแหน่ง ของเสาอากาศ พื้นที่ครอบคลุมการให้บริการ และการเข้าถึงช่องสัญญาณหลายหลายผู้ใช้, ทิศทางการส่งข้อมูล, และ ความแรงของสัญญาณ

Multiple Access
เนื่องจากช่วงความถี่ของคลื่นวิทยุมีจำกัด การแบ่งช่วงความถี่ เพื่อให้ผู้ใช้สามารถใช้งานได้พร้อมกันหลายคนเป็นเรื่องสำคัญ ในการติดต่อสื่อสารไร้สาย ได้แบ่งวิธีการเข้าใช้งานช่วงความถี่พื้นฐานออกเป็น 3 วิธีดังนี้
  • FDMA - ใช้การแบ่งความถี่ ในการส่งข้อมูล โดยที่ผู้ใช้แต่ละคน สามารถใช้งานได้เฉพาะความถี่แคบ ที่กำหนดไว้
  • TDMA - ใช้การแบ่งเวลาในการส่งข้อมูล โดยที่ผู้ใช้แต่ละคน สามารถใช้งานได้ทั้งช่วงความถี่ ในช่วงเวลาที่กำหนด
  • CDMA - ใช้รหัสของแต่ละผู้ใช้ในการส่งข้อมูล โดยที่ผู้ใช้แต่ละคนสามารถใช้งานได้ทั้งช่วงความถี่และเวลาที่มีทั้งหมด แต่ข้อมูลที่จะส่งไปจะต้องมีการผสมรหัสเข้าก่อน (รายละเอียดเพิ่มเติม)
(Ref: http://www.umtsworld.com/technology/images/freqs.jpg)

Transmission Direction
ทิศทางการส่งข้อมูล แบ่งออกเป็น 3 แบบ คือ

  • Simplex  เป็นการส่งข้อมูลแบบทางเดียว ผู้รับไม่สามารถตอบกลับได้ เช่น ระบบวิทยุกระจายเสียง ระบบโทรศัพท์
  • Half duplex เป็นการส่งข้อมูลแบบสองทาง แต่จะไม่สามารถส่งได้พร้อมกัน เช่น ระบบ Walkie-Talkie 
  • Full duplex เป็นการส่งข้อมูลแบบสองทางในเวลาเดียวกัน สามารถส่งพร้อมกันได้ ซึ่งระบบการสื่อสารไร้สายปัจจุบัน เป็นการส่งแบบสองทางโดยใช้ ช่วงความถี่ที่รับ และ ส่ง คนละช่วงกันโดยมีตัวกรองสัญญาณช่วยในการแยกสัญญาณรับและส่ง

Switching
เป็นการสลับสัญญาณจากสายเส้นหนึ่ง (หรือความถี่หนึ่ง) ไปยังเส้นอื่น แบ่งการสลับการเชื่อมต่อเป็น 2 แบบคือ  Circuit switching ที่ใช้การสลับการเชื่อมต่อวงจร และ Packet switching ที่ใช้การห่อข้อมูลเป็นแพ็คเก็จก่อนส่งไปให้ตัวอุปกรณ์เป็นตัวสลับการส่งข้อมูล ซึ่งมีประสิทธิภาพสูงกว่าแบบ Circuit switching


Signal strength
ความแรงของสัญญาณที่สามารถส่งไปถึงผู้รับ ซึ่งในการส่งข้อมูลแบบไร้สายจะมีความซับซ้อนมากกว่าแบบใช้สาย เนื่องจากปัจจัยที่สามารถรบกวนคลื่นวิทยุมีมากกว่า เช่น การกระจายของสัญญาณโดยรอบของคลื่นแม่เหล็กไฟฟ้า ทำให้เกิดการรบกวนทางแม่เหล็กไฟฟ้า Electromagnetic interference (EMI) เกิดการเหนี่ยวนำขึ้น ตามสายไฟหรือสายสัญญาณซึ่งจะส่งผลกระทบต่อการทำงานของระบบแบบคลื่นวิทยุ นอกจากนี้ ยังมีแสงอาทิตย์ เสาไฟฟ้าแรงสูง วัตถุต่าง ๆ ที่สะท้อน และ ลดทอนสัญญาณ (attenuation) ฯลฯ  ค่า Signal-to-Noise-Ratio (SNR) เป็นค่าที่ช่วยแสดงอัตราส่วนระหว่างสัญญาณข้อมูลกับสัญญาณรบกวน ยิ่งมีค่าสูง ยิ่งมีประสิทธิภาพดี เนื่องจากสัญญาณรบกวนมีผลต่อสัญญาณข้อมูลน้อยกว่า SNR ที่มีค่าต่ำ

Multipath distortion
ปัญหาการรบกวนที่เกิดจากคลื่นวิทยุกระจายไปหลายเส้นทาง แต่ละเส้นทางใช้เวลาในการเดินทางไม่เท่ากับ เมื่อผู้รับ ได้รับสัญญาณที่เกิดจากการรวมคลื่นที่ได้รับจากหลายเส้นทางก็จะทำให้สัญญาณที่รับได้นั้น ผิดเพี้ยนไปจากสัญญาณต้นฉบับที่ส่งไป


(Ref: http://www.cisco.com/c/dam/en/us/support/docs/wireless-mobility/wireless-lan-wlan/27147-multipath-1.gif)

วิธีแก้ไขปัญหานี้ คือการใช้เสาอากาศแบบทางตรง (Directional antenna) เพื่อลดการกระจายของเส้นทางของสัญญาณ ให้สัญญาณส่งไปในทิศทางเดียว, ติดตั้งตัวขยายสัญญาณที่ฝั่งรับเพื่อเพิ่มความแรงของสัญญาณ (เพิ่ม SNR) หรือ ให้ฝั่งส่ง ส่งสัญญาณเหมือนกัน แต่ส่งที่ความถี่อื่น เพื่อใช้ตรวจสอบข้อมูลที่ได้รับ

อย่างไรก็ดี ในมาตรฐานการรับส่งคลื่นวิทยุแบบใหม่ ที่ใช้เสาอากาศหลายเสา ใช้ความได้เปรียบในจุดนี้ ช่วยในการตรวจสอบสัญญาณที่ได้รับเพื่อปรับปรุงคุณภาพของสัญญาณให้ดีขึ้น


Standard
มาตรฐานเป็นสิ่งสำคัญ เพื่อให้อุปกรณ์ที่ผลิตขึ้นมาสามารถทำงานร่วมกันได้ และบริษัทผู้ผลิตก็สามารถแข่งขันการผลิตกัน ทำให้ผู้บริโภคมีตัวเลือกในการเลือกสินค้าที่มีราคาคุ้มค่ากว่า มาตรฐานแบ่งออกเป็น 2 ชนิด คือ

  • De Facto (เดอแฟคโต) เป็นมาตรฐานแบบไม่ได้เป็นทางการ  เสมือนเป็นข้อตกลงที่ผู้ใช้รับทราบร่วมกัน เช่น เครื่องคอมพิวเตอร์ส่วนบุคคล มักจะติดตั้งไมโครซอฟต์วินโดส์ (De facto standard)
  • De jure (เดอจูเร่) เป็นมาตรฐานแบบเป็นทางการ ที่กำหนดโดยองค์กรกำหนดมาตรฐาน เช่น Request For Comments (RFC) ที่ออกมาตรฐานเกี่ยวกับอินเทอร์เน็ต ซึ่งจะมีกระบวนการพัฒนามาตรฐาน ตรวจสอบ และควบคุมก่อนจะ ออกประกาศใช้งาน
เนื่องจากการกำหนดมาตรฐานบางอย่าง กินเวลานาน ในขณะที่สินค้าจำเป็นต้องวางจำหน่ายแล้ว ทำให้เกิดการรวมกลุ่มอุตสาหกรรม หรือองค์กรต่าง ๆ ที่มีวัตถุประสงค์ในการใช้งานทรัพยากรบางอย่างร่วมกัน เรียกว่า Consortia




Book ref: J. L. Llenewa, Guide to wireless Communications, 3rd edition ISBN: 978-1-111-54569-7

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

Wireless Data Transmission

Wireless Signals

การส่งข้อมูลแบบใช้สาย (Wired communications) ส่วนใหญ่จะใช้สายทองแดง หรือสายไยแก้วนำแสง ซึ่งแตกต่างกับการส่งข้อมูลแบบไร้สาย (Wireless communication) ซึ่งหมาย การส่งข้อมูลผ่านสื่อที่ไม่สามารถมองเห็นได้ โดยสัญญาณ (หรือข้อมูล) จะถูกส่งผ่านคลื่นแม่เหล็กไฟฟ้า ที่สามารถส่งข้อมูลโดยไม่ต้องใช้ตัวกลางในการเคลื่อนที่ เช่นคลื่นวิทยุ คลื่นไมโครเวฟ

คลื่นแม่เหล็กไฟฟ้า เกิดจาก คลื่นแม่เหล็ก และ คลื่นไฟฟ้า ที่อยู่ในทิศทางตั้งฉากกัน และ จะเหนี่ยวนำให้เกิดคลื่นแม่เหล็กไฟฟ้า ในทิศทางที่ตั้งฉากกับคลื่นแม่เหล็กและคลื่นไฟฟ้า (3 แกน ตั้งฉากกัน) คลื่นแม่เหล็กไฟฟ้า เดินทางด้วยความเร็วประมาณ 3x108 เมตรต่อวินาที

(Ref: http://www2.lbl.gov/MicroWorlds/ALSTool/EMSpec/EMSpec2.html)

มีคลื่นแม่เหล็กไฟฟ้า มีแทบสเปกตรัม แบ่งออกเป็นหลายช่วงความถี่ (ช่วงความยาวคลื่น) มีการเทียบขนาดของความยาวคลื่น กับวัตถุที่มีอยู่บนโลกใบนี้ เพื่อให้ง่ายต่อความเข้าใจ แถบความถี่จะแบ่งเป็น ช่วงของคลื่นวิทยุ (Radio Wave), ไมโครเวฟ, อินฟราเรด, แสงที่มองเห็น, อัลตร้าไวโอเล็ต, และ X-Ray

การติดต่อสื่อสารไร้สายในปัจจุบันที่นิยมใช้เป็นแถบของคลื่นวิทยุ และ ไมโครเวฟเป็นหลัก

รูปแบบของตัวกลางที่ใช้ในการส่งข้อมูลแบบไร้สาย แบ่งออกเป็น 2 ประเภท คือ ใช้ แสงอินฟราเรด และ คลื่นวิทยุ

แสงอินฟราเรด

ในสมัยก่อน แสงไฟที่มองเห็น (Visible light) มีการนำมาใช้ในการส่งข้อมูล โดยติดตั้งแหล่งกำเนิดแสงไว้ที่สูง ไม่มีอะไรมากั้น และ มีตัวรับแสง เพื่อคอยตรวจจับข้อมูลที่ถูกส่งออกมา หากเปรียบเทียบกับระบบคอมพิวเตอร์อย่างง่าย แสงที่รับได้ แทนด้วยค่า 1 และ เมื่อไม่มีแสง แทนด้วย ค่า 0 เป็นค่าของเลขฐานสอง ที่เราสามารถนำไปแปลงเป็นข้อมูล เช่น เทียบกับ รหัส ASCII

ในปัจจุบันนี้ มีเทคโนโลยีใหม่ ที่ชื่อว่า LiFi (2013) ใช้ Visible light ผ่านอุปกรณ์ Transceiver-fitted LED  ในการส่งข้อมูล แบบสองทิศทางคล้ายกับ WiFi แต่มีความเร็วสูงถึง 224 Gbps ซึ่งเร็วกว่า WiFi หลายเท่า สามารถนำมาเติมเต็มแก้ปัญหาเรื่องย่านความถี่ไม่พอได้ แต่อาจจะมีปัญหารบกวนจากวัตถุที่มีการส่องสว่าง หรือแสงจากภายนอก

แสงอินฟราเรด เป็นแสงที่มีความยาวคลื่นสั้นกว่า (Visible light) มีความยาวคลื่นตั้งแต่ 700 นาโนเมตร - 1 มิลลิเมตร หรือ มีความถี่ตั้งแต่ 300 GHz - 430 THz การส่งข้อมูลโดยใช้ แสงอินฟราเรด จำเป็นต้องมี 2 ส่วนคือ
  • Emitter หรือตัวส่งสัญญาณ เป็น Laser Diode หรือ Emitting Diode สามารถเพิ่มความเข้มของแสงได้
  • Detector หรือตัวรับสัญญาณ สามารถอ่าน (Sense) ค่าของคลื่นแสงที่ถูกส่งมาจาก Emitter และส่งต่อเป็นสัญญาณไฟฟ้าแทนได้
อุปกรณ์ 2 ส่วนนี้ จะถูกสร้างรวมไว้ในตัวเดียวกันเพื่อให้รับส่งข้อมูลได้สองทาง (Full Duplex) ในเวลาเดียวกันได้ ทิศทางของการส่งข้อมูลโดยใช้แสงอินฟราเรด แบ่งออก 2 แบบคือ
  • ส่งโดยตรง (Directed transmission) หรือเรียกว่า Line-Of-Sight (LOS) โดยตัวส่งจะส่งแสงอินฟราเรดที่มีความแบบแคบที่มีความเข้มสูง (narrow-focused beam) ไปยังตัวรับโดยตรง เช่น รีโมทควบคุมโทรทัศน์ หรือ รีโมทควบคุมอุปกรณ์อื่น ๆ
  • ส่งโดยอ้อม (Diffused transmission) เป็นการส่งโดยใช้การสะท้อน จะส่งแสงอินฟราเรดที่มีความกว้าง (wide-focused beam) ส่งไปยังจุดที่สะท้อนแสดงไปยังตัวรับ
รูปภาพแสดง USB Infrared Adapter
(Ref: https://cn.hama.com/00039773/hama-usb-infrared-adapter)

ข้อดีของการใช้อินฟราเรด
  • ไม่มีการรบกวนกับคลื่นวิทยุ (ซึ่งเป็นการติดต่อไร้สายที่นิยมใช้ในปัจจุบันนี้)
  • มีความปลอดภัยกว่า ในแง่ของระยะการติดต่อ เพราะแสงไม่สามารถทะลุกำแพง ทำให้ยากแก่การแอบดักจับข้อมูล
ข้อจำกัด
  • การเคลื่อนที่ขณะใช้งานทำได้จำกัดเนื่องจากตัวรับตัวส่งจะต้องอยู่ในแนวที่ตรงกัน หรือแนวที่อยู่ในระยะสะท้อนของแสงอินฟราเรด
  • ระยะทางในการติดต่อที่ใกล้กว่าคลื่นวิทยุ ใช้เฉพาะในภายในอาคาร ในห้อง เท่านั้น
  • ความเร็วในการส่งข้อมูลที่ช้ากว่า

อุปกรณ์ WLAN บางชนิด ทำงานโดยใช้แสงอินฟราเรด ซึ่งสามารถนำมาทดแทนกันในกรณีที่คลื่นวิทยุที่บริเวณนั้นมีการใช้งานกันหนาแน่น หรือบริเวณ ที่มีความต้องการเฉพาะ เช่นใน โรงพยาบาล หรือห้องของรัฐบาลที่มีความเข้มงวดเกี่ยวกับระบบความปลอดภัย

คลื่นวิทยุ

เป็นตัวกลางที่ใช้ในการส่งข้อมูลแบบไร้สายอีกประเภท ที่ได้รับความนิยมสูงสุดในปัจจุบัน มีช่วงความถี่ที่ใช้งานคือ 3 kHz - 300 GHz หรือ มีความยาวคลื่นตั้งแต่ 1 มิลลิเมตร - 100 กิโลเมตร โดยธรรมชาติ แสงอาทิตย์ หรือ ดาวต่าง ๆ ในอวกาศ จะแผ่คลื่นแม่เหล็กไฟฟ้าออกมา อย่างไรก็ดี เราสามารถสร้างคลื่นแม่เหล็กไฟฟ้าขึ้นเอง เพื่อใช้ในการส่งข้อมูลแบบไร้สาย สำหรับกระจายสัญญาณ ติดต่อสื่อสารกับดาวเทียม ติดต่อกับอุปกรณ์ต่อพ่วงต่าง ๆ ฯลฯ

คลื่นวิทยุ ที่ใช้ฟังวิทยุกระจายเสียง จะแบ่งเป็นสถานี AM (535 - 1705 kHz) กับ FM (88-108 MHz)
  • AM Radio คลื่นวิทยุใช้ความถี่ต่ำกว่า FM ใช้หลักการเปลี่ยนแปลงของ Amplitude ในการส่งข้อมูล ส่งกระจายเสียงได้ไกลกว่า เนื่องจากคลื่นวิทยุ AM จะสะท้อนกับชั้นไอโอโนสเฟียร์ กลับมายังพื้นโลก แต่ก็มีสัญญาณรบกวนมากกว่า ส่วนหนึ่งเพราะส่งได้ไกลกว่าด้วย
  • FM Radio คลื่นวิทยุใช้ความถี่สูงกว่า ใช้หลักการเปลี่ยนแปลงความถี่ในการส่งข้อมูล กระจายเสียงได้ใกล้กว่า AM คลื่นวิทยุ FM จะทะลุผ่านชั้นไอโอโนสเฟียร์ ไม่สะท้อนกลับมาพื้นโลก FM มีสัญญาณรบกวนน้อยกว่า AM เป็นที่นิยมมากกว่า
ข้อดีของคลื่นวิทยุ
  • ส่งข้อมูลได้ไกลกว่า 
  • สามารถทะลุ วัตถุสิ่งกีดขวางได้ (นอกจากโลหะหนา)
  • มองไม่เห็น
คลื่นวิทยุสามารถใช้ส่งข้อมูลแบบไร้สาย ซึ่งใช้แนวคิดหลายอย่างรวมไว้ด้วยกัน
อันดับแรกคือข้อมูลที่ถูกส่งไป ข้อมูลแบ่งออกเป็น 2 ประเภทคือ ข้อมูลอนาล็อก (Analog) และ ดิจิตอล (Digital)

ข้อมูลอนาล็อคคือข้อมูลที่ต่อเนื่องไป ข้อมูลในชีวิตประจำวันของเราทั้งหมดเกือบ 100% เป็น อนาล็อค ส่วนข้อมูลดิจิตอลคือข้อมูลที่ไม่ต่อเนื่อง ซึ่งการประมวลผลในระบบคอมพิวเตอร์จะประมวลผลเป็นข้อมูลดิจิตอล เนื่องจากทำได้ง่ายกว่า จึงต้องมีกระบวนการในการแปลงข้อมูลจากอนาล็อก เป็น ดิจิตอล และ สามารถแปลงกลับมาได้ นอกจากนี้ การส่งข้อมูลดิจิตอลผ่านสื่อที่เป็นอนาล็อก เช่น ส่งผ่านสายทองแดง (สายโทรศัพท์) จะมีอุปกรณ์ที่ใช้ในการแปลง (encode) สัญญาณบิตดิจิตอลไปเป็นคลื่นอนาล็อก เรียกว่า โมเด็ม (Modulator/Demodulator) สัญญาณบิตดิจิตอลไปเป็นคลื่นอนาล็อก เป็นกระบวนการ Modulation และ การแปลงย้อนกลับเรียกว่า DeModulation

หลักการส่งข้อมูลผ่านคลื่นวิทยุ จะประกอบไปด้วยวงจรที่ใช้สร้างคลื่นแม่เหล็กไฟฟ้าส่งผ่านเสาอากาศ (Antenna) ทำจากสายทองแดงหรือวัสดุที่มีคุณสมบัติคล้ายกัน และ ฝั่งรับผู้รับก็ต้องมีเสาอากาศต่อกับวงจรรับส่งคลื่นวิทยุ

แนวคิดของการสร้างคลื่นวิทยุคือ เมื่อมีการเปลี่ยนแปลงของสนามไฟฟ้า สนามไฟฟ้าจะเหนี่ยวนำให้เกิดสนามแม่เหล็กตั้งฉากกับสนามไฟฟ้า และ ทั้ง 2 ก็จะเหนี่ยวนำให้เกิดคลื่นแม่เหล็กไฟฟ้าที่ตั้งฉากกับสนามไฟฟ้า และ สนามแม่เหล็ก


(Ref: https://micro.magnet.fsu.edu/primer/java/electromagnetic/electromagneticjavafigure1.jpg)

 เพื่อให้ง่ายต่อความเข้าใจ เราสามารถสร้างสนามแม่เหล็กได้จากวงจรง่าย ๆ ดังรูป ต่อ ถ่าน AA เข้ากับขดลวดที่ผันกับตะปูไว้ เมื่อจ่ายไฟ กระแสไฟฟ้าที่วิ่งผ่านขดลวดที่พันตะปูจะสร้างสนามแม่เหล็กโดยรอบ  ในทางปฏิบัติ เส้นลวดที่เอามาต่อต้องมีขนาดเล็กมาก และมีความยาวมากกว่าในรูป พันหลายรอบ คล้ายกับหม้อแปลงไฟฟ้า จะจึงสังเกตสนามแม่เหล็กได้ชัด และจะมองขดลวดที่พันตะปูเป็นโหลด ไม่ใช่การลัดวงจร
(Ref: http://s.hswstatic.com/gif/electromagnet-nail.gif)

หากเรามีการนำเข็มทิศมาวัดทิศทางของสนามแม่เหล็ก ก็จะเห็นตำแหน่งของเข็มทิศในทิศทางหนึ่ง เมื่อเราต่อสวิทช์ และ ปิดการจ่ายกระแสไฟฟ้า สนามแม่เหล็กก็จะหมดลง เข็มทิศก็จะเปลี่ยนไปอีกทิศหนึ่ง ถ้าเรามีการเปลี่ยนแปลงการปิดเปิดสวิทช์เร็วขึ้น สมมติว่า 10 ครั้ง/วินาที (หรือ 10 Hz) สนามแม่ไฟฟ้าที่เกิดการเปลี่ยนแปลงนี้ ก็จะเหนี่ยวนำให้เกิดสนามแม่เหล็กและการเปลี่ยนแปลงไปมาก็จะเกิดเป็นคลื่นแม่เหล็กไฟฟ้าออกไป แต่จะมากน้อย ขึ้นกับพลังงานไฟฟ้าที่วิ่งในขดลวด ขนาดของพลังงานไฟฟ้าในขดลวด จะขึ้นกับแรงดันและกระแสที่ขดลวด
(Ref: https://cdn.instructables.com/F10/P0EB/IKFS5DP6/F10P0EBIKFS5DP6.LARGE.gif)

แม้ว่าการปิดเปิดสวิทช์ด้วยความเร็ว 10 Hz หรือมากกว่านั้น ไม่สามารถทำได้ด้วยมือของมนุษย์ แต่มนุษย์ก็สามารถใช้ทรานซิสเตอร์เข้ามาช่วยในการเปิดปิดวงจรให้เร็วขึ้นตามความถี่ที่เราต้องการ เช่นเปิดปิดด้วยความเร็ว 100 ล้านครั้ง/วินาที (หรือ 100 MHz) อย่างไรก็ดี วงจรคลื่นวิทยุไม่ได้มีแค่การปิดเปิด เพื่อเปลี่ยนแปลงของแรงดันไฟฟ้าเพียงอย่างเดียว แต่มีเรื่องของการปรับกำลังขยาย(Amplifier) การปรับความถี่(Filter) และ การผสมคลื่นความถี่เข้าด้วยกัน (Mixer) อีกด้วย

ความเร็วในการส่งข้อมูล
เมื่อมีการส่งข้อมูลบิตดิจิตอลออกไป ความเร็วในการส่งข้อมูลจะวัดเป็นจำนวนบิตต่อวินาที (bps) และมีอีกหน่วยที่ใช้ในการบอกความเร็วในการส่งข้อมูล คือ จำนวนสัญลักษณ์ต่อวินาที (baud rate) ค่าหน่วยความเร็วนี้ สามารถแปลงไปมาได้ โดยที่ 1 baud อาจแทนข้อมูลจำนวนหลายบิต อนาล็อกโมเด็ม มีการกำหนด ส่งได้ 4,800 baud ซึ่งเป็นค่าสูงสุดที่สามารถจะส่งสัญลักษณ์ได้ในสายโทรศัพท์ (ในสมัยนั้น)

Bandwidth
ช่วงความถี่ที่ใช้ในการส่งข้อมูล อ้างอิงถึงความสามารถสูงสุดที่สามารถส่งข้อมูลได้ในขณะนั้น

Modulation

คลื่นอนาล็อกที่ส่งออกไปแบบต่อเนื่อง (Continuous Wave) โดยที่ไม่มีข้อมูลผสมลงไป ไม่มีการเปลี่ยนแปลง เป็นคลื่นพาหะ (Carrier Wave) หากจะนำข้อมูลไป จำเป็นต้องเอาข้อมูลไปผสมกับคลื่นพาหะ โดยเรียกวิธีการผสมข้อมูลกับคลื่นพาหะ ว่าเป็นการทำมอดูเลชั่น (Modulation) แบ่งออกเป็น 2 แบบคือ

  • Analog modulation เป็นการนำข้อมูลอนาล็อกรวมกับคลื่นพาหะอนาล็อก แบ่งเป็น AM, FM, PM
  • Digital modulation เป็นการนำข้อมูลดิจิตอล หรือ Binary signal (เช่น RZ, NRZ, NRZ-I) รวมกับคลื่นพาหะอนาล็อก เช่น ASK, FSK, PSK เป็นต้น

Spread Spectrum

การส่งข้อมูลในยุคแรก เช่น การกระจายเสียงวิทยุ AM/FM จะเป็นการส่งแบบ narrow-band กล่าวคือ ใช้ข้อมูลที่ถูกส่งไปในช่วงความถี่แคบ 1 ช่วง เช่น 87.5 MHz และ ให้ผู้รับปรับตัวรับสัญญาณให้ตรงกัน เนื่องจากข้อมูลที่ส่งไปนั้นเป็นการ "Broadcast" คือกระจายไปรอบ ช่วงความถี่ช่วงถัดไปเป็น 88 MHz ซึ่งจำเป็นต้องมีช่วงความถี่ ที่ไม่ได้ใช้ เพื่อป้องกัน การกวนกันของสัญญาณ หรือที่เราเรียกว่า Guard band ถ้าผู้รับปรับความถี่ไปที่ 87.75 ก็อาจจะได้ยินการกระจายเสียงของทั้ง 2 ความถี่

การกระจายของสถานีวิทยุเสียงแบบ narrow-band ในปัจจุบันยังใช้งานได้ดี เนื่องจากเป็นการส่งข้อมูลในทิศทางเดียว โดยใช้เครื่องส่งกระจายเสียงกำลังสูง ในช่วงความถี่ที่กำหนด ซึ่งควบคุมการใช้งานช่วงความถี่โดย FCC (Federal Communications Commission)

หากเทียบกับส่งข้อมูลแบบ WLAN ซึ่งใช้ความถี่ในการ รับและส่งข้อมูลพร้อมกัน (Full-Duplex) ช่วงเดียวกัน และใช้กำลังส่งต่ำ เพื่อจำกัดรัศมีการส่งสำหรับเครือข่าย WLAN และลดการรบกวนให้เกิดขึ้นน้อยที่สุด

ทางเลือกใหม่ที่ดีกว่าการส่งแบบ narrow-band คือการใช้เทคนิค Spread Spectrum ที่ใช้การกระจายสัญญาณที่เคยส่งแบบ narrow-band ออกเป็นแนวกว้างของแถบช่วงความถี่ที่ใช้งาน


(Ref: https://kochmuny1new.files.wordpress.com/2010/11/picture16.jpg)

จากรูปจะเห็นได้ว่าการส่งแบบ Spread spectrum จะทนต่อสัญญาณรบกวน (noise) เป็นที่เกิดขึ้นในช่วงความถี่หนึ่ง ได้ดีกว่า แบบ narrow band เนื่องจาก หากเกิดสัญญาณรบกวนใกล้กับความถี่ ที่ใช้ส่งแบบ narrow band ก็จะกวนการส่งนั้นไปทั้งหมด ในขณะที่ Spread spectrum นั้น สัญญาณรบกวนจะรบกวนเพียงช่วงเล็กน้อย (เนื่องจากใช้ช่วงความถี่แบบกว้าง) ทำให้ข้อมูลที่ส่งในช่วงความถี่อื่น ไม่ถูกรบกวนโดยสัญญาณรบกวน

เทคนิคของ Spread Spectrum แบ่งออกเป็น 3 วิธีคือ
  • Frequency Hopping Spread Spectrum (FHSS)
  • Direct Sequence Spread Spectrum (DSSS)
  • Orthogonal Frequency Division Multiplex (OFDM)

FHSS
การส่งข้อมูลแบบ FHSS เป็นการแบ่งข้อมูลเป็นชุดเล็ก ๆ แล้วส่งข้อมูลไปที่ช่วงความถี่ที่แตกต่างกัน มีการกระโดดไปมา (Hopping) ของช่วงความถี่แต่ละชุด เพื่อหลีกเลี่ยงสัญญาณรบกวนที่เกิดขึ้นในช่วงความถี่นั้น ๆ

(Ref: http://ecomputernotes.com/images/FHSS.jpg)

ทางฝั่งผู้รับก็จะต้องรับทราบถึงรูปแบบการกระโดดกันของข้อมูล เพื่อให้สามารถนำข้อมูลมารวมกันได้อย่างถูกต้อง อย่างไรก็ดี หากเกิดสัญญาณรบกวนที่บางช่วงความถี่ ก็จะเกิดการรบกวนในช่วงเวลาสั้น ๆ เนื่องจากข้อมูลมีการกระโดดไปยังความถี่อื่น ๆ ดังนั้นเมื่อข้อมูลผิดพลาดเพียงเล็กน้อย ก็สามารถใช้การทำ Error detection หรือ Error Recovery เพื่อแก้ไข หรือสั่งให้ส่งข้อมูลที่ผิดพลาดมาใหม่ได้รวดเร็วกว่า

นอกจากนี้ หากมีผู้ไม่หวังดีจะดักจับข้อมูลก็จะทำได้ยากขึ้น เนื่องจากจำเป็นที่จะต้องรู้รูปแบบในการกระโดดใช้งานช่วงความถี่ เทคโนโลยีนี้ ถูกใช้ใน Bluetooth

อย่างไรก็ดี FHSS มีเมื่อข้อจำกัดที่สำคัญคือ Narrow band ที่ความกว้างของ bandwidth 1MHz จำกัดความเร็วที่ 1 หรือ 2 Mbps และ เมื่อมี การส่งข้อมูลจากหลายแหล่งกำเนิด ก็ยังทำให้เกิดโอกาสการรบกวนหรือชนกันของข้อมูล วิธี FHSS จึงได้รับความนิยมน้อยกว่าวิธีการแบบ DSSS

DSSS
เป็นเทคนิคการส่งข้อมูลแบบใช้ช่วงความถี่กว้าง อีกแบบ โดยอาศัยการใช้รหัสพิเศษ ผสมรวมเข้า (โดยการใช้ XOR) กับข้อมูลที่ต้องการส่ง

(Ref: http://images.slideplayer.com/16/5263124/slides/slide_77.jpg)

รหัสพิเศษที่นำมาผสมกับข้อมูล มีชื่อเรียกหลายชื่อว่า Pseudo random code หรือ chipping code หรือ barker code ในกรณีของ barker code นั้นจะใช้อ้างอิงถึงการส่งข้อมูลแบบ IEEE 802.11 ที่ความเร็ว 1 หรือ 2 Mbps เท่านั้น แต่ถ้าเป็น DSSS based เช่น ระบบโทรศัพท์มือถือ CDMA จะใช้ Pseudo code, chipping code, และ PN code แทน


(Ref: http://wshnt.kuas.edu.tw/network/s3/D.files/image002.jpg)

ข้อมูลที่ต้องการส่งจะถูกนำมา XOR (เหมือนกันได้ 0 ต่างกันได้ 1) รวมกับ PN code โดยที่ความเร็วของ PN Code จะสูงกว่าความเร็วของข้อมูล (ในตัวอย่างคือ 4:1)  หลังจากที่ข้อมูลกับ Code รวมกันแล้ว ก็จะไปรวมกับคลื่นพาหะ (Carrier) ก่อนจะถูกส่งออกไป ทั้งนี้ความเร็วที่ส่งข้อมูลขึ้นกับช่วงความถี่ที่ได้ และ เทคนิคการเข้ามอดูเลทข้อมูล เช่น BPSK, QPSK เป็นต้น

ฝั่งผู้รับสามารถถอดรหัสข้อมูลโดยใช้ PN code ไป XOR กับข้อมูลที่ได้รับ ก็จะได้ข้อมูลต้นฉบับ โดยที PN Code จะต้องทราบให้ตรงกันทั้งผู้รับและผู้ส่ง ทั้งนี้ แม้ว่าข้อมูลที่ส่งไปจะมีปริมาณมากขึ้น เนื่องจากมีการนำไป XOR กับ PN code (มี redundant) แต่เราสามารถใช้ประโยชน์ตรงนี้ ในการทำ error correction ถ้ามีบิตข้อมูลผิดพลาดเล็กน้อย ระบบสามารถใช้วิธีการทางคณิตศาสตร์ ในการตรวจสอบว่าผิดพลาดที่บิตไหน และแก้คืนกลับมาได้ ทั้งนี้ ขึ้นกับความยาวของ PN Code ที่ใช้

(Ref: http://www.intercomsonline.com/Spread-Spectrum-Technology_a/162.htm)

นอกจากนี้ การส่งแบบ DSSS ทำให้เกิดการรบกวนกันของสัญญาณน้อยกว่า เนื่องจาก ผู้รับอื่นที่ไม่รู้ PN Code ที่ใช้ (เสมือนคุยกันคนละภาษา) ก็จะไม่สามารถถอดรหัสข้อมูลของผู้ส่งได้ มีความปลอดภัยสูงขึ้น (แต่ DSSS ก็ไม่เป็นวัตถุประสงค์หลักเพื่อการรักษาความปลอดภัย และในแง่ของความปลอดภัยนั้น จะมีวิธีการอื่น เข้ามาจัดการ)

เทคนี้จะส่งข้อมูลได้เร็วกว่า FHSS อุปกรณ์ก็ราคาแพงกว่า FHSS อย่างไรก็ดี ในปัจจุบันนี้ ไม่ว่าจะ FHSS หรือ DSSS ราคาอุปกรณ์ก็ถูกลงไปอย่างมากแล้ว

OFDM
หลักการส่งข้อมูลแบบ OFDM ถูกพัฒนาต่อจากการส่งข้อมูลแบบ FDM ที่ใช้การแบ่งความถี่ในการส่งข้อมูล แต่การส่งแบบ FDM นั้น เพื่อให้ความถี่ไม่รบกวนกัน จึงจำเป็นต้องมี "Guard band" เป็นช่วงความถี่ว่าง ๆ กั้นไว้ระหว่างช่วงความถี่ที่ใช้ในการส่งข้อมูล ซึ่งทำให้สิ้นเปลือง

การส่งแบบ OFDM นั้นมีการขยับการใช้งานช่วงความถี่ที่ใช้ส่งให้มาอยู่ชิดกัน แต่ไม่เกิดการรบกวนกันของสัญญาณได้ สาเหตุที่เป็นเช่นนั้นเพราะ OFDM ใช้วิธีการเลือกการส่งคลื่นวิทยุไปแบบขนาน ส่งหลาย ๆ ความถี่ (subchannel) ที่ผ่านการคำนวณไว้ก่อนแล้ว โดยที่สัญญาณแต่ละชุดจะมีจุดที่มีค่ากำลังสูงสุดชัดที่สุด และจุดอื่น ๆ จะไม่มีค่า เนื่องจากสัญญาณได้หักล้างกันเอง (ต้องคำนวณให้พอดีที่หักล้างกัน) จึงเป็นที่มาของคำว่า Orthogonal นั่นเอง

(Ref: http://www.wirelesscommunication.nl/reference/chaptr05/ofdm/images/fig4.gif)

การส่งแบบนี้ ได้รับความนิยมสูงสุด และถูกนำมาพัฒนาในเทคโนโลยีการส่งในปัจจุบันมากมาย


Book ref: J. L. Llenewa, Guide to wireless Communications, 3rd edition ISBN: 978-1-111-54569-7


วันศุกร์ที่ 19 สิงหาคม พ.ศ. 2559

Laravel 5.2 on PHP7

เปลี่ยนจากการใช้งาน AppServ, XAMPP, WAMPP หันมาใช้ PHP Build-in Web server ในการ run Laravel มีขั้นตอนต่าง ๆ ดังนี้

Step1: Edit: php.ini to support Laravel requirement: openssl, mysql, php_pdo, และ php_mbstring
enable:  (โดยการลบเครื่องหมาย ; ออก )
extension=php_mbstring.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll

ทดลอง run php web server หากไม่มี error เป็นอัน OK


Step2: Download and Install Composer: (Composer-Setup.exe)
ทำการติดตั้ง Next ไปเรื่อย ๆ จนจบ

Step3: Download Laravel installer
E:\php\laravel>composer global require "laravel/installer"

Step4: Create 'www' laravel project
E:\php\laravel>laravel new www

Step5:  Rollup!!
ทดสอบการทำงานโดยเข้าที่ http://localhost/laravel/www/public/


Update: 19 ส.ค. 59



cURL on SIS


คราวนี้ เรามาทดลอง curl บน ASP.NET กันบ้าง ซึ่ง .NET จะใช้การ Post Back และมี ViewState คอยช่วยในการเก็บ state ของหน้า Page ต่าง ๆ ทีนี้ เราจะต้องไป Get ค่า Parameter ต่าง ๆ ช่วยด้วยโดย ตัวอย่างนี้ จะเป็นการ Login ของ http://sis.phuket.psu.ac.th

Steps:  

ขั้นที่ 1 เรียกหน้า Login: https://sis-phuket1.psu.ac.th/WebRegist2005/Login.aspx โดยเข้าไป Get parameters ต่าง ๆ ให้ครบ

ขั้นที่ 2: Post User/Password ลงไปใน https://sis-phuket1.psu.ac.th/WebRegist2005/Login.aspx เพื่อทดลอง Login ผ่าน curl

Tools


1) Fiddler  เป็นโปรแกรมช่วย Parameter ต่าง ๆ ที่จำเป็น (คล้าย ๆ กับ Wireshark) แต่อันนี้ ออกแบบมาสำหรับ HTTP โดยเฉพาะ ใช้งานง่ายกว่า ถ้าไม่ใช้ Fiddler (หรือโปรแกรมช่วยอื่น ๆ) เราก็ต้องไป View source code แล้วก็ไปแกะเอาเอง ว่าหน้า Page จะส่งอะไรมาบ้าง (บางอย่างก็ถูก encode ใน javascript ด้วย) ซึ่งจะยุ่งยากกว่ามากสำหรับ Page ที่มีความซับซ้อน



2) Simple HTML Dom Parser  หลังจากที่ใช้ curl ดึงหน้า หลักมา การที่จะไป scrap เอาค่าใน page เพื่อให้ง่ายขึ้น ผมใช้ library ของ PHP Simple HTML Dom Parser เพื่อตัดค่าที่ีจะต้อง Post เข้าไปในระบบ (เช่น viewState)

ว่าแล้วก็สามารถทำตามตัวอย่างได้เลยครับ



Login ได้แล้วครับ (แต่ว่า รูปภาพ และ CSS ไม่แสดง เพราะ ไม่ได้เขียน curl ให้ download มาทั้งหมดนะครับ) ใครอยากลองปรับแต่งเขียนให้ download มาให้ครบ ๆ หรือ ตรวจสอบผลลัพธ์ว่า Login มาถูกต้องหรือไม่ หรือจะให้ Link ไปเมนูอื่น ๆ ทีนี้ ก็สามารถทำได้ไม่ยากแล้วครับ


Update: 19 ส.ค. 59

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

cURL on LMS

ก่อนหน้านี้ ได้นำเสนอวิธีการใช้ cURL ในการดึงข้อมูลจาก Page หน้าแรกของ google.com เป็น method Get ง่าย ๆ แต่ถ้าเป็น method Post หากเราอยากทดลองทำหน้า Page เอง แล้ว ลอง Post ข้อมูลเองก็ได้เหมือนกัน เพราะ Web Page สมัยนี้ จะมีการ Setting ค่าตัวแปรต่าง ๆ มากมาย เช่น Referer, Origin, Cookie เป็นต้น เพื่อความปลอดภัยที่สูงขึ้น

แต่ถ้าเรา setup form page ด้วย PHP Build-in Web server เราจะไม่สามารถเรียกใช้งาน curl ได้ เพราะว่า PHP Build-in Web server นั้น ออกแบบมาเพื่อใช้ในการพัฒนาเป็นหลัก ทำงานเป็น Single Thread ดังนั้น ถ้า php เป็นเราไปเขียน curl ไปเรียก อีกหน้าที่อยู่ใน web server เดียวกัน ก็จะเกิดอาการค้าง หรือที่เรียกว่า "deadlock" เราต้องไปเขียนที่เครื่องหนึ่ง แล้ว ก็ Run อีกเครื่องหนึ่งแทน

ผมได้ทดลองเขียน script Post เพื่อ Login เข้าไปใน http://lms.phuket.psu.ac.th/ ของวิทยาเขต มีตัวอย่าง Code ดังนี้ครับ

ระหว่างที่ศูนย์คอมฯ ยังไม่มี REST API ให้เปิดใช้งานกันได้อย่างอิสระ เราก็ต้องหาวิธี Scrapping ไปก่อนครับ

Update: 18 ส.ค. 59

PHP7 Build-in Web Server


สำหรับใครที่อยากลอง PHP7 สามารถ download ได้จาก http://windows.php.net/download/  ซึ่งมีหลายแบบให้เลือก ผมเลือกที่จะทดลองบน M$ Windows 10 โดยเลือก VC14 x64 Non Thread Safe (2016-Jul-20 21:02:36) เพราะเอามาทดสอบเขียนโปรแกรมง่าย ๆ ไม่ได้สนใจเรื่อง concurrency เลือกแบบ Non Thread Safe จะทำงานได้เร็ว  download แล้ว unzip ไว้ใน E:\php (ในกรณีเครื่องผม)

จากนั้น ให้ load ตัว vcruntime140      unzip แล้ว copy ไปไว้ใน C:\Windows\System32\

เริ่มทำการสั่งให้ Build-in web server ทำงานด้วยคำสั่ง
E:\php\>  php -S localhost:80

ทดลองสร้างไฟล์ E:\php\index.php

<?php
     phpinfo();
?>

เปิด web browser แล้วพิมพ์ http://localhost/index.php
เพียงเท่านี้  ก็จะสามารถทดลอง PHP7 Build-in Web Server ได้แล้ว


Update: 18 ส.ค. 59

วันอังคารที่ 9 สิงหาคม พ.ศ. 2559

ย่านความถี่

ช่วงความถี่ที่ใช้ในการส่งข้อมูลแบบไร้สาย แบ่งออกเป็น 2 ประเภท Licensed band และ Unlicensed band ความถี่ที่เราควรสนใจคือย่านความถี่ ISM band จัดอยู่ในประเภทของ Unlicensed band

ISM band เป็น แถบย่านความถี่ ที่ถูกนิยามเพื่อให้ใช้งานทางด้าน อุตสาหกรรม วิทยาศาสตร์ และ การแพทย์ เพื่อให้มีการพัฒนาเทคโนโลยีการส่งข้อมูลแบบไร้สายได้อย่างรวดเร็ว อย่างไรก็ดี แม้ว่า ISM band จะใช้งานได้โดยไม่ต้องขออนุญาต แต่ในแต่ละประเทศก็มี นโยบายการกำหนดช่วงความถี่ ที่แตกต่างกัน สำหรับประเทศไทย นั้น ผู้ทีกำหนดการใช้งานช่วงความถี่ (ซึ่งต้องอ้างอิงกับ ITU) ก็คือ กสทช. โดย กสทช. นิยาม Unlicensed band ว่าเป็น "ความถี่ร่วมสาธารณะ" เช่น ช่วงความถี่ 2.4 GHz, 5 GHz และ ช่วงอื่น ๆ ที่ปรับเปลี่ยนตามเทคโนโลยี และ สินค้าที่ผลิตออกมา

เราสามารถตรวจสอบช่วงความถี่ร่วมสาธารณะ และ ช่วงความถี่อื่น ๆ ว่าในประเทศไทย กำหนดไว้ทำอะไรบ้าง ได้จาก



พูดถึง กสทช. นิดหนึ่งนะครับ เผื่อบางคนยังไม่รู้
กสทช. คือ สำนักงานคณะกรรมการกิจการกระจายเสียง กิจการโทรทัศน์และกิจการโทรคมนาคมแห่งชาติ (มาจาก กทช. ร่วมร่างกับ กสท.)

  • กสท. คือ คณะกรรมการกิจการกระจายเสียงและกิจการโทรทัศน์ 
  • กทช. คือ สำนักงานคณะกรรมการกิจการโทรคมนาคมแหน่งชาติ 

วันศุกร์ที่ 5 สิงหาคม พ.ศ. 2559

LPWAN (ตอนที่ 3)

Low Power Wide Area Network  หรือ LPWAN คือ เทคโนโลยี ที่ใช้ในการส่งข้อมูลไร้สายที่กินพลังงานต่ำ แบตเตอรี่อยู่ได้นาน ส่งข้อมูลระยะไกล ซึ่งจะถูกใช้ในยุคของ IoTs เพื่อให้ติดต่อระหว่าง sensor ด้วยกันเอง Machine-to-Machine (M2M) เพราะ Application หลาย ๆ อันใช้ส่งข้อมูลในปริมาณน้อยมาก (เช่น การเปิดปิดประตูโรงจอดรถ)   เทคโนโลยีที่ใช้ใน IoTs ในปัจจุบันนี้ ส่วนใหญ่ ยังคงเป็น Bluetooth/BLE, WiFi และ ZigBee เป็นหลัก ซึ่ง 3 เทคโนโลยนี้ ให้ระยะทางที่ไม่ไกล  หากมองไปที่ Cellular ก็มีต้นทุนสูง กินกำลังไฟมาก

เน้น 3 คุณสมบัติหลักของ LPWAN
Long range - ส่งข้อมูลได้ไกลในระดับกิโลเมตร
Low data rate - ส่งข้อมูลประมาณ 20-256 ไบต์ต่อข้อความ และส่งหลาย ๆ ครั้งต่อวัน
Low power consumption - กินพลังงาน แบตเตอรี่สามารถทำงานได้หลายปี

แนวคิดพื้นฐานของ LPWAN
ระยะทางและอัตราเร็วในการส่งข้อมูล - ในการที่จะส่งข้อมูลแบบไร้ได้ไกล เราจำเป็นต้องมี Link Budget (คิดเป็น Decibel) ที่เพียงพอ ถึงผู้รับ เพราะว่า สัญญาณที่ถูกส่งไปจะถูกลดทอนตามระยะทางส่ง โดยส่วนมาก LPWAN จะสามารถจับสัญญาณได้มากกว่า -130 dBm ซึ่งถ้าเทียบกับเทคโนโลยีแบบไร้สายในอดีต จะจับได้ประมาณ -90 dBm (ห่างกันถึง 40 dBm หรือคิดเป็น 10,000 เท่าของความแรงของสัญญาณ) ยิ่งการส่งข้อมูลที่ช้าลง เช่น ถ้าเราใช้ modulation ที่น้อยลง ลดอัตราการส่งข้อมูลลงครึ่งหนึ่ง ก็ทำให้ฟังรับสามารถตรวจรับข้อมูลได้ง่ายขึ้น เปรียบเสมือนกับ เป็นการเพิ่มกำลังขยายอีกเท่าตัว เป็นการเพิ่ม Link Budget เท่าตัว (หรือประมาณ 3 dB)

กำลังขยายในการส่ง (Process Gain) - คืออัตราส่วนระหว่าง spread radio bandwidth (RF) กับ unspread radio bandwidth (baseband) มีหน่วยเป็น decibel ตัวอย่างเช่น สัญญาณ 1 kHz ถูกขยายออกเป็น 100 kHz ค่า process gain = 100 หรือ คิดเป็น 10log10(100) = 20 เดซิเบล อย่างเช่น Sigfox ใช้ BPSK narrowband signal ซึ่งมีอัตราการส่งข้อมูลต่ำ แต่ก็ทำให้ฝั่งรับ สามารถรับสัญญาณได้ง่ายขึ้น กรณีนี้ พื้นสัญญาณรบกวน (noise floor) จะมีผลน้อยกว่าพวก wide band signal แบบ LoRa (แต่ wide band จะดีกว่า ในกรณีที่เป็นสัญญาณรบกวนที่เป็นช่วงเวลาสั้น ๆ) เพราะว่า สัญญาณรบกวนก็จะกระจายตามการ spread ของสัญญาณ อย่างไรก็ดี ในกรณีที่ใช้ code ช่วย (เช่น CDMA) ทำให้เป็น wide band คล้ายกับระบบใน Ingenu จะทำให้รับสัญญาณที่กำลังส่งต่ำได้ดีขึ้น ในมุมมองของสัญญาณกำลังต่ำที่รับได้ แต่ก็มีประเด็นเรื่อง bandwidth ที่ต้องใช้งานเพิ่มมากขึ้นอีกด้วย  

Noise vs Bandwidth - จากประเด็นเรื่อง Process Gain จะเห็นได้ว่า Noise และ Bandwidth มีผลต่อกัน ตัวอย่างเช่น narrowband ช่องสัญญาณ 100 Hz มี noise floor -154 dBm ซึ่งหมายความว่า หากต้องการส่งข้อมูลที่ 10 dB SNR อุปกรณ์ฝั่งรับ จะต้องได้รับได้ที่ -144 dBm เป็นอย่างน้อย อย่างไรก็ดี หากเราใช้ code มาช่วย spread ในการส่งข้อมูล เช่น Symphony Link ใช้ขนาดช่องสัญญาณ 125 kHz ที่มี noise -124 dBm ดังนั้น จะสามารถได้รับถึง 20 dB coding ที่ฝั่งรับสามารถรับสัญญาณได้ที่ -144 dBm เช่นกัน จะเห็นได้ว่า เราสามารถเพิ่ม process gain โดยนำ coding มาช่วย แต่ก็ใช้ bandwidth มากขึ้น เช่นกัน

Licensed vs. Unlicensed - LPWAN โดยส่วนมากจะทำงานในย่าน Unlicensed (868 MHz, 915 MHz, 2.4 GHz) เพราะสะดวก ประหยัดค่าใบอนุญาต เพราะสามารถใช้งานได้โดยที่ไม่ต้องขออนุญาตก่อน อย่างไรก็ดี ย่าน Licensed ก็มีข้อดีตรงที่มีการรบกวนของสัญญาณน้อยกว่า โดยกลุ่ม GSMA (Group Special Mobile Association) ได้วางแผน ที่จะ ออกมาตรฐานของ LPWAN ที่ทำงานในย่าน Licensed โดยมีบริษัทผู้ให้บริการมือถือหลายรายเข้าร่วม เช่น AT&T, Bell Canada, China Mobile เป็นต้น

Sub-GHz Spectrum availability worldwide - เนื่องจากแต่ละประเทศ มีนโยบายการใช้งานช่วงความถี่ ที่แตกต่างกัน แถบย่านความถี่ ที่ใช้ทั่ว ๆ ไปสำหรับ LPWAN มี 2 กลุ่มใหญ่ คือ 868 MHz (จากยุโรป) และ 915 MHz (จากอเมริกา) และ มีบางประเทศ ที่กำหนดช่วงความที่ ที่ไม่สามารถทำให้เป็นมาตรฐานได้ ในปัจจุบันนี้ LPWAN ยังไม่มีช่วงความถี่ ที่เป็นมาตรฐานทั่วโลก อย่าง 2.4 GHz ที่ใช้ใน WiFi จนกว่าประเด็นนี้จะแก้ปัญหาได้


LPWAN Platforms

LoRa Alliance - เป็นมาตรฐานเปิด สำหรับเครือข่ายที่เรียกว่า LoRaWAN พัฒนาโดย Semtech, IBM และ Actility จุดเด่นของ LoRaWAN คือ มีระบบ ecosystem แบบเปิด ซึ่งหมายความว่า จะมีซอฟต์แวร์ และ ผู้ผลิตสามารถผลิตตามมาตรฐานของ LoRa ที่ทำงานร่วมกันได้ นับเป็นเทรนของเทคโนโลยี IoTs ในยุคนี้เลยก็ว่าได้ LoRaWAN จำเป็นต้องทำงานในระบบ Cloud ที่มี Network Server อย่างไรก็ดี มาตรฐานของ LoRaWAN นั้น ยังขาดในเรื่องของการ Roaming, Retry disconnected, QoS เป็นต้น มีหลายเทคโนโลยี นำมาตรฐานของ LoRa ไปพัฒนาต่อยอด และเสริมฟังก์ชันของตัวเอง

Link Labs - เป็น LPWAN ที่ใช้ ตามมาตรฐานของ LoRa ในชั้น Physical แต่ก็มีการพัฒนาฟังก์ชันบางส่วนเพิ่มเติมไป จำเป็นต้องใช้ LoRa chipsets ส่งข้อมูลได้ไกลกว่า WiFi 100 เท่า และราคาถูกกว่าระบบ Cellular มีรูปแบบการเชื่อมต่อแบบ Star ทำงานในย่านความถี่ 915 MHz ISM และ 868 MHz ในชั้น MAC นั้นไม่ได้ออกแบบตามมาตรฐานของ LoRa

Sigfox - มีการติดตั้งเสาอากาศ (Antenna) บนเสาติดตั้ง (Tower) ลักษณะเดียวกันกับเสาโทรศัพท์ และรับข้อมูลจากอุปกรณ์ sensor ต่าง ๆ ทำงานในย่านความถี่ 915 MHz และ 868 เช่นเดียวกันกับ Link Lab, Sigfox ส่งข้อมูลขนาดเล็ก (12 ไบต์) อย่างช้า ๆ (300 baud) โดยใช้ BPSK เพื่อให้ส่งข้อมูลไปได้ไกลมาก Sigfox เหมาะกับระบบที่ต้องการส่งข้อมูลขนาดเล็ก แต่ส่งบ่อยและส่งได้ไกล เช่นระบบแจ้งเตือน, ระบบตรวจสอบที่อยู่, และพวกมิเตอร์วัดค่าต่าง ๆ ที่เป็นลักษณะทางเดียว มีการตอบ Ack กลับไปเพียง 4 ข้อความต่อวัน

NWave - จัดอยู่ในหมวดของ Ultra narrowband (UNB) radio รวมกับ Software Defined Radio (SDR) ทำงานในช่วง sub-1 GHz unlicensed spectrum มีรูปแบบการเชื่อมต่อเป็นแบบ star คล้ายกับ LabLink อุปกรณ์ติดต่อกับ base station โดยตรง

Weightless - กำหนดมาตรฐานโดยกลุ่ม Weightless SIG เป็นอีกมาตรฐานเปิด ทำงานที่ sub-1GHz unlicensed spectrum (915 MHz และ 868 MHz เป็นย่านความถี่ช่วงเดียวกับ IEEE 802.11af) ในปัจจุบันนี้ มี 2 มาตรฐานย่อยคือ
  - Weightless-N; ส่งข้อมูลแบบทางเดียว ต้นทุนต่ำ แบตเตอรี่อยู่ได้นานถึง 10 ปี
  -  Weightless-W: ส่งข้อมูลได้สองทิศทาง (ใช้ Time-Division Duplex กับ Frequency hopping) ต้นทุนสูงกว่า Weightless-N แต่แบตเตอรี่จะอยู่ได้ 3-5 ปี

ยังมีเทคโนโลยีอื่น ๆ อีกหลายตัว เช่น Ingenu, Haystack, Senet, ThinkPark, LTE-MTC และอีกมากมายที่ไม่ได้กล่าวถึง

ก่อนหน้า: ตอนที่1 | ตอนที่ 2

ที่มา: http://www.link-labs.com/low-power-wireless-sensor-network/

Updated: 5 ส.ค. 58