Arduino mikrodenetleyicinize bir pusula modülü eklemek, projeler için birçok olasılık sunar. Birini nasıl bağlayacağınız ve kullanacağınız aşağıda açıklanmıştır.
Modern kendin yap projelerinde, mikrodenetleyicilerle arabirim oluşturan ivmeölçerler ve manyetometreler gibi gelişmiş sensörler bulmak oldukça yaygındır. Bu sensörleri telefonunuzda kullanmış olsanız da, bu modüllerin nasıl çalıştığını hayal etmek zor ama şaşırtıcı derecede basit.
GY-271 pusula manyetometre sensörü, çeşitli uygulamalar için yön algılama sağlar. Burada GY-271 sensörünü bir Arduino mikrodenetleyici ile arabirim oluşturma sürecini, nasıl kalibre edeceğinizi keşfedeceğiz ve bunu yaparken karşılaşabileceğiniz sorunlara bakacağız.
GY-271 Pusula Modülü Nedir?
GY-271 pusula modülü, manyetik alanları üç boyutlu olarak ölçebilen oldukça hassas bir manyetometredir. Dünyanın manyetik alanını algılamak ve navigasyon sistemleri, robotik ve dronlar gibi uygulamalarda cihazların yönünü veya yönünü belirlemek için kullanılır. Bunu çok hassas bir dijital pusula gibi düşünün. Bu sensör, çok çeşitli projelerde kurulumunu ve kullanımını kolaylaştıran kompakt ve sağlam bir tasarıma sahiptir.
GY-271 Pusula Modülü Nasıl Çalışır?
GY-271 HCM5883L pusula modülü, anizotropik manyeto-dirençli (AMR) teknolojisine dayalı 3 eksenli bir manyetometre sensörü içerir. Sensör, dahili AMR elemanlarının direncindeki değişiklikleri tespit ederek Dünyanın manyetik alanının gücünü ve yönünü ölçer.
Sensör bir manyetik alana maruz kaldığında, AMR elemanlarının direnci değişir ve manyetik alanın gücü ve yönü ile orantılı bir voltaj üretir. Sensörün dijital sinyal işlemcisi daha sonra bu voltajı bir mikrodenetleyici tarafından okunabilen bir dijital sinyale dönüştürür. Sensör, üç eksendeki voltajı ölçerek, manyetik alanın gücü ve yönünün üç boyutta son derece doğru okumalarını sağlayabilir.
GY-271'i bir Arduino Uno'ya bağlama
Bu modülü Arduino'ya bağlamak oldukça basittir. Diğerlerini de ele aldık kullanımı kolay Arduino modülleri bu, gelecekte projenizi ölçeklendirmenize yardımcı olabilir. GY-271 modülü, dahil olmak üzere toplam beş pine sahiptir. VCC, GNDve üç sinyal pimi (SDA, SCL, Ve DRDY).
Aşağıdaki bileşenlere ihtiyacınız olacak:
- GY-271 HMC5883L pusula modülü
- Arduino Uno (veya başka bir model)
- Jumper kabloları (erkekten erkeğe ve erkekten kadına)
- Breadboard (isteğe bağlı)
İlk olarak, VCC Ve GND GY-271 modülünün pimleri 5V Ve GND sırasıyla Arduino Uno'nun pimleri.
Ardından, SDA Ve SCL modülün pimleri A4 Ve A5 sırasıyla Arduino Uno'nun analog pinleri.
Gerekli Kitaplıkların Kurulumu
GY-271 pusula modülü ve Arduino ile çalışmaya başlamadan önce, sensör ile iletişim kurmak için gerekli kütüphaneleri kurmanız gerekir.
Çiziminize dahil etmeniz gereken ilk kütüphane, Arduino ile sensör arasındaki I2C iletişimi için kullanılan Wire kütüphanesidir. Wire kitaplığı, Arduino IDE ile önceden yüklenmiş olarak gelir, bu nedenle ayrı olarak indirmenize gerek yoktur. İkincisini yüklemek için, HMC5883L kitaplığı, şu adımları izlemeniz gerekir:
Arduino IDE'yi açın ve şuraya gidin: Kroki > Kitaplığı Dahil Et > Kitaplıkları Yönet.
Kitaplık Yöneticisi'nde şunu arayın: HMC5883L arama çubuğunda
seçin HMC5883L kütüphane özellikle Adafruit'ten. Kütüphane kurulduktan sonra, adresine giderek Arduino taslağınıza dahil edebilirsiniz. Kroki > Kitaplığı Dahil Et > HMC5883L.
Kodu Anlamak
Sensörü başlatan, verilerini okuyan ve Dünya'nın manyetik alanının gücünü ve yönünü hesaplayan bir program yazmanız gerekir. Kodun tamamı yetkilimizden indirilebilir. GitHub deposu.
Kodun başında, az önce indirdiğiniz gerekli kitaplıkları eklemeniz gerekir.
#katmak
#katmak
#katmak
Sensöre benzersiz bir kimlik atamayı unutmayın. Bunu yapmak için bu satırı kullanın:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
Kurulum kodunda seri monitörü başlatın ve sensörün yanıt verip vermediğini kontrol edin. Sensörün durumunu güncellemek için mesajları monitöre yazdırabilirsiniz:
geçersizkurmak(geçersiz)
{
Seri.başlamak(9600);
Seri.yazdır("HMC5883 Manyetometre Testi"); Seri.yazdır("");
/* Sensörü başlat */
eğer(!yak.başlamak())
{
Seri.yazdır("Hata, HMC5883 algılanmadı... Kablolarınızı kontrol edin!");
sırasında(1);
}
}
Döngüde, önce yeni bir sensör olayı alın:
sensörler_olay_t etkinlik;
mag.getEvent(&olay);
Ardından sensörün okumalarını seri monitöre gösterin. Baud hızını şu şekilde ayarlamayı unutmayın: 9600.
Seri.Yazdır("X: "); Seri.Yazdır(olay.manyetik.x); Seri.Yazdır(" ");
Seri.Yazdır("Y:"); Seri.Yazdır(olay.manyetik.y); Seri.Yazdır(" ");
Seri.Yazdır("Z:"); Seri.Yazdır(olay.manyetik.z); Seri.Yazdır(" ");Seri.yazdır("uT");
Modülü öyle tutun ki Z "yukarı" işaret ediyor ve yönü ile ölçün X Ve Y. Bunu yaparak, manyetometre düz olduğunda istikameti hesaplayabilirsiniz. Bu kod satırı şu konuda yardımcı olur:
batmadan yüzmek başlık = atan2(event.magnetic.y, event.magnetic.x);
sahip olduktan sonra başlık, daha sonra sapma Açısı, bulunduğunuz yerdeki manyetik alanın hatasıdır.
batmadan yüzmek sapma Açısı = 0.663;
başlık += sapma Açısı;
Yerel bölgenizin sapma açısını kolayca bulabilirsiniz. Manyetik Sapma web sitesi. Herhangi bir nedenle sapma açınızı bulamıyorsanız, kodunuzdaki iki satırı yorumlayın.
İki kod satırının yorumlanması, hatalı sensör okumalarına neden olabilir. Kullanmadan önce sensörü kalibre etmek için elinizden gelenin en iyisini yapın.
Son olarak, başlığı seri monitöre yazdırın ve tekrar okumadan önce yarım saniye beklemek için bir gecikme ekleyin.
Seri.Yazdır("Yön (derece): ");
Seri.yazdır(derece başlığı);
gecikme(500);
Buradan, kodu projenizin ihtiyaçlarına uyacak şekilde özelleştirebilir ve veri kaydı gibi ek özellikler ekleyebilirsiniz.
Adafruit kütüphanesini kullanmayı tercih ederseniz, onu şu adresten temin etmenizi öneririz: Adafruit'in GitHub deposu.
Pusula Verilerini Okuma ve Yorumlama
Seri monitörde görüntülenen sensör verileri, sırasıyla X, Y ve Z eksenleri için manyetometre tarafından mikroteslas (μT) cinsinden ölçülen manyetik alan vektör değerlerini gösterir. Bu değerler, manyetik alanın yönünü ve büyüklüğünü belirlemek için kullanılabilir.
Derece olarak görüntülenen yön değeri de önemlidir ve sensörün konumuna göre manyetik kuzey kutbunun yönünü temsil eder. Bu okuma, robotik, navigasyon ve konum belirleme sistemleri gibi hareketli bir nesnenin yönünün belirlenmesi gereken projelerde kullanılabilir.
Sensör Kalibrasyonu
HMC5883L modülü için zaten farklı bir kitaplık yüklediyseniz, onu kaldırmanız veya silmeniz gerekir. Aksi halde kalibrasyon sırasında derleme hataları alabilir veya seri monitörünüzde uyarılar görebilirsiniz. kullanmanızı öneririz Jarzebski'nin kütüphanesi Bu bölüm için gereken tüm kalibrasyon kaynaklarına sahip olduğu için GitHub'da mevcuttur.
İlk önce, üzerine tıklayarak zip dosyasını depodan indirin. kod > ZIP'i indir.
Ardından, Arduino IDE'yi açın ve tıklayın Kroki > Kitaplığı Dahil Et > Kitaplık Ekle.
seçin Arduino-HMC5883 zip dosyasını indirin ve Arduino IDE daha sonra kütüphaneyi sizin için otomatik olarak kuracaktır.
Yükleme sırasında sensörü düz bir yüzey üzerinde hareket ettirirken depoda bulunan kalibrasyon taslağını çalıştırın. Seri monitörden elde edilen değerler, projelerinizde pusula kullanırken okumalarınızı düzeltmek için kullanabileceğiniz sensörünüzün ofset değerleridir.
Karşılaşabileceğiniz Sorunlar
Pusula modülünü Arduino ile arayüzlerken birisinin karşılaşabileceği birkaç hata vardır. İşte birkaç örnek ve bunların geçici çözümleri:
Derleme hataları: Bunlar, gerekli kitaplıklar dahil edilmemişse veya kodda sözdizimi hataları varsa oluşabilir. Bunu düzeltmek için doğru kitaplıkları kurduğunuzdan emin olun ve kodunuzda herhangi bir sözdizimi hatası olup olmadığını kontrol edin. Birçok kez gördüğümüz gibi, yanlışlıkla birden çok HCM5883L kitaplığı kurmuş olabilirsiniz.
Derleme Hatası: "Adafruit_HMC5883_Unified" yapmak Olumsuz bir türü adlandırın
İletişim hataları: Pusula modülü ile iletişim kuramıyorsanız, Arduino'nuzdaki doğru pinlere bağladığınızdan ve kablolamanızın doğru olduğundan emin olun. Varsayılan değer olan 0x1E'den farklıysa kodunuzdaki modülün I2C adresini de ayarlamanız gerekebilir.
Hata kullanarak hmc5883l/testAygıtı (astar246) HMC5883L sensörüyle iletişim hatası. Değer Okumak ID_A, ID_B'den Ve ID_C kayıtları YapmakOlumsuz beklenen değerlerle eşleşir.
Manyetik girişim: Pusula okumaları dengesiz veya dalgalıysa, bunun nedeni yakındaki nesnelerden kaynaklanan manyetik parazit olabilir. Daha kararlı okumalar elde etmek için modülü herhangi bir mıknatıstan veya diğer manyetik parazit kaynaklarından uzaklaştırın.
GY-271 Pusula Modülü ile Projelerinizi Hızlandırın
GY-271 HCM5883L pusula modülünü kullanabilmek, GPS güdümlü geziciler ve DIY dronlar gibi Arduino kullanarak daha karmaşık DIY projeleri oluşturmak için bir kapı açar. Özellikle başka sensörler eklediğinizde olasılıklar sonsuzdur.