MicroLearner | ESP32-C3 Super Mini
฿790.00 มีค่าส่งเริ่มต้น 45 บาท ค่าจัดส่งเริ่มต้นโดยประมาณ อาจมีการเปลี่ยนแปลงตามที่อยู่หรือปริมาณที่ท่านเลือก ระบบจะคำนวณค่าจัดที่แท้จริงในหน้าชำระเงิน
มีสินค้าอยู่ 5
รายละเอียดสินค้า
คำอธิบาย
MicroLearner | เริ่มต้นง่าย แม้ไม่มีพื้นฐาน
หากคุณไม่เคยสัมผัสไมโครคอนโทรลเลอร์มาก่อน MicroLearner คือจุดเริ่มต้นที่สมบูรณ์แบบ! ไม่ต้องต่อสาย ไม่ต้องกลัวพัง เพียงเชื่อมต่อกับคอมพิวเตอร์ แล้วเริ่มเขียนโค้ดได้ทันที
แทนที่จะต้องกังวลเรื่องฮาร์ดแวร์ตั้งแต่วันแรก MicroLearner ออกแบบมาเพื่อให้คุณได้โฟกัสกับการเขียนโปรแกรมก่อน เรียนรู้โครงสร้างและแนวคิดของโค้ด พร้อมทดลองใช้งานจริงในซอฟต์แวร์ จากนั้นค่อยก้าวไปสู่การเชื่อมต่ออุปกรณ์จริงอย่างมั่นใจ
โต้ตอบกับอุปกรณ์จริง เพื่อเรียนรู้การทำงานของฮาร์ดแวร์ ในแบบที่เข้าใจง่ายและเป็นธรรมชาติ
MicroLearner สนับสนุนแนวทาง Reverse Engineering ค่อยเป็นค่อยไป ทำให้การเรียนรู้เป็นเรื่องสนุก และไม่ใช่เรื่องน่ากลัวอีกต่อไป!
ขนาดเล็กกะทัดรัด เรียนรู้ได้ทุกที่ 60x43x25mm.
บอร์ดเรียนรู้ MicroLearner – 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
MicroLearner | เรียนโค้ดก่อน ต่อสายทีหลัง สนุก ปลอดภัย ไม่ต้องกลัวพัง!
การกำหนดพิน
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 ระหว่างการบูต เพื่อให้เข้าสู่โหมดปกติ) ซึ่งจะช่วยให้เข้าใจหลักการทำงานของไมโครคอนโทรลเลอร์ได้อย่างชัดเจนมากขึ้น
มันจะเกิดขึ้นเมื่อไหร่?
การสังเกตสถานการณ์นี้จะเป็นประสบการณ์การเรียนรู้ที่ดีสำหรับการเข้าใจการทำงานภายในของไมโครคอนโทรลเลอร์ แต่จะไม่ขัดขวางการใช้งานในแอปพลิเคชันจริง
เซ็ตสถานะ: หากไฟยังคงติดค้างสามารถเซ็ตสถานะง่ายๆได้ด้วยคำสั่งนี้
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 จะไม่สามารถทำได้โดยตรง
สินค้าภายในกล่อง
ตัวอย่างการโปรแกรม
โค้ดทดสอบ QC
//กำหนดไอดีผู้ใช้งาน uart | |
int i = 1; | |
#include <Wire.h> | |
#include <Adafruit_GFX.h> | |
#include <Adafruit_SSD1306.h> | |
#define SCREEN_WIDTH 128 | |
#define SCREEN_HEIGHT 64 | |
#define OLED_RESET -1 | |
#define SCREEN_ADDRESS 0x3C | |
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); | |
#define PIN_SDA 8 | |
#define PIN_SCL 9 | |
#define BUZZER_PIN 3 // กํ หนดหมายเลขขาที่ต่อกับ buzzer | |
int led1 = 2; | |
int led2 = 1; | |
int led3 = 0; | |
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() { | |
Serial.begin(9600); | |
while (!Serial) { | |
// รอให้ Serial Monitor เปิด | |
} | |
// กํ หนด UART1 ให้ใช้ TX = GPIO5, RX = GPIO4 ที่ 9600 baud | |
Serial1.begin(9600, SERIAL_8N1, 4, 5); | |
Serial.println("UART Start"); | |
pinMode(BUZZER_PIN, OUTPUT); // กํ หนดขาเป็น Output | |
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 | |
pinMode(led1, OUTPUT); | |
pinMode(led2, OUTPUT); | |
pinMode(led3, OUTPUT); | |
Wire.setPins(PIN_SDA, PIN_SCL); | |
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { | |
for (;;) | |
; | |
} | |
display.clearDisplay(); | |
display.setTextSize(2); | |
display.setTextColor(SSD1306_WHITE); | |
display.setCursor(15, 5); | |
display.print(F("iMicon")); | |
display.setCursor(15, 25); | |
display.print(F("micro")); | |
display.setCursor(15, 45); | |
display.print(F("learning")); | |
display.display(); | |
beep(2000, 100); | |
beep(4000, 150); //ให้ความถี่ และความยาว milliseconds | |
} | |
void loop() { | |
// ตรวจสอบว่ามีข้อมูลเข้ามาที่ RX ของ Serial1 หรือไม่ | |
if (Serial1.available()) { | |
String data = Serial1.readString(); | |
// แสดงข้อมูลที่รับมาใน Serial Monitor | |
Serial.print("Received: "); | |
Serial.println(data); | |
display.clearDisplay(); | |
display.setTextSize(1); | |
display.setTextColor(SSD1306_WHITE); | |
display.setCursor(15, 5); | |
display.print(data); | |
display.display(); | |
} | |
// อ่านค่าสถานะปุ่ม 1 | |
buttonState1 = digitalRead(buttonPin1); | |
// ถ้าปุ่มถูกกด (สถานะ HIGH) | |
if (buttonState1 == HIGH) { | |
// ให้ทำสิ่งที่ต้องการทำ | |
// ตัวอย่าง: ส่งข้อความ "Button 1 pressed" ไปยัง Serial Monitor | |
Serial.println("Button 1 pressed"); | |
digitalWrite(led1, HIGH); | |
digitalWrite(led2, LOW); | |
digitalWrite(led3, LOW); | |
display.clearDisplay(); | |
display.setTextSize(2); | |
display.setTextColor(SSD1306_WHITE); | |
display.setCursor(15, 5); | |
display.print(F("")); | |
display.setCursor(15, 25); | |
display.print(F("Button 1")); | |
display.setCursor(15, 45); | |
display.print(F("pressed")); | |
display.display(); | |
beep(500, 100); | |
beep(2000, 80); | |
beep(500, 100); | |
beep(2000, 80); | |
delay(250); // รอสักครู่ | |
// ส่งข้อมูล "Hello UART" ไปที่ Serial1 (TX) | |
Serial1.print("U"); | |
Serial1.print(i); | |
Serial1.println(" BTN 1 pressed"); | |
} | |
// อ่านค่าสถานะปุ่ม 2 | |
buttonState2 = digitalRead(buttonPin2); | |
// ถ้าปุ่มถูกกด (สถานะ HIGH) | |
if (buttonState2 == HIGH) { | |
// ให้ทำสิ่งที่ต้องการทำ | |
// ตัวอย่าง: ส่งข้อความ "Button 2 pressed" ไปยัง Serial Monitor | |
Serial.println("Button 2 pressed"); | |
digitalWrite(led2, HIGH); | |
digitalWrite(led1, LOW); | |
digitalWrite(led3, LOW); | |
display.clearDisplay(); | |
display.setTextSize(2); | |
display.setTextColor(SSD1306_WHITE); | |
display.setCursor(15, 5); | |
display.print(F("")); | |
display.setCursor(15, 25); | |
display.print(F("Button 2")); | |
display.setCursor(15, 45); | |
display.print(F("pressed")); | |
display.display(); | |
beep(500, 100); | |
beep(2000, 80); | |
beep(500, 100); | |
beep(2000, 80); | |
delay(250); // รอสักครู่ | |
// ส่งข้อมูล "Hello UART" ไปที่ Serial1 (TX) | |
Serial1.print("U"); | |
Serial1.print(i); | |
Serial1.println(" BTN 2 pressed"); | |
} | |
// อ่านค่าสถานะปุ่ม 3 | |
buttonState3 = digitalRead(buttonPin3); | |
// ถ้าปุ่มถูกกด (สถานะ HIGH) | |
if (buttonState3 == HIGH) { | |
// ให้ทำสิ่งที่ต้องการทำ | |
// ตัวอย่าง: ส่งข้อความ "Button 3 pressed" ไปยัง Serial Monitor | |
Serial.println("Button 3 pressed"); | |
digitalWrite(led3, HIGH); | |
digitalWrite(led1, LOW); | |
digitalWrite(led2, LOW); | |
display.clearDisplay(); | |
display.setTextSize(2); | |
display.setTextColor(SSD1306_WHITE); | |
display.setCursor(15, 5); | |
display.print(F("")); | |
display.setCursor(15, 25); | |
display.print(F("Button 3")); | |
display.setCursor(15, 45); | |
display.print(F("pressed")); | |
display.display(); | |
beep(500, 100); | |
beep(2000, 80); | |
beep(500, 100); | |
beep(2000, 80); | |
delay(250); // รอสักครู่ | |
// ส่งข้อมูล "Hello UART" ไปที่ Serial1 (TX) | |
Serial1.print("U"); | |
Serial1.print(i); | |
Serial1.println(" BTN 3 pressed"); | |
} | |
} | |
void beep(int frequency, int duration) { | |
tone(BUZZER_PIN, frequency, duration); // สร้างเสียงที่ต่อเข้ากับขาของ buzzer | |
delay(duration); // รอจนกระทบสร้างเสียงเสร็จสิ้น | |
} |
ตัวอย่างโปรเจค
รวมบทความเรียนรู้พื้นฐาน นอกจากนี้ยังเนื้อหาที่ท้าทายสำหรับการเสริมสร้างความเข้าใจและพัฒนาตนเอง