ค้นหาโค้ด

บทเรียน ESP32 18/55 - การตรวจจับการเอียงโดยใช้ ESP32 | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

บทเรียน ESP32 18/55 - การตรวจจับการเอียงโดยใช้ ESP32 | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะใช้ไมโครคอนโทรลเลอร์ SunFounder ESP32 เพื่อสร้างโปรเจกต์ง่ายๆ ที่ตรวจจับการเอียงโดยใช้สวิตช์เอียง (tilt switch) เมื่อสวิตช์เอียงถูกเปิดใช้งาน ไฟ LED จะดับลง และเมื่ออยู่ในตำแหน่งตั้งตรง ไฟ LED จะติดขึ้น โปรเจกต์นี้ไม่เพียงแต่เป็นการแนะนำที่ดีสำหรับการทำงานกับเซนเซอร์เอียง แต่ยังเป็นพื้นฐานสำหรับการใช้งานด้านหุ่นยนต์ต่างๆ สำหรับคำแนะนำแบบภาพโดยละเอียด อย่าลืมดูวิดีโอที่ลิงก์ไว้ด้านบน (ในวิดีโอที่ 00:00)

สวิตช์เอียง

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักที่ใช้ในโปรเจกต์นี้ ได้แก่ ไมโครคอนโทรลเลอร์ ESP32 สวิตช์เอียง และไฟ LED ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังพร้อม Wi-Fi และ Bluetooth ในตัว ทำให้เหมาะสำหรับการใช้งาน IoT สวิตช์เอียงเป็นอุปกรณ์ง่ายๆ ที่มีลูกบอลโลหะอยู่ภายในกระป๋อง เมื่อเอียง ลูกบอลจะเคลื่อนที่และตัดวงจร ทำให้เราสามารถตรวจจับสถานะการเอียงได้ ไฟ LED จะแสดงสถานะการเอียงด้วยสายตาตามสถานะของสวิตช์ นอกจากส่วนประกอบเหล่านี้แล้ว เราจะใช้ตัวต้านทานสำหรับจำกัดกระแสและวัตถุประสงค์การดึงลง (pull-down) ตัวต้านทาน 220 โอห์มที่เชื่อมต่อกับ LED ช่วยให้ LED ทำงานอย่างปลอดภัยโดยไม่ดึงกระแสมากเกินไป ตัวต้านทาน 10k โอห์มทำหน้าที่เป็นตัวดึงลงสำหรับสวิตช์เอียง เพื่อให้แน่ใจว่าพินอินพุตอ่านค่าสถานะที่ทราบเมื่อสวิตช์ไม่ถูกเปิดใช้งาน

รายละเอียดจาก Datasheet

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน ESP32
แรงดันไฟฟ้าลอจิก/IO 3.3 V
แรงดันไฟฟ้าจ่าย 5 V
กระแสเอาต์พุต (ต่อช่อง) 12 mA
กระแสสูงสุด (ต่อช่อง) 40 mA
คำแนะนำความถี่ PWM 1 kHz
เกณฑ์ลอจิกอินพุต 0.8 V (ต่ำ), 2.0 V (สูง)
แรงดันตก / RDS(on) / ความอิ่มตัว 0.2 V
ขีดจำกัดความร้อน 85 °C
แพ็คเกจ โมดูล ESP32
หมายเหตุ / รุ่นต่างๆ รวมความสามารถ Wi-Fi และ Bluetooth

 

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

คำแนะนำการเดินสายไฟ

ESP32-18_tile_wiring

ในการเดินสายไฟส่วนประกอบ ให้เริ่มด้วยสวิตช์เอียง ซึ่งไม่มีขั้ว ดังนั้นสามารถเชื่อมต่อในทิศทางใดก็ได้ เชื่อมต่อพินหนึ่งของสวิตช์เอียงเข้ากับแหล่งจ่าย 3.3V และพินอีกอันเข้ากับพิน 14 บน ESP32 เพื่อให้แน่ใจว่าพิน 14 อ่านค่าสถานะที่ทราบเมื่อสวิตช์ไม่ถูกเปิดใช้งาน ให้เชื่อมต่อตัวต้านทาน 10k โอห์มจากพินเดียวกันนั้นลงกราวด์ จากนั้นนำ LED เสียบเข้ากับเบรดบอร์ดโดยให้ขายาว (แอโนด) เชื่อมต่อกับตัวต้านทาน 220 โอห์ม เชื่อมต่อปลายอีกด้านของตัวต้านทานเข้ากับพิน 26 บน ESP32 ขาสั้น (แคโทด) ของ LED ควรเชื่อมต่อกับกราวด์ สุดท้าย เชื่อมต่อพินกราวด์ของ ESP32 เข้ากับรางกราวด์ของเบรดบอร์ด และพิน 3.3V เข้ากับรางไฟ ตรวจสอบการเชื่อมต่อทั้งหมดอีกครั้งเพื่อป้องกันการลัดวงจรหรือการอ่านค่าที่ผิดพลาด หากทำตามขั้นตอนเหล่านี้ คุณควรมีการตั้งค่าเซนเซอร์เอียงที่ใช้งานได้พร้อมสำหรับการเขียนโปรแกรม

ตัวอย่างโค้ดและคำอธิบาย

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


// กำหนดหมายเลขพิน
const int tiltPin = 14;  // สวิตช์เอียง
const int ledPin = 26;   // LED

// ตัวแปรสำหรับเก็บสถานะการเอียง
int tiltState = 0;

ส่วนนี้แสดงการกำหนดพินและการประกาศตัวแปรที่จะติดตามสถานะการเอียง tiltPin ถูกตั้งเป็นอินพุตเพื่ออ่านสถานะของสวิตช์ ในฟังก์ชัน setup() การสื่อสารซีเรียลถูกเริ่มต้น และตั้งค่าโหมดพินสำหรับสวิตช์เอียงและ LED เพื่อให้แน่ใจว่า ESP32 สามารถอ่านอินพุตจากสวิตช์เอียงและควบคุม LED ได้ตามนั้น


void setup() {
  Serial.begin(115200);
  // เริ่มต้นพินเอียงเป็นอินพุต
  pinMode(tiltPin, INPUT);
  // เริ่มต้นพิน LED เป็นเอาต์พุต
  pinMode(ledPin, OUTPUT);
}

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


void loop() {
  // อ่านสถานะของสวิตช์เอียง
  tiltState = digitalRead(tiltPin);

  Serial.println(tiltState);
  // หากสวิตช์ตั้งตรง
  if (tiltState == HIGH) {
    // เปิด LED
    digitalWrite(ledPin, HIGH);
  } else {
    // ปิด LED
    digitalWrite(ledPin, LOW);
  }
}

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

การสาธิต / สิ่งที่คาดหวัง

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

ไทม์สแตมป์ของวิดีโอ

  • 00:00 เริ่มต้น
  • 1:44 แนะนำโปรเจกต์
  • 2:49 เอกสารประกอบ
  • 6:43 อธิบายการเดินสาย Arduino
  • 10:39 อธิบายโค้ด Arduino
  • 13:40 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 15:22 การสาธิตการเอียงของโปรเจกต์

ภาพ

ESP32-18_tile_wiring
ESP32-18_tile_wiring
tilt_switch
tilt_switch
ESP32-18_tile_schematic
ESP32-18_tile_schematic
817-ESP32 Tutorial 18/55- Arduino code for tilt sensor
ภาษา: C++
// Set pin numbers
const int tiltPin = 14;  // Tilt Switch
const int ledPin = 26;   // LED

// Variable for storing the tilt status
int tiltState = 0;

void setup() {
  Serial.begin(115200);
  // Initialize the tilt pin as an input
  pinMode(tiltPin, INPUT);
  // Initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // Read the state of the tilt switch
  tiltState = digitalRead(tiltPin);

  Serial.println(tiltState);
  // If the switch is upright
  if (tiltState == HIGH) {
    // Turn LED on
    digitalWrite(ledPin, HIGH);

  } else {
    // Turn LED off
    digitalWrite(ledPin, LOW);
  }
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน