วันอังคารที่ 21 พฤษภาคม พ.ศ. 2562

คุณสมบัติของ ESP8266 NodeMCU และการใช้งานกับ Arduino IDE




Internet of Things (IoT) ได้รับความนิยมในโลกของเทคโนโลยี มันได้เปลี่ยนวิธีการทำงานของเรา ให้วัตถุทางกายภาพและโลกดิจิตอลเชื่อมต่อกันมากขึ้นกว่าเดิม เมื่อคำนึงถึงเรื่องนี้ Espressif Systems (บริษัท เซมิคอนดักเตอร์ในเซี่ยงไฮ้) ได้เปิดตัวไมโครคอนโทรลเลอร์ที่รองรับ WiFi ที่มีขนาดเล็ก คือ ESP8266 ในราคาที่ไม่แพง สามารถตรวจสอบและควบคุมสิ่งต่าง ๆ จากที่ใดก็ได้ในโลก - สมบูรณ์แบบสำหรับทุกโครงการของ IoT

โมดูล ESP-12E 

คณะกรรมการพัฒนาได้ออกแบบและผลิตโมดูล ESP-12E ที่มีชิป ESP8266 ที่มีไมโครโปรเซสเซอร์ Tensilica Xtensa® 32-bit LX106 RISC ซึ่งทำงานที่ความถี่ 80 ถึง 160 MHz สามารถปรับได้และรองรับ RTOS
ESP-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

หากคุณติดตั้งไดรเวอร์รุ่นเก่าของ CP2102 ไว้ในคอมพิวเตอร์ของคุณเราขอแนะนำให้ทำการอัพเกรดทันที

การใช้งานพินต่างๆ ของ ESP8266 NodeMCU

ESP8266 NodeMCU มีทั้งหมด 30 พินที่เชื่อมต่อกับภายนอก โดยการเชื่อมต่อมีดังนี้:


เพื่อความเข้าใจง่ายเราจะสร้างกลุ่มของพินที่มีฟังก์ชั่นที่คล้ายกัน
Power Pins มีพินพลังงาน 4 พิน ได้แก่พิน VIN หนึ่งพิน และพิน 3.3V สามพิน สามารถใช้พิน VIN เพื่อจ่ายแหล่งจ่ายไฟให้กับ ESP8266 และอุปกรณ์ต่อพ่วงได้โดยตรงหากคุณมีแหล่งจ่ายไฟแรงดัน 5V ที่ได้รับการควบคุม โดยพิน 3.3V เป็นเอาท์พุทของตัวควบคุมแรงดันไฟฟ้าออนบอร์ด พินเหล่านี้สามารถใช้เพื่อจ่ายพลังงานให้กับส่วนประกอบภายนอกได้เช่นกัน
I2C Pins ใช้สำหรับเชื่อมต่อเซ็นเซอร์ I2C และอุปกรณ์ต่อพ่วงทุกประเภทในโปรเจคของคุณ รองรับทั้ง I2C Master และ I2C Slave สามารถใช้ฟังก์ชันอินเทอร์เฟซ I2C ได้โดยทางโปรแกรมและความถี่สัญญาณนาฬิกาคือ 100 kHz ที่สูงสุด ควรสังเกตว่าความถี่สัญญาณนาฬิกา I2C ควรสูงกว่าความถี่สัญญาณนาฬิกาที่ช้าที่สุดของอุปกรณ์สลาฟ
GPIO Pins ESP8266 NodeMCU มีพิน GPIO 17 พินซึ่งสามารถกำหนดให้กับฟังก์ชั่นต่าง ๆ เช่น I2C, I2S, UART, PWM, รีโมทคอนโทรล IR, ไฟ LED และปุ่มโดยทางโปรแกรม GPIO ที่เปิดใช้งานดิจิตอลแต่ละตัวสามารถกำหนดค่าเป็น pull-up หรือ pull-down ภายในหรือตั้งค่าเป็นอิมพีแดนซ์สูง เมื่อกำหนดค่าเป็นอินพุตมันยังสามารถตั้งค่าเป็น edge-trigger หรือ level-trigger เพื่อสร้างการขัดจังหวะของ CPU
ADC Channel NodeMCU ถูกฝังอยู่กับ SAR ADC ที่มีความแม่นยำ 10 บิต ทั้งสองฟังก์ชั่นสามารถใช้งานได้โดยใช้ ADC ได้แก่ การทดสอบแรงดันไฟฟ้าของพิน VDD3P3 และการทดสอบแรงดันอินพุทของขา TOUT อย่างไรก็ตามไม่สามารถใช้งานพร้อมกันได้
UART Pins ESP8266 NodeMCU มี 2 อินเตอร์เฟสของ UART ได้แก่ UART0 และ UART1 ซึ่งให้การสื่อสารแบบอะซิงโครนัส (RS232 และ RS485) และสามารถสื่อสารได้สูงสุด 4.5 Mbps สามารถใช้ UART0 (TXD0, RXD0, RST0 & CTS0) สำหรับการสื่อสาร รองรับการควบคุมของเหลว อย่างไรก็ตาม UART1 (พิน TXD1) มีเพียงสัญญาณการส่งข้อมูลดังนั้นโดยปกติจะใช้สำหรับบันทึกการพิมพ์
SPI Pins ESP8266 มีสอง SPI (SPI และ HSPI) ในโหมดทาสและมาสเตอร์ SPI เหล่านี้ยังสนับสนุนคุณสมบัติ SPI สำหรับวัตถุประสงค์ทั่วไปต่อไปนี้:
  • โหมดจับเวลา 4 โหมดสำหรับการถ่ายโอนรูปแบบ SPI
  • มากถึง 80 MHz และแบ่งนาฬิกา 80 MHz
  • สูงถึง 64 ไบต์ FIFO
SDIO Pins ESP8266 คุณสมบัติ Secure Digital Input / Output Interface (SDIO) ซึ่งใช้เชื่อมต่อการ์ด SD โดยตรง รองรับ SDIO 4-bit 25 MHz v1.1 และ 4-bit 50 MHz SDIO v2.0
PWM Pins บอร์ดนี้มี Pulse Pulse Modulation (PWM) 4 ช่องสัญญาณ เอาท์พุท PWM สามารถดำเนินการทางโปรแกรมและใช้สำหรับการขับเคลื่อนมอเตอร์ดิจิตอลและไฟ LED ช่วงความถี่ PWM สามารถปรับได้จาก 1,000 μsถึง 10,000 μs, เช่นระหว่าง 100 Hz และ 1 kHz
Control Pins ใช้ในการควบคุม ESP8266 พินเหล่านี้รวมถึง Chip Enable pin (EN), พินรีเซ็ต (RST) และ WAKE pin
  • EN pin -  ชิป ESP8266 ถูกเปิดใช้งานเมื่อดึง EN pin สูง เมื่อดึงต่ำชิปจะทำงานที่กำลังไฟน้อยที่สุด
  • RST pin – RST pin ใช้เพื่อรีเซ็ตชิป ESP8266
  • WAKE pin – ให้ ชิป ESP8266 กลับมาทำงานใหม่อีกครั้ง

ติดตั้งโปรแกรม Arduino (IDE)


ลิงค์ดาวโหลด Arduino (IDE) https://www.arduino.cc/en/Main/Software




ติดตั้ง แพลตฟอร์ม ESP8266 



ในการเริ่มต้นเราจะต้องอัปเดตผู้จัดการบอร์ดด้วย URL ที่กำหนดเอง

เปิด Arduino IDE และไปที่ File > Preferences

คัดลอก URL ด้านล่างลงใน Additional Board Manager URLs: แล้ว คลิก OK

http://arduino.esp8266.com/stable/package_esp8266com_index.json

จากนั้นไปที่ตัวจัดการบอร์ดโดยไปที่ Tools > Board: > Boards Manager...



ที่ช่องค้นหา พิมพ์ esp8266  จะพบ esp8266 by ESP8266 Community  แล้วคลิก Install



แสดงการติดตั้งสำเร็จ แล้วปิดหน้าต่างลงไป


โปรแกรมแรก ไฟกระพริบ (Blink)
เชื่อมต่อสาย Micro USB เข้ากับ ESP8266 NodeMCU


ให้ตรวจสอบการติดตั้งไดร์เวอร์ ของ NodeMCU V2 


โดย คลิกขวา Computet -> Properties




คลิกที่ Device Manager


ที่ Ports (COM & LPT) จะพบ การติดตั้งไดร์เวอร์ ของ NodeMCU V2 ในตัวอย่างเป็น "COM12"



(ถ้าไม่พบให้ทำการติดตั้งไดร์เวอร์ก่อน)

การติดตั้งโปรแกรม Arduino (IDE) และ การติดตั้งไดร์เวอร์



แล้วจึงเปิดโปรแกรม Arduino IDE


อัพโหลดโค้ด ดังนี้
void setup()
{
 pinMode(D0, OUTPUT);
}
void loop()
{
 digitalWrite(D0, HIGH);
 delay(500);
 digitalWrite(D0, LOW);
 delay(500);
}

เลือกชนิดของบอร์ด : ไปที่ Tools > Board : เลือกเป็น NodeMCU 0.9 (ESP-12 Module) 




เลือกพอร์ตการใช้งาน : ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ ในตัวอย่างเลือกเป็น "COM12"

เลือกความเร็วในการอัพโหลด : ไปที่ Tools > Upload Speed: แล้วเลือกเป็น "115200"


กดปุ่ม   เพื่ออัพโหลด


หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง




เมื่ออัพโหลดโค้ดแล้ว LED จะเริ่มกระพริบ แสดงว่าคุณสามารถใช้งาน ESP8266 โปรแกรมแรกได้แล้ว

(อาจต้องแตะปุ่ม RST เพื่อเริ่มต้นการทำงานของ ESP8266)

credit : https://lastminuteengineers.com/esp8266-nodemcu-arduino-tutorial/

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

โปรเจค IoT ESP8266 วัดอุณหภูมิความชื้น บันทึกลงดาต้าเบส MySQL

เป้าหมายของโปรเจคนี้คือเราต้องดูข้อมูลด้วยการเข้าถึงโดเมน ของเราเอง ไม่ว่าจะอยู่ส่วนไหนของโลก โดย ESP8266 จะสร้างไคลเอ็นต์  ที่ทำให้คำขอ...