İçindekiler:

Arduino ile Kızılötesi Radar: 6 Adım
Arduino ile Kızılötesi Radar: 6 Adım

Video: Arduino ile Kızılötesi Radar: 6 Adım

Video: Arduino ile Kızılötesi Radar: 6 Adım
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Kasım
Anonim
Image
Image

Bu küçük projede size Arduino ile Evde nasıl basit bir Radar oluşturabileceğinizi göstermek istiyorum. İnternette buna benzer birçok proje var ama hepsi mesafeyi ölçmek için ultrasonik sensör kullanıyor. Bu projede mesafe ölçümü için bir kızılötesi sensör kullanıyorum.

Amacım onunla çok basit ve ucuz bir LIDAR sistemi oluşturmak ve bir haritalama cihazı uygulamak.

Gereçler

  • Arduino (Bir Maple Mini kullandım)
  • Keskin mesafe sensörü (Sharp GP2Y0A02YK0F kullandım)
  • Mikro Servo (9g)
  • Breadboard, teller
  • Opsiyonel: 4.7k Direnç, 100nF Kondansatör

Adım 1: Ultrasonik VS Kızılötesi Sensör

Şematik
Şematik

Ultrasonik ve kızılötesi mesafe sensörleri arasındaki temel fark, ultrasonik sensörün mesafeyi daha geniş aralıkta ölçmesidir. Bu nedenle bir engelin konumunu tam olarak belirleyemez. ~ +-30° açı aralığında bulunan en yakın cismin mesafesini ölçtüğü anlamına gelir.

Tabii bu Sharp sensörünün daha iyi olduğu anlamına gelmiyor. Bazen bu özellik çok faydalı olabilir (örneğin, dronlar tarafından yerden yüksekliği ölçmek için kullanılır). Doğru seçim tamamen projenizin gereksinimlerine bağlıdır.

2. Adım: Şematik

Şematik
Şematik
Şematik
Şematik

Parçalar arasındaki bağlantıyı yapmak çok basittir. Arduino kartınızda bir PWM Çıkışı ve bir Analog Giriş seçin ve Servo ve Sharp mesafe sensörlerini bu pinlere bağlayın. Bu amaçla aşağıdaki pinleri kullandım:

  • PA0: Keskin mesafe sensörü için analog giriş
  • PA9: Servo için PWM Çıkışı

Bazen Sharp IR Sensörü gürültülü çıkışa sahip olabilir, bu nedenle üzerine basit bir Düşük Geçiş Filtresi koymanız gerekir. Analog pindeki gürültüyü azaltmak için 4.7k direnç ve 100nF kapasitör kullandım. Bunun yanı sıra koddaki ölçülen değeri de defalarca okuyarak ve ortalamasını hesaplayarak filtreledim.

Adım 3: Sensör Karakteristiği

Sensör Karakteristiği
Sensör Karakteristiği
Sensör Karakteristiği
Sensör Karakteristiği

Ne yazık ki kullanılan kızılötesi mesafe sensörü doğrusal olmayan bir özelliğe sahiptir. Yani mesafeyi elde etmek için ölçülen ADC değerini sabit bir değerle çarpıp ona bir sabit değer daha eklemek yeterli değildir.

Sensörün veri sayfası özelliği sağlamasına rağmen, belirli bir projede kendim ölçmeyi tercih ediyorum (kullanılan voltaja bağlı olabilir). Bunun için her 10 cm için ölçülen ADC Değeri ve mesafesinden çiftler yaptım. (Sensörüm 12 cm'den doğru mesafeyi ölçebildi).

Doğrusal İnterpolasyon ile doğru mesafeyi elde etmek için bu çiftleri kodda kullandım.

Karakteristik ölçüm sırasında ADC Değerini ölçmek için belgenin sonunda basit bir Arduino kodu bulacaksınız.

Adım 4: Seri İletişim

Seri iletişim
Seri iletişim

Ölçülen açı-mesafe değerlerini PC'ye göndermek için seri iletişim kullandım. Birden fazla bayt ve farklı türde mesajlar göndermek zorunda olduğum için basit bir iletişim protokolü tasarladım.

Bu procotol, farklı mesaj tiplerini jenerik bir şekilde tanımlamayı mümkün kılar. Bu projede 2 mesaj tipi kullandım:

  • Parametreler: Arduino üzerinde tanımlanan maksimum mesafe ve bir turdaki engel sayısı gibi parametreleri PC Uygulamasına göndermek için kullanılır.
  • Engel: Algılanan bir engeli göndermek için kullanılır. Servonun açısı ve ölçülen mesafe ile tanımlanır. x-y konumu PC uygulaması ile hesaplanacaktır.

Adım 5: Qt Uygulaması

Qt Uygulaması
Qt Uygulaması

Arduino ile haberleşmek ve ölçülen noktaları radar gibi çizmek için Qt (C++) da PC Uygulaması yaptım. Bazı parametreleri (Arduino'da tanımlanmış) ve ölçülen mesafe noktalarını alır.

Uygulamayı ve kaynak kodunu da indirebilirsiniz.

Adım 6: Arduino Kaynak Kodu

Kodun üst kısmındaki bazı parametreleri makrolarla özelleştirebilirsiniz.

Sharp mesafe sensörünün karakteristiğini değiştirirseniz, distAdcMap dizi değerlerini değiştirmeniz gerektiğini unutmayın!

  • InfraRadar.c: Radar kodu. Arduino projenize kopyalayıp yapıştırın.
  • InfraRadarMeasurement.c: Karakteristik ölçüm için kod. Arduino projenize kopyalayıp yapıştırın. ADC Değerlerini kontrol etmek için Seri Konsolu kullanın.

Önerilen: