ትምህርት 26/31፡ ስማርት መኪና ክፍል 4፡ አልትራሶኒክ ዳሳሽ በመጠቀም እንቅፋትን ማስወገድ | SunFounder Robojax
በዚህ ትምህርት ውስጥ፣ ስማርት መኪናዎን የአልትራሶኒክ ዳሳሽ በመጠቀም አካባቢውን የማየት እና ምላሽ የመስጠት ችሎታ እናስታጥቀዋለን። በፊቱ ያሉትን ነገሮች ርቀት በመለካት፣ መኪናው ብልህ ውሳኔዎችን ማድረግ ይችላል፡ መንገዱ ግልጽ ሲሆን ወደ ፊት ይንቀሳቀሳል፣ አንድ ነገር በጥንቃቄ ቀጠና ውስጥ ሲሆን ይቆማል፣ እንቅፋት በጣም ሲቀርብ ደግሞ ወደ ኋላ ይመለሳል። ይህ ፕሮጀክት ቀደም ሲል የተማራችሁትን የሞተር ቁጥጥር እና የዳሳሽ መሰረታዊ ነገሮችን ይጠቀማል፣ በዚህም ሙሉ በሙሉ ራሱን የቻለ ተሽከርካሪ ያስገኛል።
ይህ መጫወቻ ብቻ አይደለም፤ ይበልጥ የተወሳሰቡ የሮቦቲክስ ፕሮጀክቶችን ለመገንባት መሰረታዊ እርምጃ ነው። እዚህ የምትተገብሩት አመክንዮ—ዳሰስ፣ አስብ፣ እርምጃ ውሰድ—ከሮቦቲክ ቫክዩም ክሊነሮች እስከ ኢንዱስትሪያል አውቶሜሽን ድረስ በሁሉም ነገር ውስጥ ጥቅም ላይ የሚውል ነው። የራስዎን ግንባታ ለማነሳሳት ጥቂት ሀሳቦች እነሆ፡
- ራሱን የቻለ ሮቨር፡ ግድግዳ ወይም የቤት እቃ ሳይመታ ክፍል ወይም ኮሪደር መቃኘት የሚችል ሮቦት ይፍጠሩ።
- የቅርበት ማንቂያ ስርዓት፡ የአልትራሶኒክ ዳሳሹን በሰርቮ ላይ በመጫን አካባቢን ይቃኙ እና ሰራተኛ ወደ ተወሰነ ቀጠና ሲገባ ማንቂያ ወይም መብራት ያስነሱ።
- ብልህ የመኪና ማቆሚያ ረዳት፡ ተሽከርካሪን ወደ ጠባብ ቦታ ለመምራት የርቀት መለኪያዎችን የሚጠቀም፣ ምስላዊ ወይም የድምጽ ግብረመልስ የሚሰጥ ስርዓት ይገንቡ።
ይህ መመሪያ በ SunFounder 3-in-1 Arduino ኪት እና በ"Play with Ultrasonic Module" ፕሮጀክቱ ላይ የተመሰረተ ነው። ስለ ሽቦ አገናኝ እንራመዳለን፣ የውሳኔ አሰጣጥ ኮዱን እናብራራለን፣ እና መኪናው በተግባር ላይ እናሳያለን።
እንቅፋትን የማስወገድ አመክንዮ እንዴት እንደሚሰራ
የዚህ ፕሮጀክት ዋና ነገር ቀላል፣ ግን ኃይለኛ የውሳኔ ዛፍ ነው። የአልትራሶኒክ ዳሳሽ በቀጥታ ፊቱ ያለውን ነገር ርቀት ያለማቋረጥ ይለካል። ይህ የርቀት እሴት ከዚህ በታች ባለው ስእል እንደሚታየው የመኪናውን ሞተሮች ለመቆጣጠር ይጠቅማል።
- ርቀቱ ከ 25 ሳ.ሜ በላይ ከሆነ፡ መንገዱ ግልጽ ነው፣ ስለዚህ መኪናው ወደ ፊት ይንቀሳቀሳል።
- ርቀቱ ከ 10 ሳ.ሜ በላይ እና ከ 25 ሳ.ሜ ወይም እኩል ከሆነ፡ አንድ ነገር በ"ጥንቃቄ ቀጠና" ውስጥ ተገኝቷል፣ ስለዚህ መኪናው ግጭትን ለማስወገድ ይቆማል።
- ርቀቱ ከ 2 ሳ.ሜ በላይ እና ከ 10 ሳ.ሜ ወይም እኩል ከሆነ፡ አንድ ነገር በአደገኛ ሁኔታ ቅርብ ነው። መኪናው ተጨማሪ ቦታ ለመፍጠር ወደ ኋላ ይመለሳል።
- ርቀቱ ከ 2 ሳ.ሜ ወይም እኩል ከሆነ፡ መለኪያው ስህተት ሊሆን ይችላል (በትክክል ለመለካት በጣም ቅርብ ነው)፣ ስለዚህ መኪናው እንደ ደህንነት እርምጃ ይቆማል።
የሃርድዌር ክፍሎች
ይህን ፕሮጀክት ለመገንባት የሚከተሉትን ክፍሎች ያስፈልግዎታል፣ ሁሉም በ SunFounder 3-in-1 ኪት ውስጥ ይካተታሉ።
- 1x Arduino Uno (ወይም ተኳሃኝ ቦርድ)
- 1x ሁለት ጊርድ ሞተሮች ያሉት ስማርት መኪና ቻሲስ
- 1x L298N ሞተር ሾፌር ሞጁል
- 1x HC-SR04 አልትራሶኒክ የርቀት ዳሳሽ
- 1x ብሬድቦርድ
- ጅመር ሽቦዎች
- ለመኪናው የኃይል አቅርቦት (ለምሳሌ የባትሪ ማህደር)
የሽቦ አገናኝ መመሪያ
ሽቦው የሞተር ሾፌሩን፣ የአልትራሶኒክ ዳሳሹን እና አርዱኢኖን ያገናኛል። የሞተር ሾፌሩ የመኪናውን መንኮራኩሮች ይቆጣጠራል፣ የአልትራሶኒክ ዳሳሹ ደግሞ እንደ "ዓይኖቹ" ይሰራል።
ከ SunFounder ሰነድ የተወሰደው የግንኙነት ስእል እነሆ፡
ግንኙነቶቹን እንከፋፍላቸው። በመጀመሪያ፣ የብሬድቦርዱን አዎንታዊ እና አሉታዊ ሀዲዶች ከአርዱኢኖው 5V እና GND ፒኖች ያብሩ። የአልትራሶኒክ ዳሳሹ ከዚያ በኋላ እንደሚከተለው ይገናኛል፡
- VCC (ኃይል)፡ በብሬድቦርዱ ላይ ካለው አዎንታዊ ሀዲድ ጋር ይገናኛል።
- GND (መሬት)፡ በብሬድቦርዱ ላይ ካለው አሉታዊ ሀዲድ ጋር ይገናኛል።
- Trig (ቀስቅሴ)፡ በአርዱኢኖው ላይ ካለው ዲጂታል ፒን 3 ጋር ይገናኛል። ይህ ፒን የአልትራሶኒክ ምት ይልካል።
- Echo (መቀበያ)፡ በአርዱኢኖው ላይ ካለው ዲጂታል ፒን 4 ጋር ይገናኛል። ይህ ፒን የተንጸባረቀውን ምት ይቀበላል።
የሞተር ሾፌሩ ግንኙነቶች ከቀዳሚ ትምህርቶች ጋር ተመሳሳይ ናቸው። አራቱ የቁጥጥር ፒኖች (IN1፣ IN2፣ IN3፣ IN4) ከአርዱኢኖው ዲጂታል ፒኖች 5፣ 6፣ 9 እና 10 ጋር ይገናኛሉ። እነዚህ ፒኖች የሁለቱን ሞተሮች ፍጥነት እና አቅጣጫ ይቆጣጠራሉ። የሞተር ሾፌሩ ኃይል እና መሬት ከባትሪ ማህደሩ እና ከአርዱኢኖው መሬት ጋር በትክክል መገናኘታቸውን ያረጋግጡ። (በቪዲዮው ላይ በ02:24)
የኮድ ማብራሪያ
የዚህ ፕሮጀክት ኮድ ከአልትራሶኒክ ዳሳሹ በተገኘው የርቀት መለኪያ ላይ በመመስረት የመኪናውን ባህሪ ይቆጣጠራል። አመክንዮው ቀላል እና ለማበጀት ቀላል ነው። ቁልፍ የሆኑትን፣ በተጠቃሚ ሊዋቀሩ የሚችሉ ክፍሎችን እንመልከት።
1. የፒን ትርጓሜዎች
በስኬቹ አናት ላይ፣ ለሞተሮቹ እና ለአልትራሶኒክ ዳሳሹ ፒኖች ተብራርተዋል። ክፍሎችዎን ከተለያዩ የአርዱኢኖ ፒኖች ጋር ካገናኙ እነዚህን መቀየር ይችላሉ።
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int trigPin = 3;
const int echoPin = 4;
እዚህ፣ A_1A፣ A_1B፣ B_1A እና B_1B በ L298N ሾፌር በኩል የግራ እና የቀኝ ሞተሮችን ይቆጣጠራሉ። trigPin እና echoPin ለአልትራሶኒክ ዳሳሹ ናቸው።
2. የባህሪ ተለዋዋጮች እና አመክንዮ
ዋናው ባህሪ በloop() ተግባር ውስጥ ቁጥጥር ይደረግበታል። የመኪናውን "ስብዕና" ማስተካከል የሚችሉት እዚህ ነው።
/*
Lesson 26/31: Avoiding Obstacle Using Ultrasonic Sensor
Get this code and watch video Download and resource page https://robojax.com/RJT609
YouTube video https://www.youtube.com/watch?v=uLBmRvaemxA
*/
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int trigPin = 3;
const int echoPin = 4;
void setup() {
Serial.begin(9600);
//motor
pinMode(A_1B, OUTPUT);
pinMode(A_1A, OUTPUT);
pinMode(B_1B, OUTPUT);
pinMode(B_1A, OUTPUT);
//ultrasonic
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
}
void loop() {
float distance = readSensorData();
if (distance > 25) {
moveForward(200);
}
else if (distance < 10 && distance > 2) {
moveBackward(200);
} else {
stopMove();
}
}
float readSensorData() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float distance = pulseIn(echoPin, HIGH) / 58.00; //Equivalent to (340m/s*1us)/2
return distance;
}
void moveForward(int speed) {
analogWrite(A_1B, 0);
analogWrite(A_1A, speed);
analogWrite(B_1B, speed);
analogWrite(B_1A, 0);
}
void moveBackward(int speed) {
analogWrite(A_1B, speed);
analogWrite(A_1A, 0);
analogWrite(B_1B, 0);
analogWrite(B_1A, speed);
}
void stopMove() {
analogWrite(A_1B, 0);
analogWrite(A_1A, 0);
analogWrite(B_1B, 0);
analogWrite(B_1A, 0);
}
Common Course Links
Common Course Files
እንደሚያስፈልግዎት ይችላል
-
አማዞንSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
አማዞን
-
አማዞን
-
አማዞን
ምንጮች እና ምንጮች
-
ሰነዶችDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ውስጥPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ፋይሎች📁
Arduino ቤተ መዝገቦች (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB