ไมโครคอนโทรลเลอร์สำหรับงานด้าน IoT (ESP8266)
ด้วยเทคโนโลยีการสื่อสารผ่านเครือข่ายไร้สายได้รับการพัฒนาอย่างต่อเนื่องทำให้ไมโครคอนโทรลเลอร์ได้รับความสนใจจากคนทั่วไปมากขึ้น และยังได้รับการพัฒนาให้สามารถเชื่อมต่อกับอินเตอร์เน็ตได้อีกด้วย ทำให้มีการใช้งานไมโครคอนโทรลเลอร์สำหรับควบคุมการทำงาน โดยอาศัยเครือข่ายอินเทอร์เน็ตในการเชื่อมต่อสัญญาณ และมีการประยุกต์ใช้ในการเก็บข้อมูลต่าง ๆ จากเซนเซอร์ที่ติดตั้งไว้ในที่กล่าวคือเมื่อเซนเซอร์อ่านค่าข้อมูลได้ก็จะส่งต่อไปยังไมโครคอนโทรลเลอร์เพื่อประมวลผลแล้วอาศัยสัญญาณอินเตอร์เน็ตเป็นสื่อกลางในการเชื่อมต่อไปยังเครื่องแม่ข่าย(Server) เพื่อเก็บข้อมูลที่อ่านได้แบบเรียลไทม์ นอกจากจะจัดเก็บข้อมูลได้แล้วยังสามารถใช้มือถือที่มีแอพพลิเคชั่นในการสั่งงานให้อุปกรณ์ปลายทางทำงานได้อีกด้วย หรือจะสั่งให้อุปกรณ์นั้นทำงานตามเงื่อนไขที่กำหนดไว้ในขั้นตอนของการเขียนโปรแกรมก็ได้แล้วแต่การประยุกต์ใช้งาน มาวันนี้ผู้เขียนจึงหยิบยกตัวอย่างของไมโครคอนโทรลเลอร์ที่นิยมใช้สำหรับงานด้านนี้มานำเสนอ
ไมโครคอนโทรลเลอร์ ESP8266 เป็นชิปไมโครคอนโทรลเลอร์ที่พัฒนาขึ้นโดยนาย Teo Swee Ann ชาวสิงคโปร์ ในนามบริษัท Espressif System ตั้งอยู่เมื่องเชี่ยงไฮ้ ประเทศจีน ด้วยคุณสมบัติเด่นคือนอกจากจะเป็นไมโครคอนโทรลเลอร์ที่สามารถเขียนโปรแกรมลงไปตัวมันได้เพราะมีหน่วยความจำภายในมากถึง 4 MBยังสามารถเชื่อมต่อเครือข่ายอินเตอร์เน็ตได้แบบไรสาย(WiFi) มาตรฐานการสื่อสาร TCP/IP Stack และที่สำคัญมีราคาถูกมากจึงเป็นที่นิยมในยุคนี้ แต่เนื่องจากขนาดของ ESP8266มีขนาดเล็กมากจึงไม่มีพื้นที่โปรแกรม(flash memory) ในตัวทำให้ต้องใช้ไอซีภายนอก (external flash memory) ในการเก็บโปรแกรม ที่ใช้การเชื่อมต่อผ่านโปรโตคอล SPI ซึ่งสาเหตุนี้เองทำให้โมดูล ESP8266 มีพื้นที่โปรแกรมมากกว่าไอซีไมโครคอนโทรลเลอร์เบอร์อื่น ๆ
คุณสมบัติพื้นฐานของไมโครคอนโทรลเลอร์ตัวนี้ ทำงานที่แรงดันไฟฟ้า 3.0-3.6V ทำงานใช้กระแส เฉลี่ยที่ 80mA รองรับคำสั่ง deep sleep (โหมดการประหยัดพลังงาน) ใช้กระแสน้อยกว่า 10 ไมโครแอมป์ สามารถตื่นกลับมาทำงานในสภาวปกติ(wake up) ใช้เวลาน้อยกว่า 2 มิลลิวินาที ภายในมี Low power MCU 32bit ทำให้เราเขียนโปรแกรมสั่งงานได้ มีวงจร analog digital converter ทำให้สามารถอ่านค่าจาก analog ได้ความละเอียด 10bit ทำงานได้ที่อุณหภูมิ -40 ถึง 125 องศาเซลเซียส แต่เนื่องจาก ESP8266 ที่บริษัท Espressif ผลิตออกมาเป็นชิปเล็ก ๆ แบบ SMD ตัวถัง QFN32 มีขนาดเพียง 5x5 mm. ทำให้นำไปใช้งานจริงได้ยาก ต่อมาบริษัท Ai-Thinker ในเมืองเซินเจิ้น ประเทศจีน ได้นำ ESP8266 มาสร้างเป็นโมดูลสำหรับใช้งาน ให้ชื่อว่า ESP-01 จากนั้นจึงมีการพัฒนาสร้างเป็นโมดูลอีกมากมายตามมา แต่โมดูลที่ได้รับความนิยมยังคงเป็น ESP-01 เนื่องจากมีขนาดเล็กใช้งานสะดวก ESP-07 เป็นโมดูลเพื่อนำไปพัฒนาเป็นอุปกรณ์ต่างๆ ด้วยจุดเด่นที่สามารถต่อสายอากาศภายนอกได้ และโมดูล ESP-12 ที่มีการนำไปพัฒนาเป็น Development Board ต่าง ๆ เช่น NodeMCU, WeMos D1, Wemos D1 mini เป็นต้น
การใช้งานและวิธีการเขียนโปรแกรม จากที่ ESP8266 นั้นถูกนำมาทำเป็นโมดูลหลายตัวมาก จึงขออธิบายเฉพาะตัวโมดูลที่ใช้งานได้ง่าย เป็นที่นิยม คือ ESP-01 และ NodeMCU เท่านั้น ส่วนการใช้งานโมดูลตัวอื่น ๆ จะมีวิธีการใช้งานที่เหมือนกัน ต่างกันตรงการจัดวางและจำนวนขาที่มีใช้งาน ซึ่งสามารถหาเอกสารต่าง ๆ นำมาอ้างอิงได้โดยทั่วไป โดยขา I/O ที่ใช้งานได้นี้จะเรียกว่า GPIO อาจฟังดูแปลกแต่มันก็ทำหน้าที่เหมือนขาของ Arduino นั่นเอง ใน Arduino เราเรียกขา 2 ว่า " 2 " ใน ESP8266 จะเรียกว่า " GPIO2 " ชื่อเรียกต่างกันแต่ทำหน้าที่และเขียนโปรแกรมเหมือนกัน
ในการเขียนโปรแกรมนั้นสามารถเขียนโปรแกรมได้ด้วยวิธีต่าง ๆ แม้ว่าตัว ESP8266 จะถูกออกแบบมาให้ใช้ AT Command ในการเขียนโปรแกรม แต่ก็สามารถใช้วิธีที่ง่ายกว่านั้นคือการเขียนโปรแกรมโดยใช้ Arduino IDE โดยต้องทำการเพิ่มบอร์ดตระกูล ESP8266 ลงไปใน Arduino IDE ก่อน ส่วนการเบิร์นโปรแกรมนั้นสามารถทำได้หลายวิธี ทั้งการใช้บอร์ด Arduino เป็นตัวเบิร์น การใช้อุปกรณ์เบิร์นโปรแกรม USB-UART, USB-TTL ต่าง ๆ รวมถึงบอร์ดอย่าง NodeMCU และ WeMos D1 นั้นก็สามารถต่อสายกับคอมพิวเตอร์ได้โดยตรง การเชื่อมต่อนั้นใช้การเชื่อมต่อขา RX TX GND VCC ตามปกติ สิ่งที่เพิ่มเติมคือ ขา CH_PD ต้องมีสถานะ HIGH (ต่อกับ VCC) เพื่อทำการ Chip enable ON และ GPIO0 ต้องมีสถานะ LOW (ต่อกับ GND) เพื่อปรับชิปเข้าสู่ Programming Mode
** ระวัง !! ESP8266 ทุกแบบทุกรุ่นใช้ไฟฟ้า VCC 3.3V ต้องใช้เครื่องมือที่มีแรงดันไฟ 3.3V เท่านั้น ห้ามใช้ 5V เด็ดขาด **
** ข้อสังเกต ** การใช้อุปกรณ์ USB to UART หรืออื่น ๆ นั้น จะต่อสายแบบปกติ ของการต่อ Serial คือการต่อไขว้ RX ไปต่อกับ TX และ TX ไปต่อกับ RX แต่หากใช้บอร์ด Arduino มาทำการเบิร์น บอร์ด Arduino จะไม่มีการต่อไขว้ โดยจะต่อ RX กับ RX และ TX กับ TX ไปเลย
ขอขอบคุณข้อมูลจาก http://fitrox.lnwshop.com/