out of stock!

Micro Learner | ESP32-C3 Super Mini

฿670.00 มีค่าส่งเริ่มต้น 45 บาท ค่าจัดส่งเริ่มต้นโดยประมาณ อาจมีการเปลี่ยนแปลงตามที่อยู่หรือปริมาณที่ท่านเลือก ระบบจะคำนวณค่าจัดที่แท้จริงในหน้าชำระเงิน

out of stock!

หมวดหมู่:

รายละเอียดสินค้า

คำอธิบาย

 

บอร์ดเรียนรู้ Micro Learner –  ESP32 C3 Super Mini ได้รับการออกแบบมาเพื่อรองรับการเรียนรู้และพัฒนาทักษะการเขียนโปรแกรมไมโครคอนโทรลเลอร์ โดยมาพร้อมกับตัวอย่างการเขียนโปรแกรมที่ครอบคลุมการใช้งานอินเทอร์เฟซต่างๆ ดังนี้:

  • การควบคุม Digital (LED On/Off): เรียนรู้การควบคุม LED เปิด-ปิดผ่านการส่งสัญญาณดิจิตอลจากไมโครคอนโทรลเลอร์
  • รับค่าจากปุ่มกด (Digital Input): ตัวอย่างโปรแกรมรับค่าจากปุ่มกดเพื่อนำมาประมวลผล
  • การใช้งาน Analog (ADC): รองรับการเชื่อมต่อเซนเซอร์แบบอนาล็อกจากภายนอก และการอ่านค่าผ่าน ADC
  • การควบคุม PWM (การหรี่ไฟ): ตัวอย่างการหรี่ไฟด้วย PWM เพื่อควบคุมความสว่างของ LED
  • หน้าจอ OLED (I2C): ใช้การสื่อสารผ่าน I2C เพื่อแสดงผลข้อมูลบนหน้าจอ OLED พร้อมรองรับการเชื่อมต่อ I2C ภายนอก
  • UART สำหรับการ Debug: มีพอร์ต UART สำหรับการดีบักข้อมูลและสามารถรีแมป UART ได้ตามความต้องการ

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

esp32-c3-super-mini

esp32-c3-super-mini

 

การกำหนดพิน

LED1 เชื่อมต่อกับ GPIO2 (high/pull-up)
LED2 เชื่อมต่อกับ GPIO1
LED3 เชื่อมต่อกับ GPIO0
ปุ่ม A เชื่อมต่อกับ GPIO6
ปุ่ม B เชื่อมต่อกับ GPIO7
ปุ่ม C เชื่อมต่อกับ GPIO10
Passive Buzzer เชื่อมต่อกับ GPIO3
OLED – SDA เชื่อมต่อกับ GPIO8
OLED – SCL เชื่อมต่อกับ GPIO9

ข้อมูลเพิ่มเติม

ข้อมูลเพิ่มเติม

ขนาด 20 × 14 × 6 เซนติเมตร

คู่มือการใช้งาน

ทำไมไฟที่ LED1 ถึงติด?

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

เพื่อตอบสนองต่อการเรียนรู้ เราได้กำหนดขา LED1 สำหรับการสังเกตและทดสอบการทำงานของไมโครคอนโทรลเลอร์ ผู้ใช้งานสามารถเห็นการทำงานจริงของสถานะ pull-up หรือ pull-down ผ่าน LED1 (GPIO2 – ขานี้มีการ pull-up และต้องอยู่ในสถานะ HIGH ระหว่างการบูต เพื่อให้เข้าสู่โหมดปกติ) ซึ่งจะช่วยให้เข้าใจหลักการทำงานของไมโครคอนโทรลเลอร์ได้อย่างชัดเจนมากขึ้น

มันจะเกิดขึ้นเมื่อไหร่?

ในระหว่าง การบูต และ การแฟลช ไมโครคอนโทรลเลอร์ ขาบางขาอาจมีสถานะที่กำหนดไว้ล่วงหน้า ซึ่งเกิดจากการตั้งค่า pull-up หรือ pull-down ภายใน โดยเฉพาะในช่วงเริ่มต้นของการบูตและการแฟลชเฟิร์มแวร์ ขาเหล่านี้จะถูกตั้งค่าเป็นสถานะ HIGH หรือ LOW อัตโนมัติ เพื่อรองรับกระบวนการบูตหรือการโปรแกรมจากภายนอก

  • ในช่วงบูต: ขาบางขาที่ถูกตั้งค่าไว้ล่วงหน้าอาจแสดงสถานะคงที่ เช่น ขาบางตัวอาจอยู่ในสถานะ HIGH เสมอเนื่องจากการตั้งค่า pull-up ภายใน ซึ่งเป็นเรื่องปกติและจำเป็นสำหรับการทำงานของบูตโหลดเดอร์ (bootloader)
  • ในช่วงแฟลชเฟิร์มแวร์: สถานะของขาเหล่านี้จะถูกตั้งค่าเพื่อให้การแฟลชเฟิร์มแวร์ผ่านโปรโตคอลเช่น UART หรือ USB-CAN ทำงานได้อย่างราบรื่น ขาที่เกี่ยวข้องกับกระบวนการนี้จะมีสถานะคงที่ในบางช่วงของการส่งข้อมูล

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

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

เซ็ตสถานะ: หากไฟยังคงติดค้างสามารถเซ็ตสถานะง่ายๆได้ด้วยคำสั่งนี้

int led1 = 2;

voidsetup() {
pinMode(led1, OUTPUT);
digitalWrite(led1, LOW);
}
voidloop() {
}

เริ่มต้นใช้งาน ESP32 C3 Super Mini

ขั้นตอนที่ 1  ดาวน์โหลด Arduino IDE

  • เรียกดู: https://www.arduino.cc/en/Main/Software
  • ดาวน์โหลด IDE สำหรับระบบปฏิบัติการ Windows/Mac/Linux ของคุณ

ขั้นตอนที่ 2

เสียบบอร์ด ESP32 C3 Super Mini เข้ากับคอมพิวเตอร์ของคุณ บอร์ดจะใช้พลังงานจากสาย USB สำหรับตัวอย่างนี้ จึงไม่จำเป็นต้องมีแหล่งจ่ายไฟภายนอก

*โปรดตรวจสอบว่าสาย USB-C สามารถใช้งานถ่ายโอน Data ได้

  • เสียบสาย USB เข้ากับคอมพิวเตอร์ของคุณ
  • เสียบสาย USB เข้ากับบอร์ด ESP32 C3 Super Mini

ขั้นตอนที่ 3  กำหนดค่า Arduino IDE สำหรับบอร์ด ESP32 C3 Super Mini

  • เริ่ม Arduino IDE
  • จากเมนูหลัก เลือก Arduino > Preferences…
  • สำหรับ Additional Board Manager URLs ให้เพิ่ม Url นี้ลงไป:
https://dl.espressif.com/dl/package_esp32_index.json
  • เลือก Tools > Board > Boards Manager
  • พิมพ์ esp32
  • จะเห็นรายการสำหรับ esp32 โดย  espressif systems
  • คลิก install
  • คลิก Close

ขั้นตอนที่ 4  เลือกบอร์ดของคุณ

  • เลือก Tools > Board : *
  • เลือกบอร์ดของคุณ ( ESP32C3 Dev Module )
  • เลือก Tools > Port : *
  • เลือกพอร์ตที่กำลังต่อใช้งาน (COM_X , /dev/…)
  • (ในบางครั้งจำเป็นต้อง กดปุ่ม BOOT ค้างไว้ แล้วกด RESET จึงจะเห็นพอร์ต)

ขั้นตอนที่ 5  เรียกใช้ตัวอย่าง Blink sketch

  • เลือก File > Examples > 01. Basics > Blink

Code ควรมีลักษณะดังนี้:

int LED = 8;

void setup() {
pinMode(LED, OUTPUT);
}

void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}

ขั้นตอนที่ 6  อัปโหลด Code ไปยัง ESP32 C3 Super Mini

  • ก่อนอัพโหลดต้อง กดปุ่ม BOOT ค้างไว้ แล้วกด RESET
  • คลิกปุ่ม Upload (สัญลักษณ์ลูกศรชี้ขวา บนแถบเครื่องมือ IDE)

ขั้นตอนที่ 7 ตรวจสอบการทำงานของโปรแกรม

  • ตรวจสอบ LED สีน้ำเงิน ออนบอร์ดกะพริบและดับ
  • หากโปรแกรมไม่เริ่มทำงาน ให้กดปุ่ม RST  1 ครั้ง เพื่อทำการรีเซ็ต

 


 

USB CDC บน Arduino ide หากเลือกเป็น Disable จะไม่สามารถใช้งาน Serial Monitor ได้

เมื่อเปิด USB CDC: พอร์ต USB ของ ESP32-C3 จะทำงานในโหมดพอร์ตอนุกรมเสมือน คุณสามารถเชื่อมต่อไมโครคอนโทรลเลอร์กับคอมพิวเตอร์ผ่านสาย USB เพื่อส่งและรับข้อมูลผ่านพอร์ตอนุกรม (เช่น การดีบักหรือการสื่อสารกับโปรแกรมบนคอมพิวเตอร์)

เมื่อปิด USB CDC: พอร์ต USB ของ ESP32-C3 จะไม่ถูกกำหนดให้ทำงานเป็นพอร์ตอนุกรมเสมือนอีกต่อไป การสื่อสารกับคอมพิวเตอร์ผ่าน USB จะไม่สามารถทำได้โดยตรง

สินค้าภายในกล่อง

ตัวอย่างการโปรแกรม

 

 

Digital LED

int led1 = 2;
int led2 = 1;
int led3 = 0;
voidsetup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
voidloop() {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(3000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(3000);
}

 


PWM LED


const int ledPin = 2; // กํ หนดตัวแปรสํ หรับพิน LED เป็น GPIO2
const int pwmFrequency = 5000; // ความถี่ของ PWM
const int pwmChannel = 0; // ช่อง PWM
const int pwmResolution = 8; // ความละเอียดของ PWM (8-bit)
void setup() {
 // ตั้งค่า LED pin เป็น OUTPUT
pinMode(ledPin, OUTPUT);
 // ตั้งค่าช่อง PWM
ledcSetup(pwmChannel, pwmFrequency, pwmResolution);
 // เชื่อมต่อพิน LED กับช่อง PWM
ledcAttachPin(ledPin, pwmChannel);
}
void loop() {
 // เพิ่มความสว่าง LED จาก 0 ถึง 255
for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle++) { ledcWrite(pwmChannel, dutyCycle); // กํ หนดค่าความกว้างของพัลส์ delay(10); // รอ 10 ms } // ลดความสว่าง LED จาก 255 ถึง 0 for (int dutyCycle = 255; dutyCycle >= 0; dutyCycle--) {
ledcWrite(pwmChannel, dutyCycle); // กํ หนดค่าความกว้างของพัลส์
delay(10); // รอ 10 ms
 }
}

 


Passive Buzzer


#define BUZZER_PIN 3 // กํ หนดหมายเลขขาที่ต่อกับ buzzer
void setup() {
pinMode(BUZZER_PIN, OUTPUT); // กํ หนดขาเป็น Output
}
void loop() {
beep(2000, 100);
beep(4000, 150); //ให้ความถี่ และความยาว milliseconds
delay(2000); // รอสักครู่
}
// Function สํ หรับสร้างเสียง
void beep(int frequency, int duration) {
tone(BUZZER_PIN, frequency, duration); // สร้างเสียงที่ต่อเข้ากับขาของ buzzer
delay(duration); // รอจนกระทบสร้างเสียงเสร็จสิ้น
}


 

OLED / I2C

 

หมายเหตุ การเรียนรู้ i2c

ในการใช้งาน I2C กับบอร์ด หากเชื่อมต่ออุปกรณ์ I2C ที่ใช้ address อื่นที่ไม่ใช่ 0x3C ผู้ใช้งานไม่จำเป็นต้องดำเนินการใดเพิ่มเติม สามารถเชื่อมต่อและใช้งานได้ตามปกติ

อย่างไรก็ตาม หากอุปกรณ์ I2C ที่เชื่อมต่อใช้งานที่ address 0x3C ซึ่งโดยค่าเริ่มต้นอาจมีการเชื่อมต่อกับหน้าจอ OLED บนบอร์ด ผู้ใช้จะต้องทำการปรับการเชื่อมต่อที่ขา SDA และ SCL โดยการตั้งค่า Remove จัมเปอร์ใต้บอร์ดใหม่ เพื่อหลีกเลี่ยงความขัดแย้งของ address I2C ระหว่างอุปกรณ์ที่ใช้งาน

 


Button


const int buttonPin1 = 6; // กํ หนดตัวแปรสํ หรับเก็บหมายเลขของพินปุ่ม 1
const int buttonPin2 = 7; // กํ หนดตัวแปรสํ หรับเก็บหมายเลขของพินปุ่ม 2
const int buttonPin3 = 10; // กํ หนดตัวแปรสํ หรับเก็บหมายเลขของพินปุ่ม 3
int buttonState1 = 0; // กํ หนดตัวแปรสํ หรับเก็บค่าสถานะปุ่ม 1 (เริ่มต้นที่ 0)
int buttonState2 = 0; // กํ หนดตัวแปรสํ หรับเก็บค่าสถานะปุ่ม 2 (เริ่มต้นที่ 0)
int buttonState3 = 0; // กํ หนดตัวแปรสํ หรับเก็บค่าสถานะปุ่ม 3 (เริ่มต้นที่ 0)
void setup() {
pinMode(buttonPin1, INPUT); // กํ หนดโหมดของพินปุ่ม 1 เป็น INPUT
pinMode(buttonPin2, INPUT); // กํ หนดโหมดของพินปุ่ม 2 เป็น INPUT
pinMode(buttonPin3, INPUT); // กํ หนดโหมดของพินปุ่ม 3 เป็น INPUT
digitalWrite(buttonPin1, LOW); // เปิดใช้งาน pull-down resistor
digitalWrite(buttonPin2, LOW); // เปิดใช้งาน pull-down resistor
digitalWrite(buttonPin3, LOW); // เปิดใช้งาน pull-down resistor
}
void loop() {
Serial.begin(9600);
 // อ่านค่าสถานะปุ่ม 1
 buttonState1 = digitalRead(buttonPin1);
 // ถ้าปุ่มถูกกด (สถานะ HIGH)
if (buttonState1 == HIGH) {
 // ให้ทํ สิ่งที่ต้องการทํ
 // ตัวอย่าง: ส่งข้อความ "Button 1 pressed" ไปยัง Serial Monitor
Serial.println("Button 1 pressed");
delay(250); // รอเพื่อป้องกันการอ่านค่าซ้ํ
 }
 // อ่านค่าสถานะปุ่ม 2
 buttonState2 = digitalRead(buttonPin2);
 // ถ้าปุ่มถูกกด (สถานะ HIGH)
if (buttonState2 == HIGH) {
 // ให้ทํ สิ่งที่ต้องการทํ
 // ตัวอย่าง: ส่งข้อความ "Button 2 pressed" ไปยัง Serial Monitor
Serial.println("Button 2 pressed");
delay(250); // รอเพื่อป้องกันการอ่านค่าซ้ํ
 }
 // อ่านค่าสถานะปุ่ม 3
 buttonState3 = digitalRead(buttonPin3);
 // ถ้าปุ่มถูกกด (สถานะ HIGH)
if (buttonState3 == HIGH) {
 // ให้ทํ สิ่งที่ต้องการทํ
 // ตัวอย่าง: ส่งข้อความ "Button 3 pressed" ไปยัง Serial Monitor
Serial.println("Button 3 pressed");
delay(250); // รอเพื่อป้องกันการอ่านค่าซ้ํ
 }
}


Remap UART

การกำหนดหรือปรับเปลี่ยนขาอินพุตและเอาต์พุตของ UART (Universal Asynchronous Receiver/Transmitter) บนไมโครคอนโทรลเลอร์ไปยังขาอื่นที่ไม่ได้ถูกตั้งค่าเริ่มต้นเพื่อใช้งาน UART เดิม ซึ่งไมโครคอนโทรลเลอร์บางรุ่น เช่น ESP32 มีความสามารถในการรีแมป (remap) ขา UART เพื่อให้ผู้ใช้สามารถเลือกขา GPIO (General Purpose Input/Output) ที่ต้องการใช้งานได้หลากหลายมากขึ้น

การ Remap UART จะเป็นประโยชน์ในสถานการณ์ที่ขา UART เริ่มต้นถูกใช้งานไปกับอุปกรณ์อื่นหรือไม่สะดวกในการเชื่อมต่อ โดยการรีแมปช่วยให้คุณสามารถกำหนดขา GPIO อื่นให้ทำหน้าที่แทนขา TX (Transmit) และ RX (Receive) ของ UART ได้ตามความต้องการ


void setup() {
// เปิดใช้งาน Serial Monitor ที่ 9600 baud
Serial.begin(9600);
while (!Serial) {
// รอให้ Serial Monitor เปิด
}
// กํ หนด UART1 ให้ใช้ TX = GPIO5, RX = GPIO4 ที่ 9600 baud
Serial1.begin(9600, SERIAL_8N1, 4, 5);
Serial.println("UART Test Start");
}
void loop() {
// ส่งข้อมูล "Hello UART" ไปที่ Serial1 (TX)
Serial1.println("Hello UART");
// ตรวจสอบว่ามีข้อมูลเข้ามาที่ RX ของ Serial1 หรือไม่
if (Serial1.available()) {
String data = Serial1.readString();
// แสดงข้อมูลที่รับมาใน Serial Monitor
Serial.print("Received: ");
Serial.println(data);
}
delay(1000); // หน่วงเวลา 1 วินาที
}

ในการทดสอบ UART บน ESP32-C3 โดยใช้ GPIO4 (RX) และ GPIO5 (TX) การต่อสายจะต้องทำตามขั้นตอนดังนี้:

การเชื่อมต่อสาย

  1. GPIO5 (TX) เชื่อมต่อกับ GPIO4 (RX):
    • สายจากขา TX (GPIO5) ของ ESP32-C3 ต่อเข้ากับขา RX (GPIO4) ของ ESP32-C3
    • ในกรณีที่คุณต้องการทดสอบการส่งข้อมูลและรับข้อมูล (loopback) ให้ใช้สายจัมเปอร์เชื่อมต่อจาก TX ไปยัง RX
  2. ต่อพอร์ต USB ของ ESP32-C3:
    • เชื่อมต่อ ESP32-C3 กับคอมพิวเตอร์ผ่านสาย USB เพื่อเปิด Serial Monitor และดูข้อมูล
  • การทดสอบ Loopback: หากคุณเชื่อมต่อ TX ไปยัง RX ของบอร์ดเดียวกัน (loopback) คุณจะสามารถส่งข้อมูลจาก TX ไปยัง RX โดยตรงและอ่านค่าที่ส่งผ่าน Serial Monitor

  • การทดสอบกับอุปกรณ์อื่น: หากคุณต้องการเชื่อมต่อ ESP32-C3 กับอุปกรณ์อื่น เช่น โมดูล UART หรือเซนเซอร์ ให้เชื่อมต่อ TX ของ ESP32 ไปยัง RX ของอุปกรณ์นั้น และ RX ของ ESP32 ไปยัง TX ของอุปกรณ์

สรุป

  1. ต่อสายจาก GPIO5 (TX) ไปยัง GPIO4 (RX) เพื่อทำการ loopback
  2. เชื่อมต่อกับ USB เพื่อให้สามารถดูข้อมูลใน Serial Monitor ได้

เมื่อคุณต่อสายเรียบร้อยแล้ว คุณสามารถอัปโหลดโค้ดที่เราได้พูดถึงไปที่ ESP32-C3 แล้วเปิด Serial Monitor เพื่อดูผลลัพธ์ได้เลย!

 


 

ตัวอย่างการเชื่อมต่อภายนอก Analog / ADC with MQ-02 Sensor


int analogPin = 4; //ประกาศตัวแปร analog ขาที่4
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin); //อ่านค่าสัญญาณ analog
Serial.print("val = "); // พิมพ์ข้อมความ "val = "
Serial.println(val); // พิมพ์ค่าของตัวแปร val
delay(100);
}

หมายเหตุ: ADC บน ESP32 C3 Super Mini
เลี่ยงการใช้ GPIO5 เนื่องจากเป็น ADC2 อาจใช้งาน ADC ได้ไม่ราบรื่น หากมีการใช้พินนี้เป็น ADC จะส่งผล WiFi ถูกบล๊อกการทำงานและไม่สามารถเชื่อมต่อ WiFi ได้ Restrictions for GPIOs


 

โค้ดทดสอบ QC

ตัวอย่างโปรเจค

⚠️ รุ่นที่ใหม่กว่า

Micro Learner | ESP32-C3 Super Mini

฿670.00 มีค่าส่งเริ่มต้น 45 บาท ค่าจัดส่งเริ่มต้นโดยประมาณ อาจมีการเปลี่ยนแปลงตามที่อยู่หรือปริมาณที่ท่านเลือก ระบบจะคำนวณค่าจัดที่แท้จริงในหน้าชำระเงิน

out of stock!

🌺🌺 แจ้งลูกค้า ร้านหยุดเทศกาลปีใหม่ ตั้งแต่วันที่ 28 ธันวาคม 2567 - 1 มกราคม 2568 กลับมาพบกันใหม่ปีหน้าพร้อมความสดใสและบริการที่ดีกว่าเดิม ขอให้ลูกค้าทุกท่านมีความสุขตลอดปีใหม่นี้ 🌺🌺