ไม่ได้เขียนบทความในเชิงเทคนิคเสียนาน ขอเขียนหน่อยละกันนะ 🙂

เผอิญมีโอกาสได้ทำงานเกี่ยวกับ NFC บน Nexus S ก็เลยมาแบ่งปันประสบการณ์ว่าการที่ทีมแอนดรอยด์บอกว่า Android 2.3 Gingerbread สนับสนุน NFC นั้นมันเป็นอย่างไร

NFC คืออะไร

ก่อนอื่นก็คงขอพูดโดยคร่าวๆก่อนว่า NFC คืออะไร

NFC ย่อมาจาก Near Field Communication หรือการสื่อสารด้วยการจับให้อุปกรณ์มาอยู่ใกล้ๆกัน โดยระยะทำการจะอยู่แค่เพียง 5 ซม. เรียกว่าแทบจะจูบปากกันแล้วทีเดียว โดยอุปกรณ์ทั้งสองจะใช้การเหนี่ยวนำของขดลวดในการสื่อสารซึ่งกันและกัน หากนึกไม่ออกมันก็คือบัตรรถไฟฟ้าที่เราแค่แตะประตูก็เดินเข้าไปได้แล้วนั่นเอง

แต่เจ้าสิ่งที่เราเห็นบนรถไฟฟ้าอันนั้นจริงๆเรียกว่า Proximity หรือถ้าเรียกอีกชื่อหนึ่งที่คนอาจจะคุ้นเคยกว่าคือ RFID (ซึ่งจริงๆแล้วมันคือคนละคำกัน RFID เป็น Proximity แบบหนึ่ง) การทำงานจะต้องมีตัวที่เรียกว่าตัวอ่าน (Reader) และการ์ด (Tag)

ส่วน NFC นั้นก็คล้ายกับ RFID อีกนั่นแหละเพราะเบื้องหลังมันคือ Proximity ตัวหนึ่งและมันสนับสนุนเทคโนโลยี RFID ได้แบบเต็มรูปแบบ เราสามารถใช้ NFC ในการอ่านหรือเขียน RFID ได้ทันที แต่สิ่งที่ NFC เหนือกว่าคือ NFC สามารถปรับเปลี่ยนตัวเองให้เป็น Reader หรือ Tag ก็ได้! ยังผลให้เราสามารถนำมันไปใช้ในการสื่อสารระหว่างกันได้ โดยจะมีอยู่ 3 โหมดการใช้งานที่ใช้กันคือ

1) ทำตัวเป็น Reader
2) แปลงร่างเป็น Tag
3) คุยกันแบบ P2P


Android 2.3 พร้อมสนับสนุน NFC มันเป็นอย่างไรกัน!?!

ตอนแรกก็ไม่เข้าใจว่ามันสนับสนุนยังไงกัน ก็เลยมาลองเล่นเอง ปรากฎว่ามันทำงานเป็น Intent ตัวนึง …. แบบนี้!

เราสามารถสั่งเปิดปิด NFC ได้เหมือนที่ทำกับ WiFi และ Bluetooth

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

และเมื่อมี Tag มาเข้าใกล้ ระบบก็ยิง Intent ที่ชื่อว่า android.nfc.action.TAG_DISCOVEREDg ออกมา จากนั้นโปรแกรมทั้งหลายที่เรียกดัก Intent ไว้ก็จะเสนอหน้าออกมาให้เลือก

ซึ่งตรงนี้มันก็เหมือนกับว่าเราจะสั่งเปิดเว็บ ถ้าเราลงโปรแกรมไว้หลายตัว มันก็จะเด้งให้เลือกว่าจะเปิดเว็บด้วยโปรแกรมอะไร

เมื่อเราเลือกโปรแกรมเสร็จ ก็สามารถนำ ID และข้อมูลในการ์ดไปใช้งานต่อได้ทันทีในฟังก์ชั่น resolveIntent(…)

ตรงนี้จะเห็นความไม่สะดวกของการใช้งานเกิดขึ้นแล้ว เพราะสิ่งที่แอนดรอยด์วาง NFC ไว้คือการยิง Intent ออกมาให้โปรแกรมต่างๆรับไป แต่มันเป็นไปไม่ได้เลยที่ทุก Service ที่เกิดจาก NFC จะรวมอยู่ในโปรแกรมเดียวกัน ดังนั้นจึงไม่สามารถเลือกโปรแกรมใดโปรแกรมหนึ่งเป็น Default Application ได้ในการใช้งานจริง

สรุปคือการใช้งานจะต้อง (1) เปิด NFC (2) แตะบัตร (3) เลือกโปรแกรมที่จะเปิด … ซึ่งไม่สะดวกเอาเลยหละจริงๆแล้ว

ข้อดีและข้อเสียของ NFC

ข้อดี
– อ่านทะลุวัสดุหลายๆชนิดได้เช่นกระจก(บางๆ) หรือเนื้อคน
– การตรวจจับและเริ่มต้นเชื่อมต่อทำได้เร็วมาก
– ใช้ในที่มืดได้
– นำไปใช้แทนระบบ RFID ที่มีอยู่ในชีวิตประจำวันได้ … ตามหลักการแล้วเราสามารถเปลี่ยนมือถือของเราเป็นบัตรรถไฟฟ้าได้ทันที (แต่ไม่ใช่แบบข่าวใน DroidSans ที่เพิ่งเขียนไปนะ!)
– อายุการใช้งานยืนยาว อายุขัยค่อนข้างสูง

ข้อเสีย
– ใช้อ่านทะลุโลหะไม่ได้
– นำ Tag ไปวางไว้บนโลหะจะอ่านไม่ได้
– ความเร็วในการรับส่งข้อมูลยังไม่สูงมากนัก
– ต้นทุนสูงกว่า Barcode และ 2D Barcode (มากกกกก)
– ต้องพึ่งพา Hardware พิเศษ ต่างกับ 2D Barcode ที่ใช้กล้องมือถือธรรมดาๆได้เลย

การประยุกต์ใช้ NFC

เอาวีดีโอบางตัวมาให้ดูกันจะได้เกิดแรงบันดาลใจ ^_^

ตัวแรกเป็นของโนเกีย ทำเอาไว้เมื่อ 2 ปีที่แล้ว อธิบายถึงการใช้งานของ NFC บนมือถือของตนว่าจะเปลี่ยนโลกได้อย่างไรบ้าง

Play video

อันนี้เป็นวีดีโอสดๆใหม่ๆ เมื่อมีโรงแรมหัวใสพัฒนาระบบ Check-in โรงแรมตั้งแต่เราอยู่ที่สนามบิน เมื่อถึงโรงแรมเราสามารถนำมือถือไปเปิดประตูห้องได้ทันที!

Play video

ความคิดเห็นส่วนตัวเกียวกับ NFC

ทั้งนี้ทั้งนั้น NFC ไม่ใช่เทคโนโลยีใหม่เลย หากแต่เป็นเทคโนโลยีที่โนเกียเคยทำมาแล้วเมื่อ 4-5 ปีที่แล้ว จนถึงตอนนี้มีเป็นสิบรุ่นที่มี NFC แต่… NFC ก็ไม่เกิด คงเพราะว่า Target ของ Nokia User ต่างออกไปและไม่คิดที่จะใช้อะไรพวกนี้ แต่พอ Nexus S ประกาศตัวมาว่าสนับสนุนปุ๊บ ก็เริ่มเห็นวี่แววของอนาคตลางๆแล้วหละ ^_^ และยิ่งได้ยินแว่วๆว่า iPhone 5 ก็จะสนับสนุน ดังนั้น … NFC … มาแน่ 😀

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

Resource ที่น่าสนใจสำหรับนักพัฒนา

1. ใน SDK ที่โหลดมา ค้นหาตัวอย่างที่ชื่อว่า NFCDemo ตัวนี้เหมาะกับการเริ่มต้นมาก

2. สำหรับการต่อยอด ดูมาหลายเว็บแล้วพบว่าเว็บนี้เวอร์คที่สุด ไปอ่านกันได้เลย http://programming-android.labs.oreilly.com/ch18.html

อย่างไรก็ตามมันจะมีเรื่ององค์ความรู้เกี่ยวกับ RFID หลายประการที่อาจจะต้องศึกษากันเพิ่มอีก อันนี้ก็ลองหาอ่านหาลองกันดูครับ ซับซ้อนนิดหน่อยแต่ก็ไม่ได้ยากเกินความสามารถแน่นอน ^_^