İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bir evin içinde kendi kendine hareket etmek istediğim bir robotu eğlence için yapıyorum.
Uzun bir iş ve adım adım yapıyorum.
Bu talimat, Arduino Mega ile engellerin tespitine odaklanır
Ultrasonik sensörler HC-SR04 ve HY-SRF05, ucuz ve kullanımı kolaydır ancak karmaşık bir robotta mikrodenetleyici döngüsüne entegre edilmesi zor olabilir. Engel algılamayı eşzamansız bir şekilde çalıştırmak istedim.
_
Bu robotun özellikleri hakkında zaten 3 talimat yayınladım:
- Tekerlek kodlayıcınızı yapın
- WIFI Ağ Geçidinizi yapın
- Atalet Modülü Birimi Kullan
Ve robotu lokalize etmek için yapay zeka ve ultrasonları birleştirme hakkında bir belge.
Adım 1: Ultrasonik Sensörler ve Mikrodenetleyicilerle İlgili Sorun Tam Olarak Nedir?
Senkron bekleme ve Arduino sınırlamaları
Mikrodenetleyici kodu bir döngü içinde çalışır ve çoklu iş parçacığını desteklemez. Ultrasonik sensörler, sinyal süresine dayalıdır. Bu süre, mikrodenetleyicilerin birden fazla motor ve sensörle (örneğin, tekerlek kodlayıcılı servo ve DC motorlar) ilgilenmesi gerektiğinde döngü içinde beklemek için çok uzun olan 30 m s'ye kadar sürer.
Bu yüzden asenkron çalışan bir nesne geliştirmek istedim.
Adım 2: Nasıl Çalışır?
Engel tespiti için Atmega için tasarlanmıştır. 4 adede kadar ultrasonik sensörü destekler.
Periyodik zaman kesintisi sayesinde sistem 4 adede kadar ultrasonik sensörü izleyebilir. Ana kod, yalnızca koşul ve eşik ile hangi sensörün etkinleştirileceğini tanımlamalıdır. Ana yalnızca (koşul, eşik) göründüğünde kesintiye uğrayacaktır.
Ana işlevler şunlardır:
- Uyarı, temel engel algılamadır ve 4 sensörden en az 1'i eşiğin altında bir mesafe algılarsa kesinti sağlar
- Monitör, 4 sensöre kadar mesafe koşulu kombinasyonunda kesinti sağlayan genişletilmiş bir işlevdir. Olası koşullar, eşiklerin üzerinde, altında, eşit veya eşit değildir.
3. Adım: Teknik Ayrıntılar
Zamanlayıcı4'ü kullanın, böylece pim 6 7 8, PWM olarak kullanılamaz.
Her sensör için nesnenin bir tetikleme PIN'ine ve bir kesme PIN'ine ihtiyacı vardır.
Sensörlerin kesme PIN'lerine ek olarak, nesnenin yazılım kullanımı için başka bir kesme PIN'ine ihtiyacı vardır.
Adım 4: Nasıl Uygulanır?
Sensörleri yukarıdaki gibi bağlayın
Bu GitHub deposundan indirin
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- ExampleEchoObstacleDetection.ino
IDE kitaplığınızda EchoObstacleDetection dizini oluşturun ve.cpp ve.h'yi taşıyın
Dene
ExampleEchoObstacleDetection.ino'yu açın.
Bu, 2 ultrasonik sensörle çalışan basit bir engel algılama örneğidir.
Çıkış, seri monitöre yönlendirilir. İlk önce 2 sensör tarafından algılanan mesafeleri yazdıracak ve ardından eşiklerin altındaki mesafelere bağlı olarak uyarıları yazdıracaktır.