GY-NEO6M asosidagi o'z qo'llaringiz bilan GPS kuzatuvchisi juda oson. Arduino GPS kuzatuvchisi Hatire Arduino sozlamalari oynasining qisqacha tavsifi

Arduino bilan bir nechta tajribalardan so'ng, men GPRS orqali serverga yuborilgan koordinatali oddiy va unchalik qimmat bo'lmagan GPS-trekerni yaratishga qaror qildim.
Ishlatilgan Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS moduli (serverga ma'lumot yuborish uchun), GPS qabul qiluvchisi SKM53 GPS.

Hamma narsa ebay.com saytida sotib olindi, jami taxminan 1500 rubl (arduino uchun taxminan 500 rubl, GSM moduli uchun biroz kamroq, GPS uchun bir oz ko'proq).

GPS qabul qiluvchi

Avval siz GPS bilan qanday ishlashni tushunishingiz kerak. Tanlangan modul eng arzon va eng oddiylaridan biri hisoblanadi. Biroq, ishlab chiqaruvchi sun'iy yo'ldosh ma'lumotlarini tejash uchun batareyani va'da qilmoqda. Ma'lumotlar varag'iga ko'ra, sovuq boshlash 36 soniya davom etishi kerak, ammo mening sharoitimda (derazadan 10-qavat, hech qanday bino yo'q) bu 20 daqiqa davom etdi. Biroq, keyingi boshlanish allaqachon 2 daqiqa.

Arduino-ga ulangan qurilmalarning muhim parametri quvvat sarfidir. Arduino konvertorini ortiqcha yuklasangiz, u yonib ketishi mumkin. Amaldagi qabul qilgich uchun maksimal quvvat iste'moli 45mA @ 3,3v ni tashkil qiladi. Nima uchun spetsifikatsiya talab qilinadigan kuchlanishdan (5V) boshqa kuchlanishdagi oqim kuchini ko'rsatishi kerakligi men uchun sir. Biroq, Arduino konvertori 45 mA ga bardosh beradi.

Ulanish
GPS boshqarilmaydi, garchi u RX piniga ega bo'lsa ham. Nima maqsadda noma'lum. Ushbu qabul qilgich bilan qilishingiz mumkin bo'lgan asosiy narsa NMEA protokoli orqali TX pinidan ma'lumotlarni o'qishdir. Darajalar - 5V, faqat Arduino uchun, tezlik - 9600 bod. Men VIN-ni arduino-ning VCC-ga, GND-ni GND-ga, TX-ni mos keladigan seriyaning RX-ga ulayman. Men ma'lumotlarni avval qo'lda, keyin TinyGPS kutubxonasidan foydalanib o'qiyman. Ajablanarlisi shundaki, hamma narsa o'qilishi mumkin. Uno-ga o'tgandan so'ng, men SoftwareSerial-dan foydalanishga majbur bo'ldim, keyin muammolar boshlandi - ba'zi xabar belgilari yo'qoldi. Bu juda muhim emas, chunki TinyGPS noto'g'ri xabarlarni o'chirib tashlaydi, ammo bu juda yoqimsiz: siz 1 Gts chastotani unutishingiz mumkin.

SoftwareSerial haqida qisqacha ma'lumot: Uno-da apparat portlari yo'q (USB Serial-ga ulanganidan tashqari), shuning uchun siz dasturiy ta'minotdan foydalanishingiz kerak. Shunday qilib, u faqat plata uzilishlarni qo'llab-quvvatlaydigan pinda ma'lumot olishi mumkin. Uno holatida bular 2 va 3. Bundan tashqari, bir vaqtning o'zida faqat bitta bunday port ma'lumotlarni qabul qilishi mumkin.

"Test stendi" shunday ko'rinadi.

GSM qabul qiluvchisi/uzatuvchisi


Endi qiziqarliroq qism keladi. GSM moduli - SIM900. U GSM va GPRS-ni qo'llab-quvvatlaydi. EDGE ham, ayniqsa 3G ham qo'llab-quvvatlanmaydi. Koordinata ma'lumotlarini uzatish uchun, ehtimol, bu yaxshi - rejimlar o'rtasida almashishda kechikishlar yoki muammolar bo'lmaydi, bundan tashqari GPRS endi deyarli hamma joyda mavjud. Biroq, ba'zi murakkab ilovalar uchun bu etarli bo'lmasligi mumkin.

Ulanish
Modul ketma-ket port orqali ham boshqariladi, bir xil darajada - 5V. Va bu erda bizga RX va TX kerak bo'ladi. Modul qalqon, ya'ni Arduino-ga o'rnatilgan. Bundan tashqari, u mega va uno bilan mos keladi. Standart tezlik - 115200.

Biz uni Mega-da yig'amiz va bu erda bizni birinchi yoqimsiz ajablanib kutmoqda: modulning TX pinli Mega-ning 7-piniga tushadi. Mega-ning 7-pinida uzilishlar mavjud emas, ya'ni siz 7-pinni, aytaylik, uzilishlar mumkin bo'lgan 6-pinga ulashingiz kerak bo'ladi. Shunday qilib, biz bitta Arduino pinini yo'qotamiz. Xo'sh, mega uchun bu juda qo'rqinchli emas - axir, pinlar etarli. Ammo Uno uchun bu allaqachon murakkabroq (sizga eslatib o'tamanki, uzilishlarni qo'llab-quvvatlaydigan faqat 2 ta pin bor - 2 va 3). Ushbu muammoni hal qilish uchun biz modulni Arduino-ga o'rnatmasdan, uni simlar bilan ulashni taklif qilishimiz mumkin. Keyin Serial1 dan foydalanishingiz mumkin.

Ulangandan so'ng biz modul bilan "gapirish" ga harakat qilamiz (uni yoqishni unutmang). Biz port tezligini tanlaymiz - 115200 va barcha o'rnatilgan ketma-ket portlar (mega-da 4, uno-da 1) va barcha dasturiy portlar bir xil tezlikda ishlasa yaxshi bo'ladi. Shu tarzda siz yanada barqaror ma'lumotlarni uzatishga erishishingiz mumkin. Sababini bilmayman, garchi taxmin qilsam ham.

Shunday qilib, biz ketma-ket portlar o'rtasida ma'lumotlarni uzatish uchun ibtidoiy kod yozamiz, atz yuboramiz va javoban sukunatni qabul qilamiz. Nima bo'ldi? Oh, katta-kichik harf sezgir. ATZ, biz yaxshi bo'ldik. Huray, modul bizni eshitadi. Bizga qiziqib qo'ng'iroq qilish kerakmi? ATD +7499... Statsionar telefon jiringlaydi, arduinodan tutun chiqadi, noutbuk o'chadi. Arduino konvertori yonib ketdi. Uni 19 volt bilan to'ldirish yomon fikr edi, garchi u 6 dan 20 V gacha ishlashi mumkinligi yozilgan bo'lsa-da, 7-12 V tavsiya etiladi. GSM moduli uchun ma'lumotlar varaqasi yuk ostida quvvat sarfi haqida hech narsa aytmaydi. Xo'sh, Mega ehtiyot qismlar omboriga boradi. Bir nafas bilan men noutbukni yoqaman, u USB dan +5V liniyasi orqali +19V qabul qildi. U ishlaydi, hatto USB ham yonib ketmadi. Bizni himoya qilgani uchun Lenovoga rahmat.

Konverter yonib ketgandan so'ng, men joriy iste'molni qidirdim. Shunday qilib, tepalik - 2A, odatiy - 0,5A. Bu Arduino konvertorining imkoniyatlaridan tashqarida ekanligi aniq. Alohida ovqatlanishni talab qiladi.

Dasturlash
Modul ma'lumotlarni uzatishning keng imkoniyatlarini ta'minlaydi. Ovozli qo'ng'iroqlar va SMS-dan boshlab va GPRS-ning o'zi bilan yakunlanadi. Bundan tashqari, ikkinchisi uchun buni amalga oshirish mumkin HTTP so'rovi AT buyruqlari yordamida. Siz bir nechta yuborishingiz kerak bo'ladi, lekin bunga arziydi: siz so'rovni qo'lda yaratishni xohlamaysiz. GPRS orqali ma'lumot uzatish kanalini ochishda bir nechta nuanslar mavjud - klassik AT+CGDCONT=1, "IP", "apn" ni eslaysizmi? Demak, bu erda ham xuddi shunday narsa kerak, lekin biroz ayyorroq.

Muayyan URL manzilida sahifani olish uchun siz quyidagi buyruqlarni yuborishingiz kerak:
AT+SAPBR=1,1 //Ochiq tashuvchi (tashuvchi) AT+SAPBR=3,1,"CONTYPE","GPRS" //ulanish turi - GPRS AT+SAPBR=3,1,"APN","internet" //APN, Megafon uchun - internet AT+HTTPINIT //HTTPni ishga tushiring AT+HTTPPARA="CID",1 //Foydalanish uchun operator ID. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Haqiqiy URL, sprintf koordinatalari bilan AT+HTTPACTION=0 // GET usuli yordamida ma'lumotlarni so'rash //javobni kuting AT+HTTPTERM //HTTPni to'xtating

Natijada, agar ulanish mavjud bo'lsa, biz serverdan javob olamiz. Ya'ni, agar server uni GET orqali qabul qilsa, biz koordinata ma'lumotlarini qanday yuborishni allaqachon bilamiz.

Oziqlanish
GSM modulini Arduino konvertoridan quvvatlantirish, men bilganimdek, yomon fikr ekan, xuddi shu ebayda 12v->5v, 3A konvertorni sotib olishga qaror qilindi. Biroq, modul 5V quvvat manbaini yoqtirmaydi. Keling, sindirishga boramiz: 5V ni arduinodan keladigan pinga ulang. Keyin modulning o'rnatilgan konvertori (Arduino konvertoridan ancha kuchli, MIC 29302WU) modulga kerak bo'lgan narsani 5V dan hosil qiladi.

Server

Server ibtidoiy birini yozdi - koordinatalarni saqlash va Yandex.maps-da chizish. Kelajakda ko'plab foydalanuvchilarni qo'llab-quvvatlash, "qurolli / qurolsiz" holati, avtomobil tizimlarining holati (otishma, faralar va boshqalar) va, ehtimol, hatto avtomobil tizimlarini boshqarish kabi turli funktsiyalarni qo'shish mumkin. Albatta, to'liq huquqli signalizatsiya tizimiga aylanadigan kuzatuvchi uchun tegishli yordam bilan.

Dala testlari

Yig'ilgan qurilma korpussiz shunday ko'rinadi:

Quvvat konvertorini o'rnatgandan so'ng va uni o'lik DSL modemdan qutiga joylashtirgandan so'ng, tizim quyidagicha ko'rinadi:

Men simlarni lehimladim va Arduino bloklaridan bir nechta kontaktlarni olib tashladim. Ular shunday ko'rinadi:

Men mashinaga 12V uladim, Moskva bo'ylab yurdim va trekni oldim:


Trek nuqtalari bir-biridan ancha uzoqda. Sababi, GPRS orqali ma'lumotlarni jo'natish nisbatan uzoq vaqtni oladi va bu vaqt ichida koordinatalar o'qilmaydi. Bu aniq dasturlash xatosi. Bu, birinchidan, vaqt o'tishi bilan koordinatalar paketini darhol yuborish, ikkinchidan, GPRS moduli bilan asinxron ishlash orqali davolanadi.

Avtomobilning yo'lovchi o'rindig'ida sun'iy yo'ldoshlarni qidirish vaqti bir necha daqiqa.

xulosalar

Arduino-da o'z qo'llaringiz bilan GPS-treker yaratish mumkin, garchi ahamiyatsiz ish bo'lmasa ham. Endi asosiy savol - qurilmani zararli omillarga (suv, harorat) ta'sir qilmasligi, metall bilan qoplanmaganligi (GPS va GPRS himoyalangan bo'ladi) va ayniqsa sezilmasligi uchun mashinada qanday yashirish kerak. Hozircha u faqat kabinada yotadi va sigaret zajigalka rozetkasiga ulanadi.

Xo'sh, biz ham silliq trek uchun kodni to'g'rilashimiz kerak, garchi treker allaqachon asosiy vazifani bajaradi.

Ishlatilgan qurilmalar

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 asosidagi GSM/GPRS qalqoni
  • DC-DC 12v->5v 3A konvertor

Shaxsiy GPS transmitterlari

Bugungi kunda taraqqiyot shunday sur'atda ketmoqdaki, ilgari katta hajmli, qimmat va yuqori ixtisoslashgan qurilmalar tezda hajmi, vazni va narxini yo'qotadi, lekin ko'plab yangi funktsiyalarga ega bo'ladi.

Shunday qilib, GPS texnologiyasiga asoslangan qurilmalar cho'ntak gadjetlariga etib bordi va u erda mustahkam joylashdi va odamlarga yangi imkoniyatlar berdi. Bu, ayniqsa, alohida GPS transmitterlarini ta'kidlashga arziydi.

Aslida, bu bir xil GPS-trekerlar bo'lib, ular faqat transport vositasida emas, balki kundalik hayotda foydalanish uchun mo'ljallangan.

Modelga qarab, bir nechta turli qurilmalar. Eng oddiy shaklda, bu oddiygina displeysiz kichik quti, qaysi bolalar, hayvonlar yoki boshqa narsalarning harakatlarini boshqarish imkonini beradi, u o'rnatilgan.

Ichkarida joylashgan GPS moduli, yerdagi koordinatalarni aniqlaydigan, axborotni uzatuvchi va boshqaruv buyruqlarini qabul qiluvchi GSM/GPRS moduli, shuningdek, uzoq vaqt davomida avtonom ishlashni taʼminlovchi quvvat manbai.

GPS transmitterlarining funksionalligi

Funktsionallik oshishi bilan qurilmaning quyidagi imkoniyatlari paydo bo'ladi:


GPS transmitterlari uchun imkoniyatlar

Konfiguratsiyaga qarab, transmitter korpuslari sezilarli darajada farq qilishi mumkin. Har xil modellar shakldagi ijrolarga ega mobil telefonlar, klassik navigatorlar yoki hatto qo'l soatlari.

Maxsus versiyalarning rang-barang dizayni va foydali qo'shimchalar bolalarga ushbu qurilmalarni "ota-ona josuslari" sifatida emas, balki moda va amaliy gadjetlar sifatida ko'rishga imkon beradi.

Afzallik sifatida shuni ta'kidlash kerakki, qurilmaning ko'plab versiyalari ularsiz amalga oshirilishi mumkin abonent to'lovi ixtisoslashgan operatorlarning xizmatlari uchun va barcha kerakli ma'lumotlar mijozga to'g'ridan-to'g'ri Internet yoki SMS xabarlar orqali yuboriladi, bu esa bunday uskunaga texnik xizmat ko'rsatishda sezilarli tejash imkonini beradi.

GPS-trekerlar haqida maqolalar

Ushbu maqolada men misol sifatida sim800L yordamida arduino bilan GSM modulidan qanday foydalanishni ko'rsataman. Xuddi shu ko'rsatmalar boshqa har qanday gsm modullaridan foydalanish uchun juda mos keladi, masalan, sim900 va boshqalar, chunki barcha modullar taxminan bir xil ishlaydi - bu port orqali AT buyruqlarini almashish.

Men arduino bilan moduldan foydalanishni SMS buyruqlari orqali qurilmani masofadan boshqarish uchun ishlatilishi mumkin bo'lgan SMS relesi misolida ko'rsataman. Bu avtomobil signallari va boshqalar bilan birgalikda ishlatilishi mumkin.

Modul Arduino-ga Arduino nano-ning 2 va 3 raqamli pinlarida ishlaydigan dasturiy seriyali portning UART interfeysi orqali ulangan.

GSM modullari bilan Arduino bilan ishlash

Modulni quvvatlantirish uchun 3,6V dan 4,2V gacha bo'lgan kuchlanish talab qilinadi, bu siz qo'shimcha kuchlanish stabilizatoridan foydalanishingiz kerakligini anglatadi, chunki Arduino-da modulni quvvatlantirish uchun mos bo'lmagan 3,3 voltli stabilizator o'rnatilgan. , qo'shimcha stabilizatorni o'rnatishning ikkinchi sababi shundaki, GSM moduli jiddiy yukdir, chunki u zaif uzatuvchiga ega. barqaror ulanish uyali aloqa stantsiyasi bilan. Arduino nano uchun quvvat VIN piniga beriladi - bu modulning keng kuchlanish diapazonida (6-10V) ishlashini ta'minlaydigan Arduino ichiga o'rnatilgan stabilizator. O'rni moduli berilgan dastur matniga muvofiq Arduino nano-ning 10-piniga ulangan va uni raqamli chiqish sifatida ishlaydigan har qanday boshqasiga osongina o'zgartirish mumkin.

Bu shunday ishlaydi: GSM moduliga SIM-kartani o'rnating, quvvatni yoqing va raqamga "1" matni bilan SMS yuboring. SIM kartalar releyimizni yoqish uchun, uni o'chirish uchun biz "0" matni bilan SMS yuboramiz.

#o'z ichiga oladi
SoftwareSerial gprsSerial(2, 3); // dasturiy ta'minot porti uchun 2 va 3-pinlarni o'rnating
int LedPin = 10; // rele uchun

bekor o'rnatish()
{
gprsSerial.begin(4800);
pinMode (LedPin, OUTPUT);

// xabarlarni qabul qilishni sozlash

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
kechikish (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
kechikish (500); // buyruqni qayta ishlash uchun kechikish
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
kechikish (700);
}

String currStr = "";
// agar bu satr xabar bo'lsa, u holda o'zgaruvchi True qiymatini oladi
mantiqiy isStringMessage = noto'g'ri;

void loop()
{
agar (!gprsSerial.available())
qaytish;

char currSymb = gprsSerial.read();
agar ('\r' == currSymb) (
agar (isStringMessage) (
// agar joriy satr xabar bo'lsa, u holda...
agar (!currStr.compareTo("1")) (
digitalWrite (LedPin, HIGH);
) Aks holda (!currStr.compareTo("0")) (
digitalWrite (LedPin, LOW);
}
isStringMessage = noto'g'ri;
) boshqa (
agar (currStr.startsWith("+CMT")) (
// agar joriy satr “+CMT” bilan boshlansa, keyingi xabar
isStringMessage = rost;
}
}
currStr = "";
) agar (‘\n’ != currSymb) (
currStr += String(currSymb);
}
}

Maqolaning video versiyasi:

Teglar: #Arduino, #SIM800L

Sizning belgingiz:

Ushbu maqolada ishlatiladigan mahsulotlar:

← arduino-da GPS logger | MAQOMOTI porti orqali o'rni boshqarish →

RTL-SDR da GSM skaneri

| uy| Ingliz | Rivojlanish | Tez-tez so'raladigan savollar |

Skanerning asosiy xususiyatlari

GSM skaneri GSM pastga ulanish kanallarini skanerlaydi va uchta asosiy operatordan birining signal kuchi va kanal egaligi haqidagi ma'lumotlarni ko'rsatadi. uyali aloqa MTS, Beeline va Megafon. O'z ishining natijalariga ko'ra, skaner identifikatorlar ro'yxatini saqlashga imkon beradi tayanch stantsiyalar Barcha skanerlangan kanallar uchun MCC, MNC, LAC va CI.
GSM skaneridan GSM signal darajasini baholash va signal sifatini solishtirish uchun foydalanish mumkin turli operatorlar, radio qamrovini baholash, uyali signal kuchaytirgichlarini o'rnatish va ularning parametrlarini sozlash to'g'risida qaror qabul qilishda, ta'lim maqsadlarida va hokazo.
Skaner Windows ostida ishlaydi va oddiy va arzon qabul qilgichdan foydalanadi - RTL-SDR. RTL-SDR haqida o'qishingiz mumkin:
RTL-SDR (RTL2832U) va dasturiy ta'minot aniqlangan radio yangiliklari va loyihalari,
RTL-SDR - OsmoSDR,
Rus tilida RTL-SDR.
RTL-SDR parametrlari skanerning asosiy xususiyatlarini aniqlaydi. Albatta, GSM skaneri oddiy o'lchash uskunasining o'rnini bosa olmaydi.
Skaner foydalanishda hech qanday cheklovlarsiz bepul tarqatiladi.
Joriy versiya GSM 900 bandini qo'llab-quvvatlaydi va GSM 1800 ni qo'llab-quvvatlamaydi. Bu R820T tyuner bilan RTL-SDR ning ish chastotasi 1760 MGts bilan cheklanganligi bilan aniqlanadi. Eksperimental RTL-SDR drayveridan foydalanish 1800 MGts diapazonining kamida bir qismida ishlashga imkon beradi degan umid bor.

Skaner ishga tushirilmoqda

Skanerning so'nggi versiyasini ushbu havoladan yuklab olish mumkin. Faylni qulay joyga oching va gsmscan.exe faylini ishga tushiring.
Oldingi versiyalar skaner, manbalar bilan omborga havola va rivojlanish bilan bog'liq boshqa ma'lumotlar ishlab chiqish sahifasida joylashgan.
Skanerning ishlashi uchun RTL-SDR drayverlarini o'rnatish talab qilinadi; agar ular hali o'rnatilmagan bo'lsa, o'rnatish tartibini tavsiflash uchun buni Zadig dasturi yordamida qulay bajarish mumkin.

Skanerdan foydalanish

Quyida skaner dasturi oynasining ko'rinishi keltirilgan:

Gorizontal o'q GSM kanal raqamini ARFCN yoki MGts shaklida, vertikal o'q esa dBm da signal darajasini ko'rsatadi. Chiziq balandligi signal kuchini ko'rsatadi.

GSM moduli NEOWAY M590 Arduino bilan aloqa

Agar BS identifikatorlari muvaffaqiyatli dekodlangan bo'lsa va ular uchta asosiy aloqa operatorining identifikatorlariga mos keladigan bo'lsa, chiziqlar mos keladigan ranglarga bo'yalgan.
Ekranning yuqori qismidagi ochiladigan roʻyxatlar SDR qabul qilgichni, agar bir nechta ulangan boʻlsa, diapazonni tanlash imkonini beradi. GSM ishi 900 yoki GSM 1800 va gorizontal o'q birliklari ARFCN yoki MHz.
Tugmalar sizga skanerning ishlashi to'g'risidagi hisobotni dekodlangan tayanch stantsiyalar ro'yxati ko'rinishida saqlashga, BS dekodlash natijalarini tozalashga va dastur haqida ma'lumot olishga imkon beradi.

Ishning tamoyillari va xususiyatlari.

Ish paytida dastur 2,0 MGts (10 GSM kanali) qadam bilan ish chastotasi diapazonini skanerdan o'tkazadi va 2,4 MGts namuna olish chastotasi bilan signalni raqamlashtiradi. Skanerlash jarayoni signal kuchini o'lchash uchun butun diapazondan tez o'tish va BS identifikatorlarini dekodlash uchun sekin o'tishdan iborat.

Quvvatni o'lchash uchun butun diapazonni bosib o'tgandan so'ng bitta dekodlash bosqichi amalga oshiriladi. Shunday qilib, GSM 900 diapazonida signal darajasi taxminan har 2 soniyada bir marta yangilanadi va to'liq dekodlash o'tishi taxminan 1 daqiqa davom etadi.
RTL-SDR dan olingan signalning sifatsizligi tufayli BS eshittirishni boshqarish kanalining (BCCH) tizim ma'lumotlarini (SI) to'g'ri dekodlash ehtimoli yuqori emas. Ko'p yo'nalishli tarqalish natijasida signal darajasining o'zgarishi ham tizim ma'lumotlarini dekodlash ehtimolini kamaytiradi. Shu sabablarga ko'ra, BS identifikatorlarini olish uchun skaner taxminan 10 daqiqa davomida ma'lumot to'plashi kerak. Ammo bu holatda ham barcha kanallar ta'minlamaydi bu joy hatto eng ideal qabul qiluvchi tomonidan dekodlash uchun etarli signal darajasi va sifati. Bundan tashqari, barcha GSM kanallari ishlash uchun ishlatilmaydi GSM standarti, yuqoridagi rasmda ko'rinib turganidek, 975 - 1000 kanallari ishlash uchun Megafon tomonidan ishg'ol qilingan. UMTS standarti.
Ish paytida skaner yangi dekodlangan kanallar haqidagi tizim ma'lumotlarini kanallardagi ma'lumotlarning umumiy qatoriga qo'shadi. Ammo ilgari dekodlangan kanallar haqidagi ma'lumotlar tizim ma'lumotlari ushbu bosqichda dekodlanmaganda o'chirilmaydi va massivda qoladi. Ushbu ma'lumotni tozalash uchun tugmani bosib, BS dekodlash natijalarini o'chiring.
Hisobotni saqlash tugmachasini bosganingizda, to'plangan natijalar saqlanadi matn fayli dastur nomidan tashkil topgan nom bilan, ma'lumotlar saqlangan sana va vaqt. Quyida hisobot faylining bir qismiga misol keltirilgan:
Skaner Windows 7, 8.1 va 10 da ishlashga mo'ljallangan. Ish R820T tyuner bilan RTL-SDR ning uchta nusxasi bilan sinovdan o'tkazildi, boshqa turdagi tyunerlar sinovdan o'tkazilmadi.
Dasturning maxsus versiyasi Windows XP da ishlash uchun tuzilgan bo'lib, u standart versiyadan bir necha barobar sekinroq ishlaydi.

Rivojlanish.

Skaner dasturi hech qanday kafolat yoki javobgarliksiz, avvalgidek taqdim etiladi. Agar sizda skanerning funksionalligini kengaytirish yoki ish faoliyatini yaxshilash bo'yicha oqilona g'oyalaringiz bo'lsa, biz ularni amalga oshirish imkoniyatlarini muhokama qilishga tayyormiz.
Siz skanerni ishlab chiqishda ishtirok etishingiz mumkin, buning uchun ishlab chiqish sahifasiga tashrif buyuring.
GSM skanerining keyingi rivojlanishi, ehtimol sizning ishtirokingiz bilan rejalashtirilgan.

Arduino bilan bir nechta tajribalardan so'ng, men GPRS orqali serverga yuborilgan koordinatali oddiy va unchalik qimmat bo'lmagan GPS-trekerni yaratishga qaror qildim.
Ishlatilgan Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS moduli (serverga ma'lumot yuborish uchun), GPS qabul qiluvchisi SKM53 GPS.

Hamma narsa ebay.com saytida sotib olindi, jami taxminan 1500 rubl (arduino uchun taxminan 500 rubl, GSM moduli uchun biroz kamroq, GPS uchun bir oz ko'proq).

GPS qabul qiluvchi

Avval siz GPS bilan qanday ishlashni tushunishingiz kerak. Tanlangan modul eng arzon va eng oddiylaridan biri hisoblanadi. Biroq, ishlab chiqaruvchi sun'iy yo'ldosh ma'lumotlarini tejash uchun batareyani va'da qilmoqda. Ma'lumotlar varag'iga ko'ra, sovuq boshlash 36 soniya davom etishi kerak, ammo mening sharoitimda (derazadan 10-qavat, hech qanday bino yo'q) bu 20 daqiqa davom etdi. Biroq, keyingi boshlanish allaqachon 2 daqiqa.

Arduino-ga ulangan qurilmalarning muhim parametri quvvat sarfidir. Arduino konvertorini ortiqcha yuklasangiz, u yonib ketishi mumkin. Amaldagi qabul qilgich uchun maksimal quvvat iste'moli 45mA @ 3,3v ni tashkil qiladi. Nima uchun spetsifikatsiya talab qilinadigan kuchlanishdan (5V) boshqa kuchlanishdagi oqim kuchini ko'rsatishi kerakligi men uchun sir. Biroq, Arduino konvertori 45 mA ga bardosh beradi.

Ulanish

GPS boshqarilmaydi, garchi u RX piniga ega bo'lsa ham. Nima maqsadda noma'lum. Ushbu qabul qilgich bilan qilishingiz mumkin bo'lgan asosiy narsa NMEA protokoli orqali TX pinidan ma'lumotlarni o'qishdir. Darajalar - 5V, faqat Arduino uchun, tezlik - 9600 bod. Men VIN-ni arduino-ning VCC-ga, GND-ni GND-ga, TX-ni mos keladigan seriyaning RX-ga ulayman. Men ma'lumotlarni avval qo'lda, keyin TinyGPS kutubxonasidan foydalanib o'qiyman. Ajablanarlisi shundaki, hamma narsa o'qilishi mumkin. Uno-ga o'tgandan so'ng, men SoftwareSerial-dan foydalanishga majbur bo'ldim, keyin muammolar boshlandi - ba'zi xabar belgilari yo'qoldi. Bu juda muhim emas, chunki TinyGPS noto'g'ri xabarlarni o'chirib tashlaydi, ammo bu juda yoqimsiz: siz 1 Gts chastotani unutishingiz mumkin.

SoftwareSerial haqida qisqacha ma'lumot: Uno-da apparat portlari yo'q, shuning uchun siz dasturiy ta'minotdan foydalanishingiz kerak. Shunday qilib, u faqat plata uzilishlarni qo'llab-quvvatlaydigan pinda ma'lumot olishi mumkin. Uno holatida bular 2 va 3. Bundan tashqari, bir vaqtning o'zida faqat bitta bunday port ma'lumotlarni qabul qilishi mumkin.

"Test stendi" shunday ko'rinadi.


GSM qabul qiluvchisi/uzatuvchisi


Endi qiziqarliroq qism keladi. GSM moduli - SIM900. U GSM va GPRS-ni qo'llab-quvvatlaydi. EDGE ham, ayniqsa 3G ham qo'llab-quvvatlanmaydi. Koordinata ma'lumotlarini uzatish uchun, ehtimol, bu yaxshi - rejimlar o'rtasida almashishda kechikishlar yoki muammolar bo'lmaydi, bundan tashqari GPRS endi deyarli hamma joyda mavjud. Biroq, ba'zi murakkab ilovalar uchun bu etarli bo'lmasligi mumkin.

Ulanish

Modul ketma-ket port orqali ham boshqariladi, bir xil darajada - 5V. Va bu erda bizga RX va TX kerak bo'ladi. Modul qalqon, ya'ni Arduino-ga o'rnatilgan. Bundan tashqari, u mega va uno bilan mos keladi. Standart tezlik - 115200.

Biz uni Mega-da yig'amiz va bu erda bizni birinchi yoqimsiz ajablanib kutmoqda: modulning TX pinli Mega-ning 7-piniga tushadi. Mega-ning 7-pinida uzilishlar mavjud emas, ya'ni siz 7-pinni, aytaylik, uzilishlar mumkin bo'lgan 6-pinga ulashingiz kerak bo'ladi. Shunday qilib, biz bitta Arduino pinini yo'qotamiz. Xo'sh, mega uchun bu juda qo'rqinchli emas - axir, pinlar etarli. Ammo Uno uchun bu allaqachon murakkabroq (sizga eslatib o'tamanki, uzilishlarni qo'llab-quvvatlaydigan faqat 2 ta pin bor - 2 va 3). Ushbu muammoni hal qilish uchun biz modulni Arduino-ga o'rnatmasdan, uni simlar bilan ulashni taklif qilishimiz mumkin. Keyin Serial1 dan foydalanishingiz mumkin.

Ulangandan so'ng biz modul bilan "gapirish" ga harakat qilamiz (uni yoqishni unutmang). Biz port tezligini tanlaymiz - 115200 va barcha o'rnatilgan ketma-ket portlar (mega-da 4, uno-da 1) va barcha dasturiy portlar bir xil tezlikda ishlasa yaxshi bo'ladi. Shu tarzda siz yanada barqaror ma'lumotlarni uzatishga erishishingiz mumkin. Sababini bilmayman, garchi taxmin qilsam ham.

Shunday qilib, biz ketma-ket portlar o'rtasida ma'lumotlarni uzatish uchun ibtidoiy kod yozamiz, atz yuboramiz va javoban sukunatni qabul qilamiz. Nima bo'ldi? Oh, katta-kichik harf sezgir. ATZ, biz yaxshi bo'ldik. Huray, modul bizni eshitadi. Bizga qiziqib qo'ng'iroq qilish kerakmi? ATD +7499... Statsionar telefon jiringlaydi, arduinodan tutun chiqadi, noutbuk o'chadi. Arduino konvertori yonib ketdi. Uni 19 volt bilan to'ldirish yomon fikr edi, garchi u 6 dan 20 V gacha ishlashi mumkinligi yozilgan bo'lsa-da, 7-12 V tavsiya etiladi. GSM moduli uchun ma'lumotlar varaqasi yuk ostida quvvat sarfi haqida hech narsa aytmaydi. Xo'sh, Mega ehtiyot qismlar omboriga boradi. Bir nafas bilan men noutbukni yoqaman, u USB dan +5V liniyasi orqali +19V qabul qildi. U ishlaydi, hatto USB ham yonib ketmadi. Bizni himoya qilgani uchun Lenovoga rahmat.


Konverter yonib ketgandan so'ng, men joriy iste'molni qidirdim. Shunday qilib, tepalik - 2A, odatiy - 0,5A. Bu Arduino konvertorining imkoniyatlaridan tashqarida ekanligi aniq. Alohida ovqatlanishni talab qiladi.

Dasturlash

Modul ma'lumotlarni uzatishning keng imkoniyatlarini ta'minlaydi. Ovozli qo'ng'iroqlar va SMS-dan boshlab va GPRS-ning o'zi bilan yakunlanadi. Bundan tashqari, ikkinchisi uchun AT buyruqlari yordamida HTTP so'rovini bajarish mumkin. Siz bir nechta yuborishingiz kerak bo'ladi, lekin bunga arziydi: siz so'rovni qo'lda yaratishni xohlamaysiz. GPRS orqali ma'lumot uzatish kanalini ochishda bir nechta nuanslar mavjud - klassik AT+CGDCONT=1, "IP", "apn" ni eslaysizmi? Demak, bu erda ham xuddi shunday narsa kerak, lekin biroz ayyorroq.

Muayyan URL manzilida sahifani olish uchun siz quyidagi buyruqlarni yuborishingiz kerak:

AT+SAPBR=1,1 //Ochiq tashuvchi (tashuvchi) AT+SAPBR=3,1,"CONTYPE","GPRS" //ulanish turi - GPRS AT+SAPBR=3,1,"APN","internet" //APN, Megafon uchun - internet AT+HTTPINIT //HTTPni ishga tushiring AT+HTTPPARA="CID",1 //Foydalanish uchun operator ID. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Haqiqiy URL, sprintf koordinatalari bilan AT+HTTPACTION=0 // GET usuli yordamida ma'lumotlarni so'rash //javobni kuting AT+HTTPTERM //HTTPni to'xtating

Natijada, agar ulanish mavjud bo'lsa, biz serverdan javob olamiz. Ya'ni, agar server uni GET orqali qabul qilsa, biz koordinata ma'lumotlarini qanday yuborishni allaqachon bilamiz.

Oziqlanish

GSM modulini Arduino konvertoridan quvvatlantirish, men bilganimdek, yomon fikr ekan, xuddi shu ebayda 12v->5v, 3A konvertorni sotib olishga qaror qilindi. Biroq, modul 5V quvvat manbaini yoqtirmaydi. Keling, sindirishga boramiz: 5V ni Arduinodan 5V keladigan pinga ulang. Keyin modulning o'rnatilgan konvertori (Arduino konvertoridan ancha kuchli, MIC 29302WU) modulga kerak bo'lgan narsani 5V dan hosil qiladi.

Server

Server ibtidoiy birini yozdi - koordinatalarni saqlash va Yandex.maps-da chizish. Kelajakda ko'plab foydalanuvchilarni qo'llab-quvvatlash, "qurolli / qurolsiz" holati, avtomobil tizimlarining holati (otishma, faralar va boshqalar) va, ehtimol, hatto avtomobil tizimlarini boshqarish kabi turli funktsiyalarni qo'shish mumkin. Albatta, to'liq huquqli signalizatsiya tizimiga aylanadigan kuzatuvchi uchun tegishli yordam bilan.

Dala testlari

Yig'ilgan qurilma korpussiz shunday ko'rinadi:


Quvvat konvertorini o'rnatgandan so'ng va uni o'lik DSL modemdan qutiga joylashtirgandan so'ng, tizim quyidagicha ko'rinadi:

Men simlarni lehimladim va Arduino bloklaridan bir nechta kontaktlarni olib tashladim. Ular shunday ko'rinadi:

Men mashinaga 12V uladim, Moskva bo'ylab yurdim va trekni oldim:


Trek yirtilgan bo'lib chiqadi. Sababi, GPRS orqali ma'lumotlarni jo'natish nisbatan uzoq vaqtni oladi va bu vaqt ichida koordinatalar o'qilmaydi. Bu aniq dasturlash xatosi. Bu, birinchidan, vaqt o'tishi bilan koordinatalar paketini darhol yuborish, ikkinchidan, GPRS moduli bilan asinxron ishlash orqali davolanadi.

Loyiha diagrammasi:

Salom do'stlar, bizning boshimiz tepasida juda ko'p turli xil kosmik kemalar uchmoqda. Ular orasida Amerikaning GPS tizimi, Rossiyaning GLONASS, Yevropa Galileo va Xitoyning BeiDou tizimidan 90 ga yaqin juda foydali navigatsiya sun'iy yo'ldoshlari mavjud. Va bugun biz ulardan signal olamiz.

Birinchidan, kichik bir nazariya: Sun'iy yo'ldoshli navigatsiya tizimi - bu ilgari ma'lum bo'lgan marshrutlar bo'ylab uchadigan, ularning orbitasini va traektoriyasini aniq kuzatadigan yoki geostatsionar yoki geosinxron orbitadagi ma'lum statsionar nuqtada joylashgan kosmik kemalar tarmog'i. Sun'iy yo'ldoshlar o'rtacha 20 ming kilometr balandlikda uchadi va ularning har biri o'z vaqtini butun sayyoraga doimiy ravishda uzatadigan juda aniq atom soatidir. joriy vaqt.

Yorug'lik tezligida tarqaladigan radio signal Yerga 60 dan 90 millisekundgacha kechikish bilan etib boradi, bu sun'iy yo'ldoshning masofasiga bog'liq. Radio signal manbasining aniq joylashishini uning tarqalishining kechikishi bilan bilib, siz sun'iy yo'ldoshgacha bo'lgan aniq masofani bilib olishingiz mumkin. Va keyin, bir nechta ma'lum ob'ektlarga masofani uchburchak qilib, siz kosmosda qayerda ekanligingizni bilib olishingiz mumkin.

Tasavvur qiling, bu ko'k to'p bizning sayyoramizdir. Uning ustida 20 ming kilometr balandlikda uchta sun'iy yo'ldosh uchadi. Birinchisiga bo'lgan masofani o'lchaganingizda, siz ushbu doirada bir joyda ekanligingiz haqida ma'lumot olasiz - hozircha bu unchalik ma'lumotli emas. Ikkinchi sun'iy yo'ldoshdan kelgan signal sizning joylashuvingizni balandlikdan foydalanmasdan ikkita kesishish nuqtasiga aniqlab beradi. Uchinchi navigatsiya sun'iy yo'ldoshining signali ushbu nuqtalarning sirt ustidagi balandligini ko'rsatadi va navigatsiya tenglamasini rasmiy ravishda hal qiladi, joylashuvingizni ikkita mumkin bo'lgan joyga qisqartiradi. Aslida, ushbu koordinatalardan biri aql bovar qilmaydigan xususiyatlarga ega va muammoni to'liq hal qilib tashlab yuboriladi. To'rtinchi sun'iy yo'ldoshning signali xuddi shunday qiladi - u allaqachon navigatsiya tenglamasini aniq hal qiladi.

Har bir keyingi sun'iy yo'ldoshgacha bo'lgan masofani o'lchash joylashishni aniqlashning aniqligini oshiradi va bugungi kunda u 10 ga yaqin navigatsiya sun'iy yo'ldoshlarining standart ko'rinishi bilan 1 metrdan 3 metrgacha o'zgarib turadi.

Biz nazariyani saralab oldik, keling, amaliyotga o'tamiz. Hozirgi vaqtda turli xil navigatsiya modullari alohida sotiladi. Eng oddiy va eng qadimgilari faqat Amerika GPS kuzatuv tizimidan, o'rtacha 5-7 sun'iy yo'ldoshdan signallarni qo'llab-quvvatlaydi. Yana ilg'or modullar, shuningdek, Rossiya GLONASS yulduz turkumidan signallarni qabul qilishi mumkin, bu esa kuzatilgan sun'iy yo'ldoshlarning umumiy sonini o'rtacha ikki barobarga oshiradi. Sotuvda kompas bilan birlashtirilgan modullar ham mavjud, ular aniq navigatsiya va kursni saqlash uchun ishlatiladi.

Mening telefonim ekranida turli xil navigatsiya tizimlarining sun'iy yo'ldoshlari ko'rinadi. Doiralar GPS, uchburchaklar GLONASS, yulduzlar esa Xitoyning BeiDou. Shunday qilib, mening telefonim uch xil narsani qo'llab-quvvatlaydi navigatsiya tizimlari va ulardan signallarni birlashtirish joylashuvni aniqlashning aniqligini oshiradi. Endi mening boshim ustida 28 sun'iy yo'ldosh bor va signal faqat 7 dan mavjud. Ya'ni. Mening telefonim har bir sun'iy yo'ldoshning qaerdaligini oldindan biladi. Va 21 ta sun'iy yo'ldoshning yo'qolgan signali ularning ko'rinmasligini anglatadi. Navigatsiya signali juda zaif, VASCHE so'zidan, u deyarli aks etmaydi, uni relef, binolar, avtomobil tomi - boshingiz ustidagi yoki yon tomondan har qanday metall to'sib qo'ygan. Hatto derazadan tashqariga tushgan qor ham yaxshi qabul qilishga xalaqit beradi.

Loyihani amalga oshirish uchun sizga bir qator elektron modullar kerak bo'ladi: dasturlashtiriladigan Arduino Nano platformasi, 128 ga 32 nuqtali OLED ekran (u I2C avtobusi orqali ulanadi), UART orqali ulanish uchun GPS moduli, istalgan lityum batareya 200 milliamperdan yuqori quvvatga ega, litiy uchun himoya zaryadlovchi modul va 5 voltni olish uchun kuchaytiruvchi konvertor. Bu yerda menda uch xil tur bor, har biri qiladi. Men holatni ko'rsatish uchun rangli RGB LEDdan foydalanishni ham rejalashtirgandim, lekin loyiha davom etar ekan, undan voz kechdim.

Biz ekranni Arduino-ga ulaymiz va birinchi qiyinchilikka duch kelamiz. Standart kutubxona OLED ekrani 20 kB ni egallaydi, bu mikrokontroller xotirasining 70% ni tashkil qiladi va dastur uchun deyarli joy qoldirmaydi. Ilgari men altimetrni yig'ardim va har qanday yangi kod qatori xotiraning to'lib ketishiga olib kelishi va mikrokontroller ish paytida muzlashi bilan duch keldim. Shuning uchun men ko'proq foydalanaman yorug'lik kutubxonasi. U grafikalar bilan ishlamaydi va faqat OLED ekranida matnni ko'rsatadi va u faqat 1 KB xotirani egallaydi.

Men GPS modulini alohida panelga ulayman va birinchi navigatsiya ma'lumotlarini ko'raman - kosmosdan signal ushlandi va qayta ishlandi. Endi men ma'lumotni ekranda ko'rsataman. Sinf! 4 sun'iy yo'ldoshni ko'radi, hozir 3 va yana 4, allaqachon 5! GPSni yaxshiroq qabul qilish uchun modul derazadan tashqarida simga osilgan.

Loyihani ishlab chiqishda men GPS modullaridan foydalandim turli xil turlari. Oddiy GPS va Glonass bilan birlashtirilgan GPS. Operatsiyaning barqarorligini tekshirish uchun biz bir qator ko'p soatlik tajribalarni o'tkazishimiz kerak edi. Modullar ishlayotgan bo'lib chiqdi, lekin bilan dasturiy ta'minot kutubxonalari Men o'ylashim kerak edi. Bir nechta harakat qildi turli kutubxonalar, va TinyGPS+ bir vaqtning o'zida barcha GPS modullari bilan ishlagan yagona edi.

Umuman olganda, kutubxona NMEA protokolini tahlil qiladi; u shunchaki GPS moduli soniyasiga ikki marta tupuradigan ma'lumotlarni tahlil qiladi. Ishlov berilmagan ma'lumotlar oqimi shunday ko'rinadi.

Natijada, mening dasturiy ta'minotim deyarli har qanday GPS modulini UART orqali NMEA ma'lumotlar uzatish protokoli bilan ulash imkonini beradi. Aslida, bu RX va TX pinlariga ega modullarning aksariyati. Men GPS modulini Glonass-dan olishni tavsiya qilaman, u ko'proq sun'iy yo'ldoshlarni ko'radi, shuning uchun uning aniqligi yuqoriroq. Barcha komponentlar va modullarga havolalar ushbu videoning tavsifida.

Non taxtasi tizimning to'liq funksionalligini ko'rsatdi, endi siz hamma narsani apparatda yig'ishingiz mumkin. Men quvvat sifatida lityum batareyadan foydalanaman, u zaryadlovchi bilan himoya plataga ulanadi. Ushbu kengashda pastki rezistor R3 batareyani zaryadlash oqimini o'rnatadi, sukut bo'yicha 1 amper, bu kichik batareyalar uchun juda ko'p, shuning uchun qarshilikni almashtirish kerak. Ekranda siz turli xil zaryadlash oqimlari uchun qarshilik qiymatlari bo'lgan plastinkani ko'rasiz. Agar batareyangiz 500 milliamper soat quvvatga ega bo'lsa, unda siz zaryad oqimini ushbu qiymatdan yuqori bo'lmagan holda o'rnatishingiz kerak. Bular. siz 200 yoki 300 milliamperni o'rnatishingiz mumkin va 500 dan oshmasligi kerak.

Keyinchalik, kuchlanishni oshirish kerak, ekran va GPS moduli 5 voltdan quvvatlanadi. Buni kuchlanishni kuchaytiruvchi konvertor yordamida qilamiz. Ular odatda kuchlanishni 3,7 dan 5 voltgacha oshirish uchun quvvat banklariga o'rnatiladi. Men kichik yashil moduldan foydalanaman, u 300 mA gacha chiqishi mumkin va bu loyiha uchun etarli.

Men proshivkani yangiladim, endi asosiy ekranni yuklashda sun'iy yo'ldoshlardan joriy aniq vaqt, ko'rinadigan sun'iy yo'ldoshlar soni va kuzatuvchining joriy tezligi ko'rsatiladi, u o'tadi, chunki joylashuvni aniqlashda xatolik yuz berdi. Tugmani bosganingizda, ekran o'zgaradi. Bu yerda joriy tezlik qiymati va kuzatish davri uchun maksimal qiymat ko'rsatiladi. Boshqa ekranda nol nuqtagacha bo'lgan joriy masofa, undan maksimal qayd etilgan masofa va odometr mavjud.

Men barcha modullarning o'lchamlarini o'lchayman va ularni iloji boricha ixcham tartibga solishga harakat qilaman. Lekin qanchalik urinmayin, yupqa ekran keng ekranga mos kelmadi. GPS qabul qiluvchi ohm Shuning uchun men ekranni boshqa OLED 128x64 piksel bilan almashtirishga qaror qildim. Bu uni yanada ergonomik qiladi va kattaroq tugmaga imkon beradi. OLED ekranlari to‘liq mos keladi va minimal kodni tuzatishni talab qiladi, shuning uchun proshivka qurilmaning kichik va katta ekranli ikkala versiyasi uchun ham mavjud bo‘ladi.

O'rnatish sxemasi oddiy. Ekranni I2C avtobusiga ulashingiz kerak, bular A4 va A5 pinlari, gps moduli D3 va D4 pinlarida dasturiy ta'minotning ketma-ket portiga ulangan. D7 pinidagi tugma. Batareya quvvati orqali himoya moduli uni kalitga, keyin kuchaytiruvchi konvertorga torting va Arduino-ni 5 voltga ulang.

Komponentlarni qulay joylashtirish uchun men 7 dan 3 santimetrgacha yashil non taxtasidan foydalanaman. Ekranning ulagichga osib qo'yilishining oldini olish uchun men uni 5 mm bo'shliqlar bilan plastik stendlarga o'rnataman. Ekran va tugma o'rtasida GPS qabul qiluvchisi bo'ladi. Doskaning orqa tomonida Arduino boshqaruvchisi, batareya va himoya taxtasi bo'ladi. Batareya nozik lityum 350 milliamperdan foydalanadi, agar xato qilmasam, ular elektron sigaretlarda ishlatiladi, lekin aytganimdek, siz har qanday lityum batareyadan foydalanishingiz mumkin.

Men hamma narsani yana o'lchayman, o'lchayman va 3D printerda chop etish uchun korpus dizaynini tayyorlayman. TinkerCAD veb-saytida tom ma'noda 15 daqiqa va loyiha chop etishga tayyor. Men faylni flesh-diskga o'tkazaman, uni ishga tushiraman va biz ketamiz. Chop etish vaqti taxminan 40 minut, bu modullarni joylashtirishni sinab ko'rish uchun birinchi ko'rish organidir.

Doska va tugma joyiga mos tushdi, lekin ekran tom ma'noda bir millimetr qisqa edi va ichki stend yo'lda edi. Va shuning uchun hamma narsa mos keladi va o'z o'rniga o'rnatiladi. Ajoyib, men loyihani tahrir qilaman va chop etaman yakuniy versiya apelsin korpusi. Chop etishni tugatgandan so'ng, stolni sovutish uchun vaqt berishingiz kerak va shundan keyingina qismni yirtib tashlang, shunda old tomoni silliq bo'ladi va harakatlanmaydi.

Men plastmassaning mahkamlash chetini sindirib, tozalayman. Men ABS plastmassadan foydalanganim sababli, u aseton bilan keyingi ishlov berishdan o'tadi. Men uni cho'tka bilan qo'llayman, qatlamlar qo'shimcha ravishda bir-biriga yopishadi va tana kuchliroq bo'ladi va porloq bo'ladi.

Taxta korpus ichiga juda mos tushadi, mahkamlagichlar hizalanadi, tugma yopishmaydi. Bir uchida Arduino Nano ulagichi uchun, ikkinchi tomonida batareyani zaryad qilish uchun teshik mavjud. Bu biroz torroq bo'lib chiqdi, shuning uchun men uni skalpel bilan kengaytirdim.

Zaryadlovchi taxtaning qirralari bo'ylab chiqadigan joylar bor, ular konnektorning chuqurlashishiga to'sqinlik qiladi, shuning uchun men ularni igna fayli bilan maydalab tashlayman. Endi taxta o'z o'rnida yaxshi.

IN umumiy ko'rinish qurilma shunday ko'rinadi. Uy-joy tepada joylashgan. Uning ostida mikro kalit, ekranli non paneli, GPS moduli va tugma bo'ladi. Yon tomonda quvvatni oshiruvchi konvertor ham mavjud.

Kalit uchun alohida, men tugma ustidagi skalpel bilan qutidagi teshikni kesib tashladim. U tanaga kirib boradi va aralashmaydi.

Lehimlash vaqti keldi. Men ekranning birinchi kontaktini taxtaga lehimlayman, sinab ko'ring - hamma narsa to'g'ri va siz qolgan uchta kontaktni lehimlashingiz mumkin. Endi tugma. Va oqimni cho'tka bilan tozalashni unutmang. Men simlarni batareyani himoya qilish moduliga lehimlayman.

Ulanishda simlarning rangiga e'tibor berishni unutmang. Noto'g'ri ranglar vaqti-vaqti bilan Xitoydan keladi. Bunday holda, men ulagichni lehimlashga va simlarni to'g'ridan-to'g'ri lehimlashga qaror qildim yaxshiroq aloqa. Jarayon murakkab va lehimlashda aniqlik va ehtiyotkorlikni talab qiladi. Bundan tashqari, men kontaktlarni issiq elim bilan to'ldiraman, bu izlar va simlarni tasodifiy tortib olishdan himoya qiladi. Va biz darhol butun GPS modulini issiqlik qisqarishiga to'ldiramiz; bu kerak emas, lekin u qo'shimcha ravishda himoya qiladi mexanik shikastlanish va non taxtasiga o'rnatilganda qisqa tutashuvlar.

Shuningdek, biz kuchaytiruvchi konvertorni issiqlik qisqarishiga o'ramiz. Modullarni mahkamlash uchun men ikki tomonlama lentani ishlataman. Kengashni o'rnatayotganda, simlar uchun etarli joy yo'qligi ma'lum bo'ldi, shuning uchun men markazda teshik ochdim va u erdan elektr simlarini o'tkazdim.

Aytgancha, men salqin simsiz matkapni tavsiya qilaman. U bitta 18650 akkumulyatorda ishlaydi va tez orada platalar va korpuslarda shu kabi teshiklarni burish imkonini beradi.Avvallari bunday ish uchun Dremelni korpusdan chiqarib, rozetkaga ulashim kerak edi, lekin hozir menda doim bu matkap qo'lda.

Kengashning yuqori qismi yig'ilgan, simlar tishli va endi kalitni o'rnatishingiz kerak. Buning uchun biz uning ustidagi qo'shimcha oyoqlarni tishlaymiz, elektr ta'minotini ta'minlash va to'xtatish uchun faqat ikkitasi kerak. Biz ularga simni lehimlaymiz va odatdagidek issiqlik bilan hamma narsani qisqartiramiz. Keyinchalik, kalitni o'z o'rniga o'rnatishingiz va uni issiq elim bilan to'ldirishingiz mumkin. Endi trekerni yoqish va o'chirish qulay bo'ladi.

Men taxtani korpusga o'rnataman va uni to'rtta kichik vint bilan mahkamlang. Tegishli teshiklar allaqachon korpus tayanchlarida mavjud. Ekrandan himoya plyonkani olib tashlaganimda, displey va korpus o'rtasida katta bo'shliq borligini ko'rdim. Shuning uchun, men ba'zi elektronikadan shaffof qadoqni oldim va deraza o'lchamiga mos keladigan oynani kesib oldim. Va uni aseton bilan ishning plastmassasiga yopishtiring.

Biz sxema bo'yicha montajni amalga oshiramiz, bu erda hech qanday qiyinchilik va nuances yo'q. Faqat e'tibor bering, ortiqcha ortiqcha, minus minus. Kalitni to'g'ridan-to'g'ri zaryadlovchi modulning chiqishiga ulaymiz. Bu butun quvvat pallasini o'chiradi va batareyaning zaryadsizlanishini oldini oladi.

Barcha simlarni modullarga lehimlagandan so'ng, pastki taxtani ko'k rangli elektr lenta bilan yoping. Zaryadlovchi Arduino kontrolleri tepada bo'ladi va izolyatsiyasiz biror narsani qisqartirish imkoniyati mavjud.

Men himoya modulini lehimlayman va uni issiq elim bilan mahkamlayman.

Men batareyaning kontaktlarini ko'lmakcha qilib, batareyani haddan tashqari qizib ketmaslik uchun ularga simni tezda lehimlayman. Bir tomondan va boshqa tomondan. Shundan so'ng siz ulanishingiz kerak mikro USB simi va himoya moduliga quvvat bering, bu uning ishlashini faollashtiradi.

Bajarildi, endi siz proshivkani yuklashingiz kerak. Biz Arduino-ni kompyuterga ulaymiz, loyiha sahifasiga o'tamiz, unga havola video tavsifida mavjud. Arxivni yuklab oling, fayllarni oching, kutubxonalarni o'rnating, 32 yoki 64 nuqtali ekran uchun kerakli proshivka versiyasini oching va uni kontrollerga yuklang. Hammasi birinchi marta ishladi! GPS tayog'idan olingan ma'lumotlar. Ajoyib!

Men tekshirgichni o'z o'rniga o'rnataman, avtonom quvvat manbaini yoqaman ... iiiiiiii ... hech narsa. Arduino-dagi quvvat LED yoniq, lekin ekran yoqilmaydi. Shunday qilib, trindets sodir bo'ldi, sababi men hali ham bilmayman. O‘rnatilgan akkumulyatordan trekerning avtonom ishlashi uchun menga bir necha soat vaqt kerak bo‘ldi.

Avvaliga men kichik kuchaytiruvchi quvvat konvertori aybdor deb o'yladim. Ammo multimetr bilan tekshirish barqaror 5 voltni ko'rsatdi. Keyinchalik, men boshqa loyihadan qolgan avtonom quvvat modulini uladim, u katta kuchaytiruvchi konvertorga qurilgan - va mana, kuzatuvchi ishga tushdi, biroq bir necha soniyadan keyin qotib qoldi.

Men unga batareyani zaryad qildim va sun'iy yo'ldoshlarni ushlash uchun trekerni derazaga qo'ydim. Uch daqiqadan so‘ng u 4 ta sun’iy yo‘ldoshdan signal olib, manzilni aniqladi. Xo'sh, bu ishlaydi va ehtimol yig'ilishi mumkin degan ma'noni anglatadimi? Biz kuchaytiruvchi konvertorni o'zgartiramiz, aftidan, kichik quvvat manbaidan juda ko'p shovqin qiladi.

Buni amalga oshirish uchun men trekerni to'liq qismlarga ajratishim kerak edi, barcha simlarni lehimsiz va qayta yig'ishim kerak edi. Yangi quvvat moduli eskisi bilan bir xil joyda joylashtiriladi, ekran ostiga sig'ishi uchun faqat bitta stendni olib tashlash kerak edi.

Hammasi shu, aralashuvni oldini olish uchun simlarni cho'chqalarga aylantirdim. Aaand... bu harom yana yoqmadi. Aniqroq aytganda, u yoqildi va darhol ekrandagi artefaktlar bilan qotib qoldi. Ko'p soatlik ish va hammasi bekorga. Konverterni almashtirish yordam bermadi.

Men quvvat manbaiga kondansatkichlarni o'rnatishga harakat qildim - hech narsa yordam bermadi. Kuzatuvchi kuchaytirgich konvertorlaridan ham, laboratoriya quvvat manbaidan ham avtonom ishlashdan bosh tortdi - u muzlab qoldi yoki umuman yoqilmadi. Shu bilan birga, u Arduino USB ulagichidan mukammal ishladi.

Ketma-ket o'chirish usulidan foydalanib, men buning uchun OLED ekrani aybdor ekanligini bilib oldim - lekin nima uchun men hali ham tushunmayapman. Yechim birdan topildi. Avtonom elektr ta'minotining navbatdagi tekshiruvi paytida men tasodifan VIN piniga 5 voltni qo'lladim. Shuni ta'kidlaymanki, bu pin! Yo'q! 5 voltli quvvatni ta'minlash uchun mo'ljallangan va 7 dan 12 voltsgacha bo'lgan kuchlanishni talab qiladi.

Ammo shunga qaramay, treker darhol ishga tushdi va barqaror ishlay boshladi. Bular. Ma'lum bo'lishicha, kichik stabilizator muammoning manbai emas, balki boshqa narsa edi.

Shu bilan birga, men joriy iste'molni tekshirishga qaror qildim. 5 voltdan treker taxminan 70 milliamperni iste'mol qildi. Va 4 voltdan kuchaytiruvchi konvertor orqali u taxminan 110 milliamperga aylandi. Shunday qilib, mening kichik 350 milliamperli batareyam uch soat davom etadi batareyaning ishlash muddati. Va men hali elektr ta'minotini optimallashtirmadim, siz doimo yonib turadigan LEDlarni kesib, batareyani tejashingiz mumkin.

Kuzatuvchi to'liq barqaror ishlay boshladi, men uni derazada qoldirdim va bir necha daqiqadan so'ng u 4 ta sun'iy yo'ldoshni ushladi. Ajoyib

Agar siz menga Arduinoning g'alati xatti-harakatining sababini tushunishga yordam bermoqchi bo'lsangiz, unda kirish:

1 – Traker Arduino USB ulagichi orqali quvvatlansa ishlaydi.

2 – Agar siz uni Arduino 5V piniga har qanday quvvat manbaidan 5 voltdan quvvatlantirsangiz, treker muzlaydi va yoqilmaydi.

3 - Arduino VIN pin orqali 7 volt yoki undan ko'p kuchlanish qo'llanilsa, treker muzlaydi va yoqilmaydi.

4 - Traker bir xil VIN pin orqali nostandart 5 volt bilan quvvatlansa ishlaydi.

Tayyor qurilma universal avtonom tezlik o'lchagich, masofa o'lchagich, odometr va bitta korpusdagi sun'iy yo'ldosh aniq vaqt soatidir.

Yuklashdan so'ng asosiy ekranda yuqorida Grinvichdagi joriy vaqt va sana ko'rsatiladi, ikkinchi qator - soatiga 0,3 kilometr joriy tezlik va u yoqilgan paytdan beri qayd etilgan maksimal tezlik qiymati - 26 soatiga kilometr. Uchinchi qatorda nol nuqtagacha bo'lgan hozirgi masofa 530 metrni tashkil etadi va yoqilgandan beri erishilgan maksimal masofa 580 metrni tashkil qiladi. To'rtinchi qatorda odometr 923 metrni va ishlatilgan sun'iy yo'ldoshlar sonini ko'rsatadi.

Pastki chiziq belgilari GPS modulidan olingan ma'lumotlarning miqdori.

Tugmani qisqa bosganingizda, ekran ko'rinishi o'zgaradi va uni uzoq vaqt ushlab turganingizda, treker masofani o'lchash uchun nol mos yozuvlar nuqtasi sifatida joriy joyni eslab qoladi. Ikkinchi ekranda joriy va maksimal tezlik ko'rsatiladi. Uchinchi ekranda nol nuqtagacha bo'lgan masofa haqidagi ma'lumotlar mavjud. To'rtinchi ekran - bu odometr. Beshinchi kenglik va uzunlik.

Ushbu parametrlar bilan ekrandagi tugmani uzoq bosib, odometr va maksimal qiymatlarni tiklashingiz mumkin. Bular. odometrga o'ting va uni qayta o'rnatish uchun tugmani bosib ushlab turing.

Keling, sinovga o'tamiz. Endi treker 12 ta sun'iy yo'ldoshni ko'radi. Men joriy nol nuqtasini o'rnatdim va odometrni nolga qaytardim. Men xuddi shu narsani avtomobil odometrida qilaman. Mashinaning spidometriga ko'ra 1,2 kilometr yo'l bosib o'tib, men GPS-trekerda xuddi shunday 1205 metrni ko'rdim. To'g'ri chiziqdagi nol nuqtagacha bo'lgan hozirgi masofa 0,93 kilometrni tashkil qiladi. Xaritaga ko'ra, o'sha 930 metr, hozircha hamma narsa aniq.

Men uzoqroq masofani o'lchashga qaror qildim. Yana men treker va mashinada ko'rsatkichlarni nolga qaytardim. 8,4 kilometr yo'l bosib, men trekerda masofa qisqaroq ekanligini aniqladim - atigi 7974 metr. Bu holda nol nuqtagacha bo'lgan hozirgi masofa 4930 metrni tashkil qiladi. Keling, buni xaritada tekshirib ko'ramiz, bu juda aniq, xuddi shu 4930 metr. Bu aniq emas, lekin nima uchun odometr 400 metrda va qaysi odometr mashinada yoki GPSda yotibdi.

OK, chop etish vaqti keldi orqa qopqoq va biz yana sinovdan o'tamiz. Men yopyapman. Tayyor qurilmaning og'irligi 55 gramm bo'lib chiqdi, juda ko'p, ammo muhim emas - oxirida men uni qanday kamaytirishni ko'rsataman.

Men konkida uchish maydoniga keldim va xokkeychining tezligini o'lchashga qaror qildim. Jin ursin, u hali ham tezlik uchun qopqoqlarni olib tashlashi kerak. Natijada, "rus raketasi" kabi shiddatli tezlik - soatiga 5 kilometr. Men yurdim va hammasi, chunki konkida ship sovuqdan himoya qilish uchun aks ettiruvchi folga bilan izolyatsiyalangan. Sun'iy yo'ldoshlardan signal bor, lekin u aniq emas.

Keling, oxirgi sinovni o'tkazaylik Mobil telefon. Telefon 7 ta sun'iy yo'ldoshni ko'radi va kuzatuvchi 9. Men jurnalga kirishni boshlayman va trekerda odometrni qayta o'rnataman. Mayli... ketaylik. Uch kilometr yurgandan so'ng, telefon va kuzatuvchi odometrda bir xil qiymatlarni ko'rsatdi. 3017 va 3021 metr - super natija, men bunday aniqlikni kutmagandim.

Ammo odometr 12 ming kilometr masofani bosib o'tdi. Nordon emas. Ilgari, dasturni disk raskadrovka qilishda men bunday nosozlikka duch kelganman va treker darhol 7 ming kilometrga ko'chirildi. Uyga qaytgach, Googleda kenglik va uzunlik nolga teng nuqta yaratdim. Ma'lum bo'lishicha, u Atlantika okeanida, Gana qirg'oqlaridan unchalik uzoq bo'lmagan joyda joylashgan. Undan mening joylashuvimgacha bo'lgan masofani o'lchab, men o'sha 7 ming kilometrni oldim. Ma'lum bo'lishicha, GPS moduli ba'zan koordinatalar bo'ylab nollarni o'tkazib yuboradi. Buni dastur kodiga faqat bitta shart qo'shish orqali osongina tuzatish mumkin. Va bu nosozlik sinovlar davomida kuzatilmadi.

Menimcha, treker ajoyib bo'lib chiqdi; bu mening GPS modullari bilan to'g'ridan-to'g'ri ishlash bo'yicha birinchi tajribam. Nima uchun kerak? Bunday kuzatuvchi avtonom spidometr yoki mustaqil odometr bo'lib xizmat qilishi mumkin. U velosiped, mashina, o'yinchoq yoki kvadrokopterga joylashtirilishi mumkin. Shuningdek, u to'g'ri chiziqda ma'lum bir nuqtaga masofani o'lchash imkonini beradi, nol qiymatlar saqlanadi doimiy xotira. Maksimal erishilgan tezlik va masofa qiymatlarini eslab qoladi. Bularning barchasini avtonom tarzda amalga oshiradi va sun'iy yo'ldoshlardan boshqa hech kimga bog'liq emas. Va, albatta, bu aniq vaqt soatidir. Menga maksimal tezlikni va ob'ektlardan maksimal masofani o'lchash uchun kerak. To'g'ri, siz qanchalik balandlikka ko'tarilishingizni o'lchash uchun ekranga ko'proq balandlik qo'shishingiz kerak!

Keling, qanday qilib vaznni kamaytirishingiz haqida gapiraylik; buni qilishning eng oson yo'li - trekerni platformaga yig'ishdir Arduino Pro Mini 3,3 volt. Keyin sizga kuchaytiruvchi konvertor kerak bo'lmaydi, buning o'rniga 3,3 voltli kichik chiziqli stub bo'ladi, GPS moduli ushbu kuchlanishda muammosiz ishlaydi va ekranda siz quvvat stabilizatorini chetlab o'tishingiz kerak bo'ladi.

Xo'sh, men darhol savolga javob beraman: GSM modulini qo'shish va SMS orqali trekerni boshqarish mumkinmi? Ha mumkin. Buni amalga oshirish uchun, modulning o'ziga qo'shimcha ravishda, dastur kodiga SMS buyruqlarini qayta ishlashni ham qo'shishingiz kerak bo'ladi va bu alohida loyiha bo'lishi kerak.

Mana bugun, agar sizga bu video yoqqan bo'lsa, ishonchim komilki, sizga yoqadi va videoning havolasini do'stlaringizga ulashing.

Ko'rganingiz uchun tashakkur, hammaga omad tilaymiz va yangi videolarda ko'rishguncha! Hayr hayr!

Ma'lumotlar dataGPS.csv elektron jadvalida saqlanadi, uning formati xizmat talablariga mos keladi. Google Mening xaritalarim.

    Dasturlash tili: Arduino (C++)

Video ko'rsatma

Sizga nima kerak

Qanday yig'ish kerak

gps-tracker.ino // SPI orqali qurilmalar bilan ishlash uchun kutubxona#o'z ichiga oladi // SD karta bilan ishlash uchun kutubxona#o'z ichiga oladi // GPS qurilmasi bilan ishlash kutubxonasi#o'z ichiga oladi // GPS sinfining ob'ektini yarating va unga Serial1 ob'ektini o'tkazing GPS gps (1-seriya); // LED pin#define LED_PIN A0 // tugma pin #define BUTTON_PIN 13 // CS micro-SD kartasini ulang#CHIP_SELECT_PIN kodini aniqlang 9 // kartaga ma'lumotlarni yozish uchun vaqt oralig'i#INTERVAL 5000ni aniqlang // vaqt, sana, kenglik va uzunlik uchun massiv hajmini o'rnating#MAX_SIZE_MASS 16 ni aniqlang // joriy vaqtni saqlash uchun massiv char vaqti[MAX_SIZE_MASS]; // qayd holati bool stateRec = noto'g'ri; // joriy vaqtni eslab qoladi long startMillis = millis() ; bekor o'rnatish() ( // dasturdagi harakatlarni kuzatish uchun ketma-ket portni oching Serial.begin(115200); // monitor ochilguncha kuting ketma-ket port // dasturdagi barcha hodisalarni kuzatish uchun// while (!Serial) ( // ) Serial.print ("Serial init OK \r\n") ; // GPS moduli bilan ketma-ket ulanishni oching Serial1.begin(115200); // LEDni chiqish rejimiga o'rnating pinMode(LED_PIN, OUTPUT); // tugmani kirish rejimiga o'rnating pinMode(BUTTON_PIN, INPUT_PULLUP) ; // ishga tushirish haqidagi ma'lumotlarni ketma-ket portga chiqarish Serial.println("SD karta ishga tushirilmoqda..."); // SD kartani ishga tushiring while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Karta bajarilmadi yoki mavjud emas" ) ; kechikish (1000 ) ; ) // ma'lumotlarni ketma-ket portga chiqarish Serial.println("Karta ishga tushirildi"); // fayllar bilan ishlash uchun File sinfining dataFile obyektini yarating DataFile fayli = SD.open("dataGPS.csv" , FILE_WRITE) ; // agar fayl mavjud bo'lsa agar (ma'lumotlar fayli) ( // xotira kartasiga kelajakdagi ma'lumotlarning nomini yozing dataFile.println("Vaqt, koordinatalar, tezlik" ); // faylni yoping dataFile.close(); Serial.println("Yaxshi saqlang"); ) else ( Serial.println ("test.csvni ochishda xatolik" ) ; ) ) void loop() ( // Tugmani bosishni yozib oling agar (! DigitalRead(BUTTON_PIN) ) ( // xotira kartasiga "yozuv" / "yozmaslik" holatini o'zgartiring stateRec =! stateRec; // LED indikatorining holatini o'zgartirish digitalWrite (LED_PIN, stateRec); ) // agar ma'lumotlar GPS modulidan kelgan bo'lsa agar (gps.available()) ( // ma'lumotlarni o'qish va tahlil qilish gps.readParsing(); // GPS modulining holatini tekshiring switch (gps.getState () ) ( // hammasi joyida GPS_OK: Serial.println ("GPS yaxshi" ); // belgilangan vaqt oralig'i o'tgan bo'lsa agar (millis() - startMillis > INTERVAL && stateRec) ( // ma'lumotlarni xotira kartasiga saqlash saveSD(); // joriy vaqtni eslab qolish startMillis = millis() ; ) sindirish; // ma'lumotlar xatosi holati GPS_ERROR_DATA: Serial.println("GPS xato ma'lumotlari"); tanaffus; // sun'iy yo'ldoshlar bilan aloqa yo'q Case GPS_ERROR_SAT: Serial.println ( "GPS sun'iy yo'ldoshga ulanmagan"); sindirish; ))) // xotira kartasiga ma'lumotlarni saqlash funktsiyasi void saveSD() (Fayl dataFile = SD.open("dataGPS.csv", FILE_WRITE) ; // agar fayl mavjud bo'lsa va ochilgan bo'lsa agar (ma'lumotlar fayli) ( // joriy vaqtni o'qiydi gps.getTime(vaqt, MAX_SIZE_MASS); // xotira kartasiga vaqtni yozing dataFile.print(" \" " ); dataFile.print(vaqt); dataFile.print(" \" " ); dataFile.print ("," ); dataFile.print(" \" " ) ; // xotira kartasiga kenglik va uzunlik koordinatalarini o'qish va yozish dataFile.print(gps.getLatitudeBase10(), 6); dataFile.print ("," ); dataFile.print(gps.getLongitudeBase10(), 6); dataFile.print(" \" " ); dataFile.print ("," ); dataFile.print(gps.getSpeedKm()); dataFile.println("km/soat"); dataFile.close(); Serial.println("Yaxshi saqlang"); ) else ( Serial.println (“test.csv ni ochishda xatolik” ) ; ) )