- Gerekli malzemeler
- Arduino LoRa Shield
- LoRa Shield için PCB Üretimi
- PCB'nin montajı
- GPS modülünü LoRa Vericiye bağlama
- Arduino LoRa'yı GPS Vericisi olarak Programlama
- Arduino LoRa'yı GPS alıcısı olarak programlama
- Arduino LoRa GPS Tracker Çalışması
Belirli bir nesnenin / kişinin nerede olduğunu bilmek her zaman rahatlatıcı olmuştur. Günümüzde GPS, Araç Takibi, Filo Takibi, Varlık takibi, Kişi takibi, Evcil Hayvan Takibi vb. Gibi varlık yönetimi uygulamalarında yaygın olarak kullanılmaktadır. Herhangi bir takip cihazı için birincil tasarım düşüncesi batarya beklentisi ve izleme aralığı ile ilgili olacaktır. Her ikisi de düşünüldüğünde, LoRa çok düşük güç tüketimine sahip olduğu ve uzun mesafelerde çalışabildiği için mükemmel bir seçim gibi görünüyor. Dolayısıyla, bu eğitimde LoRa'yı kullanarak GPS izleme sistemi oluşturacağız, sistem NEO-6M GPS modülünden konum bilgilerini okuyacak bir Vericiden oluşacaktır.ve Lora üzerinden kablosuz olarak iletin. Alıcı kısmı bilgiyi alacak ve 16x2 LCD ekranda gösterecektir. LoRa'da yeniyseniz, ilerlemeden önce LoRa ve LoRaWAN Teknolojisini ve Arduino ile nasıl arayüzlenebileceğini öğrenin.
Bu proje için işleri basit ve uygun maliyetli tutmak için bir LoRa ağ geçidi kullanmayacağız. Bunun yerine , verici ve alıcı arasında uçtan uca iletişim gerçekleştirecektir. Bununla birlikte, global bir aralık istiyorsanız, alıcıyı bir LoRa Ağ Geçidi ile değiştirebilirsiniz. Ayrıca Hindistan'dan geldiğim için, burada yasal ISM bandı olan 433MHz LoRa modülünü kullanacağız, bu nedenle ülkenize göre bir modül seçmeniz gerekebilir. Bununla birlikte, başlayalım…
Gerekli malzemeler
- Arduino Lora Shield - 2Nos (PCB tasarımı indirilebilir)
- Arduino Uno - 2Nos
- SX1278 433MHz LoRa Modülü - 2
- 433MHz Lora Anteni
- NEO-6M GPS Modülü
- LCD Ekran Modülü
- Bağlantı telleri
Arduino LoRa Shield
LoRa ile bir şeyler inşa etmeyi kolaylaştırmak için, bu Proje için bir LoRa Arduino Shield tasarladık. Bu kalkan, LM317 Değişken regülatör kullanılarak tasarlanmış 3.3V regülatörlü SX1278 433MHz'den oluşur. Shield, LoRa yeteneklerini sağlayacak şekilde doğrudan Arduino'nun üstüne oturacaktır. Bu LoRa Kalkanı, LoRa algılama düğümlerini dağıtmanız veya bir LoRa ağ ağı oluşturmanız gerektiğinde kullanışlı olacaktır. LoRa Arduino Shield için eksiksiz devre şeması aşağıda verilmiştir.
Kalkan, çalıştırıldığında LM317 regülatörünü kullanan LoRa modülü için 3.3V'u düzenlemek için kullanılacak olan bir 12V jaktan oluşur. Ayrıca, Arduino UNO'ya Vin pini aracılığıyla güç sağlamak için kullanılacak ve Arduino'dan düzenlenmiş 5V, kalkan üzerindeki LCD'ye güç sağlamak için kullanılacaktır. LM317'nin çıkış voltajı sırasıyla R1 ve R2 direnci kullanılarak 3,3V olarak sabitlenir, bu dirençlerin değeri LM317 Hesap Makinesi kullanılarak hesaplanabilir.
LoRa modülü çok düşük güç tükettiği için doğrudan Arduino'nun 3.3V pininden de çalıştırılabilir ancak LM317 yerleşik voltaj regülatöründen daha güvenilir olduğu için harici bir regülatör tasarımı kullandık. Kalkanda ayrıca LCD'nin parlaklığını ayarlamak için kullanılabilen bir potansiyometre vardır. LoRa modülünün Arduino ile bağlantısı, bir önceki Arduino ile Lora Arayüzünü öğretme yazımızda yaptığımıza benzer.
LoRa Shield için PCB Üretimi
Artık devremiz hazır olduğuna göre PCB tasarımımıza geçebiliriz. PCB tasarım yazılımı ile açtım ve izlerimi oluşturmaya başladım. PCB tasarımı tamamlandıktan sonra kartım aşağıda gösterildiği gibi görünüyordu
Ayrıca tasarım dosyalarını GERBER formatında indirebilir ve panolarınızı elde etmek için üretebilirsiniz. Gerber dosyası bağlantısı aşağıda verilmiştir.
Arduino LoRa Shield için Gerber Dosyasını İndirin
Artık Tasarımımız hazır olduğuna göre, onları fabrikasyon yaptırmanın zamanı geldi. PCB'yi yapmak oldukça kolaydır, aşağıdaki adımları uygulamanız yeterlidir
Adım 1: www.pcbgogo.com'a girin, ilk seferinizse kayıt olun. Ardından, PCB Prototype sekmesinde PCB'nizin boyutlarını, katman sayısını ve ihtiyacınız olan PCB sayısını girin. PCB'nin 80cm × 80cm olduğunu varsayarak boyutları aşağıda gösterildiği gibi ayarlayabilirsiniz.
Adım 2: Şimdi Alıntı Yap düğmesine tıklayarak devam edin. Kullanılan malzeme izi aralığı vb. Gibi gerekirse birkaç ek parametrenin ayarlanacağı bir sayfaya yönlendirileceksiniz. Ancak çoğunlukla varsayılan değerler iyi çalışacaktır. Burada dikkate almamız gereken tek şey fiyat ve zamandır. Gördüğünüz gibi, Yapım Süresi sadece 2-3 gündür ve PSB'miz için sadece 5 $ maliyeti vardır. Ardından, ihtiyacınıza göre tercih edilen bir gönderim yöntemi seçebilirsiniz.
3. Adım: Son adım, Gerber dosyasını yüklemek ve ödemeye devam etmektir. İşlemin sorunsuz olduğundan emin olmak için PCBGOGO, ödemeye devam etmeden önce Gerber dosyanızın geçerli olup olmadığını doğrular. Bu şekilde, PCB'nizin imalat dostu olduğundan ve kararlı bir şekilde size ulaşacağından emin olabilirsiniz.
PCB'nin montajı
Kart sipariş edildikten sonra, birkaç gün sonra kurye tarafından düzgün bir şekilde etiketlenmiş, iyi paketlenmiş bir kutuda ve her zaman olduğu gibi PCB'nin kalitesi harikaydı.
Lehim çubuğumu açtım ve kartı monte etmeye başladım. Ayak izleri, pedler, vialar ve serigrafi mükemmel şekilde doğru şekil ve boyutta olduğundan, kartı monte etmekte sorun yaşamadım. Lehimleme tamamlandıktan sonra, anakart aşağıdaki gibi görünüyordu, gördüğünüz gibi Arduino Uno Board'uma tam oturuyor.
Projemiz bir Arduino LoRa vericisi ve bir Arduino LoRa alıcısına sahip olduğundan, biri alıcı için diğeri verici için olmak üzere iki sipere ihtiyacımız olacak. Bu yüzden başka bir PCB lehimlemeye geçtim, hem LoRa modüllü PCB hem de LCD aşağıda gösterilmektedir.
Gördüğünüz gibi sadece alıcı LoRa (soldaki) bağlı bir LCD'ye sahip, verici tarafı sadece LoRa modülünden oluşuyor. Ayrıca, aşağıda tartışıldığı gibi verici tarafına bir GPS modülü bağlayacağız.
GPS modülünü LoRa Vericiye bağlama
Burada kullanılan GPS modülü NEO-6M GPS modülüdür, modül küçük bir form faktörü ile çok düşük güçte çalışabilir, bu da onu izleme uygulamaları için uygun hale getirir. Bununla birlikte, daha önce farklı araç izleme ve konum algılama uygulamalarında kullandığımız birçok başka GPS modülü de mevcuttur.
Modül 5V'de çalışır ve 9600 baud hızında Seri iletişim kullanarak iletişim kurar. Bu nedenle, modülü Arduino'nun + 5V pinine güç veriyoruz ve Rx ve Tx pinini sırasıyla dijital pin D4 ve D3'e aşağıda gösterildiği gibi bağlarız.
D4 ve D3 pinleri yazılım seri pinleri olarak yapılandırılacaktır. NEO-6M GPS modülü çalıştırıldıktan sonra uydu bağlantısını arayacak ve tüm bilgileri otomatik olarak seri olarak gönderecektir. Bu çıktı verileri, Ulusal Deniz Elektroniği Birliği anlamına gelen ve tüm GPS cihazları için standart biçim olan NMEA cümle biçiminde olacaktır. Arduino ile GPS kullanma hakkında daha fazla bilgi edinmek için bağlantıyı takip edin. Bu veriler büyük olacaktır ve çoğu zaman istenen sonucu elde etmek için manuel olarak ifade etmemiz gerekir. Şanslıyız ki, TinyGPS ++ adlı bir kütüphane var ve bizim için tüm ağır işleri hallediyor. Henüz yapmadıysanız, LoRa kitaplığını da eklemeniz gerekir. Öyleyse her iki kütüphaneyi de aşağıdaki linkten indirelim
TinyGPS ++ Arduino Kitaplığını İndirin
Arduino LoRa Kitaplığını İndirin
Bağlantı, Sketch -> Include Library -> Add.ZIP library komutunu izleyerek Arduino IDE'ye eklenebilecek bir ZIP dosyası indirecektir . Donanım ve kitaplığa hazır olduğunuzda, Arduino kartlarımızın Programlanmasına devam edebiliriz.
Arduino LoRa'yı GPS Vericisi olarak Programlama
Bildiğimiz gibi, LoRa bir alıcı-verici cihazdır, yani hem bilgi gönderip hem de alabilir. Bununla birlikte, bu GPS izci projesinde, bir modülü GPS'ten koordinat bilgilerini okumak ve göndermek için verici olarak kullanacağız, diğer modül ise GPS koordinat değerlerini alacak ve LCD'ye yazdıracak bir alıcı olarak kullanacağız. Hem Verici hem de Alıcı modülü için olan program bu sayfanın alt kısmında bulunabilir. Kodla devam etmeden önce GPS modülü ve LoRa modülü kitaplıklarını kurduğunuzdan emin olun. Bu bölümde verici koduna bakacağız.
Her zaman olduğu gibi programa gerekli kitaplıkları ve pinleri ekleyerek başlıyoruz. Burada SPI ve LoRa kitaplığı LoRa iletişimi için kullanılır ve TinyGPS ++ ve SoftwareSerial kitaplığı GPS iletişimi için kullanılır. Donanımımdaki GPS modülü pin 3 ve 4'e bağlı ve bu nedenle bunu da aşağıdaki gibi tanımlıyoruz
#Dahil etmek
Kurulum işlevinin içinde, seri monitörü başlatıyoruz ve ayrıca NEO-6M GPS modülümüz ile iletişim için yazılım serisini "gpsSerial " olarak başlatıyoruz . LoRa işletim frekansım olarak 433E6 (433 MHz) kullandığımı da, kullandığınız modülün türüne göre değiştirmeniz gerekebileceğini unutmayın.
geçersiz kurulum () { Serial.begin (9600); gpsSerial.begin (9600); while (! Seri); Serial.println ("LoRa Gönderen"); eğer (! LoRa.begin (433E6)) { Serial.println ("LoRa başlatılamadı!"); while (1); } LoRa.setTxPower (20); }
Döngü işlevinin içinde, GPS modülünün bazı verileri verip vermediğini kontrol ederiz, eğer öyleyse, tüm verileri okur ve gps.encode işlevini kullanarak ifade ederiz. Ardından gps.location.isValid () işlevini kullanarak geçerli bir konum verisi alıp almadığımızı kontrol ederiz.
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Geçerli bir yer aldıysak, enlem ve boylam değerlerini iletmeye başlayabiliriz. Gps.location.lat () fonksiyonu enlem koordinatını verir ve gps.location.lng () fonksiyonu boylam koordinatını verir. Bunları 16 * 2 LCD'ye yazdıracağımız için, ikinci satıra ne zaman geçeceğimizi belirtmek zorundayız, bu nedenle aşağıdaki bilgileri 2. satıra yazdırmak üzere alıcıya yakınlaşmak için “c” anahtar kelimesini kullanıyoruz.
LoRa.beginPacket (); LoRa.print ("Enlem:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Uzun:"); LoRa.print (gps.location.lng (), 6); Serial.println ("LoRa yoluyla gönderildi"); LoRa.endPacket ();
Arduino LoRa'yı GPS alıcısı olarak programlama
Verici kodu zaten enlem ve boylam koordinatlarının değerini gönderiyor, şimdi alıcının bu değerleri okuması ve LCD'ye yazdırması gerekiyor. Benzer şekilde burada LoRa modülü ve LCD ekran için kitaplığı ekliyoruz ve LCD'nin hangi pinlere bağlı olduğunu tanımlıyoruz ve ayrıca LoRa modülünü eskisi gibi başlatıyoruz.
#Dahil etmek
Döngü işlevinin içinde, verici LoRa modülünden veri paketlerini ve LoRa.parsePacket () işlevini kullanarak bunun boyutunu dinler ve bunu " packetSize " değişkeninde saklarız . Paketler alınırsa, onları karakter olarak okumaya ve LCD'ye yazdırmaya devam ederiz. Program ayrıca LoRa modülünün "c" anahtar kelimesini gönderip göndermediğini kontrol eder, eğer öyleyse geri kalan bilgiyi ikinci satıra yazdırır.
if (packetSize) {// Paket alınmışsa Serial.print ("Alınan paket '"); lcd.clear (); while (LoRa.available ()) { karakter gelen = (karakter) LoRa.read (); eğer (gelen == 'c') { lcd.setCursor (0, 1); } else { lcd.print (gelen); } }
Arduino LoRa GPS Tracker Çalışması
Donanım ve program hazır olduğunda, her iki kodu da ilgili Arduino modüllerine yükleyebilir ve bunları bir 12V adaptör veya USB kablosu kullanarak çalıştırabiliriz. Vericiye güç verildiğinde, GPS modülündeki mavi LED'in yanıp söndüğünü fark edebilirsiniz, bu, modülün koordinatları almak için uydu bağlantısı aradığını gösterir. Bu arada Alıcı modülü açılacak ve LCD ekranda bir karşılama mesajı görüntüleyecektir. Verici, bilgiyi gönderdikten sonra, alıcı modülü, aşağıda gösterildiği gibi LCD'sinde gösterecektir.
Artık verici GPS modülü ile hareket edebilirsiniz ve alıcının konumunu güncellediğini fark edeceksiniz. Verici modülün tam olarak nerede olduğunu bilmek için LCD'de görüntülenen enlem ve boylam değerlerini okuyabilir ve aşağıda gösterildiği gibi harita üzerinde konumu almak için Google haritalarına girebilirsiniz.
Tam çalışma ayrıca videoda bulunabilir Bu sayfanın alt kısmında verilmiştir. Umarım öğreticiyi anladınız ve onunla faydalı bir şey oluşturmaktan keyif aldınız. Herhangi bir şüpheniz varsa, bunları aşağıdaki yorum bölümüne bırakabilir veya diğer teknik sorular için forumlarımızı kullanabilirsiniz.