Search Code

ESP32 ትምህርት 27/55 - ርቀትን በአልትራሶኒክ ዳሳሽ መለካት | SunFounder የESP32 IoT መማሪያ ኪት

ESP32 ትምህርት 27/55 - ርቀትን በአልትራሶኒክ ዳሳሽ መለካት | SunFounder የESP32 IoT መማሪያ ኪት

በዚህ መማሪያ ውስጥ፣ ከESP32 ጋር የአልትራሳውንድ ርቀት ዳሳሽ እንዴት መጠቀም እንደሚቻል እንማራለን፣ ርቀቶችን ለመለካት እና ውጤቶቹን በስክሪን ላይ ለማሳየት። እንዲሁም አንድ ነገር በተወሰነ ክልል ውስጥ ሲገኝ ባዘርን እንዴት ማግበር እንደሚቻል እንመረምራለን። ይህ ፕሮጀክት የESP32 ማይክሮ መቆጣጠሪያን ሁለገብነት ያሳያል፣ እሱም የWi-Fi እና የብሉቱዝ አቅሞችን ያጣምራል፣ ለተለያዩ የIoT አፕሊኬሽኖች ተስማሚ ያደርገዋል።

ultrasonic_principle

በዚህ መመሪያ ውስጥ፣ የሃርድዌር ክፍሎችን ማብራሪያዎችን፣ የሽቦ መገጣጠሚያ መመሪያዎችን እና ፕሮጀክቱን በተሳካ ሁኔታ ለመተግበር የሚረዱ የኮድ ቁርጥራጮችን ያገኛሉ። ለተጨማሪ ግልጽነት፣ እባክዎን ቪዲዮውን ይመልከቱ (በቪዲዮው በ00:00)።

ሃርድዌር ተብራርቷል

የዚህ ፕሮጀክት ዋና ክፍሎች የESP32 ማይክሮ መቆጣጠሪያ፣ የአልትራሳውንድ ዳሳሽ (HC-SR04) እና ባዘር ያካትታሉ። የአልትራሳውንድ ዳሳሽ ሁለት ዋና ክፍሎችን ያቀፈ ነው፡- የአልትራሳውንድ ሞገዶችን የሚያመነጭ አስተላላፊ እና የተንጸባረቁትን ሞገዶች የሚቀበል ተቀባይ። ሞገዶቹ ለመመለስ የሚወስዱትን ጊዜ በመለካት፣ ወደ አንድ ነገር ያለውን ርቀት ማስላት እንችላለን።

ESP32 እንደ ማዕከላዊ መቆጣጠሪያ ሆኖ ያገለግላል፣ ከአልትራሳውንድ ዳሳሽ የተገኘውን መረጃ ያካሂዳል እና በተለካው ርቀት ላይ በመመስረት ባዘሩን ይቆጣጠራል። የተገኘው ርቀት ከተወሰነ ገደብ ያነሰ ሲሆን ባዘሩ ይደወላል፣ ይህም አንድ ነገር በጣም ቅርብ መሆኑን ያመለክታል።

የዳታሼት ዝርዝሮች

አምራች HC-SR04
የክፍል ቁጥር HC-SR04
የሎጂክ/IO ቮልቴጅ 5 ቮ
የአቅርቦት ቮልቴጅ 5 ቮ
የውጤት ጅረት (በአንድ ቻናል) 16 ሚኤ
ከፍተኛ ጅረት (በአንድ ቻናል)
የPWM ድግግሞሽ መመሪያ
የግቤት ሎጂክ ገደቦች
የቮልቴጅ ጠብታ / RDS(on) / ሙሌት
የሙቀት ገደቦች
ፓኬጅ
ማስታወሻዎች / ልዩነቶች የመለኪያ ክልል፡ ከ2 ሴ.ሜ እስከ 400 ሴ.ሜ

 

  • ለዳሳሹ ትክክለኛ የ5 ቮ የኃይል አቅርቦት ያረጋግጡ።
  • ጣልቃ ገብነትን ለማስወገድ ለአልትራሳውንድ ሞገዶች ግልጽ መንገድ ይጠብቁ።
  • የምልክት መዘግየትን እና ጫጫታን ለመቀነስ አጫጭር ሽቦዎችን ይጠቀሙ።
  • የተሳሳተ ግንኙነትን ለማስወገድ ትክክለኛ የፒን ግንኙነቶችን ያረጋግጡ።
  • ትክክለኛነትን ለመፈተሽ ዳሳሹን በተለያዩ አካባቢዎች ይሞክሩት።

የሽቦ መገጣጠሚያ መመሪያዎች

ESP32-27_ultrasonic_wiring

የአልትራሳውንድ ዳሳሹን ከESP32 ጋር ለማገናኘት፣ የዳሳሹን የVCC ፒን በESP32 ላይ ካለው የ5V ፒን ጋር ያገናኙ። በመቀጠል፣ የዳሳሹን የGND ፒን በESP32 ላይ ካሉት የመሬት (GND) ፒኖች አንዱ ጋር ያገናኙ። ከዳሳሹ የሚመጣው የቀስተ (Trig) ፒን በESP32 ላይ ከGPIO 26 ጋር መገናኘት አለበት፣ የኢኮ (Echo) ፒን ደግሞ ከGPIO 25 ጋር መገናኘት አለበት። ይህ ዝግጅት ESP32 ወደ ዳሳሹ ምልክት እንዲልክ እና ርቀትን ለማስላት የኢኮ ምልክቱን እንዲቀበል ያስችለዋል።

ESP32-27_ultrasonic_schematic

ለባዘሩ፣ አወንታዊውን (ረጅሙን) እግር በESP32 ላይ ከGPIO 12 ጋር እና አሉታዊውን (አጭሩን) እግር ከGND ጋር ያገናኙ። በስራ ጊዜ ልቅ የሆነ ሽቦ እንዳይኖር ሁሉም ግንኙነቶች ደህንነታቸው የተጠበቀ መሆናቸውን ያረጋግጡ። የዳቦ ሰሌዳ የሚጠቀሙ ከሆነ፣ የተሳሳተ ሽቦ እንዳይኖር የባዘሩን ግንኙነቶች በትክክል ያስተካክሉ። ለሽቦ መገጣጠሚያ ማረጋገጫ ቪዲዮውን መመልከትዎን ያረጋግጡ (በቪዲዮው በ05:12)።

የኮድ ምሳሌዎች እና ማብራሪያ

ኮዱ ለአልትራሳውንድ ዳሳሹ ፒኖችን ያስጀምራል እና ተከታታይ ግንኙነትን ያዘጋጃል። ዋናው ተግባር፣ readSensorData()፣ የቀስተ ምልክት መላክ እና ከኢኮ ፒን የሚመጣውን የምላሽ ጊዜ መለካት ሃላፊነት አለበት።

const int echoPin = 25;
const int trigPin = 26;

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Ultrasonic sensor:");  
}

ኮዱ echoPin እና trigPinን ከአልትራሳውንድ ዳሳሹ ጋር ለተገናኙት ፒኖች እንደ ቋሚዎች ይገልጻል። በsetup() ተግባር ውስጥ፣ ተከታታይ ግንኙነትን እናስጀምራለን እና የፒን ሁነታዎችን በዚሁ መሰረት እናዘጋጃለን።

float readSensorData() {
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  unsigned long microsecond = pulseIn(echoPin, HIGH);
  float distance = microsecond / 29.00 / 2;
  return distance;
}

ይህ ቁርጥራጭ readSensorData() ተግባርን ያሳያል፣ እሱም የ10-ማይክሮሰከንድ ምት ወደ ቀስተ ፒን ይልካል። ከዚያም የኢኮ ፒን ምልክቱን ወደ ኋላ ለመቀበል የወሰደውን ጊዜ ይለካል፣ ርቀቱን ያሰላል እና ይህን እሴት ይመልሳል።

በመጨረሻም፣ የሉፕ ተግባሩ ርቀቱን ያለማቋረጥ ያነባል እና በተከታታይ መቆጣጠሪያው ላይ ያትመዋል። ርቀቱ ከ20 ሴ.ሜ በታች ከሆነ፣ ባዘሩ ይጠቃለላል።

ማሳያ / ምን እንደሚጠበቅ

ፕሮግራሙን ሲያሂዱ፣ ESP32 የተለካውን ርቀት በሴንቲሜትር በተከታታይ መቆጣጠሪያው ላይ ያሳያል። አንድ ነገር ከዳሳሹ በ20 ሴ.ሜ ውስጥ ከገባ፣ ባዘሩ ይደወላል። ይህ ባህሪ ነገሮችን ከዳሳሹ ፊት ለፊት በተለያዩ ርቀቶች በማስቀመጥ ሊሞከር ይችላል። የተገላቢጦሽ ዋልታን ይጠንቀቁ እና በስራ ጊዜ ችግሮችን ለማስወገድ ግንኙነቶቹ እንደተገለጸው መደረጋቸውን ያረጋግጡ (በቪዲዮው በ08:00)።

የቪዲዮ ጊዜ ምልክቶች

  • 00:00 መጀመሪያ
  • 1:46 የአልትራሶኒክ ዳሳሽ መግቢያ
  • 6:02 የሽቦ አያያዝ ማብራሪያ
  • 7:37 የESP32 Arduino ኮድ ማብራሪያ
  • 11:33 በArduino IDE ውስጥ የESP32 ቦርድ እና COM ወደብ መምረጥ
  • 13:15 የርቀት መለኪያ ማሳያ
  • 16:43 ከርቀት ጋር የተያያዘ እርምጃ፡ ባዘር

ምስሎች

ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_schematic
ESP32-27_ultrasonic_schematic
ultrasonic_principle
ultrasonic_principle
827-ESP32 Tutorial 27/55- Arduino code for ultrasonic sensor
ቋንቋ: C++
// Define pins for the ultrasonic sensor
const int echoPin = 25;
const int trigPin = 26;

// Function prototype for reading sensor data
float readSensorData();

void setup() {
  // Begin serial communication at 115200 baud rate
  Serial.begin(115200);
  // Set echoPin as input and trigPin as output
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  // Print sensor information to the serial monitor
  Serial.println("Ultrasonic sensor:");  
}

void loop() {
  // Read distance from the ultrasonic sensor
  float distance = readSensorData();
  // Print the measured distance to the serial monitor
  Serial.print(distance);   
  Serial.println(" cm");
  // Delay between readings
  delay(200);
}

// Function to read data from the ultrasonic sensor
float readSensorData() {
  // Trigger a low signal before sending a high signal
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  // Send a 10-microsecond high signal to the trigPin
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  // Return to low signal
  digitalWrite(trigPin, LOW);
  
  // Measure the duration of the high signal on the echoPin
  unsigned long microsecond = pulseIn(echoPin, HIGH);

  // Calculate the distance using the speed of sound (29.00µs per centimeter)
  float distance = microsecond / 29.00 / 2;

  // Return the calculated distance
  return distance;
}

እንደሚያስፈልግዎት ይችላል

ምንጮች እና ምንጮች

ፋይሎች📁

አንድ ፋይል የለም።