İçindekiler:

Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino): 8 Adım
Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino): 8 Adım

Video: Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino): 8 Adım

Video: Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino): 8 Adım
Video: SMS ile Konum Alma ve Google Maps Göstereme 2024, Temmuz
Anonim
Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino)
Ev Yapımı Gerçek Zamanlı GPS İzleyici (SIM800L, Ublox NEO-6M, Arduino)

Demek benim gibi ortalıkta dolaşan bir GSM modülün var? Ayrıca bir GPS izci?

Aynı düşünüyoruz!

Bu talimatta, bir acemi bakış açısıyla hedefinize nasıl ulaşacağınız konusunda size rehberlik etmeye çalışacağım.

Daha önce elektrik mühendisliği bilgim olmadığı için (dürüst olmak gerekirse, proje o kadar da gerekli değil, ama hayır) ve bir web sunucusuna gerçek zamanlı veri pompalayan bir cihazın nasıl yapılacağına dair hiçbir fikrim olmadığı için çok sayıda sorunla karşılaştım. Yine de, sonunda işleri yoluna koymayı başardım.

Bu derste, yeni başlayan birinin yapabileceği hataları vurgulamak ve projeyi buna göre oluşturmak istiyorum.

Unutmayın: Elektrikle çalışırken daima dikkatli olun!

NOT: Profesyonel değilim. Kod, tüm ihtiyaçlarınız için yeterince karmaşık olmayabilir. Proje bir "hobi projesi" olarak düşünülmüş ama! benim için çalıştı. Ve benim için işe yaradıysa, senin için de işe yarar!

Adım 1: Önkoşullar

Önkoşullar
Önkoşullar
Önkoşullar
Önkoşullar
Önkoşullar
Önkoşullar

GSM MODÜLÜ - SIM800L

  • Oldukça küçük, kullanımı kolay
  • Mobil internet (GPRS) kullanabilen
  • Ucuz

GPS MODÜLÜ - Ublox NEO6M

  • Ayrıca küçük
  • işini çok iyi hallediyor

Bir mikro denetleyici - herhangi bir şey olabilir - biraz yer açmak için ünlü Arduino Uno veya Nano'yu kullanabilirsiniz

Pil - Ana ve yalnızca güç kaynağı olarak 18650 hücre kullandım (Nominal 3.7V)

Pil tutucu - neden? - çünkü 18650 pili lehimlemek ısı nedeniyle oldukça tehlikelidir.

DC-DC Boost Dönüştürücü Yükseltme Modülü 5V - Kullanmış olduğum Arduino'nun 5V'a ihtiyacı olduğu için olmalı

Araçlar, kullanışlı olabilecek temel şeyler:

Test için teller, havya, devre tahtası

Adım 2: Ana Konsept

Ana Konsept
Ana Konsept

Sistemin ana konsepti şudur:

3 bölümden oluşur:

  1. Uygun GPS-Koordinatlarına sahip olan ve bir sunucuya uzaktan bağlanabilen ve ona veri gönderebilen bir cihaz
  2. Gelen verileri alabilen, depolayan ve diğer istemcilere hizmet veren bir web sunucusu
  3. Platform - koordinatları görebileceğimiz - İdeal olarak artık bir mobil uygulama veya bir web sitesi olmalıdır.

Adım 3: SIM800L Modülü

SIM800L Modülü
SIM800L Modülü
SIM800L Modülü
SIM800L Modülü

Modülle zor zamanlar geçirdim.

Bazı özellikler ve referanslarla başlamak istiyorum.

Veri sayfasına göre:

  • 3.4V - 4.4V arasında çalışır
  • SMS gönderebilir, diğer telefonlara sesli arama yapabilir ve hatta internete bağlanabilir!
  • AT komutları aracılığıyla onunla iletişim kurabiliriz!
  • Yoğun zamanlarda 2A'ya kadar kullanabilir! Not: Düşük örnekleme oranları nedeniyle muhtemelen bir multimetre ile ölçemezsiniz.

Benim deneyimim, 3.8V'nin altındaki SIM800L'nin gerçekten çalışmadığı yönünde.

Daha fazla bilgi için şu adresi ziyaret edin: veri sayfası

Dolayısıyla işiniz modüle en az 3,8V (ideal olarak 4V), en az 2A çıkış veren bir güç kaynağı sağlamaktır.

Modülü son cihazda kullanmadan önce, cihazınızın düzgün çalıştığından emin olmak için SIM800L'niz ve bilgisayarınız ile iletişim kurmanızı öneririm.

İlk önce, yukarıdaki resimdeki gibi SIM Kartı takın.

PC'nize bağlamak için bir USB'den TTL'ye dönüştürücü veya bir Arduino kullanabilirsiniz.

Şimdi, Arduino ile gidiyorum.

SIM800L VCC ve GND'yi güç kaynağı terminallerinize bağlayın.

TX'i Arduino 10. dijital pimine, RX'i arduino 11. dijital pime bağlayın.

Kodu indirin, bu adımda bağladım.

Kodla, Seri Monitörünüzde komutlar gönderebilir ve bunları geri alabilirsiniz.

Bazı basit komutlar:

AT Bağlantı tamamsa, Tamam döndürür.

ATD+123456789; Belirli bir telefon numarasını arayın. Not: Noktalı virgül ile bitirmeyi unutmayınız.

AT+CPIN? SIM Kart durumunu döndürür (kilitli veya değil)

SMS göndermek istiyorsanız, girişinizi özel bir karakterle sonlandırmanız gerekir, '$' sembolü ile yapılabilir.

Daha ilginç komutlar için bunu okumanızı öneririm.

Çeşitli komutlar var, bunlara aşina olun, gerçekten faydalılar.

SIM800L'nin hangi işlemde olduğunu söyleyen kırmızı bir durum LED'i vardır.

64 MS AÇIK - 800MS KAPALI - SIM800L ağa kayıtlı değil.

64 MS AÇIK - 3000MS KAPALI - SIM800L ağa kayıtlı.

64 MS AÇIK - 300MS KAPALI - SIM800l GPRS modunda

Yaklaşık 8-10 kez yanıp söndükten sonra SIM800L yeniden çalışmaya devam ederse, bunun nedeni verimli güç kaynağının olmaması olabilir.

AT'den sonra düzelmezse, kablolamayı kontrol edin! Bir multimetreniz varsa, kabloların sürekliliğini kontrol edin.

Tellerin ve lehim bağlantılarının bağlantılarını kontrol edin! Modül yalnızca yanıp sönerken çalışacaktır.

4. Adım: Ublox Neo 6m

Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m

Bazı özellikler

  • Maksimum voltaj: 3.6V - Arduino'nun 3.3V piniyle çalıştırdım
  • Maksimum akım çekişi 67mA'dır - böylece arduino'dan güç sağlayabilirsiniz
  • Sıcaklık Aralığı:: -40-85 Santigrat (Sanırım size uyacaktır)

Sipariş ettiğim ünite resimde görülen bir antenle geldi, onu ilgili yuvaya takmam yeterli.

Cihaz sinyal aldığında mavi LED ile yanıp söner.

Öncelikle, bilmiyorsanız, burada bir GPS'in nasıl çalıştığını kontrol edin.

Cihaz açıkken 3 uydu bulduğunda Arduino'ya yukarıdaki gibi bir çok virgülle ayrılmış değer gönderir.

İşimize yardımcı olması için, bu verileri daha insan tarafından okunabilir olacak şekilde ayrıştırmak için bazı harici kütüphaneler kullanabiliriz.

TinyGps kitaplığını veya NeoGPS kitaplığını kullanabilirsiniz. 2.yi daha hafif olduğu için kullandım.

Test için güç pinlerini arduino 3.3V ve GND'ye bağlamanız gerekir.

Bu kodu indirin ve GPS'inizle birlikte kullanın. RX Dijital pin 10, TX Dijital pin 11

Not: Modülü açık havada, tercihen bulut olmadığında kullanmayı unutmayın.

Yarım dakika sonra cihaz yanıp sönmeli ve GPS koordinatlarınızı vermelidir!:)

SIM800L ve GPS modülünüzün düzgün çalıştığını öğrendikten sonra bir sonraki adıma geçebilirsiniz.

Adım 5: Devre

devre
devre

Devre resimdeki gibidir.

Yani 3.4V - 4.2V 18650 pil ana güç kaynağıdır. Sim800L, enerjiyi doğrudan ondan alır. Devrenin kararlılığını arttırmak için aralarında paralel olarak bir kondansatör bulunmaktadır.

Bir kapasitör seçtiğinizde, düşük bir ESR kapasitör seçmelisiniz.

Bir 5V yükseltici dönüştürücü, pilin voltajını 5V'a yükseltir (Arduino 5V ile çalıştığı için ir gereklidir).

5V güç rayı burada Nano'ya bağlanır. Sim800L ve Neo6m, resimdeki gibi Nano ile bağlantılıdır. (Sim Tx-D10, SimRx-D11; NeoTX-D3, NeoRX-D4)

D12, RST'ye bağlı olduğundan, sistemi programlı olarak yeniden başlatabiliyoruz (SIM800L hariç). NOT: Bu yeniden başlatma yöntemi en iyi uygulama olmayabilir)

Ve son olarak, NANO'ya iki LED bağlanır, böylece herhangi bir hata olup olmadığını kullanıcıya söyleyebiliriz.

6. Adım: Kod

Kod, Instructables'a eklenmiştir veya github'a bir göz atın.

Gereksinimleriniz için düzgün çalışması için değiştirebilir veya isterseniz başkalarının kodunu kullanabilirsiniz.

waitUntilResponse(); yardımcı işlevi kodundan alındı. Çalışmasını kontrol edin ve kodlayın!

Kısaca kurulum fonksiyonunda SIM800L modülümüzün GPRS bağlantısını etkinleştirmemiz gerekiyor. LED hızla yanıp sönerse başarılı olup olmadığını biliyoruz. (kurulumGPRSConnection())

Döngü işlevinde - her 15 saniyede bir HTTP isteğine sahip olan sendData() işlevi çağrılır

Verileri web sunucusuna bu biçimde göndermek için sorgu dizeleri kullandım:

ip adresi/file.php?key=değer&anahtar=değer ör.

Herhangi bir hata meydana gelirse, ilgili LED yanacaktır. (SIM, GPS)

7. Adım: Web sunucusu

Web sunucusu
Web sunucusu

Bizim kullanımımız için basit bir hafif web sunucusu yeterlidir.

Aralarından seçim yapabileceğiniz bazı seçenekler vardır:

  1. Muhtemelen düzenli olarak ödemeniz gereken bir şirketin uzak sunucusunu kullanabilirsiniz.
  2. Kendi bilgisayarınızı kullanabilirsiniz. Sadece test için öneriyorum, enerji israfı, güvenlik sorunları nedeniyle 7/24 çalıştırmak gerçekten verimli değil.
  3. Raspberry PI gibi küçük bir bilgisayar kullanabilirsiniz. Hafif, ucuz, fazla güç tüketmez.

2. ve 3. seçeneği denedim, iyi çalıştılar. Eh, asıl amaç bu talimatların sunucuları değil, ama size bazı tavsiyelerde bulunuyorum.

Bir PC kullanıyorsanız, muhtemelen Windows kullanıyorsunuzdur. Yerinizde olsam, üzerine bir Apache veya XAMPP sunucusu kurardım.

XAMPP'de zaten PHP var, bunun yanında HTML, Perl ve Veritabanı Yönetim Sistemi ile birlikte geliyor. PHP ile dinamik bir sunucu yapabilirsiniz. Dünyanın herhangi bir yerinden yeni oluşturduğunuz yerel sunucuyu kullanmak istiyorsanız, PC'nize statik IP atamanız ve bazı portforwarding yapmanız gerekir. Statik IP için faydalı bir eğitim:

Ve tüm portforwarding olayı:

Bir Ahududu'nuz varsa, onu kullanmak iyi bir uygulamadır. Linux komutlarına aşina olabilir ve kendi sunucunuzu 7/24 çalıştırabilirsiniz.

İşletim sistemi, başsız bir kurulumla (klavye, monitör olmadan) Raspbian Jessie idi - SSH bağlantısı olan bilgisayarımla kontrol ettim.

Raspberry'ime giriş yapmak için Putty kullandım. Başkalarının size giriş yapmaması için hesabınızın şifresini değiştirmeyi unutmayın Pi. Varsayılan: pi, passw: ahududu.

Sqlite3 ile bir lighttpd web sunucusu kurdum. İyi öğretici burada bulundu:

Sunucu kodunda ağırlıklı olarak PHP kullandım. PHP ile veri alabilir, veritabanlarını okuyabilir/yazabilir - bir sorguyu json formatına kodlayabilirsiniz, vb. …Bu eğitim size PHP ile veritabanınızı nasıl yöneteceğiniz konusunda çok yardımcı olacaktır.

Kodumu github'da server_files klasöründe de görüntüleyebilirsiniz.

Ve elbette, buna uzaktan erişmek istiyorsanız, yönlendiricinizdeki Pi'nize bağlantı noktası iletmeyi etkinleştirmeniz gerekir.

Adım 8: Bitirme/Deneyim

Henüz bir kasa yapılmadı.

Benim tecrübeme göre sistem çok kötü çalışmıyor. Ancak bekleyen kararlılık iyileştirmeleri var.

İzleyici eklediğim kodla çalışmadıysa endişelenmeyin. SIM800L ve NEO 6M'nin gerektiği gibi çalıştığından emin olmaya çalışın. Kodumu özgürce değiştirebilir veya daha iyisini arayabilirsiniz. Umarım, size bu projeyi nasıl tamamlayabileceğinize dair bir örnek gösterebilmişimdir.

Herhangi bir tavsiyeyi, yorumlardan düzeltmeyi kabul ediyorum. Sormaktan çekinmeyin.

Önerilen: