પાઠ 28/31: કાર-6 SunFounder સેલ્ફ ડ્રાઇવિંગ આર્ડુનો કાર | Robojax
આ પ્રોજેક્ટમાં, આપણે Arduino, અલ્ટ્રાસોનિક સેન્સર અને બે ઇન્ફ્રારેડ સેન્સરનો ઉપયોગ કરીને મૂળભૂત સ્વ-ડ્રાઇવિંગ કાર બનાવીશું. આ સ્વાયત્ત નેવિગેશન, સેન્સર ફ્યુઝન અને નિર્ણય-લેવાની તર્કશાસ્ત્ર શીખવા માટેનો ઉત્તમ પ્રારંભિક પ્રોજેક્ટ છે. કાર આગળ, પાછળ ખસી શકે છે અને અવરોધો ટાળવા માટે વળાંક લઈ શકે છે, અસરકારક રીતે પોતાનો સ્પષ્ટ માર્ગ શોધી શકે છે. આ પ્રોજેક્ટ SunFounder 3-in-1 Arduino કિટ પર આધારિત છે અને Robojax ના Arduino કોર્સનો ભાગ છે.
આ પ્રોજેક્ટ માત્ર રમકડું બનાવવા વિશે નથી; તે સ્વાયત્ત રોબોટિક્સ પાછળના મુખ્ય ખ્યાલોનો વ્યવહારુ પરિચય છે. સમાન તર્ક અને સેન્સરનો ઉપયોગ વાસ્તવિક-વિશ્વના કાર્યક્રમોમાં થાય છે જેમ કે રોબોટિક વેક્યુમ ક્લીનર્સ, વેરહાઉસમાં સ્વચાલિત માર્ગદર્શિત વાહનો અને વધુ જટિલ રોબોટ્સની નેવિગેશન સિસ્ટમ્સ. અંતર સંવેદનને સરળ નેવિગેશન નિયમો સાથે કેવી રીતે જોડવું તે સમજીને, તમે વિવિધ પ્રોજેક્ટ્સ બનાવી શકો છો, જેમ કે:
- એક નાનો રોબોટ બનાવવો જે ઓરડામાં નેવિગેટ કરી શકે અને ફર્નિચર ટાળી શકે.
- એક સ્વચાલિત વાહન બનાવવું જે સરળ માર્ગને અનુસરી શકે અથવા વિસ્તારમાં પેટ્રોલિંગ કરી શકે.
- મોટા રોબોટિક્સ પ્રોજેક્ટ્સ માટે મૂળભૂત અવરોધ-ટાળવાની અલ્ગોરિધમ્સ કેવી રીતે અમલમાં મૂકવી તે શીખવું.
હાર્ડવેર ઘટકો
આ પ્રોજેક્ટ SunFounder 3-in-1 કિટના ઘટકોનો ઉપયોગ કરે છે. આવશ્યક ભાગો છે:
- Arduino Uno બોર્ડ
- SunFounder 2WD અથવા 3-in-1 કાર ચેસિસ મોટર્સ સાથે
- મોટર ડ્રાઇવર મોડ્યુલ (દા.ત., L298N અથવા સમાન)
- HC-SR04 અલ્ટ્રાસોનિક અંતર સેન્સર
- બે IR અવરોધ સેન્સર
- જમ્પર વાયર અને મોટર્સ માટે પાવર સ્ત્રોત
વાયરિંગ માર્ગદર્શિકા
વાયરિંગ એ તમારી સ્વ-ડ્રાઇવિંગ કારને જીવંત કરવાનું નિર્ણાયક પ્રથમ પગલું છે. જોડાણો સીધા છે, પરંતુ તમારા ઘટકોને નુકસાન ન થાય તે માટે દરેકને બે વાર તપાસવું આવશ્યક છે. વાયરિંગ પાછળનો તર્ક એ છે કે Arduino ના નિયંત્રણ પિનને મોટર ડ્રાઇવર અને સેન્સર સાથે જોડવા, જે Arduino ને ડેટા વાંચવા અને આદેશો મોકલવાની મંજૂરી આપે છે.
- મોટર ડ્રાઇવર પિન (A-1B, A-1A, B-1B, B-1A): આ પિન બે મોટર્સની ગતિ અને દિશાને નિયંત્રિત કરે છે. તેઓ Arduino પિન 5, 6, 9 અને 10 સાથે જોડાયેલા છે, જે PWM-સક્ષમ છે, જે ચલ ગતિ નિયંત્રણ માટે પરવાનગી આપે છે.
- અલ્ટ્રાસોનિક સેન્સર (Trig અને Echo): Trig પિન અલ્ટ્રાસોનિક પલ્સ મોકલે છે, અને Echo પિન પ્રતિબિંબિત સિગ્નલ મેળવે છે. Trig પિન Arduino પિન 3 સાથે જોડાયેલ છે, અને Echo પિન Arduino પિન 4 સાથે જોડાયેલ છે.
- IR સેન્સર (ડાબે અને જમણે): આ સેન્સર શોધે છે કે તેમની સામે સીધો અવરોધ છે કે નહીં. ડાબું IR સેન્સર Arduino પિન 8 સાથે જોડાયેલ છે, અને જમણું IR સેન્સર પિન 7 સાથે જોડાયેલ છે. તેઓ કારની બાજુઓ પરની જગ્યા તપાસવા માટે ઉપયોગમાં લેવાય છે.
વિગતવાર દ્રશ્ય માર્ગદર્શિકા માટે, કૃપા કરીને નીચેના વાયરિંગ ડાયાગ્રામનો સંદર્ભ લો, જે દરેક જોડાણને સ્પષ્ટ રીતે દર્શાવે છે.
કોડ સમજૂતી
કોડ Arduino પ્રોગ્રામિંગ ભાષા (C++) માં લખાયેલ છે. સંપૂર્ણ પ્રોગ્રામ વિડિઓ વર્ણનમાં લિંક કરેલા સંસાધન પૃષ્ઠ પરથી ડાઉનલોડ કરવા માટે ઉપલબ્ધ છે. ચાલો આ સ્કેચના મુખ્ય, વપરાશકર્તા-રૂપરેખાંકિત ભાગોને તોડીએ.
પિન વ્યાખ્યાઓ
કોડની ટોચ પર, તમે વિવિધ ઘટકો સાથે Arduino ને જોડતા પિન વ્યાખ્યાયિત કરો છો. જો તમે તમારા બોર્ડ પર અલગ પિનનો ઉપયોગ કરી રહ્યા હોવ તો તમે આ બદલી શકો છો.
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int echoPin = 4;
const int trigPin = 3;
const int rightIR = 7;
const int leftIR = 8;
A_1B, A_1A, B_1B, અને B_1A પિન H-bridge મોટર ડ્રાઇવરને નિયંત્રિત કરે છે. આ પિનને વિવિધ સંયોજનોમાં HIGH અથવા LOW સેટ કરીને, તમે દરેક મોટરની દિશાને નિયંત્રિત કરી શકો છો. echoPin અને trigPin અલ્ટ્રાસોનિક સેન્સર માટે છે, અને rightIR અને leftIR ઇન્ફ્રારેડ સેન્સર માટે છે.
વર્તન ચલો અને તર્ક
સ્વ-ડ્રાઇવિંગ વર્તનનો મુખ્ય તર્ક loop() ફંક્શનમાં છે. કાર IR સેન્સર અને અલ્ટ્રાસોનિક સેન્સરના રીડિંગ્સના આધારે નિર્ણયો લે છે. કોડ ચોક્કસ અંતર વ્યાખ્યાયિત કરે છે જે વિવિધ ક્રિયાઓને ટ્રિગર કરે છે. ઉદાહરણ તરીકે, distance ચલ સેન્ટીમીટરમાં માપવામાં આવે છે. તર્ક નીચે મુજબ છે:
- જો અંતર 50 સેમી કરતાં વધુ હોય: આગળનો માર્ગ સ્પષ્ટ છે, તેથી કાર 200 ની ઝડપે આગળ વધે છે.
- જો અંતર 2 સેમી અને 10 સેમી વચ્ચે હોય: કાર અવરોધની ખૂબ નજીક છે. તે એક સેકંડ માટે ઉલટી થાય છે, પછી નવો માર્ગ શોધવા માટે અડધી સેકંડ માટે પાછળ-ડાબે વળે છે.
- જો અંતર 10 સેમી અને 50 સેમી વચ્ચે હોય: કાર "સાવધાની ઝોન" માં છે. તે આગળ વધે છે, પરંતુ 150 ની ધીમી ઝડપે.
આ થ્રેશોલ્ડ મૂલ્યો (50 સેમી, 10 સેમી અને 2 સેમી) અને ઝડપ (200 અને 150) એ પ્રાથમિક ચલો છે જે તમે તમારી કારનું વર્તન બદલવા માટે ગોઠવી શકો છો. ઉદાહરણ તરીકે, જો તમારી કાર ઝડપથી ચાલતી હોય તો તમે "સલામત" અંતર 60 સેમી સુધી વધારી શકો છો.
કસ્ટમ ફંક્શન્સ
કોડમાં કારની હિલચાલને નિયંત્રિત કરવા માટે ઘણા કસ્ટમ ફંક્શન્સ શામેલ છે. આ મુખ્ય લૂપમાં સમગ્રતયા ઉપયોગમાં લેવાય છે જેથી કોડ સ્વચ્છ અને સમજવામાં સરળ બને.
moveForward(int speed): આ ફંક્શન મોટર પિનને સેટ કરીને કારને આગળ ચલાવે છે.speedપેરામીટર (0-255) નિયંત્રિત કરે છે કે મોટર કેટલી ઝડપથી ફરે છે.moveBackward(int speed): આmoveForwardજેવું જ છે, પરંતુ તે મોટરની દિશા ઉલટાવીને કારને પાછળ લઈ જાય છે.backLeft(int speed)અનેbackRight(int speed): આ ફંક્શન એક મોટરને ઉલટી દિશામાં ચલાવીને અને બીજીને રોકીને કારને વળાંક આપે છે. આ એક પિવટ ટર્ન છે જે કારને અસરકારક રીતે દિશા બદલવામાં મદદ કરે છે.stopMove(): આ ફંક્શન બધા કંટ્રોલ પિનને LOW પર સેટ કરીને બધી મોટર બંધ કરે છે.readSensorData(): આ ફંક્શન અલ્ટ્રાસોનિક સેન્સરમાંથી પલ્સ મોકલે છે અને ઇકો પાછા આવવામાં લાગેલો સમય માપે છે. પછી તે સેન્ટીમીટરમાં અંતર ગણે છે અને મૂલ્ય પરત કરે છે.
લાઇવ પ્રોજેક્ટ પ્રદર્શન
(વિડિયોમાં 07:09 પર) પ્રદર્શનમાં, કારને બોક્સ અને દિવાલો જેવા વિવિધ અવરોધો ધરાવતા વાતાવરણમાં મૂકવામાં આવી છે. કારની તર્કશક્તિ સ્પષ્ટ દેખાય છે જ્યારે તે માર્ગદર્શન કરે છે. જ્યારે અલ્ટ્રાસોનિક સેન્સર 50 સેમી કરતાં વધુ દૂર દિવાલ અથવા અવરોધ શોધે છે, ત્યારે તે આત્મવિશ્વાસથી આગળ ચલાવે છે. જેમ તે નજીક આવે છે, બાજુના IR સેન્સર ખુલ્લી જગ્યા માટે તપાસ કરે છે.
જો ડાબી બાજુ અવરોધ મળે છે, તો કાર તેને ટાળવા માટે પાછળ-જમણી તરફ વળાંક લે છે અને ઊલટું. જ્યારે કાર પોતાને સાંકડી જગ્યામાં શોધે છે, જેમ કે ટેબલની નીચે (વિડિયોમાં 07:49 પર), તે પોતાને બહાર કાઢવા અને સ્પષ્ટ માર્ગ શોધવા માટે તેના રિવર્સ અને ટર્ન ફંક્શનનો ઉપયોગ કરે છે. કાર સતત તેના વાતાવરણને વાંચે છે અને નિર્ણય લે છે, જે પ્રી-પ્લાન્ડ માર્ગ પર આધાર રાખતું નથી તેવી પ્રતિક્રિયાશીલ નિયંત્રણ પ્રણાલી દર્શાવે છે.
વિડિયો પ્રકરણો
- [00:00] સેલ્ફ-ડ્રાઇવિંગ કાર પ્રોજેક્ટનો પરિચય
- [00:28] SunFounder 3-in-1 કિટ વિશે
- [01:32] કોડ ખોલવું અને ઝાંખી
- [02:02] કોડ સ્ટ્રક્ચર અને નવા ફંક્શનની સમજૂતી
- [03:11] સેટઅપ ફંક્શનમાં પિન સેટ કરવા
- [03:28] લૂપમાં મુખ્ય નિર્ણય લેવાની તર્કશક્તિ
- [05:41] લાઇવ પ્રદર્શન: કાર કાર્યરત
- [07:09] અવરોધો અને દિવાલ અનુસરણ સાથે પ્રદર્શન
- [09:58] નિષ્કર્ષ અને અંતિમ વિચારો
/*
Lesson 28/31: Car-6 SunFounder self Driving Arduino car
Get this code and watch video Download and resource page https://robojax.com/RJT611
https://www.youtube.com/watch?v=IyninXUcsn0
*/
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int echoPin = 4;
const int trigPin = 3;
const int rightIR = 7;
const int leftIR = 8;
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 backLeft(int speed) {
analogWrite(A_1B, speed);
analogWrite(A_1A, 0);
analogWrite(B_1B, 0);
analogWrite(B_1A, 0);
}
void backRight(int speed) {
analogWrite(A_1B, 0);
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);
}
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);
//IR obstacle
pinMode(leftIR, INPUT);
pinMode(rightIR, INPUT);
}
void loop() {
int left = digitalRead(leftIR); // 0: Obstructed 1: Empty
int right = digitalRead(rightIR);
if (!left && right) {
backLeft(150);
} else if (left && !right) {
backRight(150);
} else if (!left && !right) {
moveBackward(150);
} else {
float distance = readSensorData();
Serial.println(distance);
if (distance > 50) { // Safe
moveForward(200);
} else if (distance < 10 && distance > 2) { // Attention
moveBackward(200);
delay(1000);
backLeft(150);
delay(500);
} else {
moveForward(150);
}
}
}
Common Course Links
Common Course Files
તમને જોઈતી વસ્તુઓ
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
સંસાધનો અને સંદર્ભો
-
દસ્તાવેજીકરણ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