วันเสาร์ที่ 12 มีนาคม พ.ศ. 2559

[Arduino] สื่อสารระหว่างบอร์ดด้วย I2C (Inter-Integrated Circuit)



สวัสดีครับ ผมเซเรฟ พบกันอีกแล้วนะครับ 555+ หลังจากจบซีรีย์บทความ IoT ไป
วันนี้ก็จะมาพาทำเรื่องง่ายๆ สบายๆ แบบ Back to Basic นะครับ ในเรื่องของ

การสื่อสารระหว่างบอร์ด ด้วย I2C 

(Inter-Integrated Circuit)


(พูดง่ายๆก็คือ เราจะมาลองทำให้บอร์ด Arduino มันสามารถคุยกันได้นั่นเองครับผม)

I2C คืออะไร???

I2C Bus ย่อมาจาก Inter Integrate Circuit Bus (IIC) นิยมเรียกสั้นๆว่า I2C Bus (ไอ-สแควร์-ซี-บัส) 
เป็นการสื่อสารอนุกรม แบบซิงโครนัส (Synchronous) เพื่อใช้ติดต่อสื่อสาร ระหว่าง
ไมโครคอนโทรลเลอร์กับอุปกรณ์ภายนอก ซึ่งถูกพัฒนาขึ้นโดยบริษัท Philips Semiconductors 
โดยใช้สายสัญญาณเพียง 2 เส้นเท่านั้น คือ Serial Data (SDA) และสาย Serial Clock (SCL) 
ซึ่งสามารถ เชื่อมต่ออุปกรณ์ จำนวนหลายๆ ตัว เข้าด้วยกันได้ ด้วยพอร์ตเพียง 2 พอร์ตเท่านั้น!!!

พูดๆไปก็อาจจะยังไม่รู้เรื่องมากนะครับ เรามาทำเลยดีกว่า 555+

สำหรับตัวอย่างที่ผมจะทำให้ดูนะครับ จะเป็นการสื่อสารระหว่างบอร์ด 
i-Duino UNO กับ Arduino Mega 2560 นะครับ


เริ่มกันเลยนะครับ

ก่อนอื่นก็ ทำการต่อสายออกจากบอร์ด i-Duino UNO ก่อนนะครับ
โดยผมจะต่อสายจาก GND (กราวด์) ร่วมกันกับ Arduino MEGA2560
และต่อสายจาก พอร์ต A4 (ซึ่งทำหน้าที่เป็นพอร์ต SDA; Serial Data)
และพอร์ต A5 (ซึ่งทำหน้าที่เป็นพอร์ต SCL; Serial Clock) ครับ


ที่ฝั่ง Arduino MEGA 2560 :
ก็ทำการต่อสาย SDA (ซึ่งต่อมากพอร์ต A4 ของ i-Duino UNO)
เข้ากับพอร์ต 20 (ซึ่งเป็นพอร์ต SDA ของ Arduino MEGA2560) 

และตามด้วยต่อสาย SCL (ซึ่งต่อมาจากพอรต์ A5 ของ i-Duino UNO)
เข้ากับพอร์ต 21 (ซึ่งเป็นพอร์ด SCL ของ Arduino MEGA2560) ครับ


สำหรับข้อมูลขา SDA และ SCL ของบอร์ดต่างๆในเครือ Arduino ก็ประมาณนี้นะครับ

Arduino UNO และ Arduino Pro Mini
 SDA = A4 , SCL = A5 

Arduino Mega และ Arduino Due 
SDA = 20 , SCL = 21

Arduino Leonardo และ Arduino Yun 
SDA = 2 , SCL = 3

ทีนี้ก็ แชร์ Ground (GND) จากบอร์ด i-Duino UNO มาให้ Arduino MEGA2560 ครับ


ตามด้วย จิ้มหลอด LED แบบที่ใช้ไฟ 5V ลงไปที่ขา 13 และ GND เหมือนในภาพนะครับ
(เสียบให้ถูกขั้วนะครับ ถ้าเสียบแล้วไม่ติดแสดงว่าผิดขั้ว หรือไม่ก็หลอดขาดครับ 5555+ 
จะต่อตัวต้านทานเพื่อจำกัดปริมาณกระแสกันนิดนึงก็ได้นะครับ)


เท่านี้ก็พร้อมแล้วครับ เสียบสาย USB 
และเตรียมอัพโหลดโค้ดลงบอร์ดกันได้เลย ^_^


ทีนี้เรามาดูโค้ดกันบ้างนะครับ


ในการทดลองนี้ผมจะให้ i-Duino UNO จะเป็นคนส่งค่าของตัวแปร x 
ซึ่งจะมีค่าเป็น 0,1,2,3,4,5 และกลับมาเริ่มต้นที่ 0 ใหม่แล้วก็วนไปเรื่อยๆ นะครับ 
ซึ่งบอร์ด i-Duino UNO นี้ผมจะให้เขามีสถานะเป็น Master ซึ่งก็คือ ตัวหลัก (ผู้ส่งข้อมูล) 
นั่นเอง ซึ่งสำหรับโค้ดของตัวที่เป็น Master ก็จะมีรายละเอียดดังนี้นะครับ


ก็ให้ทำการอัพโหลดโค้ดนี้ลงไปบนบอร์ดฝั่งที่จะเป็น Master นะครับ


แล้วทีนี้ ทางฝั่ง Arduino MEGA2560 ในที่นี้จะมีสถานะเป็น Slave ครับ (เป็นตัวรอง)
ซึ่งจะเป็น ผู้รับข้อมูลจาก Master โดยในการทดลองนี้ผมจะให้ Arduino MEGA2560 
ของเรารับค่า x ที่ถูกส่งมาจาก master มาเช็คว่าเท่ากับเท่าไหร่ แล้วทำการปรับความสว่าง
ของหลอดไฟ LED ด้วยสัญญาณ PWM (ผ่านคำสั่ง analogWrite) โดยจะมีทั้งหมด 5 ระดับ
ตามในโค้ดเลยครับผม (ถ้า x มีค่าเป็น 0 จะสั่งให้ LED ดับนะครับ)


ก็ให้ทำการอัพโหลดโค้ดนี้ลงไปบนบอร์ดฝั่งที่จะเป็น Slave เลยครับ


ทีนี้ก็พร้อมสำหรับการทดสอบ
และดูผลลัพธ์ที่เกิดขึ้นแล้วครับ ^___^

================================

ผลการทดลอง!!!

สำหรับการทดลองของผมก็ตามคลิปนี้ครับ


เป็นไงบ้างครับกับการทดลองใช้ I2C Bus 
ในการสื่อสารระหว่างบอร์ด 555+ อันนี้เป็น Basic พื้นๆ จริงๆนะครับ
แล้วตอนนี้หากเราหันมอง Module รอบๆตัวเรา
เช่น Clock Module, Gyro Module หรือพวก LCD Module
เราก็จะเห็นพอร์ตที่ขาเขียนว่า SDA และ SCL อยู่ด้วยครับ



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

พบกันใหม่บทความหน้าครับผม สวัสดีครับ...

เซเรฟ....


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

[IOT] สอนสร้าง "Smart Home" ด้วย NodeMCU V2 [Part 6] [END]

และแล้วก็มาถึง Part สุดท้ายของซีรีย์บทความ

Zeref's Tartaros Project "Smart Home" 

แล้วนะครับ


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

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


CHAPTER 4 : ติดตั้งอุปกรณ์เข้ากับระบบสวิชต์จริง

ก่อนอื่นต้องขออธิบายคอนเซปต์คร่าวๆก่อนนะครับ

1.สำหรับภาคสวิชต์ของเรานั้น ผมจะทำคล้ายๆแบบ Plug and Play นะครับ 
จะทำให้อุปกรณ์ของเราใช้งานได้หลากหลายครับ คือที่ SmartNode ของเรา จะมีปลั๊ก (ตัวผู้) อยู่
ซึ่งเราสามารถนำไปเสียบกับ อุปกรณ์ปลายทางชิ้นไหนในบ้านก็ได้ 
ที่มีปลั๊กสวิชต์ (ตัวเมีย) ที่เราทำขึ้นมาเอง ซึ่งจะกล่าวถึงใน STEP ต่อไปครับ

แต่ปลั๊กตัวผู้นี้ห้ามเสียบกับเต้าไฟฟ้านะครับ 
ไม่งั้นจะเกิดปรากฏการณ์ "โชติช่วง" ไฟลุกวาบๆ
ไม่งั้นจะเกิดการลัดวงจรขึ้น และสร้างความเสียหายได้ครับ

2.นอกจากการควบคุมผ่านอินเตอร์เน็ตแล้ว ในกรณีที่อินเตอร์เน็ตมีการล่ม ใช้งานไม่ได้
หรือเกิดความผิดพลาดกับระบบขึ้นมา SmartNode ของเราก็จะไม่สามารถใช้งานได้เลย
(ดึกแล้วแต่แม่ให้ไปเปิดไฟ แต่ถ้าไฟเปิดไม่ได้เพราะเน็ตล่มนี่ แม่ด่าตายเลยครับ 555+)
ฉะนั้นอุปกรณ์ SmartNode ของเราจะต้อง มีสวิตช์กดด้วยมือ ไว้สำรองเพื่อให้ใช้แทนกันได้
ในเวลาที่ระบบอินเตอร์เน็ตมีปัญหาครับผม โดยเราจะใช้หลักการต่อวงจรคล้ายๆกับภาพด้านล่างนี้ครับ

STEP 1: ทำ "ปลั๊กสวิชต์" ให้กับอุปกรณ์ปลายทาง

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

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


จากนั้นก็ทำการ ถอดสวิชต์ออกมาครับ (อย่าลืมสับคัทเอาท์ลงก่อนนะครับ ไม่งั้นมีวูบ!!! 5555+)
พอผมแกะออกมาแล้วก็พบแบบนี้ครับผม


ซึ่งจะเห็นได้ว่า มีสายสีเทา ทีแวะเข้าไปในตัวสวิชต์ (สาย Line)
 ส่วนสายเส้นสีดำ (สาย Neutral) นั้นไม่ได้ผ่านสวิชต์แต่พุ่งตรงไปยังหลอดไฟเลย 

ซึ่งสายต่างๆที่เราเห็นจะตรงกับในภาพต่อไปนี้นะครับ


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

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


ทีนี้เราก็เอาปลั๊กตัวเมียของเราออกมาครับ 
ที่ใช้ปลั๊กตัวเมียเพราะสายนี้เป็นสาย Line ซึ่งเป็นสายมีไฟครับ เราสามารถถูกไฟเส้นนี้ดูดได้ 
ถ้าใช้ปลั๊กตัวผู้แล้วปล่อยเปลือยๆไว้ แล้วเด็กๆมือบอนไปจับขาปลั๊กละก็ 
มีวูบแน่ๆครับ ใช้ปลั๊กตัวเมียที่ไม่มีส่วนที่นำไฟฟ้ายื่นออกมาจากปลั๊กจะดีกว่า 555+ 


ก็ทำการนำสายสีเทา มาต่อใส่ขาปลั๊กสองข้างนี้ครับ แล้วก็ขันน๊อตให้เรียบร้อยเลยครับ


จากนั้นก็เก็บสายไฟให้เรียบร้อย ทีนี้เราก็จะได้ปลั๊กไว้ให้เรานำ SmartNode มาเสียบเพื่อใช้งานแล้วครับ




(หาเทปพันสายไฟมาพันส่วนที่เหลือให้เรียบร้อยด้วยนะครับ 
(พอดีรูปที่พันสายไฟไว้แล้วมันหายครับ)

ซึ่งหากเราอยากใช้ SmartNode ควบคุมอุปกรณ์ไหน 
ก็ให้ทำปลั๊กแทนสวิชต์แบบนี้ไว้เลยครับผม
(แนะนำอย่าใช้กับอุปกรณ์ที่กินกระแสเยอะกว่า 5A นะครับ
อย่าไปวางใจรีเลย์ตัวเล็กๆครับผม 555+ ใช้แค่กับหลอดไฟก็พอครับ)



STEP 2: ประกอบ SmartNode ให้สมบูรณ์!!!!

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


ก็เริ่มจากการแกะปลั๊ก แล้วต่อสายไฟตามในรูปครับ 
ต่อปลั๊กขา 1 ให้ไปที่ขา C (ขากลาง,ขา Common) ของสวิชต์แบบ 2 ทางครับ


ตามด้วย ต่อสายไฟออกจากขา 1 และขา 2 ของสวิชต์ 2 ทาง
ไปที่ขา NC และ NO ของรีเลย์ ตามในภาพครับ


จากนั้นก็ ต่อสายไฟออกจากขา C (ขากลาง) ของรีเลย์ ไปยังขา 2 ของปลั๊กตัวผู้ครับ
เพียงเท่านี้ วงจรของเราก็จะเสร็จแล้วครับผม


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



จากนั้นก็ปิดหน้ากากและขันยึด NodeMCU V2 ของเราไว้ข้างๆให้สวยงามครับ
(เพื่อความเท่!!! อาจจะติดสติกเกอร์ WiFi แบบผมก็ได้นะครับ)


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

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

แค่นี้ก็เสร็จแล้วนะครับสำหรับอุปกรณ์ SmartNode ของเรา 
ถ้าพร้อมแล้วก็ นำปลั๊กไปเสียบกับปลั๊กสวิชต์ของเรา และเสียบ Adapter เปิดบอร์ดให้เรียบร้อย
แล้วก็เข้าสั่งงานผ่านไฟล์ HTML 5 ได้แล้วครับ ^___^ และก็อย่าลืมลองใช้มือเปิดปิดสวิชต์ธรรมดาดู
เพื่อตรวจสอบว่าระบบสำรองกรณีเน็ตล่มของเราสามารถใช้งานได้หรือเปล่า ด้วยนะครับ



สำหรับวีดีโอการทดสอบของผมก็เป็นแบบนี้ครับ


THE END.... 
จบแล้วค้าบบบบ 55555+

กระผม นายเซเรฟ ขอจบซีรีย์บทความ อันแสนจะยาวนานกว่า 6 ตอน ที่มีชื่อว่า
"สอนสร้าง "Smart Home" ด้วย NodeMCU V2" ไว้เพียงเท่านี้นะครับ

หลังจากที่บทความนี้เผยแพร่ออกไป ต้องขอขอบคุณทุกคนที่ติดตามกันโดยตลอดมานะครับ
นั่นเป็นเหมือนแรงผลักดัน ให้ผู้เขียนอย่างผม มีกำลังใจในการลงบทความตอนต่อๆมาเรื่อยๆครับ
ขอขอบคุณทาง NECTEC สำหรับ Platform ดีๆ ที่เปิดโอกาสให้คนไทยทุกคนได้ใช้งานอย่างทั่วถึง
และขอขอบคุณทุกคนด้วยใจจริงครับ ถึงแม้ว่าบทความของผมนั้นจะเป็นระดับง่ายๆ 
และไม่มีอะไรมาก ซึ่งทุกคนก็น่าจะศึกษาและมีความรู้มาอยู่พอสมควรแล้ว
แต่ถึงกระนั้นก็ยังคงมีคนติดตามอ่านมาจนถึงตอนจบนะครับ สำหรับโปรเจคนี้
ผมเองก็ได้ศึกษาและได้พัฒนาความรู้ให้กับตัวเอง และก็รู้สึกดีที่ได้แบ่งปันกับผู้อื่น
ที่กำลังจะเป็น The Maker ที่ดีในอนาคตอันไกล้นี้ ด้วยความภูมิใจอย่างยิ่งครับ
กับชีวิตเด็ก ม.ปลายธรรมดาๆ ที่เพิ่งจะจบการศึกษาจากโรงเรียน
และกำลังจะก้าวสู่มหาวิทยาลัย กับการได้ทำโปรเจค IoT สำเร็จเป็นชิ้นเป็นอันขึ้นมา
นับเป็นความภูมิใจครั้งหนึ่งใจชีวิตเลยครับ จากนี้ไปผมก็จะพยายามแบ่งปันสิ่งดีๆ 
ให้ทุกๆท่านกันต่อไปนะครับ

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

ขอบคุณครับ ^___^

เซเรฟ...คนที่โลกไม่ต้องการ
(คนที่ไม่ต้องการโลก 5555+)


[IOT] สอนสร้าง "Smart Home" ด้วย NodeMCU V2 [Part 5]

สวัสดีครับ ในที่สุดก็มาถึง Part 5 กันแล้วนะครับ ^_^

ขอโทษที่ Part นี้ออกช้านิดนึงนะครับ เพราะพอดีผมมีธุระนิดหน่อย
แล้วก็พอดีผมแก้หน้าบล๊อกใหม่นิดนึงครับ 555+ เลยไม่มีเวลาเขียนครับ
สำหรับ Part นี้ก็ เราก็จะมาการใช้ NETPIE กันจริงๆจังๆแล้วครับ จบ Part นี้ไป
อุปกรณ์ของเราก็จะสามารถสั่งงานผ่านเว็บได้แล้วครับ ที่เหลือก็แค่เอาไปประกอบ
เข้ากับตัวถังสวิชต์และเดินระบบสายไฟกันนิดหน่อยครับ ^_^ ถ้าพร้อมแล้วก็ ลุยกันเลยครับ
หลังจากที่เราได้ทำความรู้จักกับ NETPIE ตามที่ผมเกริ่นนำไปใน Part 1 ไปแล้วนะครับ
ทีนี้เราก็จะมาเริ่มใช้งานกันเลย ถ้าพร้อมแล้วก็ เข้าไปที่เว็บนี้เลยครับ

https://netpie.io/

STEP 1: สมัครสมาชิคเว็บ NETPIE

พอเราเข้าไปที่เว็บ NETPIE ก็จะเจอหน้าแรกของเว็บครับ ให้กดที่ปุ่ม SIGN UP FREE ด้านบนเลยครับ


จากนั้นจะมาที่หน้าการสมัครครับ ก็ให้กรอกข้อมูลของเราลงไปครับ


หลังจากใส่ข้อมูลเรียบร้อยและกด SIGN UP แล้ว จะขึ้นแบบนี้ที่ด้านบนครับ


เพียงเท่านี้การสมัครสมาชิคก็เสร็จสิ้นแล้วครับ สามารถไปล๊อกอินเข้าระบบกันได้เลย

รหัสผ่าน จะถูกส่งมาทาง SMS เข้าโทรศัพท์เรา
ตามเบอร์โทรที่เรากรอกไปตอนสมัครนะครับ

ต่อไปก็ กดที่ LOG IN ข้างบนครับ


กรอก Username และ Password (ที่เราได้รับทาง SMS) เข้าไปแล้วกด LOGIN ครับผม


เท่านี้ก็ล๊อกอินเข้ามาในระบบแล้วครับ ^_^ พร้อมสำหรับขั้นตอนต่อไป

STEP 2: แอพพลิเคชั่น เกียร์ และคีย์

ที่นี้ก็จะมาถึง การสร้าง Application (แอพพลิเคชั่น) กันนะครับ Application ที่เราจะสร้างในตอนนี้
ไม่ใช่ App แบบในโทรศัพท์แบบพวก Facebook, Camera 360, B612 อะไรแบบนี้นะครับแต่เป็น 
สิ่งที่เหมือนเป็นตัวแทนของระบบของเรา ครับ (เช่น "ระบบสมาร์ทโฮมในบ้านของเซเรฟ")
ในระบบของเราก็จะสามารถ เพิ่มอุปกรณ์เข้าไปได้ โดยอุปกรณ์ของเรานั้นจะถูกเรียกว่า 
"Gear" (ปัจจุบันใช้คำว่า Things) ซึ่งอุปกรณ์ที่ว่านั้นก็อย่างเช่น ตัว NodeMCU 
ที่เรากำลังจะทำเป็นตัวควบคุมสวิชต์ไฟอยู่ตอนนี้ หรือพวกบอร์ดอื่นๆที่มีการต่อเซนเซอร์
สำหรับส่งข้อมูลค่าต่างๆ เช่นอุณหภูมิและความชื้น เป็นต้นครับ
 ใน  Application หนึ่งอาจจะมีหลายๆ อุปกรณ์ (หลายๆ Gear ก็ได้) และแต่ละ Gear ภายในระบบเดียวกัน
(ภายใน Application เดียวกัน) ก็จะสามารถสื่อสารกันเองระหว่างอุปกรณ์ได้ครับผม

ซึ่ง NETPIE เปิดให้เราสามารถใช้งานฟรีได้ถึง 100 อุปกรณ์เลยครับ!!!
 (ขอขอบคุณ NECTEC และ สวทช. อีกครั้งครับสำหรับโอกาสดีๆแบบนี้)


และแต่ละอุปกรณ์ (แต่ละ Gear) ก็จะมี Key เป็นของตัวเองครับ ซึ่ง Key นี้ก็จะเป็นเหมือน
สิ่งที่ใช้ระบุตัวตนของอุปกรณ์เราครับ (คล้ายๆกับเลขบัตรประจำตัวประชาชน) ครับ
แต่ละ Gear ก็จะมี Key เป็นของตัวเอง และก็จะไม่เหมือนกับของ Gear อื่นๆครับ

สรุปคำศัพท์สำคัญ:

APPLICATION = ตัวแทนของระบบที่มีอุปกรณ์ซึ่งติดต่อกันแบบ IoT ของเราครับ
GEAR = อุปกรณ์ที่อยู่ในระบบของเราครับ เช่นอุปกรณ์ NodeMCU V2 ตัวที่เรากำลังทำอยู่
KEY = รหัสที่ใช้ในการระบุตัวตน(คล้ายๆรหัสประจำตัว) ของอุปกรณ์ (ของ Gear แต่ละตัว) 

อธิบายแบบนี้ไปก็คงอาจจะไม่เข้าใจมาก TT เอาเป็นว่า มาสร้างกันเลยแล้วกันนะครับ
ขั้นแรกก็ กดที่ APPLICATION ตรงนี้เลยครับ



ต่อไปเราก็จะมาที่หน้า APPLICATION MANAGEMENT (การจัดการแอพพลิเคชัน) ครับ
ก็จะแสดงข้อมูลจำนวน Application ที่เราสร้างไว้ และจำนวนอุปกรณ์ (Gear หรือ Things) 
ในระบบของเราครับ (ตอนนี้ยังไม่มีอะไรซักอย่างครับ 555+) 
ก็ให้เริ่มสร้าง Application โดยกดตรงปุ่ม [+] ตามในภาพครับ


ใส่ชื่อ Application ของเราครับ เช่นในที่นี้ของผมตั้งเป็น ZerefSmartHome ครับ



จากนั้นเราก็จะได้ Application ของเราแล้วครับ โดยที่ชื่อที่เราตั้งเข้าไป จะเป็น APP ID
ของ Application เรานะครับ (จะได้นำไปใส่ในโค้ดครับ) ทีนี้ต่อไปเราก็จะมาสร้าง Key กันครับ
กดที่ปุ่ม [+] ตามในรูปเลยครับ


จากนั้นก็จะปรากฏหน้าต่างสำหรับการสร้าง Key ขึ้นมาครับ ก็ให้ทำการตั้งชื่อให้อุปกรณ์ของเราครับ
เช่นของผม ตั้งชื่อเป็น SmartNode1 (ประมาณว่ากล่องสวิชต์เปิดปิดไฟของเราชื่อ SmartNode ตัวที่ 1)
แล้วก็ทำการเลือก Type ให้เป็น Session Key จากนั้นก็กด CREATE เลยครับ



จากนั้นเราก็จะได้ Key สำหรับไว้ให้อุปกรณ์ของเราเอาไปใช้ในการสื่อสารแล้วครับ



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



ข้อมูลที่เราจะนำไปใช้ก็จะมี Key กับ Secret นะครับ ก็อบไปไว้ในไฟล์ Notepad 
แล้วเซฟไว้ก่อนเลยก็ได้ครับ เวลาจะนำมาใช้จะได้ง่าย
ทีนี้ต่อไปก็จะมาว่ากันเรื่องของโค้ดแล้วครับ ^_^

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

STEP 3: การเตรียมโค้ด ฝั่ง Arduino

ทีนี้ก็จะกลับมาว่ากันที่เรื่องของโค้ด และ Arduino กันนะครับ โดยโค้ดทั้งหมดของเรานั้น
จะมีความคล้ายคลึงกับโปรเจค IoT ที่ NETPIE ได้ทำไว้แล้ว นั่นคือ SMART PLUG PROJECT ครับ
โดยเราจะใช้โค้ดทั้งหมดของโปรเจคนี้กับอุปกรณ์ของเราครับผม ซึ่งสามารถเข้าไปดูได้ที่ลิงค์นี้ครับ


ซึ่งจะเห็นได้ว่า มีโค้ดอยู่ 2 ชุดครับ โดยจะมี โค้ดฝั่ง Arduino และ โค้ดฝั่ง HTML5 ครับ

โค้ดฝั่ง Arduino: เป็นโค้ดที่จะถูกโหลดลงไปในอุปกรณ์ครับ จะเป็นโค้ดที่ทำหน้าที่ส่ง/รับ คำสั่งและสั่งให้อุปกรณ์ทำงานครับ (จะมีการใช้คำสั่งจาก Part 4 ในโค้ดนี้ครับ)

โค้ดฝั่ง HTML5: สำหรับโค้ดนี้ จะเป็นโค้ดที่ใช้ในการสร้างไฟล์เว็บเพจ เพื่อใช้เป็นส่วนติดต่อ (อินเตอร์เฟส) กับเราครับ คือจะเป็นโค้ดสำหรับหน้าเว็บที่จะมีสวิชต์ให้เราเอานิ้วจิ้มบนจอมือถือเพื่อส่งคำสั่งไปหา NodeMCU แล้วให้โค้ดฝั่ง Arduino รับไปสั่งการรีเลย์นั่นเองครับ

Microgear Library (สำหรับ Arduino)

ในโค้ดของ NETPIE นั้นจะมีการ Include Library ซึ่งจะเป็นการเพิ่มคำสั่งพิเศษเฉพาะของ NETPIE
เข้าไปเพื่อให้ Arduio สามารถใช้คำสั่งพิเศษเฉพาะของ NETPIE ได้ครับ
ดังนั้นเราจึงต้องทำการติดตั้ง Library ของ Microgear ก่อนครับ


เข้าไปแล้วกดที่ Download ZIP ตรงนี้นะครับ



เมื่อดาวน์โหลดเสร็จแล้วก็ทำการเปิดไฟล์ แล้วทำการแตกเอาโฟลเดอร์ 
microgear-esp8266-arduino-master ไปวางไว้ในโฟล์เดอร์ Libraries ของ Arduino เลยครับ


เพียงเท่านี้ก็เสร็จสิ้นแล้วนะครับ กับการติดตั้ง Microgear Library ของ Arduino ครับ


โค้ด NETPIE Smart Plug

ทีนี้เราก็จะมาเริ่มทำโค้ดกันจริงๆจังๆแล้วนะครับ ก่อนอื่นให้ทำการเข้าไปดาวน์โหลดไฟล์ 
Source Code (โค้ดต้นฉบับ) จากในลิ้งค์ข้างล่างนี้มาก่อนครับ


จากนั้นก็แตกไฟล์ออกมานะครับ จะมี 2 โฟลเดอร์นะครับ ก็จะมีโค้ดฝั่ง Arduino กับ 
โค้ดฝั่ง HTML5 ครับ โดยเราจะมาเริ่มแก้โค้ดฝั่ง Arduino กันก่อนนะครับ 
ก็ทำการเปิดไฟล์ NETPIE_SmartPlug.ino ที่อยู่ในโฟล์เดอร์โค้ดฝั่ง Arduino ได้เลย
เมื่อเปิดไฟล์โค้ดขึ้นมาแล้วก็ต้องมาทำการแก้ไขกันนิดหน่อยครับ
เพื่อให้สามารถใช้งานได้กับอุปกรณ์ของเรา ซึ่งส่วนแรกที่จะแก้ไขคือตรงนี้นะครับ



ก็ให้ใส่ข้อมูลต่างๆ ตามที่บอกไว้ในรูปข้างบนครับ เช่นของผมใส่แล้วได้แบบนี้ครับ


แล้วทีนี้ต่อไป เราก็จะไปแก้ไขชุดคำสั่งกันนะครับ ก็ให้เลื่อนลงไป ประมาณบรรทัดที่ 37 ก็จะพบกับชุดคำสั่งที่ควบคุมรีเลย์ให้เปิด,ปิด ดังนี้ครับผม (คล้ายๆกับใน Part 4 เลย)


เนื่องจากเราต่อ Relay ที่ขา D6 ก็ให้ทำการเปลี่ยนตรงคำว่า relayPin ให้เป็น D6 ครับ
และเนื่องจากผมใส่ลำโพงเปียโซเข้าไปด้วย ผมจึงจะเพิ่มคำสั่งให้เปียโซดังเป็นเวลา 0.5 วินาทีด้วย
โดยอาศัยความรู้เรื่องคำสั่งจาก Part 4 ซึ่งโค้ดที่แก้เสร็จแล้วก็จะมีหน้าตาแบบนี้ครับผม
(ผมขอตีบรรทัดของพวกวงเล็บปีกกาใหม่ให้ดูง่ายขึ้นนะครับ)


ทีนี้ให้เราเลื่อนลงมาอีก จนเจอ void setup() ครับ เราจะเจอคำสั่ง pinMode ของรีเลย์อยู่ในนั้น


ก็ให้ทำการเปลี่ยนตรง relayPin ให้เป็น D6 ตามที่เราได้ต่อวงจรไว้ครับผม และตรงนี้ผมก็จะเพิ่มคำสั่งสำหรับลำโพงเปียโซที่เราต่อไว้ที่ D5 ลงไปด้วยพร้อมกับเพิ่มคำสั่งให้ลำโพงเปียโซดับไว้ก่อนครับ (ไม่งั้นพอเปิดบอร์ดมาเปียโซจะร้องทันทีครับ)พอแก้แล้วผมก็ได้คำสั่งทั้งหมดเป็นแบบนี้ครับผม ^_^



ทีนี้ก็ให้ทำการกด Compile เพื่อตรวจสอบดูว่าโค้ดของเรามีปัญหาที่จุดไหนหรือเปล่า
ก็ให้ทำการตรวจสอบว่าเราพิมพ์ถูกไหม มีปีกกาตัวไหนหายหรือเปล่า หากไม่มีปัญหาอะไร
ก็ กด Upload (กด Ctrl+U) ได้เลยครับ (อย่าลืม Save ไฟล์ไว้ด้วยนะครับ  เผื่อแก้ 555+)
เท่านี้ก็เรียบร้อยแล้วครับ สำหรับการเตรียมโค้ดฝั่ง Arduino ของ NodeMCU V2 ต่อไปก็จะเป็นการเตรียมโค้ดฝั่งสั่งการควบคุมที่เป็น HTML 5 กันแล้วครับ ^_^

STEP4: การเตรียมโค้ด ฝั่ง HTML5

ครับ ทีนี้ก็จะมาถึงการเตรียมโค้ดฝั่ง HTML5 กันนะครับ สำหรับโค้ดฝั่งนี้จะเป็น
โค้ดสำหรับไฟล์หน้าเว็บที่เราจะใช้สำหรับกดปุ่มเพื่อส่งคำสั่งเปิดปิดผ่านอินเตอร์เน็ต ไปหาอุปกรณ์ของเรานะครับ ก็ให้ทำการเปิดไฟล์ index.html ที่อยู่ในโฟล์เดอร์ โค้ดฝั่ง HTML5
โดยให้ทำการเปิดด้วยโปรแกรมพวก Text-Editor เช่นโปรแกรม Notepad ครับแล้วเลื่อนหาโค้ดส่วนนี้ครับ หรือจะกด Ctrl+F ค้นหาคำว่า APPKEY ก็ได้ครับ 



แล้วก็ทำการเอา KEY กับ SECRET และ APP ID ที่เราไปสร้างไว้ใน NETPIE มาใส่ลงไปครับ



เสร็จแล้วก็กด File > Save เลยครับ
ยังไม่เสร็จนะครับ ยังขาดไปอย่างนึง นั่นคือ Microgear Library (ของฝั่ง HTML 5) ครับผม
ซึ่งไฟล์นี้จะต้องแยกมาดาวน์โหลดในภายหลัง (แยกกับเพื่อน)
เนื่องจากทาง NECTEC จะมีการพัฒนาและแก้ไขปรับปรุง Library นี้อยู่เรื่อยๆครับผม

ก็ให้ทำการ Download ไฟล์ Microgear Library สำหรับ HTML5
จากลิ้งค์ด้านล่างนี้ มาลงไว้ในโฟล์เดอร์ที่มีไฟล์ HTML ของเราครับ


กดที่ Download ZIP ด้านบนตรงนี้เลยะครับ



เมื่อได้ไฟล์มาแล้วก็ทำการเปิดไฟล์ แล้วเข้าไปแตกเอาไฟล์ microgear.js ไปวางไว้ในโฟล์เดอร์ โค้ดฝั่ง HTML 5 (โฟล์เดอร์ที่มีไฟล์ index.html ของเราอยู่) ครับ


เพียงเท่านี้ก็เสร็จแล้วครับ สามารถดับเบิ้ลคลิกเพื่อเปิดไฟล์ index.html ของเราเข้าไปได้เลย เมื่อเปิดไฟล์แล้วก็จะพบกับหน้าเว็บหน้าตาแบบนี้ครับ 



หมายเหตุ: ต้องเปิดบอร์ด NodeMCU V2 ของเรา และรอให้มันเชื่อมต่อกับ WiFi ให้เรียบร้อยก่อนนะครับถึงจะมีสวิชต์ขึ้นมา ถ้าไม่มีสวิชต์ขึ้นมาก็แสดงว่า NodeMCU V2 ต่อไวไฟของเราไม่ได้ครับให้กลับไปเช็คใน Code ฝั่ง Arduino ว่าเราใส่ชื่อ WiFi กับรหัส WiFi ถูกต้องหรือเปล่า
ทีนี้เราก็ลองกดปุ่มดูครับ แล้วดูผลลัพธ์ที่เกิดขึ้น
นี่คือผลลัพธ์ของบอร์ดผมครับ ^_^


ก็จบแล้วนะครับสำหรับ Part 5 กับการใช้ NETPIE และตอนนี้อุปกรณ์ของเราก็สามารถ
สั่งงานผ่านอินเตอร์เน็ตได้จริงๆแล้วครับผม ^_^ ขั้นตอนต่อไปก็จะเป็นการประกอบตัวเครื่องของเรา
เข้ากับชุดสวิชต์ไฟ และนำไปติดตั้งกับหลอดไฟแล้วครับผม จากนี้ไปก็จะไม่มีอะไรยากไปกว่านี้แล้วครับ55555+ เพราะเรื่องราวเกี่ยวกับโค้ดอันแสนวุ่นวายได้ผ่านไปแล้วครับ
ทีนี้ก็เหลือแค่การประกอบ และการต่อวงจรแล้วครับ เฮ!!!!! พบกันใหม่ใน Part ต่อไปนะครับ ต่อไปนี่ก็เหลือแค่การเดินระบบไฟแล้วครับ ซึ่งขั้นตอนต่อไปจะเป็นการทำงานกับไฟบ้าน จะมีความอันตรายนะครับ ต้องทำด้วยความระมัดระวังกันหน่อยนึงสำหรับ Part นี้ก็จบไว้เพียงเท่านี้นะครับ สวัสดีครับ ^_^