İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Sevgili hobici dostum, Bu projede, nesne tespiti için 360 derecelik bir radar sistemine sahip olma olasılığını araştıracağız. Bu modülün ayrı olarak ayarlanması, hareket robotunuzun çevresinin sınırlarını algılamasını sağlayacaktır. Ayrıca karanlıkta bir yön bulma aracı olarak da hizmet edebilir, ancak yalnızca yeterince yavaş yürüdüğünüzde;p
Adım 1: Neye İhtiyacınız Olacak?
Bu yapıyı yapmak için aşağıdakileri satın almanız gerekir:
Arduino Nano: https://www.ebay.com/itm/USB-Nano-V3-0-ATmega328-16M-5V-Micro-controller-CH340G-board-For-Arduino/201601613488?hash=item2ef0647eb0:g:DkoAAOSwvYZZpOl0:rk:2:pf:0
Prototipleme Panoları: https://www.ebay.com/itm/20pcs-set-4Size-Double-Side-Protoboard-Circuit-Universal-DIY-Prototype-PCB-Board/192076517108?epid=506557101&hash=item2cb8a70ef4:g:cQ4AAOSwN ~Zbl232:rk:13:pf:0
Servo Motorlar: https://www.ebay.com/itm/5pcs-POP-9G-SG90-Micro-Servo-motor-RC-Robot-Helicopter-Airplane-Control-Car-Boat/142931003420?hash=item21475a081c:rk:16:pf:0&var
Ultrasonik Sensörler: https://www.ebay.com/itm/5PCS-Ultrasonic-Sensor-Module-HC-SR04-Distance-Measuring-Sensor-for-arduino-SR04/170897438205?epid=18020663283&hash=item27ca47f5fd:g:w ~IAAOSw--xbD5Fp:rk:2:pf:0
2. Adım: Belgeler
Bazılarınız bunu zaten biliyor olabilir, bu proje Dejan tarafından "How to Mechatronics"den yapılan "Arduino Radar Project" adlı başka bir açık kaynaklı projeden esinlenilmiştir @ aşağıdaki bağlantı: https://howtomechatronics.com/projects/arduino -radar-projesi/
Belgeleme gerektiren bir diğer nokta da geliştirme ortamınıza aşağıdaki iki kitaplığı indirmektir:
Adafruit-GFX-Library:
Adafruit_SSD1306:
Bununla birlikte, C kodunu gerçekten anlamak için yukarıdaki kitaplıkların her ikisinin de bazı belgelerini yapmanız gerekecektir. Bunun dışında, kodumda kullandığım işlevlerin, yaptıklarını anlatan adları var.
Adım 3: Ultrasonik Sensör Desteğini Hazırlayın
Herhangi bir karton parçası alın ve ilk resimde gösterildiği gibi sensöre bağlı bağlantı kablolarının boyutuna göre kesin. Daha sonra bunu en son katlayın ve servo motor desteğine yapıştırın. Bu yapıldıktan sonra, iki ultrasonik sensörü son resme göre yapıştırın. Sensörlerin başlığının, kabloların sensörün önünden dışarı çıkmasına izin verecek şekilde lehimlenmesi gerektiğini unutmayın. Bu, 360 derece dönüş uygulandığında sensör kablolarının birbirine karışmamasını sağlayacaktır.
Adım 4: Her Şeyi Bir Prototipleme Panosuna Monte Edin
Bu adımda, bir önceki adımda hazırlanan başlığı ilgili servo motoruna monte ederek başlayacaksınız. Servo motor dikkatli bir şekilde alıştıktan sonra, her şeyi bir prototip panosuna monte edeceksiniz. Arduino Nano'yu lehimleyerek ve ardından servoyu hemen yanına yapıştırarak başlayacaksınız. Sonunda küçük OLED ekranı kartın diğer kenarında lehimleyeceksiniz.
Adım 5: Son Bağlantıların Yapılması
Bu adım, bu projenin donanım tarafını tamamlayacaktır. Gerekli tüm bağlantıları kurmak için sağlanan şemaları izlemeniz gerekecektir.
Adım 6: Programın Önyüklenmesi
Önyüklemeniz gereken iki kod var
Arduino (C):
İşleme (java):https://github.com/ReconaissantL/RadarDuino/blob/master/radarduino_java.pde
Kodu çalıştırırken, seçim yapabileceğiniz iki seçeneğiniz olacaktır:
Seçenek 1: OLED Ekranı kullanarak, bunun için C kodundaki MODE değişkenini 0 olarak ayarlamanız gerekecektir.
Seçenek 2: Monitörünüzü Kullanarak, bunun için C kodundaki MODE değişkenini 1 olarak ayarlamanız gerekecektir. Ek olarak, Processing geliştirme ortamını indirip kurmanız ve radar yazı tipini şu bağlantıdan indirmeniz gerekecektir: https:// github.com/lastralab/ArduinoRadar/blob/ma…
Ve bu dosyayı işleme kodu dosyanıza ekleyin, böylece Java kodunuz çağrıldığında yazı tipini tanıyacaktır.
7. Adım: C Kodunu Anlamak
Kod esas olarak iki 'for' döngüsünden oluşur. Biri ileri geçişle, diğeri ise geri geçişle ilişkilidir. Her ikisinin içinde, radarın çizgilerini ekrana çizecek olan draw_scanner() ana işlevi birçok kez çağrılır. Birden fazla konfigürasyonu test ettikten sonra, silmek için t zamanındaki beyaz radar hatlarının üzerine t+1 zamanında siyah olan aynı radar hatlarının üzerine yazmamız gerektiği sonucuna vardım. Aksi takdirde, yeni piksel ızgarasına basmadan önce "clearDisplay()" işlevini kullanarak ekranı her temizlediğinizde titreme meydana gelir. 7 satırla uğraşırken - tasarım amacıyla - her bir elemanın radarın merkezi ile tespit edilen nesne arasındaki yarıçapı temsil ettiği 7 elemanlı tamsayı dizisini kaydetmeye ve aktarmaya devam etmem gerekiyordu. Bunu akılda tutarak, kodun geri kalanı anlamak için basit olmalıdır.
8. Adım: Java Kodunu Anlamak
İşleme sırasında, yalnızca COM adlı seri bağlantı noktalarıyla çalışan serialEvent() işlev çağrısını atlamam gerekiyordu. Mac üzerinde çalışırken seri bağlantı noktalarım farklı bir adla geldi. Bununla birlikte, “draw()” işleminde bu işlevi ana işleve açtım. Diğer her şeyle ilgili olarak, uygulamayı tam devrim tasarımını karşılayacak şekilde güncelledim. Son olarak, çizilen tüm şekilleri ve metinleri ekranın genişliğine göre güncelledim, böylece nihai ürün farklı ekran çözünürlüklerine sığacak. Hem 1000X1000 hem de 500X500 çözünürlükleri için şahsen test ettim ve iyi çalıştı:).
9. Adım: Sonuç
Bu çalışma, her biri 120 görüş açısını kapsayan 3 Ultrasonik sensöre veya hatta 4 sensöre (90 derece*4) -> 360 derece daha hızlı olacak şekilde yükseltilebilir. tarama.
Ayrıca radarın menzilini 40 cm'den 60 cm'ye hatta 80 cm'ye kadar uzatabilirsiniz. pulseIn işlevini kişisel olarak test ettim ve TIMEOUT değişkenini 40 cm'ye göre ayarladım. Bu değişken, gönderilen darbenin uzunluğu ve darbenin yansıtıldığı nesnenin yüzeyi gibi birçok faktöre bağlıdır.
Son olarak, daha önce belirtildiği gibi, bir sonraki adım, çevreyi taramak için radarDuino'yu bir hareket robotu ile birleştirmek.