วันอังคารที่ 22 ตุลาคม พ.ศ. 2562

ESP32:เริ่มใช้ IOT ด้วย ESP32 แบบมือใหม่

เริ่มใช้ IOT ด้วย ESP32 แบบมือใหม่

    บทความนี้สำหรับผู้สนใจเริ่มใช้จริงๆ สำหรับผู้ที่ไม่รู้จัก Internet of Things (IoT) ก็คือ "อินเตอร์เน็ตของทุกสิ่ง" หมายถึง การที่อุปกรณ์ที่มีสมองกลที่ฝังอยู่ในเครื่องใช้ต่างๆ ถูกเชื่อมโยงสู่โลกอินเตอร์เน็ต สามารถส่งข้อมูลกันได้ มนุษย์สามารถสั่งการควบคุมผ่านทางเครือข่าย เช่น การสั่งงาน อุปกรณ์เครื่องใช้ไฟฟ้า  รถยนต์ เครื่องมือทางการเกษตร ฯลฯ อุปกรณ์ธรรมดาในชีวิตประจำวันเช่นตู้เย็น ทีวี พัดลม ฯลฯ จะมีระบบนี้อยู่ สมัยก่อนอาจจะเรียกระบบฝังตัว หรือ สมองกลฝังตัว (embedded system) มาสมัยนี้เน้นที่ต่ออินเตอร์เน็ตได้ ก็เลยเรียกเป็น IOT
    ใครควรจะเรียน ? สมัย 20ปี ก่อนกว่าผมได้เรียนก็ตอนมหาวิทยาลัยคณะวิศวกรรมคอมพิวเตอร์ และยังเป็นแค่อุปกรณ์ฝังตัวไม่ได้ต่ออินเตอร์เน็ต แต่มาสมัยนี้เด็กประถมก็เรียนกันได้แล้ว ปัจจุบันนี้มันใช้ง่าย หาง่าย ราคาไม่แพง เด็กๆประถมทำอุปกรณ์ปิดเปิดไฟผ่านมือถึอกันได้สบายๆ เราควรพัฒนาทักษะของทุกคนเพื่อให้เท่าทันกับยุคต่อไป ผมสอนฟิสิกส์ กับ IT อยู่ก็เลยต้องศึกษา IOT เพื่อเป็นแนวทางในการเรียนการสอนต่อไป
    เริ่มยังไงดี ? มีตัวเลือกให้ใช้งานหลายตัวอยู่เหมือนกัน มีข้อดีข้อเสียต่างกันไป ต้องเลือกให้เหมาะกับงาน ถ้าเราได้ใช้งานไปก็จะรู้เองว่าควรใช้ตัวไหน ข้อมูลต่อไปนี้จะเป็นรุ่นที่นิยมใช้กัน

Raspberry Pi : มันคือเครื่องคอมพิวเตอร์ขนาดเล็กดีๆนั่นเอง(Single Board Computer) ประสิทธิ์ภาพสูงใช้งานได้หลากหลายตั้งแต่ง่ายๆถึงซับซ้อน เน้นใช้กับระบบปฎิบัติการ Linux ฟังก์ชั่นมาก การสือสาร LAN Wifi Bluetooth ต่ออุปกรณ์ USB เพิ่มได้มากมาย บ้านเกิดอยู่ที่อังกฤษ มีหลายรุ่น ราคา ตั้งแต่ 400-2000 กว่าบาท ฐานคนใช้งานเยอะมาก ใช้สอนคอมพิวเตอร์สำหรับเด็กเล็กถึงผู้ใหญ่
Raspberry PI 4  model B
Arduino: ราคาถูกมีให้เลือกหลายรุ่นทั้งงานทั่วไปและเฉพาะทาง มี Arudino IDE ให้ใช้ฟรี  ประสิทธิ์ภาพการประมวลผลไม่สูงมากนัก มักใช้กับงานไม่ซับซ้อนเช่นเปิดปิดไฟ อ่านค่าเซนเซอร์ บ้านเกิดคืออิตาลี จริงๆราคาไม่ถูกนัก แต่มีรุ่น clone (ก็อป)จากจีนทำให้ราคาถูกมาก ตั้งแต่ไม่ถึงร้อยถึงหลักพัน นิยมใช้งานสูงมากๆ
ESP8266 : เหมาะกับงาน IOT มากเพราะสามารถต่ออินเตอร์เน็ตผ่าน Wifi ได้ ตอนออกมาแรกๆเป็นบอร์ดเสริมสำหรับ Arduino แต่ตัวบอร์ดเองมีศักยภาพสูง เมื่อมีซอฟแวร์ที่เหมาะสมออกมาสามารถทำงานได้ทัดเทียหรือดีกว่า Arduino  บ้านเกิดคือจีนดังนั้นราคาถูกมาก จึงเป็นที่นิยม ราคาเริ่มต้นไม่ถึงร้อยบาท บางคนเรียกว่า Arduino killer เลยทีเดียว สามารถเขียนโปรแกรมด้วย Arduino IDE และใช้โค้ดตัวเดียวกันได้เลย


ESP32 : จากความสำเร็จของ ESP8266 รุ่นต่อมาประสิทธิ์ภาพสูงขึ้นในทุกด้านสามารถเชื่อมต่อ Wifi และ Bluetooth ได้ เนื่องจากบ้านเกิดคือจีนราคาก็เลยถูกเหลือเชื่อ บอร์ดสำหรับพัฒนาเริ่มที่หนึ่งร้อยกว่าบาท


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

    แล้วจะเลือกตัวไหนดี? ถ้าเอาง่ายเหมือนใช้คอมพิวเตอร์ก็แนะนำ Raspberry PI เด็กเล็กก็ใช้ได้ สามารถต่อจอกับคีย์บอร์ดพัฒนาโปรแกรมโดยไม่ต้องมีคอมพิวเตอร์ได้เลย สามารถย้ายโปรแกรมบางตัวที่พัฒนาบนเครื่อง PC มาใช้งานได้ทันที่ ตัวเลือกในการพัฒนามีมากมาย  คู่มือและเอกสารสอนวิธีใช้มีมาก แต่บางทีข้อดีก็เป็นข้อเสียในตัวเอง จากประสบการณ์ผมเองเริ่มเล่น Raspberry PI มาหลายรุ่น ต้องซื้อ SD เพิ่ม สายออกจอ หม้อแปลงไฟ(ที่ดีพอ) ฯลฯ (รวมๆแล้วแพงเหมือนกัน) วุ่นวายติดตั้งระบบปฎิบัติการซึ่งมีหลายตัวให้เลือก แล้วก็เลือกไม่ถูกว่าจะพัฒนาด้วยบภาษาหรือแบบไหนดี(มีให้เลือกเยอะ)  กว่าจะทำซักอย่าง เวลาหาข้อมูลเองก็จะงงเหมือนกันเพราะมีหลายวิธี เลือกไม่ถูก มีอะไรให้ทำมาก ทำให้หลงไปทำอย่างอื่นซะก่อน กลายเป็นว่าใช้เวลาในการศึกษานานกว่าเดิม การใช้งานเป็นคอมพิวเตอร์ก็ค่อนข้างช้าไม่สะดวกเท่าไหร่นัก
         สำหรับการเริ่มต้นศึกษาอยากแนะนำให้ลองเริ่มที่ ESP32 จะได้เห็นภาพของ IOT ได้ชัดเจน มันทำไม่ได้มากเท่า Raspberry PI เวลาหาข้อมูลจะไม่หลงทาง หาซื้อก็ง่าย ถูกดี รุ่นถูกๆงบไม่กี่ร้อยบาท มีคอมพิวเตอร์หนึ่งเครื่อง สายยูเอสบี กับบอร์ด ESP32 ก็เพียงพอที่จะเขียนโปรแกรมทำอะไรได้แล้ว ไม่ได้่หมายความว่ามันจะง่ายกว่าทั้งหมดนะ เพราะต้องเขียนด้วยภาษา C (ไม่ง่ายนัก) แต่เพราะมี Arduino IDE ช่วยทำให้ใช้งานได้ง่าย นอกจากนี้ยังมีตัวพัฒนาโปรแกรมเป็นแบบต่อบล็อกคำสั่งเหมาะกับผู้ที่เริ่ม

สิ่งที่จะต้องมี

  • บอร์ด ESP32 พร้อมสาย USB
  • ไดร์เวอร์ USB2Serial
  • Arduino IDE
  • ติดตั้งซอฟท์แวร์สำหรับบอร์ด ESP32 ใน Arduino


หาซื้อบอร์ด ESP32

    รออะไรอยู่หละ ว่าแล้วก็ไปหาซื้อ ESP32 มาซักรุ่น Node32 Lite ผลิดโดยคนไทย สองร้อยกว่าบาท(295บาท) แพงกว่าจีนหน่อย แต่สวย คุณภาพดีและไม่มีปัญหาจุกจิก แต่ตัวแรกที่ผมใช้คือ DOIT ESP32 DevKit จากจีนแต่ซื้อในไทยเพราะมันถูกดี ตัวอย่างทั่วไปสำหรับบทความในเวปนี้จะใช้เป็นรุ่นนี้ครับ
DOIT ESP32 DevKit


ข้อมูลบอร์ด ESP32 รุ่นต่างๆ

ไดร์เวอร์ USB2Serial

  สำหรับคนใช้ Mac หรือวินโดว์รุ่นต่ำกว่า 10 อาจจะต้องติดตั้งไดร์เวอร์ ได้เวอร์ขี้นกับบอร์ดที่เราใช้

  • บอร์ดส่วนมากในท้องตลาดใช้ Silicon Labs CP210x USB to UART 
  • มีบางรุ่นใช้ของ FTDI 
  • รุ่นราคาถูกมากๆ อาจจะใช้รุ่นนี้ WCH CH340

วิธีการติดตั้ง  Arduino IDE

ดาว์โหลด Arduino IDEจากที่นี้มาติดตั้ง
https://www.arduino.cc/en/main/software
เนื่องจากเป็นโปรแกรมฟรีจะมีให้เลือกบริจาคด้วย แต่ตอนนี้เราทำการดาว์นโหลดอย่างเดียว

ติดตั้งซอฟท์แวร์สำหรับบอร์ด ESP32 ใน Arduino

บอร์ด ESP32 มันไม่ใช้ Arduino ตรงๆจะต้องติดตั้งโปรแกรมเพิ่มเพื่อให้เห็นบอร์ด หลังติดตั้ง Arduino IDE เสร็จให้เรียกโปรแกรม Arduino ขึ้นมาเลือกที่เมนู File/Preference จะเป็นดังภาพล่าง ตรง Additional Boards Manager URLs: ให้เพิ่มบรรทัดข้างล่างนี้ลงไป
https://dl.espressif.com/dl/package_esp32_index.json

หลังจากนั้นไปที่ Tools/Board/Boards Manager ค้นหาคำว่า ESP32 ในช่องค้นหา(ตามภาพด้านล่าง)
จะเจอ esp32 by Espressif System .... ให้เลือก Install


หลังจากนั้นจะมีบอร์ด ESPให้เราเลือก ให้เลือกให้ตรงกับรุ่นบอร์ดของเรา ถ้าไม่มีในรายการให้เลือกเป็น ESP32 Dev Module เท่านี้ควรพร้อมที่จะอัปโหลดโปรแกรมทดสอบได้แล้ว





ต่อ ESP32 กับคอมพิวเตอร์ ลองดูว่าตรง Port มีเพิ่มขึ้นมาหลังจากเชื่อมต่อ ESP32 กับคอมหรือไม่ ในวินโดว์ของคนจะเห็นเป็น COM3 ขึ้นมา(อาจจะแตกต่างกันไปในแต่ละเครื่อง COM3, COM4, COM5 ...)
   ทดสอบเอาโปรแกรมเข้าไปใส่ใน ESP32 เปิดตัวอย่างจากเมนู File/Examples/Basic/01.Basic/Blink  รูปเครื่องหมายลูกศรไปทางขวาด้านขวาของเครื่องหมายถูก ในโปรแกรมจะเป็น Upload โปรแกรม มันจะคอมไพล์โปรแกรมแล้วอัปโหลดไปที่บอร์ดของเรา ถ้าเลือกบอร์ดถูกต้อง ไฟที่อยู่บนบอร์ดจะกระพริบตามโค้ดที่เขียนในตัวอย่าง ถ้าบอร์ดของใครไม่ตรงกับรายการที่ให้เลือก ให้เปลี่ยนคำว่า LED_BUILTIN เป็นตัวเลขของพอร์ตที่ต่อกับหลอดไฟนั้น (ต้องดูจากคู่มือของบอร์ด) บางบอร์ดไม่มีหลอด LED ที่โปรแกรมได้จะไม่สามารถทำตัวอย่างนี้ได้

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000); 
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}
มีบอร์ดหลายตัวที่มีปุ่ม Boot ซึ่งปุ่มนี้ต่อที่ GPIO 0 เราใช้ปุ่มนี้ในการควบคุมการปิดเปิดไฟ LED ถ้าเป็นปุ่มที่เขียนว่า RST(Reset) หรือ EN จะไม่สามารถเอามาใช้งานได้
const int buttonPin = 0; // Boot button is pin 0
const int ledPin =  LED_BUILTIN; // You can use pin number instead
int buttonState = 0;     // push button status
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop() {
  buttonState = digitalRead(buttonPin);
  digitalWrite(ledPin, buttonState);
}
เป็นการแนะนำวิธีใช้เบื้องต้น ลองไปดูตัวอย่างที่เหลือดูได้ครับ ถ้าจะศึกษาเพิ่มเติม ลองไปหาโมดูลมาต่อแล้วเขียนโปรแกรมใช้งานดู หรือดู บอร์ด ESP32 รุ่นต่างๆ

เพิ่มเติม







1 ความคิดเห็น:

Module:Control:IFR 520

MOSFET Module  สวิตซ์ปิดเปิดไฟเหมือน Relay แต่เป็น Solid state (ไม่มีส่วนที่เคลื่อนไหว) มันทำงานที่ความถี่สูงได้เหมาะกับเอาไปใช้งาน PWM ...