วันเสาร์ที่ 22 ธันวาคม พ.ศ. 2561

Microcontroller Basics


Microcontroller Basics
อุปกรณ์พื้นฐานต่างๆ



Arduino รุ่น MEGA 2560 R3


Arduino UNO

Arduino Nano


Relay Module 4 chanel

NodeMCU Base Ver 1.0 for ESP8266 NodeMCU UART WIFI IoT บอร์ด ขยายขา NodeMCU V3 ESP8266
NodeMCU Base Ver 1.0 for ESP8266 NodeMCU UART WIFI IoT

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


Multimeter
เครื่องมือวัดทางไฟฟ้าที่สามารถวัดปริมาณไฟฟ้าได้หลากหลายชนิด เช่น แรงดัน, กระแส, ความต้านทานและสามารถใช้กับไฟกระแสตรง (DC) หรือไฟกระแสสลับ (AC) ได้ แหล่งพลังงานในการทำงานของมัลติมิเตอร์ในปัจจุบันนั้นได้มาจากแบตเตอรี่ขนาด AA หรือ AAA ทำให้อุปกรณ์มีขนาดเล็กและน้ำหนักเบาสามารถนำไปใช้งานในที่ต่างๆ

5VDC SONGLE Power Relay 5V Relay 5V
5VDC SONGLE Power Relay 5V Relay 5V

16MHZ Crystal Oscillator HC-49S
16MHZ Crystal Oscillator HC-49S

Speaker

LDR
คือตัวต้านทานปรับค่าตามแสง ตัวต้านทานชนิดนี้สามารถเปลี่ยนความนําไฟฟ้าได้เมื่อมีแสงมาตกกระทบ โฟโตรีซีสเตอร์ ( Photo Resistor) หรือ โฟโตคอนดัคเตอร์ (Photo Conductor) เป็นตัวต้านทานที่ทำมาจากสารกึ่งตัวนำ (Semiconductor) ประเภทแคดเมี่ยมซัลไฟด์ ( Cds : Cadmium Sulfide) หรือแคดเมี่ยมซิลินายส์ ( CdSe : Cadmium Selenide) ซึ่งทั้งสองตัวนี้ก็เป็นสารประเภทกึ่งตัวนำ เอามาฉาบลงบนแผ่นเซรามิกที่ใช้เป็นฐานรองแล้วต่อขาจากสารที่ฉาบ ไว้ออกมา โครงสร้างของ LDR

อ้างอิง : https://www.thitiblog.com/blog/6796

วันอาทิตย์ที่ 16 ธันวาคม พ.ศ. 2561

วงจรอนุกรม & แบบขนาน

การต่อวงจรแบบอนุกรม & แบบขนาน

แบบอนุกรม(series)

การต่อแบบนี้กระแสที่ไหลผ่านอุปกรณ์แต่ละตัวเท่ากันแรงดันจากแบตเตอรี่จะถูกแบ่งระหว่างหลอดทั้งสอง
หากหลอดเหมือนกัน แต่ละหลอดจะมีแรงดันครึ่งหนึ่งของแรงดันแบตเตอรี่
Two lamps connected in series

แบบขนาน(parallel)

การต่อแบบนี้อุปกรณ์แต่ละตัวจะมีแรงดันเท่ากันหลอดทั้งสองมีแรงดันเต็มจากแบตเตอรี่ตกคร่อม
กระแสจากแบตเตอรี่จะแบ่งระหว่างหลอดทั้งสอง





Two lamps connected in parallel
อ้างอิง:http://www.ice.co.th/beginner/study/seriespa.htm


แบบอนุกรม












แบบขนาน

วันอาทิตย์ที่ 2 ธันวาคม พ.ศ. 2561

KID Bright & ภาษา Python


KidBright จากจินตนาการสู่ความเป็นจริง


KidBright เป็นบอร์ดที่พัฒนาขึ้นเพื่อกระตุ้นศักยภาพการคิดเชิงระบบและการคิดเชิงสร้างสรรค์ในเด็กวัยเรียนผ่านการเรียนรู้แบบ Learn and Play บอร์ดถูกออกแบบให้มีการแสดงผลและเซนเซอร์แบบง่าย ซึ่งจะทำงานสอดคล้องกับชุดคำสั่งควบคุมการทำงาน โดยผู้เรียนสามารถออกแบบและสร้างชุดคำสั่งแบบ Block-structured Programming ผ่านแอปพลิเคชันบนสมาร์ทโฟน


จุดเด่นของเทคโนโลยี:
บอร์ดสมองกลฝังตัวประกอบด้วย เซนเซอร์พื้นฐาน จอแสดงผล real-time clock ลำโพง สามารถนำไปประยุกต์ใช้งานได้หลากหลาย
สร้างชุดคำสั่งแบบ block-structured programming ผ่านแอปพลิเคชันบนสมาร์ทโฟน
ชุดคำสั่งถูกส่งไปยังบอร์ดสมองกลฝังตัวผ่านเครือข่ายไร้สาย ทำให้ใช้งานได้ง่ายไม่จำเป็นต้องเชื่อมต่อสาย
คุณสมบัติ:
แอปพลิเคชันบนสมาร์ทโฟนทำงานภายใต้ระบบปฏิบัติการ Android
แอปพลิเคชันสร้างชุดคำสั่งรองรับการทำงานแบบ Event-driven Programming
แอปพลิเคชันสร้างชุดคำสั่งรองรับการทำงานแบบ Multitasking
รองรับการเชื่อมต่อเซนเซอร์ที่หลากหลาย
ผู้ใช้งานเทคโนโลยีเป้าหมาย:
โรงเรียนต่างๆ ที่ส่งเสริมการเรียนรู้วิทยาศาสตร์
หน่วยงานส่งเสริมการเรียนรู้วิทยาศาสตร์
นักเรียนที่สนใจ


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

อุปกรณ์ในกล่อง KidBright ประกอบด้วย
บอร์ดหลัก
บอร์ด Sensor Hub
สายเชื่อมต่อ

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


KidBright เป็นบอร์ดส่งเสริมการเรียนรู้โปรแกรมมิ่งที่พัฒนาขึ้นเพื่อกระตุ้นศักยภาพการคิดเชิงระบบและการคิดเชิงสร้างสรรค์ในเด็กวัยเรียน หลังจากที่เราได้เรียนรู้การเชื่อมต่อบอร์ดและอุปกรณ์ต่างๆ เรียบร้อยแล้ว ขั้นตอนต่อไปคือ การเชื่อมต่อบอร์ด กับแท็บเล็ตเข้าด้วยกัน เพื่อให้โปรแกรมทำงาน
https://youtu.be/Irh1tEHLyrg



การเชื่อมต่อระหว่างบอร์ดกับอุปกรณ์ Android สามารถทำได้หลากหลายวิธี ไม่ว่าจะเป็นผ่าน Wifi Hotspot หรือ Access Point อีกทั้งยังสามารถเข้าควบคุมบอร์ดผ่าน อุปกรณ์ Android หรือ Web Browser ได้อีกด้วย สร้างความสะดวกสบายอีกขั้นให้กับการเรียนรู้ด้วย KidBright สำหรับบทความนี้จะแนะนำขั้นตอนการเชื่อมต่อ AdHoc Mode, Infra Mode และ Cloud Mode ชมได้จากคลิปนี้เลย!




ขั้นตอนการเชื่อมต่อ AD-HOC Mode (นาทีที่ 1.05 เป็นต้นไป)
เลือกเมนู Add Board
กดปุ่มที่ 1 ใส่เลขบอร์ด
กด Connection Setup
ทำตามขั้นตอนที่ปรากฏ แล้วเลือก Ad-Hoc Mode
เมื่อมีการเชื่อมต่อ ไฟจะหยุดกระพริบ
ขั้นตอนการเชื่อมต่อ Infra Mode (นาทีที่ 3.09 เป็นต้นไป)
กด Connection Setup
ทำตามขั้นตอนที่ปรากฏ
เลือก Infra Mode
กด Switch 2 ค้างไว้ 5-6 วินาที
กรอก Password
เมื่อมีการเชื่อมต่อ ไฟจะหยุดกระพริบ
ขั้นตอนการเชื่อมต่อ Cloud Mode (นาทีที่ 6.08 เป็นต้นไป)
เปิด INFRA Mode


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

เมื่อเชื่อมต่ออุปกรณ์เสร็จแล้ว เราสามารถตรวจสอบการทำงานของระบบได้จากโปรแกรมตัวอย่าง

อ้างอิง : https://bit.ly/2DX8jbt



แนะนำภาษา Python
ภาษา Python คืออะไร

Python เป็นภาษาเขียนโปรแกรมระดับสูงที่ใช้กันอย่างกว้างขวางในการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป ภาษา Python นั้นสร้างโดย Guido van Rossum และถูกเผยแพร่ครั้งแรกในปี 1991 Python นั้นเป็นภาษาแบบ interprete ที่ถูกออกแบบโดยมีปรัญชาที่จะทำให้โค้ดอ่านได้ง่ายขึ้น และโครงสร้างของภาษานั้นจะทำให้โปรแกรมเมอร์สามารถเข้าใจแนวคิดการเขียนโค้ดโดยใช้บรรทัดที่น้อยลงกว่าภาษาอย่าง C++ และ Java ซึ่งภาษานั้นถูกกำหนดให้มีโครงสร้างที่ตั้งใจให้การเขียนโค้ดเข้าใจง่ายทั้งในโปรแกรมเล็กไปจนถึงโปรแกรมขนาดใหญ่



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

ตัวแปรในภาษา Python นั้นมีให้ใช้ในหลายระบบปฏิบัติการ ทำให้โค้ดของภาษา Python สามารถรันในระบบต่างๆ ได้อย่างกว้างขวาง CPython นั้นเป็นการพัฒนาในตอนตั้นของ Python ซึ่งเป็นโปรแกรมแบบ open source และมีชุมชนสำหรับเป็นต้นแบบในการพัฒนา เนื่องจากมันได้มีการนำไปพัฒนากระจายไปอย่างหลากหลาย variant CPython นั้นจึงถูกจัดการโดยองค์กรไม่แสวงหาผลกำไรอย่าง Python Software Foundation
ประวัติของภาษา Python

ภาษา Python นั้นกำเนิดขึ้นในปลายปี 1980 และการพัฒนาของมันนั้นเริ่มต้นใน December 1989 โดย Guido van Rossum ที่ Centrum Wiskunde & Informatica (CWI) ในประเทศเนเธอร์แลนด์ เนื่องในผู้ประสลความสำเร็จในการสร้างภาษา ABC ที่มีความสามารถสำหรับการ exception handling และการติดต่อผสานกับระบบปฏิบัติการ Amoeba ซึ่ง Van Rossum นั้นเป็นผู้เขียนหลักการของภาษา Python และเขาทำหน้าเป็นกลางในการตัดสินใจสำหรับทิศทางการพัฒนาของภาษา Python


Python 2.0 ได้ถูกเผยแพร่ใน 16 October 2000 และมีคุณสมบัติใหม่ที่โดดเด่น ที่ประกอบไปด้วย cycle-detecting garbage collector และสนับสนุน Unicode กับการเผยแพร่ครั้งนี้ กระบวนการพัฒนานั้นได้เปลี่ยนไปโดยการร่วมกันพัฒนาด้วย Community มากขึ้น

Python 3.0 (ซึ่งได้มีการพัฒนามาก่อนหน้านี้และได้อ้างถึงโดยใช้ชื่อว่า Python 3000 หรือ py3k) มันการพัฒนาที่ถอยหลังซึ่งมันเข้ากันกับ Python ในเวอร์ชันก่อนหน้าไม่ได้ ซึ่งได้ถูกเผยแพร่ใน 3 December 2008 หลังจากที่ได้มีการทดสอบอยู่เป็นเวลานาน คุณสมบัติที่สำคัญของมันจำนวนมากได้ถูกย้อนกลับไปเพื่อให้เข้ากันได้กับ Python 2.6.x และ 2.7.x เวอรฺชันซีรีย์
ไวยากรณ์ของภาษา Python

ภาษา Python นั้นถูกพัฒนาขึ้นมาโดยมีความตั้งใจว่าจะให้เป็นภาษาที่อ่านง่าย มันถูกออกแบบมาให้มีโครงสร้างที่มองเห็นได้โดยไม่ซับซ้อน โดยมักจะใช้คำในภาษาอังกฤษในขณะที่ภาษาอื่นใช้เครื่องหมายวรรคตอน นอกจากนี้ Python มีข้อยกเว้นของโครงสร้างทางภาษาน้อยกว่าภาษา C และ Pascal
Python Interpreter

Python interpreter นั้นเป็นตัวแปรภาษาของภาษา Python เพื่อให้สามารถรันโค้ด Python ได้ ซึ่งได้มากับไลบรารี่มาตรฐานที่สามารถใช้งานได้ฟรี ซึ่งดาวน์โหลดได้ที่ https://www.python.org/ ซึ่งเป็นโปรแกรมแบบ source และ binary สำหรับแพลตฟอร์มทีไ่ด้รับความนิยม นอกจากนี้ interpreter ยังสนับสนุนการเขียนโปรแกรมกับ Interactive shell ซึ่งเป็นการเขียนโค้ดของภาษา Python ลงไปและเห็นผลลัพธ์การทำงานของคำสั่งได้ในทันที Python interpreter นั้นยังสามารถนำเพิ่มความสามารถกับฟังก์ชันใหม่ที่ถูกพัฒนามาจากภาษา C และ C++ Python นั้นเหมาะสำหรับเป็นภาษาในการสร้าง Extension และแอพพลิเคชันที่ปรับแต่งได้

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

ข้อมูลไฟฟ้า & วงจร

ไฟฟ้ากระแสตรง (DC)

Steady DC
ดีซี(DC)สม่ำเสมอ(steady)
จากแบตเตอรี่หรือแหล่งจ่ายกำลังคุมค่า
ในอุดมคติสำหรับวงจรอิเล็กทรอนิกส์
 
Smooth DC
ดีซี(DC)เรียบ(smooth)
จากแหล่งจ่ายกำลังที่มีการกรอง
เหมาะสำหรับวงจรอิเล็กทรอนิกส์
 
Varying DC
ดีซี(DC)ไม่เรียบ(varying)
จากแหล่งจ่ายกำลังที่ไม่ได้กรองไม่เหมาะสำหรับวงจรอิเล็กทรอนิกส์
    ไฟฟ้ากระแสตรง(DC) ไหลไปทิศทางเดียว  แต่อาจจะเพิ่มขึ้นหรือลดลง
แรงดันกระแสตรงเป็นบวก หรือเป็นลบก็ได้  แต่อาจจะเพิ่มขึ้นหรือลดลง
วงจรอิเล็กทรอนิกส์ปกติต้องเลี้ยงด้วยไฟกระแสตรงสม่ำเสมอและคงที่ ที่ค่าหนึ่งหรือไฟกระแสตรงที่เรียบมีค่าเปลี่ยนแปลง ที่เรียกว่าริบเปิ้ลเพียง เล็กน้อย
เซลล์ แบตเตอรี่ และแหล่งจ่ายกำลังแบบคุมค่า ให้ไฟกระแสตรงแบบสม่ำเสมอ ซึ่งเป็นดีซีในอุดมคติสำหรับวงจร อิเล็กทรอนิกส์
แหล่งจ่ายกำลังประกอบด้วย หม้อแปลง ซึ่งทำหน้าที่แปลงไฟกระแสสลับหลักให้ได้แรงดันกระแสสลับที่เหมาะสม  จากนั้นก็
แปลงไฟกระแสสลับให้เป็นไฟกระแสตรงด้วย ตัวเรียงกระแสแบบบริดจ์  แต่ไฟที่ได้ยังไม่เรียบและไม่เหมาะที่จะใช้กับวงจร อิเล็กทรอนิกส์
แหล่งจ่ายกำลังบางแบบจะมี ตัวเก็บประจุ เพื่อกรองไฟให้เรียบ ซึ่งเหมาะสำหรับใช้กับวงจรอิเล็กทรอนิกส์ที่มีความไวน้อย
รวมทั้งใช้กับโครงงานส่วนใหญ่ของเรา
หลอดไฟ ตัวทำความร้อนและมอเตอร์ ทำงานด้วยไฟเลี้ยงกระแสตรงได้
สำหรับรายละเอียดมากกว่านี้กรุณาดูที่หน้า แหล่งจ่ายกำลัง








ไฟฟ้ากระแสสลับ (AC)

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

AC
เอซี(AC)จากแหล่งจ่ายกำลัง
รูปร่างแบบนี้เรียกว่าคลื่นซายน์
 
triangle wave
สัญญาณสามเหลี่ยมเป็นเอซี(AC)เพราะเปลี่ยนแปลงระหว่างบวก (+)และลบ (-)

คุณสมบัติของสัญญาณไฟฟ้า

Wave properties     สัญญาณไฟฟ้าคือแรงดันหรือกระแสซึ่งเป็นพาหะของข้อมูลข่าวสาร ปกติจะหมายถึงแรงดัน อย่างไรก็ตามสามารถ ใช้ได้ทั้งแรงดันหรือกระแสในวงจรกราฟแรงดัน-เวลาทางด้านขวาแสดงถึงคุณสมบัติต่างๆของสัญญาณไฟฟ้า  นอกจากนี้แล้วยังแสดงความถี่ซึ่งเท่ากับ จำนวนรอบต่อวินาที
แผนภาพนี้แสดงคลื่นรูปซายน์แต่คุณสมบัติต่างๆเหล่านี้สามารถนำไปประยุกต์ใช้กับสัญญาณอื่นๆที่มีรูปร่างคงที่ได้
  • ขนาด(Amplitude) คือค่าแรงดันสูงสุดของสัญญาณมีหน่วยเป็นโวลท์ V
  • แรงดันยอด(Peak voltage) คืออีกชื่อหนึ่งของขนาด(amplitude)
  • แรงดันยอดถึงยอด(Peak-peak voltage) คือสองเท่าของแรงดันยอดหรือขนาด เมื่ออ่านค่ารูปคลื่นที่ออสซิลโลสโคปมักใช้หน่วยแรงดันยอดถึงยอด
  • คาบเวลา(Time period) คือเวลาที่สัญญาณครบรอบหนึ่งรอบ มีหน่วยวัดเป็นวินาที(s) แต่คาบเวลาที่ใช้ส่วนใหญ่ดูเหมือนจะสั้นเป็นมิลลิวินาที(ms) และไมโครวินาที (µs)  1ms = 0.001s and 1µs = 0.000001s.
  • ความถี่(Frequency) คือจำนวนรอบคลื่นต่อวินาที มีหน่วยวัดเป็นเฮิรตซ์ (Hz) แต่ความถี่ที่ใช้ส่วนใหญ่จะสูงเป็นกิโลเฮิรตซ์ (kHz) และเมกะเฮิรตซ์ (MHz)
     1kHz = 1000Hz and 1MHz = 1000000Hz.
    ความถี่  =          1            และ    คาบเวลา  =          1        
    คาบเวลาความถี่
    ความถี่ของไฟฟ้าหลักในประเทศไทยคือ 50Hz,
    ดังนั้นจึงมีคาบเวลาเท่ากับ 1/50 = 0.02s = 20ms.

ค่ารูทมีนสแควร์(RMS)

RMS and peak voltagesค่าของแรงดันกระแสสลับจะเปลี่ยนอย่างต่อเนื่อง จากศูนย์ไปถึงยอดทางบวก กลับลงมายังศูนย์และไปยังยอดลบ แล้วก็กลับขึ้นมา
ยังศูนย์อีกครั้ง  โดยเวลาส่วนมากจะน้อยกว่าแรงดันยอด ทำให้การวัดจากผลที่แท้จริงไม่ดีจึงต้องใช้ค่าแรงดันรูทมีนสแควร์แทน (VRMS) ซึ่งคือ 0.707 ของแรงดันยอด (Vpeak):

VRMS = 0.707 × Vpeak   และ   Vpeak = 1.414 × VRMS
สมการนี้ใช้กับกระแสด้วย
ค่านี้เป็นจริงเฉพาะคลื่นรูปซายน์( เป็นรูปคลื่นธรรมดาที่สุดของไฟฟ้ากระแสสลับ)คลื่นรูปร่างอื่นต้องใช้ค่าที่ต่างออกไปไม่ใช่ 0.707 และ1.414
ค่าอาร์เอ็มเอสเป็นค่าประสิทธิผลของแรงดันหรือกระแสที่เปลี่ยนแปลง สามารถเทียบเท่าได้กับค่าดีซี(DC)สม่ำเสมอหรือคงที่ ซึ่งให้ผลเหมือนกัน
ตัวอย่างเช่น ต่อหลอดกับไฟเอซี 6V RMS จะให้ความสว่างเท่ากันกับหลอดที่ต่อกับไฟดีซีสม่ำเสมอ 6V  อย่างไรก็ตามแสงจะหรี่ลงหากต่อหลอดกับไฟเอซีแรงดันยอด 6V เพราะเมื่อคิดเป็นค่า RMS จะได้เท่ากับ 4.2V เท่านั้น( เทียบได้กับไฟดีซีสม่ำเสมอ 4.2V )
มันเป็นการช่วยให้ง่ายหากคิดว่าค่าอาร์เอ็มเอสเป็นค่าแบบเฉลี่ย  แต่ก็ไม่ใช่ค่าเฉลี่ยที่แท้จริง! ความจริงค่าเฉลี่ยของแรงดัน(หรือกระแส)ของสัญญาณเอซีจะเท่ากับศูนย์ เพราะส่วนบวกกับส่วนลบ จะหักล้างกันหมด
 ค่าไฟเอซีที่วัดด้วยมิเตอร์เป็นค่าอาร์เอ็มเอสหรือค่าแรงดันยอด?
โวลท์มิเตอร์และแอมป์มิเตอร์เอซีแสดงค่าอาร์เอ็มเอส(RMS) มิเตอร์ดีซี(DC)ก็แสดงค่าอาร์เอ็มเอส(RMS)เช่นกันเมื่อต่อวัดไฟดีซีที่เปลี่ยนแปลงอย่างรวดเร็ว แต่ถ้าความถี่น้อยกว่า 10Hz เราจะเห็นมิเตอร์แกว่งไปมา

คำว่า '6V AC' แท้จริงหมายถึง RMS หรือแรงดันยอด?

หากเป็นค่าแรงดันยอดต้องมีคำว่า"peak"กำกับชัดเจน ไม่เช่นนั้นเราต้องคิดว่าเป็นค่าอาร์เอ็มเอส(RMS)ไว้ก่อน  ปัจจุบันแรงดันและกระแสเอซีใช้ค่าอาร์เอ็มเอสเสมอเพราะรู้สึกมีเหตุผลเมื่อต้อง
เทียบกับกระแสหรือ แรงดันดีซีสม่ำเสมอจากแบตเตอรี่ตัวอย่างเช่น ไฟ'6V AC' หมายถึง 6V RMSและคิดเป็นแรงดันยอดเท่ากับ  8.5V  ไฟหลักในประเทศไทยคือ 220V AC หมายถึง 220V RMS ดังนั้นแรงดันยอดของไฟหลักประมาณเท่ากับ 311V

รูทมีนสแควร์(RMS)แท้จริงหมายถึงอะไร ?

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

อ้างอิง : https://bit.ly/2KNXQAF

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

Arduino & ESP32

Arduino Basic

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

1. ส่วนที่เป็น 
Hardware

ไมโครคอนโทรลเลอร์ (MCUMicrocontroller Unit) เป็นการร่วมกับอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ประกอบเป็นบอร์ดอิเล็กทรอนิกส์ขนาดเล็กเพื่อให้ง่ายต่อการใช้งาน หรือที่เรียกกันว่า บอร์ด Arduino โดยบอร์ด Arduino เองก็มีหลายรุ่นให้เลือกใช้ โดยในแต่ละรุ่นอาจมีความแตกต่างกันในเรื่องของขนาดหรือสเปค เช่น จำนวนของขารับส่งสัญญาณ แรงดันไฟที่ใช้ประสิทธิ
2. ส่วนที่เป็น Software คือ
ภาษา C / C++ เป็นภาษาสำหรับเขียนโปรแกรมควบคุม Arduino IDE เป็นเครื่องมือสำหรับเขียนโปรแกรมด้วยภาษา Arduino คอมไพล์โปรแกรม (Compile) และอัปโหลดโปรแกรมลงบอร์ด (Upload)
Arduino ทำอะไรได้ ?


          Arduino ถูกใช้ประโยชน์ในลักษณะเดียวกับ MCU อื่นๆ คือ ใช้ติดต่อสื่อสารและควบคุมอุปกรณ์ไฟฟ้าอื่นๆ ด้วยการเขียนโปรแกรมให้กับ MCU เพื่อควบคุมการรับส่งสัญญาณทางไฟฟ้าตามเงื่อนไขต่างๆ โดยตัวอย่าง การประยุกต์ใช้ Arduino ในชีวิตประจำวัน เช่น ระบบเปิด/ปิดไฟอัตโนมัติ ระบบเปิดปิดประตูอัตโนมัติ ระบบรดน้ำต้นไม้อัตโนมัติ หรือใช้ควบคุมความเร็วและทิศทางการหมุนของคุมมอเตอร์ เป็นต้น
Official Board กับ Compatible Board 

ต่างกันอย่างไร 
?

Arduino เป็น MCU ที่ Open-Source นั่นคือเปิดเผยแบบแปลนในการผลิต ทำให้ใคร ๆ ก็สามารถผลิตหรือสร้างบอร์ด Arduino ขึ้นมาได้ ดังนั้นบอร์ด Arduino จึงมีผู้ผลิตออกมาจำหน่ายมากมาย โดยแบ่งประเภทของบอร์ด Arduino จากแหล่งที่มาที่ต่างกันได้เป็น ประเภท ดังนี้


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

  • Compatible Board หรือ บอร์ดที่เข้ากันได้ (ใช้แทน Official Board ได้) ซึ่งไม่ได้ถูกผลิตโดยผู้ผลิตหลัก แต่อาจถูกผลิตขึ้นมาตามแบบแปลนแป๊ะ ๆ หรืออาจผลิตให้ใกล้เคียงกับแบบแปลนจากผู้ผลิตหลัก โดยอาจมีการปรับแบบหรืออุปกณ์เพื่อลดต้นทุน หรือเพื่อแม้แต่เพิ่มความสามารถและประสิทธิภาพ บอร์ดประเภทนี้ส่วนมากผลิตที่จีน (แต่ไอโฟนก็ผลิตที่ที่จีนนี่หน่า ฮ่าๆๆๆ) คุณภาพอาจไม่ดีมากนัก หรืออาจจะดีกว่าก็ได้ แต่ราคาถูก เหมาะกับการเอามาศึกษาในระดับผู้เริ่มต้น ซึ่งถ้าเทียบราคากันในรุ่น Arduino MEGA 2560 ราคาของ Official Board จะอยู่ที่ราว ๆ 1600 บาท ส่วน Compatible Board ราคาจะถูกว่าเกินครึ่ง


สิ่งที่ทำให้ 
Arduino น่าสนใจ ?
  • Arduino เป็นที่นิยมในวงการ MCU มาได้หลายปี กับนักอิเล็กทรอนิกส์ทั้งมือใหม่ และมือเก่า ทำให้เราสามารถหาอ่านคู่มือ วิธีใช้ วิธีแก้ปัญหาต่างๆ ได้ง่ายบนอินเทอร์เน็ต
  • Arduino พร้อมใช้งานทันที เพราะบอร์ด Arduino ติดตั้งอุปกรณ์จำเป็นพื้นฐานมาให้หมดแล้ว
  • Arduino สามารถเขียนโปรแกรมสั่งงานด้วยไวยากรณ์ภาษา C / C++ ซึ่งง่ายสำหรับผู้ที่มีพื้นฐานด้านการเขียนโปรแกรมอยู่บ้างแล้ว แต่สำหรับผู้ที่ไม่เคยเขียนโปรแกรมมาก่อนเลย ก็สามารถเริ่มต้นศึกษา และหาหนังสืออ่านได้ไม่ยาก นอกจากนี้ยังมี Library ให้เลือกใช้มากมาย ทำให้การเขียนโปรแกรมทำได้ง่ายและรวดเร็วขึ้น
  • Arduino ราคาไม่แพงเกินไปสำหรับผู้ที่อยากจะเริ่มต้นใช้งาน (แถมมี  Official Board ที่ราคาถูกกันเกินครึ่งให้ใช้นะออ!!)
  • การอัปโหลดโปรแกรมที่เขียนบนคอมพิวเตอร์ลงไปที่ Arduino ก็ทำได้โดยง่าย แค่ใช้สาย USB ต่อบอร์ด Arduino เข้ากับคอมพิวเตอร์ แล้วอัปโหลดด้วยโปรแกรม Arduino IDE เท่านั้นเอง


Arduino มีกี่แบบ ?
1. Arduino Uno R3 เป็นบอร์ด Arduino ที่ได้รับความนิยมสูงสุด เนื่องจากราคาไม่ถูก และมี Library ต่างๆ ที่พัฒนาขึ้นมา Support จะอ้างอิงกับบอร์ดนี้เป็นหลัก และถ้าหาก MCU เสีย ผู้ใช้งานสามารถซื้อมาเปลี่ยนเองได้ 
(ดูรายละเอียดสินค้า)
2. Arduino Uno SMD เป็นบอร์ดที่มีคุณสมบัติและการทำงานเหมือนกับบอร์ด Arduino UNO R3 ทุกอย่าง แต่จะแตกต่างกับที่ Package ของ MCU ซึ่งบอร์ดนี้จะมี MCU ที่เป็น Package SMD (SMD: Surface Mount Device) 
(ดูรายละเอียดสินค้า)
3. Arduino Nano 3.0 เป็น Arduino ที่ใช้หน่วยประมวลผล ATmega328 เช่นเดียวกับ Arduino Uno ความสามารถจึงเท่ากัน แตกต่างที่ Arduino Nano 3.0 ถูกออกแบบให้มีขนาดเล็ก โดยตัดส่วนของ Socket ที่ไม่จำเป็นออก และยังคงความสามารถในการติดต่อผ่าน USB port เหมือนบอร์ด Arduino ตัวใหญ่ไว้ อาจจะเรียกได้ว่า Arduino Nano 3.0 ตัวนี้ คือ Arduino Uno ขนาดย่อส่วนลงมา 
(ดูรายละเอียดสินค้า)


4. Arduino Mega 2560 R3 เป็นบอร์ด Arduino ที่ออกแบบมาสำหรับงานที่ต้องใช้ I/O มากกว่าArduino Uno R3 เช่น งานที่ต้องการรับสัญญาณจาก Sensor หรือควบคุมมอเตอร์ Servo หลายๆ ตัว ทำให้ Pin I/O ของบอร์ด Arduino Uno R3 ไม่เพียงพอต่อการใช้งาน ทั้งนี้บอร์ด Mega 2560 R3 ยังมีความหน่วยความจำแบบ Flash มากกว่า Arduino Uno R3 ทำให้สามารถเขียนโค้ดโปรแกรมเข้าไปได้มากกว่า ในความเร็วของ MCU ที่เท่ากัน 
(ดูรายละเอียดสินค้า)


5. Arduino Mega ADK เป็นบอร์ดที่ออกแบบมาให้บอร์ด Mega 2560 R3 สามารถติดต่อกับอุปกรณ์ Android Device ผ่านพอร์ต USB ของบอร์ดได้
6. Arduino Leonardo การทำงานจะคล้ายกับบอร์ด Arduino Uno R3 แต่มีการเปลี่ยน MCU ตัวใหม่เป็น ATmega32U4 ซึ่งมีโมดูลพอร์ต USB มาด้วยบนชิป (แตกต่างจากบอร์ด Arduino UNO R3 หรือArduino Mega 2560 ที่ต้องใช้ชิป ATmega16U2 ร่วมกับ Atmega328 ในการเชื่อมต่อกับพอร์ตUSB)    

ข้อระวัง: เนื่องจาก MCU เป็นคนละเบอร์กับ Arduino Uno R3 อาจะทำให้บอร์ด Shield บางตัวหรือLibrary ใช้ร่วมกันกับบอร์ด Arduino Leonardo ไม่ได้ ผู้ใช้งานจำเป็นต้องตรวจสอบก่อนใช้งาน
7. Arduino Mini 05 เป็นบอร์ด Arduino ขนาดเล็กที่ใช้ MCU เบอร์ ATmega328 เบอร์เดียวกับบอร์ด Arduino UNO R3
ข้อแตกต่าง: บอร์ด Arduino Mini 05 จะไม่มีพอร์ต USB มาให้ ผู้ใช้งานต้องต่อกับบอร์ด USB to Serial Converter เพิ่มเมื่อต้องการโปรแกรมบอร์ด

8. Arduino Pro Mini 328 3.3V เป็นบอร์ด Arduino ขนาดเล็ก ที่ใช้ MCU เบอร์ ATmega328 ซึ่งจะคล้ายกับบอร์ด Arduino Mini 05 แต่บนบอร์ดจะมี Regulator 3.3 V ชุดเดียวเท่านั้น ระดับแรงดันไฟที่ขา I/O คือ 3.3V
9Arduino Pro Mini 328 5V เป็นบอร์ด Arduino ขนาดเล็ก ที่ใช้ MCU เบอร์ ATmega328 เช่นเดียวกับบอร์ด Arduino Mini 05 แต่บนบอร์ดจะมี Regulator 5V ชุดเดียวเท่านั้น ระดับแรงดันไฟที่ขา I/O คือ 5V

10. Arduino Ethernet with PoE module เป็นบอร์ด Arduino ที่ใช้ MCU เบอร์เดียวกับ Arduino Uno SMD ในบอร์ดมีชิป Ethernet และช่องสำหรับเสียบ SD Card รวมทั้งโมดูล POE ทำให้บอร์ดนี้สามารถใช้แหล่งจ่ายไฟจากสาย LAN ได้โดยตรง โดยไม่ต้องต่อ Adapter เพิ่ม แต่บอร์ด Arduino Ethernet with PoE module นี้จะไม่มีพอร์ต USB ทำให้เวลาโปรแกรมต้องต่อบอร์ด USB toSerial Converter เพิ่มเติม
อ้างอิง : https://bit.ly/2Sdbe3x




ESP32

ESP32 เป็นชื่อของไอซีไมโครคอนโทรลเลอร์ที่รองรับการเชื่อมต่อ WiFi และ Bluetooth 4.2 BLE ในตัว ผลิตโดยบริษัท Espressif จากประเทศจีน โดยราคา ณ ที่เขียนบทความอยู่นี้ มีราคาไม่เกิน 500 บาท (บอร์ดพัฒนาสำเร็จรูป) โดยตัวไอซี ESP32 มีสเปคโดยละเอียด ดังนี้
ซีพียูใช้สถาปัตยกรรม Tensilica LX6 แบบ 2 แกนสมอง สัญญาณนาฬิกา 240MHz
มีแรมในตัว 512KB
รองรับการเชื่อมต่อรอมภายนอกสูงสุด 16MB
มาพร้อมกับ WiFi มาตรฐาน 802.11 b/g/n รองรับการใช้งานทั้งในโหมด Station softAP และ Wi-Fi direct
มีบลูทูธในตัว รองรับการใช้งานในโหมด 2.0 และโหมด 4.0 BLE
ใช้แรงดันไฟฟ้าในการทำงาน 2.6V ถึง 3V
ทำงานได้ที่อุณหภูมิ -40◦C ถึง 125◦C
นอกจากนี้ ESP32 ยังมีเซ็นเซอร์ต่าง ๆ มาในตัวด้วย ดังนี้
วงจรกรองสัญญาณรบกวนในวงจรขยายสัญญาณ
เซ็นเซอร์แม่เหล็ก
เซ็นเซอร์สัมผัส (Capacitive touch) รองรับ 10 ช่อง
รองรับการเชื่อมต่อคลิสตอล 32.768kHz สำหรับใช้กับส่วนวงจรนับเวลาโดยเฉพาะ
ขาใช้งานต่าง ๆ ของ ESP32 รองรับการเชื่อมต่อบัสต่าง ๆ ดังนี้
มี GPIO จำนวน 32 ช่อง
รองรับ UART จำนวน 3 ช่อง
รองรับ SPI จำนวน 3 ช่อง
รองรับ I2C จำนวน 2 ช่อง
รองรับ ADC จำนวน 12 ช่อง
รองรับ DAC จำนวน 2 ช่อง
รองรับ I2S จำนวน 2 ช่อง
รองรับ PWM / Timer ทุกช่อง
รองรับการเชื่อมต่อกับ SD-Card
นอกจากนี้ ESP32 ยังรองรับฟังก์ชั่นเกี่ยวกับความปลอดภัยต่าง ๆ ดังนี้
รองรับการเข้ารหัส WiFi แบบ WEP และ WPA/WPA2 PSK/Enterprise
มีวงจรเข้ารหัส AES / SHA2 / Elliptical Curve Cryptography / RSA-4096 ในตัว
ในด้านประสิทธิ์ภาพการใช้งาน ตัว ESP32 สามารถทำงานได้ดี โดย
รับ – ส่ง ข้อมูลได้ความเร็วสูงสุดที่ 150Mbps เมื่อเชื่อมต่อแบบ 11n HT40 ได้ความเร็วสูงสุด 72Mbps เมื่อเชื่อมต่อแบบ 11n HT20 ได้ความเร็วสูงสุดที่ 54Mbps เมื่อเชื่อมต่อแบบ 11g และได้ความเร็วสูงสุดที่ 11Mbps เมื่อเชื่อมต่อแบบ 11b
เมื่อใช้การเชื่อมต่อผ่านโปรโตคอล UDP จะสามารถรับ – ส่งข้อมูลได้ที่ความเร็ว 135Mbps
ในโหมด Sleep ใช้กระแสไฟฟ้าเพียง 2.5uA
จะเห็นได้ว่า ในราคาไม่ถึง 500 บาท (บอร์ดพัฒนาสำเร็จรูป) และโมดูลเปล่าราคาไม่ถึง 400 บาท สามารถให้ประสิทธิ์ภาพได้เกินราคา ด้วยเหตุนี้ ESP32 จึงเหมาะสำหรับนำมาใช้งานมาก ด้วยเหตุผลทางด้านราคา และประสิทธิ์ภาพที่ได้


ประวัติความเป็นมาของ ESP32


ก่อนที่ ESP32 จะได้ถือกำเนิดขึ้น ได้มีไอซีไมโครคอนโทรลเลอร์ที่มี WiFi ในตัว และทำราคาได้ถูกมาก ๆ ในขณะนั้น (เพียง $5 หรือประมาณ 200 บาท) ออกมาปฏิวัติโลกของระบบสมองกลฝังตัว นั่นก็คือไอซีเบอร์ ESP8266 ที่ผลิตโดยบริษัท Espressif จากประเทศจีน ในช่วงเริ่มแรก ไอซี ESP8266 สามารถทำงานได้โดยใช้การสื่อสารผ่าน UART เท่านั้น และพูดคุยสั่งงานผ่าน AT command ไม่สามารถอัพเดท หรือแก้ไขเฟิร์มแวร์ด้านในได้ แต่ต่อมาไม่นานบริษัท Espressifก็ได้ออกไอซีเวอร์ชั่นใหม่มา ในครั้งนี้สามารถที่จะอัพเดทเฟิร์มแวร์ได้ และเราสามารถลงไปเขียนเฟิร์มแวร์เองได้ โดยในขณะนั้น การเขียนเฟิร์มแวร์จะใช้ภาษา C เพียงอย่างเดียว และใช้ ESP8266 SDK เป็นชุดซอฟแวร์พัฒนา ด้วยความยากของการใช้งานภาษา C เพียงอย่างเดียว ทำให้ไม่ได้รับความนิยมเรื่องการพัฒนาเฟิร์มแวร์เองมากนัก
รูปที่ 1.2 โมดูล ESP8266 01 ผลิตโดยบริษัท Ai-Thinker หัวใจหลักคือไอซี ESP8266


หลังจากนั้นมาประมาณ 1 ปี ผู้ผลิตบอร์ด NodeMCU ได้พอร์ตตัว Runtime ภาษา Lua มาลงใน ESP8266 ทำให้ตัว ESP8266 สามารถเขียนโปรแกรมสั่งงานตรง ๆ ได้ง่ายขึ้นมาก รวมทั้งมีเสถียรภาพเพิ่มขึ้น และในขณะนี้เอง บอร์ด NodeMCU เป็นบอร์ดพัฒนา ESP8266 สำเร็จรูปเพียงบอร์ดเดียวในตลาด ที่มาพร้อมกับ USB to UART ทำให้ให้สามารถอัพโหลดเฟิร์มแวร์เข้า ESP8266 ได้ผ่าน USB โดยตรง นอกจากนี้ผู้พัฒนาบอร์ด NodeMCU ได้คิดค้นวงจรการเข้าโหมดอัพโหลดโปรแกรมอัตโนมัติ และตั้งชื่อว่า nodemcu ซึ่งภายหลังบอร์ดพัฒนาทุกรุ่น จะใช้วงจรแบบ nodemcu ในการเข้าโหมดอัพโหลดโปรแกรมอัตโนมัติ และด้วยเหตุผลที่บอร์ด NodeMCU เป็นบอร์ดพัฒนา ESP8266 บอร์ดแรกในท้องตลาด ทำให้ได้รับความนิยมมาก และหลังจากบริษัทในจีนต่าง ๆ ได้ลอกวงจร และลายปริ้นของ NodeMCU มาทำขายเองในราคาที่ถูก แล้วใช้ชื่อเดิมคือ NodeMCU จึงทำให้บอร์ด NodeMCU ได้รับความนิยมมากจนถึงปัจจุบัน


รูปที่ 1.3 ด้านซ้าย บอร์ด NodeMCU 0.9 และด้านขวา บอร์ด NodeMCU 1.0


หลังจากตัว Runtime ภาษา Lua ได้ถูกพอร์ตมาลง ESP8266 ได้ประมาณ 2 – 4 เดือน ทางชุมชนพัฒนา ESP8266 ที่ชื่อ ESP8266 Community Forum (www.esp8266.com) ได้ออกชุดไลบารี่ และคอมไพล์เลอร์สำหรับใช้กับโปรแกรม Arduino IDE มาในชื่อ Arduino core for ESP8266 WiFi chip ทำให้การพัฒนาเฟิร์มแวร์ของ ESP8266 นั้นง่ายขึ้นมาก ๆ โดยใช้การเขียนโปรแกรมแบบ Arduino ดังนั้นคนที่มีพื้นฐานการเขียนโปรแกรมลงบอร์ด Arduino เป็นอยู่แล้ว จึงมาเขียนเฟิร์มแวร์ลง ESP8266 โดยใช้โปรแกรม Arduino ได้ไม่ยาก และนอกจากนี้ ไลบารี่ต่าง ๆ ที่ใช้งานได้กับบอร์ด Arduino ยังสามารถนำมาใช้งานกับ ESP8266 ได้เลย ทำให้ ESP8266 ได้รับความนิยมสูงมากมาจนถึงขณะนี้


รูปที่ 1.4 หน้าเว็บหลักของชุดซอฟแวร์ Arduino core for ESP8266 WiFi chip อยู่บน GitHub


ด้วยความสำเร็จอย่างถึงที่สุดของไอซี ESP8266 ทำให้บริษัท Espressif ออกไอซีรุ่นถัดไปมา ในช่วงแรกใช้ชื่อว่า ESP31B เปิดให้ร้านค้าใหญ่ ๆ อย่าง Adafruit SparkFun และผู้สนใจบางส่วนได้ทดสอบ โดยในขณะนั้นได้มีการพัฒนาชุดซอฟแวร์ ESP32_RTOS_SDK ไปพร้อม ๆ กับการพัฒนาไอซี ESP31B ทำให้มีคนนำชุด ESP32_RTOS_SDK ไปพัฒนาลงโปรแกรม Arduino รอก่อนไอซีตัวจริงจะออก ในชื่อ Arduino core for ESP31B WiFi chip แต่หลังจากนั้นไม่นาน บริษัท Espressif ได้ยกเลิกการใช้ชุดซอฟแวร์พัฒนา ESP32_RTOS_SDK แล้วไปสร้างชุดพัฒนาใหม่ที่ชื่อ ESP-IDF แทน (แต่เมื่อไปเจาะลึก จะพบว่าภายในแทบจะลอก ESP32_RTOS_SDK มาทั้งหมด) จากนั้นจึงออกไอซี ESP32 ออกมาเป็นครั้งแรก


รูปที่ 1.5 ด้านหน้า และด้านหลังของโมดูล ESP31B-WROOM-03 ใช้ชิปไอซี ESP31B


ด้วยในอดีตที่ไอซี ESP8266 ได้ทำไว้ดีมาก จึงส่งผลให้ ESP32 ได้รับความสนใจอย่างมาก จนผลิตไม่ทันต่อความต้องการ โดยในช่วงแรก บริษัท Espressif ได้ให้ข่าวว่า จะผลิต ESP32 แบบโมดูลออกมาเพียงอย่างเดียว ในชื่อ ESP-WROOM-32 หลังจากนั้นไม่นาน บริษัท Ai-Thinker ได้ร่วมมือกับ Seeedstudio ผลิตโมดูล ESP3212 ขึ้นมา โดยมีสถานะเป็นพรีออเดอร์ แต่เมื่อถึงกำหนดส่งมอบ บริษัท Seeedstudio ได้เลื่อนการส่งมอบออกไป ด้วยปัญหาด้านการออกแบบลายวงจรของตัวโมดูลเอง ทาง Ai-Thinker จึงได้ยกเลิกการผลิต ESP3212 แล้วหันไปผลิต ESP32S แทน โดยลายวงจรเหมือนกับ ESP-WROOM-32 ทุกประการ แล้วจึงเริ่มส่งมอบสินค้าได้


รูปที่ 1.6 หน้าตาของโมดูล ESP3212 ที่ Ai-Thinker ร่วมกับ Seeedstudio ผลิตขึ้น


รูปที่ 1.7 หน้าตาของโมดูล ESP32S ที่ Seeedstudio ส่งมอบ


หลังจากสินค้า ESP32S ได้เริ่มส่งมอบ ทางทีมผู้พัฒนา Arduino core for ESP8266 WiFi chip ได้ถูกบริษัท Espressif ซื้อตัวมาทั้งหมด แล้วจ้างให้พัฒนาชุดไลบารี่และคอมไพล์เลอร์สำหรับ Arduino ในชื่อ Arduino core for ESP32 WiFi chip ทำให้การพัฒนาเป็นไปด้วยความรวดเร็วมากขึ้น ภายหลัง ผู้พัฒนา Arduino core for ESP31B WiFi chip ก็ถูกดึงตัวให้มาร่วมทีมพัฒนา Arduino core for ESP32 WiFi chip ด้วยเช่นเดียวกัน
การพัฒนา Arduino core for ESP32 WiFi chip จะทำไปควบคู่กับการพัฒนา ESP-DF โดยที่ ESP-IDF จะเป็นแกนหลัก เมื่อมีการเพิ่มฟิเจอร์ใหม่ ๆ ให้ ESP-IDF แล้ว จึงจะมีการเพิ่มใน Arduino core for ESP32 WiFi chip โดยที่ ESP-IDF รองรับการเขียนโปรแกรมแบบ Arduino เช่นเดียวกัน และรองรับทุกไลบารี่ที่ใช้ได้สำหรับ Arduino เพียงแต่ ESP-IDF ไม่มีโปรแกรม Editor โดยเฉพาะเท่านั้นเอง


รายชื่อผู้พัฒนาชุด ESP_IDF


ในฐานะของผู้ใช้งานเต็มรูปแบบ เราควรที่จะทำความรู้จักกับทีมผู้พัฒนากันบ้าง โดยชื่อที่ยกมานี้ เป็นชื่อที่ใช้ในเว็บ GitHub
Igrr (ผู้พัฒนาหลัก และเรามักได้ข่าวฟิเจอร์ใหม่ ๆ ของ ESP_IDF จากบัญชีทวิตเตอร์ของเขา)
Projectgus
Spritetm
Liuzfesp
TianHao-Espressif
wmy-espressif
heyinling
wujiangang
TimXia
Costaud
Krzychb
me-no-dev
รายชื่อผู้พัฒนาชุด Arduino core for ESP32 WiFi chip


เมื่อเข้าไปดูรายชื่อผู้พัฒนา Arduino core for ESP32 WiFi chip จะพบว่า มีผู้พัฒนาหลักอยู่เพียงรายเดียว อาจจะเพราะ ESP_IDF สามารถเขียนโค้ดแบบ Arduino ได้อยู่แล้ว การนำ ESP_IDF มาลง Arduino อาจไม่ใช่เรื่องยาก จึงไม่ต้องใช้นักพัฒนาที่มากมายนัก
me-no-dev (ผู้พัฒนาหลัก คนเดียวกับที่พัฒนาชุด Arduino core for ESP31B WiFi chip)
ชุดซอฟแวร์พัฒนา ESP32 อื่น ๆ


ตั้งแต่ยุคของ ESP8266 ที่ได้รับความนิยมสูงสุด ได้มีการพยายามนำตัว Runtime ของภาษาระดับสูงหลาย ๆ ตัวมาใช้ เพื่อให้คนที่คุ้นชินกับภาษาระดับสูงเหล่านั้น ได้มาใช้ ESP8266 ได้ง่ายมากยิ่งขึ้น เมื่อมาถึงยุค ESP32 ก็ได้มีการนำซอสโค้ดเดิมที่ทำไว้ มาดัดแปลงและใช้งานกับ ESP32 ด้วย


LuaNode


เป็นชื่อของชุดพัฒนา ESP32 ที่นำ Rumtime ของภาษา Lua มาลงใน ESP32 ทำให้ ESP32 ใช้ภาษา Lua ได้ พัฒนาโดยบริษัท DOIT ที่ทำบอร์ดพัฒนา ESP32 ในชื่อ DOIT ESP32 Development Board โดยความสามารถของ LuaNode คือรองรับคำสั่งที่ใช้บน Lua จริง ๆ แทบทุกคำสั่ง และรองรับการควบคุม WiFi เต็มรูปแบบ ดังนั้นหากผู้อ่านที่ใช้ภาษา Lua เป็นอยู่แล้ว ก็แนะนำให้ลองไปเล่นกันได้ครับ โดยรายละเอียดจะอยู่ที่ https://github.com/Nicholas3388/LuaNode


รูปที่ 1.8 หน้าตาบอร์ดพัฒนา DOIT ESP32 Development Board


MicroPython-ESP32


รูปที่ 1.9 โลโก้ของโครงการ MciroPython


ชุดพัฒนาที่พยายามสร้างตัว Runtime ของภาษา Python 3 บนไมโครคอนโทรลเลอร์ต่าง ๆ พัฒนาโดย MicroPython ก่อนหน้านี้เขาได้เปิดระดมทุนในเว็บ Kickstarter เพื่อนำ Python 3 มาลงใน ESP8266 แล้วประสบความสำเร็จอย่างมาก ทำให้โครงการสามารถอยู่มาได้เรื่อย ๆ จนสามารถนำภาษา Python 3 มาใช้บน ESP32 ได้สำเร็จ
MicroPython-ESP32 รองรับการใช้งานพื้นฐานภาษา Python ส่วนใหญ่ได้ รองรับการจัดการ WiFi การเชื่อมต่อ I2C SPI ADC และการควบคุม GPIO เต็มรูปแบบ หากสนใจสามารถเข้าไปลองอ่านรายละเอียดได้ที่ https://github.com/micropython/micropython-esp32


Espruino on ESP32


รูปที่ 1.10 โลโก้ของโครงการ Espruino


เป็นชุดพัฒนาที่พยายามทำให้สามารถใช้ภาษา JavaScript ในการสั่งงานได้ โดยโครงการ Espruino ได้ทำตัว Runtime ขึ้นมาใช้กับ ESP32 และไมโครคอนโทรลเลอร์อื่น ๆ โครงการนอกจากจะพัฒนาตัวเฟิร์มแวร์ Runtime แล้ว ยังได้พัฒนา Espruino Web IDE ซึ่งเป็นโปรแกรม IDE แบบเว็บแอพพลิเคชั่นที่ใช้งานร่วมกับ Google Chrome ด้วย ในการติดตั้ง จะต้องติดตั้งผ่าน Chrome เว็บสโตร์ รองรับการเขียนโปรแกรมแบบ Text และภาษาบล็อก (Block)


รูปที่ 1.11 หน้า UI ของโปรแกรม Espruino Web IDE


ในขณะที่เขียนชุดบทความนี้ Espruino on ESP32 รองรับการควบคุม GPIO และบัสพื้นฐานอย่าง 1-wire I2C SPI DAC ADC UART และรองรับการใช้งาน WiFi แล้ว แต่ยังไม่รองรับการใช้งานบลูทูธ และการอัพโหลดโปรแกรมไร้สาย (Over-The-Air : OTA) หากสนใจ สามารถเข้าไปอ่านรายละเอียดได้ที่ http://www.espruino.com/ESP32

อ้างอิง : https://bit.ly/2R7hMAK


ภาษาของการเขียนโปรแกรมใช้งานArduino 

      “Arduino” เป็นแพลตฟอร์มที่ใช้ภาษา C / C++ ในการเขียนโปรแกรมสั่งงาน แต่การเขียนโปรแกรมในแพลตฟอร์ม Arduino นั้นจะง่าย และสามารถเข้าใจได้ นอกจากนี้ แพลตฟอร์มยังมีฟังก์ชั่นทำงานหลาย ๆ ที่อำนวยความสะดวกไว้ให้แล้ว เช่น ฟังก์ชั่นหน่วงเวลา ฟังก์ชั่นอินเตอร์รัพท์ ฟังก์ชั่นอ่านค่า GPIO ซึ่งในแพลตฟอร์มอื่น ๆ จะไม่มีการเตรียมฟังก์ชั่นไว้ให้ใช้งานได้สะดวกเท่ากับ Arduino


เว็บไซต์ที่ขาย จำหน่าย และบทความเกี่ยวกับ Arduino & ESP32

  • https://www.mcucity.com
  • https://www.arduinothai.com
  • https://www.arduitronics.com
  • http://robo-circuit.com
  • https://www.arduinoall.com