குறியீட்டை தேடு

பாடம் 26/31: ஸ்மார்ட் கார் பகுதி 4 : அல்ட்ராசோனிக் சென்சார் பயன்படுத்தி தடையை தவிர்த்தல் | SunFounder Robojax

பாடம் 26/31: ஸ்மார்ட் கார் பகுதி 4 : அல்ட்ராசோனிக் சென்சார் பயன்படுத்தி தடையை தவிர்த்தல் | SunFounder Robojax

இந்தப் பாடத்தில், அல்ட்ராசோனிக் சென்சாரைப் பயன்படுத்தி அதன் சூழலைப் பார்க்கவும் எதிர்வினையாற்றவும் உங்கள் ஸ்மார்ட் காரை மேம்படுத்துகிறோம். அதன் முன்னால் உள்ள பொருட்களுக்கான தூரத்தை அளவிடுவதன் மூலம், கார் அறிவார்ந்த முடிவுகளை எடுக்க முடியும்: பாதை தெளிவாக இருக்கும்போது முன்னோக்கி நகரும், ஒரு பொருள் எச்சரிக்கை மண்டலத்திற்குள் இருக்கும்போது நிற்கும், மேலும் ஒரு தடங்கல் மிக அருகில் வரும்போது பின்னோக்கி செல்லும். இந்த திட்டம் நீங்கள் ஏற்கனவே கற்றுக்கொண்ட முக்கிய மோட்டார் கட்டுப்பாடு மற்றும் சென்சார் அடிப்படைகளை அடிப்படையாகக் கொண்டது, இதன் விளைவாக உண்மையிலேயே தன்னாட்சி வாகனம் கிடைக்கிறது.

26-SunFounder-Car-4-Ultrasonic.mp4_snapshot_00.09.009

இது ஒரு பொம்மை மட்டுமல்ல; இது மிகவும் சிக்கலான ரோபாட்டிக்ஸ் திட்டங்களை உருவாக்குவதற்கான ஒரு அடிப்படை படியாகும். நீங்கள் இங்கே செயல்படுத்தும் தர்க்கம்—உணர், சிந்தி, செயல்படு—ரோபோ வெற்றிட கிளீனர்கள் முதல் தொழில்துறை ஆட்டோமேஷன் வரை எல்லாவற்றிலும் பயன்படுத்தப்படுகிறது. உங்கள் சொந்த கட்டுமானங்களை ஊக்குவிக்க சில யோசனைகள் இங்கே:

  • தன்னாட்சி ரோவர்: சுவர்கள் அல்லது தளபாடங்களில் மோதாமல் ஒரு அறை அல்லது நடைபாதையை ஆராயக்கூடிய ஒரு ரோபோவை உருவாக்குங்கள்.
  • அருகாமை எச்சரிக்கை அமைப்பு: ஒரு பகுதியை ஸ்கேன் செய்ய அல்ட்ராசோனிக் சென்சாரை ஒரு சர்வோவில் பொருத்தி, ஒரு ஊடுருவும் நபர் வரையறுக்கப்பட்ட மண்டலத்திற்குள் நுழையும்போது எச்சரிக்கை அல்லது விளக்கைத் தூண்டவும்.
  • ஸ்மார்ட் பார்க்கிங் உதவியாளர்: ஒரு வாகனத்தை இறுக்கமான இடத்திற்கு வழிநடத்த தூர அளவீடுகளைப் பயன்படுத்தும் ஒரு அமைப்பை உருவாக்குங்கள், காட்சி அல்லது செவிப்புலன் பின்னூட்டத்தை வழங்குகிறது.

இந்த வழிகாட்டி SunFounder 3-in-1 Arduino கிட் மற்றும் அதன் "Play with Ultrasonic Module" திட்டத்தை அடிப்படையாகக் கொண்டது. வயரிங் பற்றி விரிவாகப் பார்ப்போம், முடிவெடுக்கும் குறியீட்டை விளக்குவோம், மேலும் காரை செயலில் நிரூபிப்போம்.

26-SunFounder-Car-4-Ultrasonic.mp4_snapshot_02.26.146

தடங்கல் தவிர்க்கும் தர்க்கம் எவ்வாறு செயல்படுகிறது

இந்த திட்டத்தின் மையமானது எளிமையான, ஆனால் சக்திவாய்ந்த, முடிவெடுக்கும் மரமாகும். அல்ட்ராசோனிக் சென்சார் அதன் நேரடியாக முன்னால் உள்ள பொருளுக்கான தூரத்தை தொடர்ந்து அளவிடுகிறது. இந்த தூர மதிப்பு பின்னர் கீழே உள்ள வரைபடத்தில் காட்டப்பட்டுள்ளபடி காரின் மோட்டார்களைக் கட்டுப்படுத்தப் பயன்படுகிறது.

  • தூரம் > 25 செ.மீ என்றால்: பாதை தெளிவாக உள்ளது, எனவே கார் முன்னோக்கி நகரும்.
  • 10 செ.மீ < தூரம் <= 25 செ.மீ என்றால்: ஒரு பொருள் "எச்சரிக்கை மண்டலத்தில்" கண்டறியப்படுகிறது, எனவே மோதலைத் தவிர்க்க கார் நிறுத்தப்படும்.
  • 2 செ.மீ < தூரம் <= 10 செ.மீ என்றால்: ஒரு பொருள் ஆபத்தான அளவுக்கு அருகில் உள்ளது. அதிக இடத்தை உருவாக்க கார் பின்னோக்கி செல்லும்.
  • தூரம் <= 2 செ.மீ என்றால்: அளவீடு பெரும்பாலும் பிழையாக இருக்கும் (துல்லியமாக அளவிட மிக அருகில்), எனவே பாதுகாப்பு நடவடிக்கையாக கார் நிறுத்தப்படும்.

வன்பொருள் கூறுகள்

இந்த திட்டத்தை உருவாக்க, உங்களுக்கு பின்வரும் கூறுகள் தேவைப்படும், இவை அனைத்தும் SunFounder 3-in-1 கிட்டில் சேர்க்கப்பட்டுள்ளன.

  • 1x Arduino Uno (அல்லது இணக்கமான போர்டு)
  • 1x இரண்டு கியர் மோட்டார்கள் கொண்ட ஸ்மார்ட் கார் சேஸ்
  • 1x L298N மோட்டார் டிரைவர் தொகுதி
  • 1x HC-SR04 அல்ட்ராசோனிக் தூர சென்சார்
  • 1x பிரெட்போர்டு
  • ஜம்பர் கம்பிகள்
  • காருக்கான மின்சாரம் (எ.கா., பேட்டரி பேக்)
26-SunFounder-Car-4-Ultrasonic.mp4_snapshot_00.00.000

வயரிங் வழிகாட்டி

வயரிங் மோட்டார் டிரைவர், அல்ட்ராசோனிக் சென்சார் மற்றும் Arduino ஆகியவற்றை இணைக்கிறது. மோட்டார் டிரைவர் காரின் சக்கரங்களைக் கட்டுப்படுத்துகிறது, அதே நேரத்தில் அல்ட்ராசோனிக் சென்சார் அதன் "கண்களாக" செயல்படுகிறது.

SunFounder ஆவணங்களிலிருந்து இணைப்பு வரைபடம் இங்கே:

இணைப்புகளை பிரிப்போம். முதலில், Arduino இன் 5V மற்றும் GND பின்களிலிருந்து பிரெட்போர்டின் நேர்மறை மற்றும் எதிர்மறை ரெயில்களுக்கு மின்சாரம் வழங்கவும். அல்ட்ராசோனிக் சென்சார் பின்னர் பின்வருமாறு இணைக்கப்பட்டுள்ளது:

  • VCC (மின்சாரம்): பிரெட்போர்டில் உள்ள நேர்மறை ரெயிலுடன் இணைக்கப்பட்டுள்ளது.
  • GND (தரை): பிரெட்போர்டில் உள்ள எதிர்மறை ரெயிலுடன் இணைக்கப்பட்டுள்ளது.
  • Trig (தூண்டுதல்): Arduino இல் உள்ள டிஜிட்டல் பின் 3 உடன் இணைக்கப்பட்டுள்ளது. இந்த பின் அல்ட்ராசோனிக் துடிப்பை அனுப்புகிறது.
  • Echo (பெறுதல்): Arduino இல் உள்ள டிஜிட்டல் பின் 4 உடன் இணைக்கப்பட்டுள்ளது. இந்த பின் பிரதிபலித்த துடிப்பைப் பெறுகிறது.

மோட்டார் டிரைவர் இணைப்புகள் முந்தைய பாடங்களில் இருந்ததைப் போலவே இருக்கும். நான்கு கட்டுப்பாட்டு பின்கள் (IN1, IN2, IN3, IN4) Arduino இன் டிஜிட்டல் பின்கள் 5, 6, 9 மற்றும் 10 உடன் இணைக்கப்பட்டுள்ளன. இந்த பின்கள் இரண்டு மோட்டார்களின் வேகத்தையும் திசையையும் கட்டுப்படுத்துகின்றன. மோட்டார் டிரைவரின் மின்சாரம் மற்றும் தரை ஆகியவை பேட்டரி பேக் மற்றும் Arduino இன் தரையுடன் சரியாக இணைக்கப்பட்டுள்ளதை உறுதிசெய்யவும். (வீடியோவில் 02:24 இல்)

குறியீடு விளக்கம்

இந்த திட்டத்திற்கான குறியீடு அல்ட்ராசோனிக் சென்சாரின் தூர அளவீட்டின் அடிப்படையில் காரின் நடத்தையை கட்டுப்படுத்துகிறது. தர்க்கம் நேரடியானது மற்றும் தனிப்பயனாக்க எளிதானது. முக்கிய, பயனர்-கட்டமைக்கக்கூடிய பகுதிகளைப் பார்ப்போம்.

1. பின் வரையறைகள்

ஸ்கெட்ச்சின் மேற்புறத்தில், மோட்டார்கள் மற்றும் அல்ட்ராசோனிக் சென்சாருக்கான பின்கள் வரையறுக்கப்படுகின்றன. உங்கள் கூறுகளை வெவ்வேறு Arduino பின்களுடன் இணைத்திருந்தால் இவற்றை மாற்றலாம்.

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() செயல்பாட்டிற்குள் கட்டுப்படுத்தப்படுகிறது. இங்குதான் நீங்கள் காரின் "ஆளுமையை" சரிசெய்யலாம்.

void loop() { float distance = readSensorData(); if (distance > 25) { moveForward(200); } else if (distance < 10 && distance > 2) { moveBackward(200); } else { stopMove(); } } இதை எவ்வாறு தனிப்பயனாக்குவது என்பது இங்கே:
  • தொலைவு வரம்புகள்: 25 மற்றும் 10 என்ற எண்கள் "பாதுகாப்பான" மற்றும் "ஆபத்தான" மண்டலங்களை சென்டிமீட்டர்களில் வரையறுக்கின்றன. காரை முன்னதாகவே நிறுத்த 25 ஐ அதிகரிக்கவும், அல்லது தடைகளுக்கு நெருக்கமாக செல்ல அனுமதிக்க அதை குறைக்கவும். 2 என்பது மிக அருகில் உள்ள பொருட்களிலிருந்து வரும் தவறான அளவீடுகளை புறக்கணிக்க ஒரு பாதுகாப்பு விளிம்பு ஆகும்.
  • மோட்டார் வேகம்: moveForward() மற்றும் moveBackward() க்கு அனுப்பப்படும் 200 காரின் வேகத்தை அமைக்கிறது. இந்த மதிப்பு 0 முதல் 255 வரை இருக்கலாம். 150 போன்ற குறைந்த மதிப்பு, காரை மெதுவாகவும் எச்சரிக்கையாகவும் நகர்த்தும்.
மீதமுள்ள குறியீடு readSensorData() செயல்பாட்டைக் கொண்டுள்ளது, இது அல்ட்ராசோனிக் சென்சாரின் நேரத்தை கையாண்டு தொலைவை கணக்கிடுகிறது, மேலும் moveForward(), moveBackward(), மற்றும் stopMove() செயல்பாடுகள், விரும்பிய செயலை செயல்படுத்த மோட்டார் டிரைவரை கட்டுப்படுத்துகின்றன.

பொதுவான பிழையை சரிசெய்தல்

'moveForward' was not declared in this scope போன்ற பிழையை நீங்கள் சந்திக்கலாம். Arduino IDE குறியீட்டை மேலிருந்து கீழாக படிப்பதால் இது நிகழ்கிறது. அது loop() செயல்பாட்டை அடையும் போது, அதற்கு கீழே வரையறுக்கப்பட்ட செயல்பாடுகளைப் பற்றி இன்னும் தெரியாது. இதை சரிசெய்ய, setup() செயல்பாட்டிற்கு முன் "செயல்பாட்டு முன்வரையறைகளை" (function prototypes) சேர்க்க வேண்டும். இவை செயல்பாட்டின் பெயர் மற்றும் திரும்பும் வகையின் அறிவிப்புகள் மட்டுமே, அரைப்புள்ளியுடன் முடிவடையும்.
void moveForward(int speed);
  void moveBackward(int speed);
  void stopMove();
  float readSensorData();
இந்த வரிகளைச் சேர்ப்பது கம்பைலரிடம், "இந்த செயல்பாடுகள் உள்ளன, பின்னர் வரையறுக்கப்படும்" என்று கூறுகிறது, இது பிழையை தீர்க்கிறது. (வீடியோவில் 09:21)

சென்சார் நிலைத்தன்மையை மேம்படுத்துதல்

சோதனையின் போது, பாதை தெளிவாக இருந்தாலும் கார் நின்று அல்லது தடுமாறுவதை நீங்கள் கவனிக்கலாம். லூப் மிக வேகமாக இயங்குவதாலும், அல்ட்ராசோனிக் சென்சாருக்கு எதிரொலி சிக்னலைப் பெற போதுமான நேரம் இல்லாததாலும், இது 0 செ.மீ அளவீட்டை ஏற்படுத்துகிறது. இதை சரிசெய்ய, சென்சாருக்கு வேலை செய்ய நேரம் கொடுக்க loop() செயல்பாட்டின் முடிவில் ஒரு சிறிய தாமதத்தை சேர்க்கவும்.
void loop() {
    float distance = readSensorData();
    if (distance > 25) {
      moveForward(200);
    }
    else if (distance < 10 && distance > 2) {
      moveBackward(200);
    } else {
      stopMove();
    }
    delay(100); // நிலையான அளவீடுகளுக்கு 100ms தாமதம் சேர்க்கவும்
  }
100 மில்லி விநாடி தாமதம் பொதுவாக நிலையான மற்றும் சீரான தொலைவு அளவீடுகளைப் பெற போதுமானது. (வீடியோவில் 10:56)

நேரடி திட்ட ஆர்ப்பாட்டம்

குறியீடு பதிவேற்றப்பட்டவுடன், Serial Monitor ஐ திறக்கவும். "Forward", "Reverse" அல்லது "Stop" போன்ற காரின் நிலையைக் குறிக்கும் உரையை நீங்கள் காண்பீர்கள். ஆர்ப்பாட்டத்தில், கார் ஒரு தடையை எதிர்கொள்ளும் வகையில் வைக்கப்பட்டுள்ளது. தடை 25 செ.மீ க்கும் அதிகமாக இருக்கும்போது, கார் முன்னோக்கி நகரும். உங்கள் கையை நெருக்கமாக நகர்த்தும்போது, தொலைவு 25 செ.மீ க்கும் குறையும்போது கார் நிற்கிறது. உங்கள் கையை மிக அருகில், 10 செ.மீ க்குள் கொண்டு வந்தால், கார் பின்னோக்கி செல்லும். இந்த நடத்தை வீடியோவில் தெளிவாகத் தெரியும், மேலும் தடை தவிர்ப்பு தர்க்கம் சரியாக செயல்படுகிறது என்பதை உறுதிப்படுத்துகிறது. (வீடியோவில் 11:53)

முடிவு

வாழ்த்துக்கள்! சூழலை வழிநடத்தி தடைகளை தவிர்க்கக்கூடிய ஒரு ஸ்மார்ட் காரை நீங்கள் வெற்றிகரமாக உருவாக்கியுள்ளீர்கள். இந்த திட்டம் சென்சார் உள்ளீடு, முடிவெடுக்கும் தர்க்கம் மற்றும் மோட்டார் கட்டுப்பாட்டை ஒரே செயல்பாட்டு அமைப்பாக இணைக்கிறது. அல்ட்ராசோனிக் சென்சாரை எவ்வாறு பயன்படுத்துவது என்பதை மட்டுமல்லாமல், மிகவும் சிக்கலான தன்னாட்சி ரோபோக்களுக்கு அடித்தளமாக இருக்கும் ஒரு எளிய கட்டுப்பாட்டு வழிமுறையை எவ்வாறு செயல்படுத்துவது என்பதையும் நீங்கள் கற்றுக்கொண்டீர்கள்.

அத்தியாயங்கள்

  • [00:00] தடை தவிர்ப்பு அறிமுகம்
  • [01:16] திட்ட கண்ணோட்டம் மற்றும் முன்நிபந்தனைகள்
  • [02:24] அல்ட்ராசோனிக் சென்சார் மற்றும் மோட்டார் டிரைவரை இணைத்தல்
  • [04:56] திட்ட குறியீட்டை திறத்தல்
  • [05:12] குறியீடு விளக்கம்: தர்க்கம் மற்றும் செயல்பாடுகள்
  • [08:34] குறியீட்டை பதிவேற்றி ஆரம்ப சோதனை
  • [09:21] சரிசெய்தல்: செயல்பாட்டு முன்வரையறைகள்
  • [10:56] சரிசெய்தல்: நிலைத்தன்மைக்கு தாமதம் சேர்த்தல்
  • [11:53] தடை தவிர்ப்பின் நேரடி ஆர்ப்பாட்டம்

படங்கள்

27 SunFounder Car 5 follow hand
27 SunFounder Car 5 follow hand
26 SunFounder Car 4 ultrasonic video snapshot 00.09.009
26 SunFounder Car 4 ultrasonic video snapshot 00.09.009
26 SunFounder Car 4 ultrasonic video snapshot 02.26.146
26 SunFounder Car 4 ultrasonic video snapshot 02.26.146
26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
899-Lesson 26/31: Avoiding Obstacle Using Ultrasonic Sensor
மொழி: C++
/*
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);
}

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

ஆர்டினோ நூலகங்கள் (ஜிப்)