วันพุธที่ ๒๙ มิถุนายน พ.ศ. ๒๕๕๙

Internet of Things (IoT) ตอนที่ 5

ตอนที่ 5 ว่าด้วยเรื่อง Raspberry Pi กับการต่อ input ที่เป็น micro switch เข้าทาง GPIO

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

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

วงจรการต่อสวิทช์

การต่อสวิทช์ที่เกี่ยวข้องกับงาน MCU นั้น มี 2 วิธี ได้แก่


  • การต่อให้ส่งสัญญาณไปยัง MCU เป็น  0 volt หรือ Active Low
  • การต่อให้ส่งสัญญาณไปยัง MCU เป็น 3.3 volt หรือ Active Hi

วงจรสวิทช์ที่ทำงานแบบ Active Low






กรณีที่เป็น 0 volt (active low) นั่นหมายถึง ปกติแรงดันไฟฟ้าที่รออยู่เป็นสถานะ Hi หรือมีแรงดันไฟฟ้าประมาณ 3.3 volt เพราะกระแสไฟฟ้าจะไหลจาก vcc 3.3v ผ่าน R1 ที่เป็นความต้านทานขนาด 10K และผ่าน R2 ขนาด 1K ไปยังขา GPIO IN 

แต่เมื่อเรากดสวิทช์ สถานะ Hi จะเปลี่ยน Low เพราะว่า ขากราวด์ (0 volt) จะไหลผ่านสวิทช์ ไปสู่ R2 แล้วไปสู่ขา GPIO IN  ในขณะที่ R1 มีความต้านทานสูงถึง 10 K มันจึงไม่สามารถไหลผ่านไปได้ ตามหลักการของไฟฟ้าที่กระแสไฟฟ้าจะไหลผ่านสิ่งที่มีความต้านทานน้อยกว่า

วงจรสวิทช์ที่ทำงานแบบ Active Hi



การทำงานของวงจรสวิทช์แบบนี้ จะทำงานตรงกันข้ามกับแบบแรก ให้พิจารณาที่สวิทช์และ R1 จะสลับกับภาพแรก ดังนั้น เมื่อกดสวิทช์แรงดันไฟฟ้า 3.3 volt จากขา Vcc จะไหลผ่านสวิทช์ผ่านไปยัง R2 แล้วไปยังขา GPIO IN ประมาณแรงดันที่ 3.3 volt หรือ Active Hi นั่นเอง


การเขียนโปรแกรมทั้งสองวิธีก็แตกต่างกัน แต่ในปัจจุบันอุปกรณ์ที่เป็น micro switch ที่ใช้ในงาน MCU มักจะทำมาขายสำเร็จรูปมีความต้านทานอยู่ภายในอยู่แล้ว จึงมีขาเสียบ 3 ขา คือขา Vcc, GND และขาต่อ GPIO 

ในบอร์ดของ Arduino อาจต้องต่อวงจรแบบนี้ แต่สำหรับ Raspberry Pi แล้ว เขาออกแบบมาให้สามารถต่อวงจรไม่ต้องใช้ R ทั้ง 2 ตัวเลยก็ได้ ดังนี้



จากวงจรสวิทช์ที่ต่อใน breadboard นั้น เราสามารถต่อขาจาก Vcc 3v3 จาก GPIO มาเข้าขาเข้าสวิทช์ ส่วนขาออกสวิทช์ก็สามารถต่อไปยัง GPIO input ได้เลย แต่เราต้องกำหนดใน setup เป็นดังนี้


GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

มาดู Source code ในการเขียนคำสั่งเพื่อรับ input จาก switch กันเลย

--------------------------------------------------------------------
import RPi.GPIO as GPIO
import time
green = 18
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) 
GPIO.setup(green,GPIO.OUT) 
GPIO.setup(17,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
i=0
while True:        
        if (GPIO.input(17)==1):        
                i+=1        
                print "button pressed: ", i
--------------------------------------------------------------------
จาก code นี้เพื่อแสดงให้เห็นถึงปัญหาจากการกดปุ่ม ในกรณีที่เขียนโปรแกรมแบบ poll หรือเข้าไปสอบถาม มันจะลูปซ้ำกันหลายครั้งในระยะที่เรากดครั้งหนึ่ง  นี้คือผลลัพธ์ของการกดปุ่ม 1 ครั้ง ด้านล่างนี้
จะเห็นว่ากดหนึ่งครั้งมันจะลูปประมาณ 1801 ครั้ง หากมีการกดสวิทช์ตัวถัดมา หรือตัวอื่น ๆ อาจจะมีปัญหา โดยเฉพาะมีการ delay ด้วย ดังนั้น raspberry pi จึงได้จัดให้มีคำสั่งสำหรับการเขียนแบบ ตรวจสอบการทำงานของปุ่มกดที่ขอบขาขึ้น และขอบขาลง คำสั่งดังตัวอย่างต่อไปนี้
--------------------------------------------------------------------
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
i=0 while True: GPIO.wait_for_edge(17, GPIO.RISING)
i+=1 print "button pressed: ",i
-----------------------------------------------
ผลลัพธ์ที่ได้ จะแสดงข้อความว่า
     button pressed:  1
เพียงครั้งเดียวต่อการกด 1 ครั้ง เมื่อเรากดอีกครั้ง ข้อความจะเพิ่มเป็น
     button pressed:  2
แต่กรณีเราออกแบบให้มีสวิทช์หลายตัว เช่น ระบบจราจรที่กำลังจะทำให้ดูเป็นตัวอย่าง หากเขียนให้รอการกดปุ่มตามลำดับแบบนี้ ถ้าหากผู้ใช้กดปุ่มไม่เป็นไปตามลำดับก็จะมีปัญหา
มาดูวงจรของการทำสวิทช์ 4 ตัวเพื่อควบคุมจราจร 4 แยก ที่มีการกดปุ่มไฟเขียนตามลำดับ ดังนี้
----------------------------------------------------------
import RPi.GPIO as GPIO import time
ch1g = 21
ch1y = 20 
ch1r = 16
ch2g = 25
ch2r = 24
ch3g = 27
ch3r = 17
GPIO.setmode(GPIO.BCM) GPIO.setup(ch1g,GPIO.OUT) GPIO.setup(ch1y,GPIO.OUT) GPIO.setup(ch1r,GPIO.OUT) GPIO.setup(ch2g,GPIO.OUT) GPIO.setup(ch2r,GPIO.OUT) GPIO.setup(ch3g,GPIO.OUT) GPIO.setup(ch3r,GPIO.OUT)
GPIO.setup(05,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(06,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(13,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(19,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def ch1():          
            GPIO.output(ch1g,GPIO.HIGH)          
            GPIO.output(ch2r,GPIO.HIGH)          
            GPIO.output(ch3r,GPIO.HIGH)          
            GPIO.output(ch1r,GPIO.LOW)
            GPIO.output(ch1y,GPIO.LOW)
            GPIO.output(ch2g,GPIO.LOW)
            GPIO.output(ch3g,GPIO.LOW)
def ch2():
            GPIO.output(ch2g,GPIO.HIGH)
            GPIO.output(ch3r,GPIO.HIGH)
            GPIO.output(ch1r,GPIO.HIGH)
            GPIO.output(ch1g,GPIO.LOW)
            GPIO.output(ch1y,GPIO.LOW)
            GPIO.output(ch2r,GPIO.LOW)
            GPIO.output(ch3g,GPIO.LOW)
def ch3():
            GPIO.output(ch3g,GPIO.HIGH)
            GPIO.output(ch2r,GPIO.HIGH)
            GPIO.output(ch1r,GPIO.HIGH)
            GPIO.output(ch3r,GPIO.LOW)
            GPIO.output(ch1y,GPIO.LOW)
            GPIO.output(ch2g,GPIO.LOW)
            GPIO.output(ch1g,GPIO.LOW)
while True:
               GPIO.wait_for_edge(05, GPIO.RISING)
               ch1()
               print "channel 1: "
               GPIO.wait_for_edge(06, GPIO.RISING)
               ch2()
               print "channel 2: "
              GPIO.wait_for_edge(13, GPIO.RISING)
               ch3()
               print "channel 3: "
----------------------------------------------------------------------------
ผลลัพธ์การทำงานของโปรแกรมดังแสดงในคลิป ด้านล่างนี้
video


วันพฤหัสบดีที่ ๒๓ มิถุนายน พ.ศ. ๒๕๕๙

Internet of Things (IoT) ตอนที่ 4

จากตอนที่ 1 ว่าด้วยหลักการ ความเป็นมา และอนาคตของ Internet of Things ซึ่งได้โน้มน้าวให้ผู้อ่านได้เห็นถึงความสำคัญ ให้อยากที่จะศึกษา อยากทดลองทำดู เผื่อว่าจะได้นำไปประยุกต์ใช้ในชีวิตประจำวัน หรือสร้างเป็น start up ดังที่เขาฮิตกัน

งาน Internet of Things นี้ขอบอกเลยว่า งานที่ยากที่สุด คือ ไอเดีย หรือความคิดสร้างสรรค์ หรือจินตนาการที่จะผลิตหรือสร้างอะไร ดังนั้น ทุกคนสามารถสร้างงานออกมาได้ โดยเฉพาะในด้านเทคนิควิธีการ เราสามารถหาอ่านเอาได้จากอินเทอร์เน็ต หรือดูจาก youtube

ตอนที่ 2 ได้เขียนถึงภาพรวม การทำงานของ Internet of Things มีองค์ประกอบอะไรบ้าง มันทำงานสัมพันธ์กันอย่างไร ถ้าให้ครบวงจรการทำงานของมันจะต้องใช้อะไรบ้าง

ตอนที่ 3 ได้เขียนถึง คำสั่งเพื่อทดสอบการทำงานของบอร์ด และได้ทดสอบโปรแกรม รวมทั้งการต่อวงจร LED เพื่อดูผลลัพธ์

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

มาดู code กัน


#---------------------------------------------------------------------
#source code: traffic.py
import RPi.GPIO as GPIO
import time
red = 18
green = 23
yellow = 24
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(red,GPIO.OUT)
GPIO.setup(green,GPIO.OUT)
GPIO.setup(yellow,GPIO.OUT)

#function
def blink(pin, stime, count):
      for i in range(count):
              GPIO.output(pin,GPIO.HIGH)
              time.sleep(stime)
              GPIO.output(pin,GPIO.LOW)
              time.sleep(stime)

#main program
while True:
       #stop state
       GPIO.output(red,GPIO.HIGH)
       time.sleep(10)
       blink(red,0.25,5)
       GPIO.output(red,GPIO.LOW)

       #go state
       GPIO.output(green,GPIO.HIGH)
       time.sleep(10)
       blink(green,0.15,10)
      GPIO.output(green,GPIO.LOW)

      #stop ready
      GPIO.output(yellow,GPIO.HIGH)
      time.sleep(3)
      GPIO.output(yellow,GPIO.LOW)
      time.sleep(0.5)
#-------------------------------------------------------------
Save file กำหนดชื่อ traffic.py
เมื่อสั่ง Run โปรแกรมที่ terminal ด้วยคำสั่ง
$ sudo python traffic.py 

จะได้ผลลัพธ์ดังนี้



หากผู้อ่านได้ทดลองเอาคำสั่งของโปรแกรมนี้ไปใช้ ท่านต้อง 
ต่อขา 18 เป็น LED สีแดง
ต่อขา 23 เป็น LED สีเขียว
ต่อขา 24 เป็น LED สีเหลือง

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

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

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

โปรดคอยติดตาม......

วันจันทร์ที่ ๒๐ มิถุนายน พ.ศ. ๒๕๕๙

Internet of Things (IoT) ตอนที่ 3

ในระหว่างที่รอบอร์ด MCU ของ arduino เพื่อไม่ให้เสียเวลา ตอนนี้เรามาดูการเขียนโปรแกรมกับบอร์ดของ Raspberry Pi 2 Model B กันก่อนครับ

มาดูหน้าตาของ raspberry Pi 2 Model B กันก่อน




การต่อสาย power, keyboard, mouse, HDMI และสายต่าง ๆ จะไม่ขอกล่าวในที่นี้ เพราะคนที่จะทำตามนี้ได้ ต้องมีพื้นฐานด้านคอมพิวเตอร์มาบ้างแล้ว

ในส่วนของการติดตั้ง OS Respbian ก็ขอให้ศึกษาได้จาก web ของผู้ผลิตได้เลย ตามลิงค์ด้านล่างนี้

https://www.raspberrypi.org/documentation/installation/installing-images/README.md

ในขั้นต้นสมมุติว่า ได้ติดตั้ง OS Respbian เรียบร้อยแล้ว (ซึ่งมันก็คือ linux นั่นเอง)

ต่อไปเป็นการเตรียมความพร้อมที่จะใช้ภาษา python และ ติดตั้ง library ของ GPIO ตามขั้นตอนดังนี้

1. $ sudo apt-get update
2. $ sudo apt-get upgrade

ทั้ง 2 คำสั่งนี้เพื่อทำซอฟต์แวร์ OS และที่เกี่ยวข้องให้เป็นปัจจุบัน

เนื่องจาก ภาษา python นั้น Raspberry Pi ได้ติดมาแล้ว จึงสามารถใช้ได้เลย

และคาดว่า library GPIO จะได้ติดมาแล้วกับการติดตั้งหรือ upgrade OS

ต่อไปเป็นการทดสอบ import GPIO module ของ python

เริ่มด้วย  Menu --> เขียนโปรแกรม --> Python 2 (IDLE)




พิมพ์คำสั่งนี้ แล้วกด Enter

>> import  RPi.GPIO as GPIO

ถ้าหากไม่แสดงผล error ออกมาแสดงว่า Raspberry Pi ของเรามี library GPIO เรียบร้อยแล้ว

ถัดจากนั้นให้สร้างไฟล์เพื่อเขียนโปรแกรมกันเลย

โดยการเลือกรายการ File --> New File

จากนั้นลงมือเขียนโปรแกรมทดสอบการทำงานของ GPIO ก่อน

วันอาทิตย์ที่ ๑๙ มิถุนายน พ.ศ. ๒๕๕๙

Internet of Things (IoT) ตอนที่ 2

ในตอนที่ 2 นี้จะแสดงให้เห็นถึงความหมายโดยรวมของ IoT ว่ามีลักษณะอย่างไร เหมือนหรือแตกต่างจากสมองฝังตัว (embedded) อย่างไรบ้าง ก่อนอื่นให้พิจารณาภาพต่อไปนี้อย่างละเอียดเสียก่อน





IoT ที่ครบถ้วนสมบูรณ์ควรประกอบด้วยองค์ประกอบที่สำคัญ ๆ ดังนี้


1. Input unit

หน่วยนำเข้าข้อมูล ได้แก่ Sensors ที่มีทั้งแบบ analog และแบบ digital

Sensors ที่เป็น analog ได้แก่ เครื่องวัดแสง เสียง อุณหภูมิ  ความชื้น ความเร็วลม กระแสการใช้พลังงานไฟฟ้า ความตึง น้ำหนัก ค่าออกซิเจนในน้ำ ความหวาน ความเค็ม ความเผ็ด ค่าความเป็นกรด ด่างในดินหรือน้ำ (ph) และคุณสมบัติการนำไฟฟ้า (electrical conductive : EC) เป็นต้น

Sensors ที่เป็น digital ได้แก่ switch ประเภทต่าง ๆ เช่น micro switch, push button switch, toggle switch, rotary switch, selector switch, slide switch, DIP switch, proximity switch, op-to switch, สวิทช์วัดแสง, remote control, limit switch, pressure switch, reed switch, switch ลูกลอย วัดระดับน้ำ  ฯลฯ

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

2. MCU : Micro controller unit หรือ Microcomputer Unit

ทำหน้าที่ประมวลผล ที่ต้องเขียนคำสั่งให้ไปเก็บเอาไว้ในหน่วยความจำก่อน เพื่อทำหน้าที่ควบคุม ทั้ง input และ Output ซึ่งชุด MCU จะมีทั้ง Arduino และ Raspberry Pi
จากภาพจะเห็นว่า จะมีตัว Arduino 2 ตัว เพื่อแสดงให้เห็นว่า ในการใช้งานจริงอาจจะมีอุปกรณ์ที่ต้องรับเข้า (sensor) หลายชนิด หรือหลาย ๆ ตัว หรืออาจจะติดตั้งอยู่ในระยะที่ไกลกัน จำเป็นต้องใช้การสื่อสาร WiFi เพราะว่าบอร์ด arduino รุ่นใหม่มี WiFi อยู่ภายในบอร์ดแล้ว ในขณะที่ราคาถูก 300-500 บาทเท่านั้น

ตัว MCU จะทำหน้าที่เก็บโปรแกรมที่เราเขียนเอาไว้แล้ว มาประมวลผลรับเอาอินพุทมาแล้วส่งต่อไปยัง output เช่น สมมติว่า ระบบเซ็นเซอร์อุณหภูมิภายในห้องแช่แข็งเก็บอาหาร หากอุณหภูมิภายในห้องน้อยกว่า 3 องศาให้ตัดการทำงานของคอมเพรซเซอร์ แต่หากอุณหภูมิสูงกว่า 10 องศาให้คอมเพรซเซอร์ทำงาน เป็นต้น การเขียนโปรแกรมก็เพียงเข้าไปสอบถามว่า อุณหภูมิจากอินพุทเท่าไหร่ ถ้าน้อยกว่า 3 ก็จะส่งให้ output port ส่งสัญญาณดิจิทัล off ไม่ให้ relay ทำงาน ในทางกลับกันหากอุณหภูมิ มากกว่า 10 ก็ส่งให้ขา output port ทำหน้าที่ on ให้รีเลย์สวิทช์ทำงานเพื่อให้เครื่องคอมเพรซเซอร์ทำงาน

ในชุด IoT จะมี MCU ทั้งตัวเล็ก เช่น arduino ที่เป็น micro controller ขนาดเล็ก และ Raspberry Pi ที่ถือได้ว่าเป็นทั้ง Micro controller และ Microcomputer เพราะข้างในนั้นสามารถลง OS และ application ได้มากมาย แม้แต่ลง LAMP (Linux, Apache, MySQL, PHP) ก็ยังได้ จัดทำเป็น Server ขนาดเล็กก็ยังได้

ในภาพจะเห็นว่า ตัว arduino ยังส่งข้อมูลไปหา Raspberry Pi ได้ด้วย ดังนั้น ในตัว arduino จัดว่าเป็นตัว input หนึ่งของ raspberry Pi ด้วย แต่ในกรณีที่รับอินพุทจำนวนไม่มากนัก เราสามารถใช้เฉพาะ raspberry Pi เพียงตัวเดียวก็ได้ เพราะในตัว raspberry Pi มี IO ที่เรียกว่าขา GPIO มีจำนวนมากพออยู่แล้ว  แต่ถ้าสำหรับใช้ในโรงงานขนาดใหญ่เราจำเป็นต้องมีให้ครบชุด เพื่อการใช้งานเป็นระบบอินเทอร์เน็ตสมบูรณ์แบบ

3. Output 
     ตัว output จะเป็นขาออกของพอร์ตในตัว arduino และ raspberry Pi ขา output เหล่านี้จะต่อไปขับวงจรอิเล็คทรอนิกส์เพื่อไปควบคุม relay หรือ วงจรอื่น ๆ ให้ทำหน้าที่ on หรือ off ในขณะที่เป็น analog จะไปเร่งหรือหรี่กระแสไฟฟ้าได้ เช่น เร่ง LED ให้สีสว่างเข้ม หรือลดความความสว่างของ LED ลง หรือการผสมสีของ LED ประเภทผสมสีได้ คือ Red Green Blue ผสมเป็น 16.7 ล้านสีได้

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

มี LED ทดสอบการทำงาน on-off
มี relay ทดสอบการ on-off พร้อมมีเสียง และต่อวงจรไฟฟ้า 220 volt ได้เลย
มี solid state relay หรือ transistor drive สำหรับขับมอเตอร์แบบ stepping เป็นต้น

   4. Internet 

  แน่นอนว่า internet of   things จำเป็นจะต้องมี internet หากขาดสิ่งนี้ไป มันจะเป็นเพียง embedded หรือระบบสมองฝังตัว เท่านั้น

ดังนั้น การเชื่อมต่ออินเทอร์เน็ต ส่วนใหญ่มักจะใช้ WiFi ที่มีอยู่ในตัวของ arduino และ raspberry pi (โดยเฉพาะ version 3 มี WiFi/ Bluetooth มาด้วย) เข้ากับ Access point ที่เรามีอยู่แล้วก็ได้ หรือสามารถให้ raspberry pi config ให้เป็น access point ได้ด้วย ดังนั้น เราสามารถเขียนโปรแกรมให้เป็น web server ให้ผู้ใช้สามารถมองเห็นสถานะการทำงานของ arduino หรือ raspberry pi ผ่านทาง browser ในอินเทอร์เน็ต หรือจาก application ใน smart phone ได้ และเราสามารถสั่งงานผ่านทางโปรแกรมเว็บ application ได้โดยตรงด้วย

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

นอกจากนี้ MQTT protocol ยังมีให้ใช้ใน cloud computing จึงถือได้ว่า IoT มีความสมบูรณ์แบบที่สุดในขณะนี้ สามารถนำไปใช้กับทุก ๆ วงการ เช่น ธุรกิจ logistics, smart factory, smart room, smart classroom เป็นต้น

สุดท้าย ถ้าหากเราเก็บข้อมูลสถานะการทำงานของแต่ละอุปกรณ์ไว้ในฐานข้อมูล เราก็สามารถนำเอาข้อมูลเหล่านั้นมาวิเคราะห์เพื่อใช้เป็น decision support system หรือทำเป็น data warehouse, data-mart, หรือ big data ได้

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

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

วันพุธที่ ๑๕ มิถุนายน พ.ศ. ๒๕๕๙

Internet of Things (IoT) ตอนที่ 1

Internet of Things: IoT แปลเป็นภาษาไทยได้ว่า อินเทอร์เน็ตของสรรพสิ่ง หนังสือบางเล่มจะเขียนในลักษณะ internet of (every) things เพื่อให้ผู้อ่านได้เข้าใจโดยตรงทันที ไม่ต้องมีคำอธิบายความหมายก็เข้าใจได้ว่า ทุกสิ่งทุกอย่างที่ผลิตขึ้นมาตั้งแต่นี้เป็นต้นไปต้องให้สามารถเชื่อมต่อกับอินเทอร์เน็ตให้ได้”

IoT เกิดจากการพัฒนาอุปกรณ์อิเล็กทรอนิกส์ได้ในระดับนาโน มีสื่อสารอินเทอร์เน็ตทั่วประเทศ และทั่วโลกรองรับ มีตัว Sensor เกือบทุกชนิดเกิดขึ้นในราคาที่ถูก และมีระบบสมองฝังตัวแบบเดิมที่ใช้อยู่แล้ว และพัฒนาเป็นขนาดเล็ก และสร้างขึ้นมาได้ง่ายกว่าเดิม และสุดท้ายมี cloud computing ให้ใช้เพื่อเก็บข้อมูล และประมวลผล ดังนั้น มันจึงเป็นสิ่งสำคัญที่จะนำเอาประโยชน์จากสิ่งเหล่านี้มาพัฒนาเป็นผลิตภัณฑ์ที่ให้ผู้ใช้สามารถเชื่อมต่อเข้าโลกอินเทอร์เน็ตมาจากที่ไหนก็ได้ ตลอดเวลา

ทิศทางที่แล้วมาและในอนาคตของ IoT

SRI เป็นองค์กรที่ให้คำปรึกษาด้านธุรกิจได้เก็บข้อมูลและทำนายไว้ว่า นับตั้งแต่ปี 2000 มีการใช้ RFID ในธุรกิจ supply-chain ในระยะ 10 ปีต่อมาก็มีการนำมาใช้กับธุรกิจ การรักษาความปลอดภัย สุขภาพอนามัย การขนส่ง อาหารปลอดภัย และคาดว่าในปี 2020 จะมีระบบติดตามตัว ทราบตำแหน่งที่อยู่บุคคลได้ และคาดว่าต่อไปภาคหน้าจะเป็นยุคของ physical-world web ไม่ใช่ world wide web อีกต่อไปแล้ว

Gartner เป็นองค์กรที่สำรวจด้านกิจการต่างของวงการอินเทอร์เน็ต ได้พบว่า 10 ลำดับของเทคโนโลยีในปี 2016 นี้ มีดังนี้
10. ได้แก่ สถาปัตยกรรมและแพลตฟอร์มของ IoT
9. ได้แก่ App ที่เชื่อมโยงกัน และสถาปัตยกรรมบริการ (service architecture)
8. ได้แก่ ระบบสถาปัตยกรรมขั้นสูง (advanced system architecture)
7. ได้แก่ สถาปัตยกรรมความปลอดภัยที่ปรับตัวเองได้ (adaptive security architecture)
6. ได้แก่ ระบบชาญฉลาดอัตโนมัติ
5. ได้แก่ การสอนให้เครื่องจักรกลเรียนรู้ได้ในขั้นสูง (advanced machine learning)
4. ได้แก่ สารสนเทศของทุกสรรพสิ่ง (information of everything)
3. ได้แก่ 3-D printing
2. ได้แก่ ประสบการณ์การใช้งานของบุคคล
1. ได้แก่ อุปกรณ์ที่เชื่อมต่อถึงกัน

มาดูกันว่าเขากำลังทำอะไรกันอยู่กับเทคโนโลยีในปัจจุบัน

องค์กรที่ชื่อว่า Eclipse foundation ได้สำรวจ พบว่าเทคโนโลยี IoT มากที่สุด และลำดับต่อมาดังภาพ




จะพบว่าลำดับ 1 ซอฟต์แวร์สมองฝังตัว ทิ้งห่าง Web และ Big data และอื่น ๆ

แนวการประยุกต์ใช้ในงาน IoT ได้แก่  

การขนส่ง  อาคารที่อยู่อาศัย สำนักงานฉลาด ๆ  เมืองฉลาด ๆ การใช้ชีวิตประจำวัน  เกษตรกรรม โรงงานอุตสาหกรรม ห่วงโซ่อุปทานในธุรกิจส่งสินค้า งานด้านฉุกเฉิน สุขภาพ อนามัย ปฏิสัมพันธ์กับผู้ใช้งาน เป็นต้น

แล้วท่านผู้อ่านมีความคิดจะเอา IoT ไปทำอะไรให้โลกนี้น่าอยู่ น่าอภิรมณ์ บ้างครับ


---------------------------------------