Intro ESP32



 ESP32 ทำอะไรได้บ้าง?

ESP32 เป็นไมโครคอนโทรลเลอร์ขนาดเล็กแต่ทรงพลัง ที่ได้รับความนิยมอย่างมากในวงการ IoT (Internet of Things) และการพัฒนาอุปกรณ์อิเล็กทรอนิกส์ต่างๆ เนื่องจากมีราคาไม่แพง มีฟังก์ชันครบครัน และใช้งานง่าย ทำให้สามารถนำไปประยุกต์ใช้ได้หลากหลายรูปแบบ ดังนี้


การใช้งานทั่วไปของ ESP32

สมาร์ทโฮม: ควบคุมหลอดไฟ, พัดลม, ปั๊มน้ำ, เซ็นเซอร์ต่างๆ ผ่านแอปพลิเคชันบนสมาร์ทโฟน

อุปกรณ์สวมใส่: นาฬิกาอัจฉริยะ, สายรัดข้อมือวัดสุขภาพ

เซ็นเซอร์วัดค่าต่างๆ: วัดอุณหภูมิ, ความชื้น, แสง, การเคลื่อนไหว

ระบบควบคุมมอเตอร์: ควบคุมมอเตอร์ DC, เซอร์โวมอเตอร์, สเต็ปเปอร์มอเตอร์

ระบบรักษาความปลอดภัย: ระบบแจ้งเตือน, กล้องวงจรปิด

โครงการ DIY: สร้างอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ตามความคิดสร้างสรรค์

จุดเด่นของ ESP32 ที่ทำให้ใช้งานได้หลากหลาย

Wi-Fi และ Bluetooth ในตัว: ทำให้สามารถเชื่อมต่อกับอุปกรณ์อื่นๆ ได้ง่าย

2 Core Processor: เพิ่มประสิทธิภาพในการทำงาน

GPIO Pins จำนวนมาก: สามารถเชื่อมต่อกับอุปกรณ์ภายนอกได้หลากหลาย

รองรับภาษาโปรแกรมหลากหลาย: Arduino IDE, MicroPython, ESP-IDF

ราคาประหยัด: ทำให้สามารถเข้าถึงได้ง่าย

ตัวอย่างโครงการที่ใช้ ESP32

สวนอัจฉริยะ: ควบคุมระบบรดน้ำ, วัดค่าความชื้นในดิน, เปิด-ปิดไฟในโรงเรือน

ระบบควบคุมแสงสว่างอัตโนมัติ: เปิด-ปิดไฟตามระดับแสง

เครื่องวัดคุณภาพอากาศ: วัดค่า PM2.5, CO2, อุณหภูมิ, ความชื้น

หุ่นยนต์: ควบคุมการเคลื่อนไหวของหุ่นยนต์, หลีกเลี่ยงสิ่งกีดขวาง

IoT Gateway: เชื่อมต่ออุปกรณ์ต่างๆ เข้ากับอินเทอร์เน็ต

สิ่งที่คุณจะต้องรู้ก่อนเริ่มใช้งาน ESP32

พื้นฐานการเขียนโปรแกรม: Arduino IDE เป็นตัวเลือกที่นิยมสำหรับผู้เริ่มต้น

วงจรอิเล็กทรอนิกส์พื้นฐาน: เพื่อทำความเข้าใจการต่อวงจรต่างๆ

ภาษาอังกฤษ: เนื่องจากเอกสารและตัวอย่างส่วนใหญ่เป็นภาษาอังกฤษ

Feature ESP32 ESP8266

Processor Dual-core Tensilica Xtensa LX6 Single-core Tensilica Xtensa LX6

Clock Speed 160MHz - 240MHz 80MHz

Memory 512KB SRAM, 4MB flash 64KB SRAM, 1MB flash

Wi-Fi 802.11b/g/n 802.11b/g/n

Bluetooth Bluetooth 4.2 No Bluetooth

GPIO Pins 40 16

Analog-to-DigitalConverter 

ADC Channels 16 1

DAC Channels 2 No DAC

Power Consumption 10mA (active), 10µA (sleep) 20mA (active), 10µA (sleep)

Price Slightly higher Lower

วัดอุณหภูมิ: เซ็นเซอร์วัดอุณหภูมิจะให้ค่าแรงดันไฟฟ้าที่เปลี่ยนแปลงตามอุณหภูมิ ซึ่งจะถูกส่งเข้าไปยัง ADC Channel 

เพื่อแปลงเป็นค่าดิจิทัล แล้วนำไปคำนวณหาค่าอุณหภูมิที่แท้จริง

วัดแสง: เซ็นเซอร์วัดแสงจะให้ค่าแรงดันไฟฟ้าที่เปลี่ยนแปลงตามความเข้มของแสง ซึ่งจะถูกส่งเข้าไปยัง ADC Channel 

เพื่อแปลงเป็นค่าดิจิทัล แล้วนำไปใช้ในการควบคุมความสว่างของหลอดไฟ

วัดค่า pH: เซ็นเซอร์วัดค่า pH จะให้ค่าแรงดันไฟฟ้าที่เปลี่ยนแปลงตามค่า pH ซึ่งจะถูกส่งเข้าไปยัง ADC Channel 

เพื่อแปลงเป็นค่าดิจิทัล แล้วนำไปแสดงผลบนหน้าจอ


DAC Channels (Digital-to-Analog Converter Channels)

DAC ย่อมาจาก Digital-to-Analog Converter ซึ่งเป็นวงจรที่ทำหน้าที่แปลงสัญญาณดิจิทัล (ค่าตัวเลข)

ให้เป็นสัญญาณอนาล็อก

DAC Channels หมายถึงช่องทางที่ใช้ในการส่งสัญญาณอนาล็อกออกไป โดยค่าดิจิทัลที่ส่งเข้าไปจะถูกแปลง 

เป็นแรงดันไฟฟ้าที่สอดคล้องกัน

ตัวอย่างการใช้งาน:

ควบคุมมอเตอร์: โดยการส่งค่าดิจิทัลที่บ่งบอกความเร็วหรือทิศทางของมอเตอร์เข้าไปยัง DAC Channel 

เพื่อควบคุมความเร็วและทิศทางของมอเตอร์

สร้างสัญญาณเสียง: โดยการส่งค่าดิจิทัลที่เป็นตัวแทนของคลื่นเสียงเข้าไปยัง DAC Channel เพื่อสร้างเสียงที่ต้องการ

ควบคุมความสว่างของ LED: โดยการส่งค่าดิจิทัลที่บ่งบอกระดับความสว่างเข้าไปยัง DAC Channel 

เพื่อควบคุมความสว่างของ LED


1.การติดตั้ง ESP32 ใน Arduino IDE 

ทำตามขั้นตอนได้ดังนี้:

Arduino IDE ไปที่ File > Preferences จากนั้นในช่อง "Additional Board Manager URLs" 

ให้เพิ่ม URL ของ ESP32: 

https://dl.espressif.com/dl/package_esp32_index.json,

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json


ติดตั้ง ESP32 Board: ไปที่ Tools > Board > Boards Manager 

ค้นหา “ESP32” และติดตั้งแพ็คเกจ ESP32 โดย Espressif Systems

เลือกบอร์ด ESP32: ไปที่ Tools > Board และเลือกบอร์ด ESP32 ที่คุณใช้งาน

เชื่อมต่อและอัปโหลดโค้ด: เชื่อมต่อบอร์ด ESP32 กับคอมพิวเตอร์ จากนั้นคุณสามารถเขียนและอัปโหลดโค้ดได้ตามปกติ

Esp32 s2 dev  module


2.Open a Blink basic project in Arduino IDE 

  File>Examples>01.Basics>Blink.

3.การแก้ไข error 

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)!

The chip needs to be in download mode.

For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html

Failed uploading: uploading error: exit status 2

ให้กดปุ่ม Boot ค้างไว้ตอน upload code ถ้าอัพโหลดผ่าน แนวทางแก้ไข มีสองวิธี

คือ

https://randomnerdtutorials.com/solved-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header/  

ถ้าไม่ผ่าน ให้ลองเปลี่ยนโหมด 

โดยกดปุ่ม Boot ค้าง แล้วกดปุ่ม EN ปล่อมปุ่ม EN และปล่อยปุ่ม Boot ตามลำดับ


/// Blink  code

#define LED_BUILTIN 2

void setup() {

  // initialize digital pin LED_BUILTIN as an output.

  pinMode(LED_BUILTIN, OUTPUT);

}


// the loop function runs over and over again forever

void loop() {

  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)

  delay(100);                      // wait for a second

  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW

  delay(100);                      // wait for a second

  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)

  delay(100);                      // wait for a second

  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW

  delay(100);                      // wait for a second

  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)

  delay(2000);                      // wait for a second

  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW

  delay(2000);                      // wait for a second


}

///////////////

Reference:  

https://randomnerdtutorials.com/solved-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header/  


Tags:

ESP32,Arduio IDE,NodeMCU,handleRoot,HTML,AsyncWebServer server(80),

Web server,handleClient,server send,server on,WiFi.begin ,WiFi.h  

ความคิดเห็น