Tidy breadboard with LEDs, potentiometer, push button, buzzer and ESP32-C3, notebook with circuit sketches

ผู้เริ่มต้น

ห้องปฏิบัติการเริ่มต้นอุปกรณ์อิเล็กทรอนิกส์ – เรียนรู้พื้นฐาน

ส่วนประกอบพื้นฐานการศึกษา

แบบฝึกหัดลงมือทำ 5 ข้อที่สอนพื้นฐานเบื้องหลังทุกโปรเจกต์อิเล็กทรอนิกส์: จุดไฟ LED อ่านค่าปุ่มกด อ่านค่าลูกบิด หรี่ไฟ LED ด้วย PWM และสวิตช์โหลดที่ใหญ่ขึ้นด้วยทรานซิสเตอร์ ไม่ใช่โปรเจกต์ที่เสร็จสมบูรณ์หนึ่งชิ้น แต่เป็นทักษะที่ทุกโปรเจกต์ใช้

สิ่งที่คุณจะได้เรียนรู้

  • ต่อ LED อย่างปลอดภัยด้วยตัวต้านทานจำกัดกระแส
  • อ่านค่าปุ่มกดและจัดการสัญญาณเด้งของหน้าสัมผัส
  • อ่านค่าลูกบิดอะนาล็อกด้วย ADC
  • หรี่ไฟ LED ด้วย PWM
  • สวิตช์โหลดที่ใหญ่ขึ้นด้วยทรานซิสเตอร์ NPN

รวมชิ้นส่วนจริง 9 รายการ

ราคารวมชุดนี้: 2,059.00 ฿

ยังไม่รวมส่วนลดคำสั่งซื้อที่คุณอาจได้รับตอนชำระเงิน

สิ่งที่คุณต้องใช้

เป้าหมายของโปรเจกต์

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

แบบฝึกหัดที่ 1: วงจร LED วงจรแรกของคุณ

ต่อสาย LED เดี่ยวอนุกรมกับตัวต้านทานเข้ากับพิน GPIO และกราวด์ จากนั้นเปิดและปิดด้วยโค้ด ตัวต้านทานไม่ใช่ทางเลือก: LED ที่ไม่มีการจำกัดกระแสจะดึงกระแสมากกว่าที่ LED หรือพินของตัวควบคุมจะรับได้มาก และอาจทำให้ทั้งสองเสียหายได้ นี่คือการทดลองใช้กฎของโอห์มครั้งแรกของคุณ — ค่าตัวต้านทานที่คุณเลือกจะกำหนดปริมาณกระแสที่ไหลเมื่อคุณทราบแรงดันไปข้างหน้าของ LED และแรงดันพินของตัวควบคุม

แบบฝึกหัดที่ 2: การอ่านอินพุตดิจิทัล

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

แบบฝึกหัดที่ 3: การอ่านอินพุตแบบอะนาล็อก

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

แบบฝึกหัดที่ 4: หรี่ไฟ LED ด้วยลูกบิด (PWM)

รวมสิ่งที่เรียนมา: ค่าอะนาล็อกจากโพเทนชิออมิเตอร์กำหนดความสว่างของ LED ตัวควบคุมอ่านลูกบิดด้วย ADC แล้วขับ LED ด้วย PWM คือสลับเปิด-ปิดเป็นพันๆ ครั้งต่อวินาที โดยสัดส่วนเวลาที่เปิดเป็นตัวกำหนดความสว่างที่ตาเห็น นี่คือวงจรครบวงแรกของคุณตั้งแต่อินพุตถึงเอาต์พุต: อินพุตอะนาล็อกควบคุมเอาต์พุตโดยตรง

แบบฝึกหัดที่ 5: ใช้ทรานซิสเตอร์สวิตช์โหลดที่ใหญ่ขึ้น

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

การทดสอบและการแก้ไขปัญหา

  • ตรวจสอบการเชื่อมต่อสายไฟและสายกราวด์ก่อนที่จะสงสัยส่วนประกอบใดๆ — ปัญหาวงจร "ตาย" ส่วนใหญ่มีสาเหตุมาจากการต่อสายไฟ/กราวด์หายไปหรือสลับกัน
  • เปลี่ยนและทดสอบทีละส่วนประกอบใหม่ การเพิ่มส่วนประกอบใหม่หลายชิ้นลงในเบรดบอร์ดพร้อมกันและแก้ไขข้อบกพร่องทั้งหมดพร้อมกันนั้นยากกว่าการพิสูจน์ว่าแต่ละชิ้นทำงานได้ด้วยตัวเองก่อน
  • ตรวจสอบขั้วของชิ้นส่วนที่มีขั้วซ้ำอีกครั้ง — LED และตัวเก็บประจุและทรานซิสเตอร์บางชนิดจะทำงานได้ทางเดียวเท่านั้น แม้ว่าอาจจะพอดีกับเบรดบอร์ดได้ทั้งสองทางก็ตาม
  • หากสิ่งใดไม่เป็นไปตามที่คาดไว้ ให้แยกส่วนประกอบออก: ถอดวงจรกลับไปเป็นเวอร์ชันที่เล็กที่สุดที่ยังคงแสดงปัญหา แทนที่จะคาดเดาจากชุดประกอบทั้งหมด

การอัปเกรดเสริมในอนาคต

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

การต่อสาย

แบบฝึกหัดที่ 1: การกะพริบ LED

  • ขั้วบวกของ LED (ขาที่ยาวกว่า) → ตัวต้านทาน 220–330Ω → ESP32-C3 GPIO4
  • ขั้วลบของ LED (ขาที่สั้นกว่า) → GND

ยืนยันขั้วของ LED ก่อนเปิดเครื่อง — ขอบแบนบนขอบของ LED (หรือขาที่สั้นกว่า) คือขั้วลบ นี่คือการทดสอบการเปิดเครื่องที่ง่ายที่สุดสำหรับบอร์ดและการต่อสายเบรดบอร์ดของคุณ

แบบฝึกหัดที่ 2: การอ่านปุ่มเพื่อเปิด LED

  • ขั้วบวกของ LED → ตัวต้านทาน 220–330Ω → ESP32-C3 GPIO4 (เหมือนกับแบบฝึกหัดที่ 1)
  • ขั้วลบของ LED → GND
  • ขา 1 ของปุ่มกด → ESP32-C3 GPIO5
  • ขา 2 ของปุ่มกด → GND

`INPUT_PULLUP` หมายความว่าพินอ่านค่า HIGH เมื่อไม่ได้กดปุ่ม และ LOW เมื่อกด (ปุ่มเชื่อมต่อพินกับ GND) — ไม่ต้องใช้ตัวต้านทานภายนอก นี่คือวิธีมาตรฐานที่ประหยัดต้นทุนในการต่อสายปุ่ม momentary บนไมโครคอนโทรลเลอร์ใดๆ

แบบฝึกหัดที่ 3: การอ่านโพเทนชิออมิเตอร์

  • ขาด้านนอก 1 ของโพเทนชิออมิเตอร์ → ESP32-C3 3V3
  • ขาด้านนอก 2 ของโพเทนชิออมิเตอร์ → GND
  • ตัวปรับค่าของโพเทนชิออมิเตอร์ (ขาตรงกลาง) → ESP32-C3 GPIO0 — พินที่รองรับ ADC

การหมุนลูกบิดจะกวาดแรงดันของตัวปรับค่าระหว่าง 0V ถึง 3.3V; `analogRead()` รายงานเป็นค่าดิบ (0–4095 บน ADC 12 บิตของ ESP32-C3) ดู Serial Monitor ขณะหมุนลูกบิดเพื่อดูช่วงเต็มก่อนย้ายไปยังแบบฝึกหัดที่ 4

แบบฝึกหัดที่ 4: โพเทนชิออมิเตอร์ควบคุมความสว่างของ LED (PWM)

  • ขาด้านนอก 1 ของโพเทนชิออมิเตอร์ → ESP32-C3 3V3
  • ขาด้านนอก 2 ของโพเทนชิออมิเตอร์ → GND
  • ตัวปรับค่าของโพเทนชิออมิเตอร์ → ESP32-C3 GPIO0
  • ขั้วบวกของ LED → ตัวต้านทาน 220–330Ω → ESP32-C3 GPIO4 (ต้องเป็นเอาต์พุตที่รองรับ PWM — GPIOs ทั้งหมดบน ESP32-C3 รองรับ PWM ผ่านอุปกรณ์ต่อพ่วง LEDC)
  • ขั้วลบของ LED → GND

PWM คือวิธีที่พินซึ่งเปิดเต็มหรือปิดสนิทเท่านั้นทำให้ LED ดูหรี่ลงได้: พินสลับเร็วกว่าที่ตามองเห็น และสัดส่วนเวลาที่เปิดเป็นตัวกำหนดความสว่าง นี่ใช้ API LEDC แบบ pin-based `ledcAttach()`/`ledcWrite()` จากเวอร์ชัน Arduino-ESP32 core ปัจจุบัน (3.x); หากแพ็คเกจบอร์ดที่คุณติดตั้งเป็น core 2.x ที่เก่ากว่า ให้สลับเป็น `ledcSetup()` + `ledcAttachPin()` + `ledcWrite(channel, duty)` แทน

แบบฝึกหัดที่ 5: ทรานซิสเตอร์ NPN เป็นสวิตช์ดิจิทัล

  • ESP32-C3 GPIO7 → ตัวต้านทาน 1kΩ → ฐานทรานซิสเตอร์ NPN (เช่น 2N2222/BC-series, จากชุดทรานซิสเตอร์)
  • อิมิตเตอร์ของทรานซิสเตอร์ NPN → GND
  • ตัวเก็บของทรานซิสเตอร์ NPN → ด้านแคโทดของกลุ่ม LED — ทรานซิสเตอร์เป็นสวิตช์ด้านต่ำสำหรับกลุ่ม LED ขนาดเล็กที่ต่อขนานกัน
  • ขั้วบวกของกลุ่ม LED → ตัวต้านทาน 220–330Ω แต่ละตัว → 3V3 — LED แต่ละตัวในกลุ่มจะได้รับตัวต้านทานของตัวเอง แม้ว่าจะใช้สวิตช์ทรานซิสเตอร์ร่วมกัน

นี่คือสวิตช์ด้านต่ำ: GPIO ไม่ได้สัมผัสพลังงานของกลุ่ม LED โดยตรง แต่จะสลับกระแสฐานขนาดเล็กที่ทำให้ทรานซิสเตอร์ส่งกระแสที่ใหญ่กว่าจาก 3V3 ผ่าน LED ไปยัง GND นี่คือหลักการเดียวกันที่ใช้ในการสลับโหลดที่ GPIO ไม่สามารถขับเคลื่อนได้อย่างปลอดภัยด้วยตัวเอง ซึ่งในที่นี้ขยายขนาดด้วย LED เนื่องจากมีอยู่ในชุดอุปกรณ์ — สลับกลุ่ม LED สำหรับโหลดที่หนักกว่าในภายหลังโดยใช้การจัดเรียงตัวต้านทานฐานแบบเดียวกัน

แผนภาพการต่อสาย

Exercise 1: Blink an LED anode GPIO4 cathode ESP32-C3 220–330Ω resistor LED GND Exercise 2: Read a Button to Light an LED anode GPIO4 cathode leg 1 → GPIO5 leg 2 ESP32-C3 220–330Ω resistor Push button LED GND Exercise 3: Read a Potentiometer leg 1 → 3V3 leg 2 wiper → GPIO0 ESP32-C3 Potentiometer GND Exercise 4: Potentiometer Controls LED Brightness (PWM) leg 1 → 3V3 leg 2 wiper → GPIO0 anode GPIO4 cathode ESP32-C3 Potentiometer 220–330Ω resistor GND LED Exercise 5: NPN Transistor as a Digital Switch GPIO7 base emitter collector ESP32-C3 1kΩ resistor NPN transistor GND LED group cathode side LED group anodes individual 220–330Ω resis… 3V3

โค้ดเริ่มต้น

// ===== Exercise 1: Blink an LED =====
// Exercise 1: Blink an LED
#define LED_PIN 4 // adjust to match your wiring if different

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

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

// ===== Exercise 2: Read a Button to Light an LED =====
// Exercise 2: Button controls an LED
#define LED_PIN 4
#define BUTTON_PIN 5 // adjust to match your wiring if different

void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  bool pressed = (digitalRead(BUTTON_PIN) == LOW);
  digitalWrite(LED_PIN, pressed ? HIGH : LOW);
}

// ===== Exercise 3: Read a Potentiometer =====
// Exercise 3: Read a potentiometer and print to Serial
#define POT_PIN 0 // adjust to match your wiring if different

void setup() {
  Serial.begin(115200);
}

void loop() {
  int raw = analogRead(POT_PIN);
  Serial.print("Pot raw value: ");
  Serial.println(raw);
  delay(200);
}

// ===== Exercise 4: Potentiometer Controls LED Brightness (PWM) =====
// Exercise 4: Potentiometer controls LED brightness via PWM
#define POT_PIN 0
#define LED_PIN 4 // adjust to match your wiring if different

const int PWM_FREQ = 5000;
const int PWM_RESOLUTION = 8; // 0-255 duty range

void setup() {
  Serial.begin(115200);
  // Arduino-ESP32 core 3.x pin-based LEDC API:
  ledcAttach(LED_PIN, PWM_FREQ, PWM_RESOLUTION);
}

void loop() {
  int raw = analogRead(POT_PIN);           // 0-4095
  int brightness = map(raw, 0, 4095, 0, 255); // scale to 8-bit PWM duty
  ledcWrite(LED_PIN, brightness);

  Serial.print("Pot: "); Serial.print(raw);
  Serial.print("  Brightness: "); Serial.println(brightness);
  delay(50);
}

// ===== Exercise 5: NPN Transistor as a Digital Switch =====
// Exercise 5: NPN transistor switches an LED group from a digital pin
#define SWITCH_PIN 7 // adjust to match your wiring if different

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

void loop() {
  digitalWrite(SWITCH_PIN, HIGH); // transistor conducts, LED group ON
  delay(1000);
  digitalWrite(SWITCH_PIN, LOW);  // transistor cuts off, LED group OFF
  delay(1000);
}

ไม่แน่ใจขั้นตอนไหน? ถามเรา