การใช้งาน NodeMCU ESP8266 กับ Arduino IDE ภาษา C++
Internet of Things (IoT) ได้รับความนิยมในโลกของเทคโนโลยี มันได้เปลี่ยนวิธีการทำงานของเรา ให้วัตถุทางกายภาพและโลกดิจิตอลเชื่อมต่อกันมากขึ้นกว่าเดิม เมื่อคำนึงถึงเรื่องนี้ Espressif Systems (บริษัท เซมิคอนดักเตอร์ในเซี่ยงไฮ้) ได้เปิดตัวไมโครคอนโทรลเลอร์ที่รองรับ WiFi ที่มีขนาดเล็ก คือ ESP8266 ในราคาที่ไม่แพง สามารถตรวจสอบและควบคุมสิ่งต่าง ๆ จากที่ใดก็ได้ในโลก – สมบูรณ์แบบสำหรับทุกโครงการของ IoT
โมดูล ESP-12E
ทีมงาน Espressif Systems ได้ออกแบบและผลิตโมดูล ESP-12E ที่มีชิป ESP8266 ที่มีไมโครโปรเซสเซอร์ Tensilica Xtensa® 32-bit LX106 RISC ซึ่งทำงานที่ความถี่ 80 ถึง 160 MHz สามารถปรับได้และรองรับ RTOSESP-12E Chip
- Tensilica Xtensa® 32-bit LX106
- 80 to 160 MHz Clock Freq.
- 128kB internal RAM
- 4MB external flash
- 802.11b/g/n Wi-Fi transceiver
ESP8266 รวมตัวรับส่งสัญญาณ Wi-Fi HT40 802.11b / g / n ดังนั้นจึงไม่เพียง แต่สามารถเชื่อมต่อกับเครือข่าย WiFi และโต้ตอบกับอินเทอร์เน็ตเท่านั้น แต่ยังสามารถตั้งค่าเครือข่ายของตัวเองได้ ทำให้อุปกรณ์อื่น ๆ สามารถเชื่อมต่อโดยตรงกับมัน และสิ่งนี้ทำให้ ESP8266 NodeMCU มีความอเนกประสงค์ในการใช้งานมากยิ่งขึ้น
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโมดูล ESP-12E โปรดดูข้อมูลด้านล่าง
ความต้องการพลังงาน
เนื่องจากช่วงแรงดันไฟฟ้าของ ESP8266 คือ 3V ถึง 3.6V บอร์ด ESP8266 จึงมาพร้อมกับตัวควบคุมแรงดันไฟฟ้า LDO เพื่อควบคุมให้แรงดันคงที่ 3.3V ซึ่งสามารถจ่ายกระแสได้สูงสุดถึง 600mA ซึ่งน่าจะเกินพอเพราะ ESP8266 กินกระแสมากที่สุดคือ 80mA ในระหว่างการส่งสัญญาณเอาท์พุทออกไป โดยขา 3V3 นี้สามารถใช้เพื่อจ่ายพลังงานให้กับอุปกรณ์ภายนอกได้อีกด้วย
Power Requirement
- Operating Voltage: 2.5V to 3.6V
- On-board 3.3V 600mA regulator
- 80mA Operating Current
- 20 µA during Sleep Mode
การจ่ายไฟให้ ESP8266 NodeMCU สามารถใช้ผ่านช่องเสียบ Micro USB หรือหากมีแหล่งจ่ายไฟแรงดัน 5V ก็สามารถป้อนที่ขา VIN เพื่อเป็นแหล่งจ่ายไฟให้ ESP8266 และอุปกรณ์ต่อพ่วงได้โดยตรง
คำเตือน
ESP8266 ต้องการแหล่งจ่ายไฟ 3.3V และ ขา GPIO ส่งไฟออก 3.3V สำหรับการสื่อสาร ซึ่งขา GPIO และ ขา 3.3 V นั้นไม่ทนทานต่อ 5V! ดังนั้นต้องระมัดระวังในการเชื่อมต่อด้วย
อุปกรณ์ต่อพ่วงและ I/O
ESP8266 NodeMCU มีขาทั้งหมด 17 GPIO ที่แยกออกจากส่วนหลักๆของขาทั้งสองด้านของบอร์ดพัฒนา ซึ่งขาเหล่านี้สามารถกำหนดให้กับอุปกรณ์ต่อพ่วงได้ทุกประเภทรวมไปถึง:
- ADC channel – ช่อง ADC ขนาด 10 บิต
- UART interface – ส่วนต่อประสาน UART ใช้ในการโหลดโค้ดแบบอนุกรม
- PWM outputs – พิน PWM สำหรับหรี่ไฟ LED หรือควบคุมมอเตอร์
- SPI, I2C & I2S interface – อินเตอร์เฟซ SPI และ I2C เพื่อเชื่อมต่อเซ็นเซอร์และอุปกรณ์ต่อพ่วงทุกประเภท
- I2S interface – อินเทอร์เฟซ I2S หากต้องการเพิ่มเสียงให้กับโปรเจค
Multiplexed I/Os
- 1 ADC channels
- 2 UART interfaces
- 4 PWM outputs
- SPI, I2C & I2S interface
ต้องขอบคุณ คุณสมบัติขามัลติฟังก์ชั่นของ ESP8266 (อุปกรณ์ต่อพ่วงหลายอันที่มัลติเพล็กซ์บนขา GPIO เดียว) นั่นคือ GPIO เดียวสามารถทำหน้าที่เป็นทั้ง PWM / UART / SPI
สวิตช์ออนบอร์ดและไฟแสดงสถานะ LED
ESP8266 NodeMCU มีสองปุ่ม ปุ่มหนึ่งที่ระบุว่าเป็น RST ที่บริเวณมุมบนซ้ายคือปุ่มรีเซ็ต ซึ่งแน่นอนว่าใช้เพื่อรีเซ็ตชิป ESP8266 FLASH และปุ่มที่มุมล่างซ้ายเป็นปุ่มอัพโหลดที่ใช้ในขณะที่ทำการอัพโหลดเฟิร์มแวร์
Switches & Indicators
- RST – Reset the ESP8266 chip
- FLASH – Download new programs
- Blue LED – User Programmable
บอร์ดยังมีไฟ LED ออนบอร์ด ที่ผู้ใช้สามารถทดสอบการทำงานของโปรแกรมได้ ซึ่งเชื่อมต่อกับขา D0 ของบอร์ด
การสื่อสารแบบอนุกรม
บอร์ดนี้มีตัวสื่อสารกับ พอร์ต USB ของคอมพิวเตอร์ เป็นชิป UART CP2102 จาก Silicon Labs ซึ่งแปลงสัญญาณ USB เป็นแบบอนุกรม เพื่อช่วยให้คอมพิวเตอร์ของสามารถอัพโหลดโปรแกรมและสื่อสารกับชิป ESP8266 ได้
Serial Communication
- CP2102 USB-to-UART converter
- 4.5 Mbps communication speed
- Flow Control support
การใช้งานขาต่างๆ ของ ESP8266 NodeMCU
ESP8266 NodeMCU มีทั้งหมด 30 ขาที่เชื่อมต่อกับภายนอก โดยการเชื่อมต่อมีดังนี้:
เพื่อความเข้าใจง่ายเราจะสร้างกลุ่มของขาที่มีฟังก์ชั่นที่คล้ายกัน
Power : มีขาพลังงาน 4 ขา ได้แก่ขา VIN หนึ่งขา และขา 3.3V สามขา สามารถใช้ขา VIN เพื่อป้อนแหล่งจ่ายไฟให้กับ ESP8266 และอุปกรณ์ต่อพ่วงได้โดยตรงหากคุณมีแหล่งจ่ายไฟแรงดัน 5V ที่ได้รับการควบคุม และขา 3.3V เป็นเอาท์พุทของตัวควบคุมแรงดันไฟฟ้าออนบอร์ด ขาเหล่านี้สามารถใช้เพื่อจ่ายพลังงานให้กับส่วนประกอบภายนอกได้เช่นกัน
I2C : ใช้สำหรับเชื่อมต่อเซ็นเซอร์ I2C และอุปกรณ์ต่อพ่วงทุกประเภทในโปรเจคของคุณ รองรับทั้ง I2C Master และ I2C Slave สามารถใช้ฟังก์ชันอินเทอร์เฟซ I2C ได้โดยทางโปรแกรมและความถี่สัญญาณนาฬิกาคือ 100 kHz ที่สูงสุด ควรสังเกตว่าความถี่สัญญาณนาฬิกา I2C ควรสูงกว่าความถี่สัญญาณนาฬิกาที่ช้าที่สุดของอุปกรณ์สลาฟ
GPIO : ESP8266 NodeMCU มีขา GPIO 17 ขาซึ่งสามารถกำหนดให้กับฟังก์ชั่นต่าง ๆ เช่น I2C, I2S, UART, PWM, รีโมทคอนโทรล IR, ไฟ LED และปุ่มโดยทางโปรแกรม GPIO ที่เปิดใช้งานดิจิตอลแต่ละตัวสามารถกำหนดค่าเป็น pull-up หรือ pull-down ภายในหรือตั้งค่าเป็นอิมพีแดนซ์สูง เมื่อกำหนดค่าเป็นอินพุตมันยังสามารถตั้งค่าเป็น edge-trigger หรือ level-trigger เพื่อสร้างการขัดจังหวะของ CPU
ADC : NodeMCU ถูกฝังอยู่กับ SAR ADC ที่มีความแม่นยำ 10 บิต ทั้งสองฟังก์ชั่นสามารถใช้งานได้โดยใช้ ADC ได้แก่ การทดสอบแรงดันไฟฟ้าของพิน VDD3P3 และการทดสอบแรงดันอินพุทของขา TOUT อย่างไรก็ตามไม่สามารถใช้งานพร้อมกันได้
UART : ESP8266 NodeMCU มี 2 อินเตอร์เฟสของ UART ได้แก่ UART0 และ UART1 ซึ่งให้การสื่อสารแบบอะซิงโครนัส (RS232 และ RS485) และสามารถสื่อสารได้สูงสุด 4.5 Mbps สามารถใช้ UART0 (TXD0, RXD0, RST0 & CTS0) สำหรับการสื่อสาร รองรับการควบคุมของเหลว อย่างไรก็ตาม UART1 (ขา TXD1) มีเพียงสัญญาณการส่งข้อมูลดังนั้นโดยปกติจะใช้สำหรับบันทึกการพิมพ์
SPI : ESP8266 มีสอง SPI (SPI และ HSPI) ในโหมดทาสและมาสเตอร์ SPI เหล่านี้ยังสนับสนุนคุณสมบัติ SPI สำหรับวัตถุประสงค์ทั่วไปต่อไปนี้:
- โหมดจับเวลา 4 โหมดสำหรับการถ่ายโอนรูปแบบ SPI
- มากถึง 80 MHz และแบ่งนาฬิกา 80 MHz
- สูงถึง 64 ไบต์ FIFO
SDIO : ESP8266 คุณสมบัติ Secure Digital Input / Output Interface (SDIO) ซึ่งใช้เชื่อมต่อการ์ด SD โดยตรง รองรับ SDIO 4-bit 25 MHz v1.1 และ 4-bit 50 MHz SDIO v2.0PWM Pins บอร์ดนี้มี Pulse Pulse Modulation (PWM) 4 ช่องสัญญาณ เอาท์พุท PWM สามารถดำเนินการทางโปรแกรมและใช้สำหรับการขับเคลื่อนมอเตอร์ดิจิตอลและไฟ LED ช่วงความถี่ PWM สามารถปรับได้จาก 1,000 μsถึง 10,000 μs, เช่นระหว่าง 100 Hz และ 1 kHz
Control : ใช้ในการควบคุม ESP8266 ขาเหล่านี้รวมถึง Chip Enable pin (EN), ขารีเซ็ต (RST) และ ขา WAKE
- ขา EN – ชิป ESP8266 ถูกเปิดใช้งานเมื่อดึง EN สูง เมื่อดึงต่ำชิปจะทำงานที่กำลังไฟน้อยที่สุด
- ขา RST – RST ใช้เพื่อรีเซ็ตชิป ESP8266
- ขา WAKE – ให้ ชิป ESP8266 กลับมาทำงานใหม่อีกครั้ง
การใช้งานกับ ESP8266 กับ Arduino IDE
1. ติดตั้งโปรแกรม Arduino IDE
สำหรับการเขียนโปรแกรมของ Arduino IDE นั้นจะใช้ภาษา C/C++ ซึ่งเป็นรูปแบบภาษาซีประยุกต์แบบหนึ่ง ที่มีโครงสร้างการทำงานของตัวภาษาโดยรวม คล้ายกับ ภาษาซีมาตรฐาน (ANSI-C) ทั่วๆไป เพียงแต่ได้มีการปรับปรุงเพื่อลดความยุ่งยากในการใช้งานลง เพื่อให้ผู้ใช้สามารถใช้งาน เขียนโปรแกรมได้ง่าย และสะดวกมากกว่าเขียนภาษาซี แบบมาตรฐาน
Arduino integrated development environment หรือเรียกสั้นๆว่า โปรแกรม Arduino IDE เป็นโปรแกรมที่ “แจกฟรี” ภายใต้เงื่อนไขในการใช้งานลักษณะ Open source ซึ่ง Arduino IDE จะทำหน้าที่ ติดต่อ ระหว่าง คอมพิวเตอร์ ของเรา (Windows, Mac OS และ Linux) กับ บอร์ด ESP8266 ซึ่งโปรแกรมนี้ออกแบบให้ง่ายต่อการเขียนโค้ดและอัปโหลดโค้ดที่เราเขียน เข้าสู่ บอร์ด ESP8266
โดย Download ตัวติดตั้งได้จาก
https://www.arduino.cc/en/Main/Software
เลือก Windows Installer, for Windows 7 and up
คลิกเลือก JUST DOWNLOAD (หากต้องการร่วมบริจาคช่วยการพัฒนา Arduino Software สามารถกด CONTRIBUTE & DOWNLOAD)
เมื่อดาวน์โหลดเสร็จแล้ว ให้ติดตั้งตามที่โปรแกรมแนะนำ
2. เพิ่มบอร์ด ESP8266 ให้ Arduino IDE
เราจะต้องอัปเดตผู้จัดการบอร์ดด้วย URL ที่กำหนดเอง โดยเปิดโปรแกรม Arduino IDE และไปที่ File -> Preferences
คัดลอก URL ด้านล่างลงใน Additional Board Manager URLs: แล้ว คลิก OK
https://arduino.esp8266.com/stable/package_esp8266com_index.json
จากนั้นไปที่ตัวจัดการบอร์ดโดยไปที่ Tools -> Board: -> Boards Manager…
ที่ช่องค้นหา พิมพ์ esp8266 จะพบ esp8266 by ESP8266 Community แล้วคลิก Install
INSTALLED แสดงการติดตั้งสำเร็จ แล้วปิดหน้าต่างลงไป
3. ตรวจสอบ Port ของบอร์ด ESP8266
เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปที่บอร์ด ESP8266
โดย คลิกขวา Computer -> Properties
คลิกที่ Device Manager
ที่ Ports (COM & LPT) จะพบ Port ของบอร์ด ESP8266 ในตัวอย่างเป็น Silicon Labs CP210x USB to UART Bridge (COM12)
4. โปรแกรมแรกกับ NodeMCU ESP8266
เขียนโปรแกรม หรือ Sketch ตามโค้ดด้านล่างนี้
void setup()
{
pinMode(D0, OUTPUT);
}
void loop()
{
digitalWrite(D0, HIGH);
delay(500);
digitalWrite(D0, LOW);
delay(500);
}
ไปที่ Tools -> Board แล้วเลือกให้ตรงกับบอร์ดที่ใช้งาน สำหรับ NodeMCU ESP8266 V2 ให้เลือกบอร์ด NodeMCU 0.9 (ESP-12 Module)
เลือก Port โดยไปที่ Tools -> Port -> COM12
(โดย COM12 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)
คลิกที่ Upload
รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว
เมื่ออัพโหลดโค้ดแล้ว LED จะเริ่มกระพริบ แสดงว่าคุณสามารถใช้งาน ESP8266 โปรแกรมแรกได้แล้ว
credit : lastminuteengineers.com