DIY Glonass GPS-tracker - bescherming voor auto's. Wij registreren, configureren en installeren een GPS GSM-baken met onze eigen handen

Dit is een van de meest succesvolle headtrackerprojecten die ik ooit ben tegengekomen. De meest geavanceerde technologieën worden gebruikt: versnellingsmeter, gyroscoop en kompas, hetzelfde als in virtual reality-headsets realiteit uitrusting VR, PlayStation VR, Oculus Rift en anderen. En om het te maken heb je slechts minimale soldeervaardigheden en meer dan een bescheiden hoeveelheid geld nodig. En nu, in volgorde.

Opties

Totale kosten: 750 roebel.

Montage

Er zijn zeer eenvoudige en gedetailleerde officiële instructies. We hebben er alleen de verbindingstabel van nodig.

Ik denk dat commentaar overbodig is. We nemen gewoon twee planken, proberen ze op elkaar en lijmen ze aan elkaar dubbelzijdig plakband. Hierna verbinden we de contacten van de planken met draden in overeenstemming met de plaat.

Hier zou ik twee aanbevelingen willen doen. Eerst: sensorbord al Arduino-borden, en de meeste aansluitingen bevinden zich aan één kant (2,3,7,GNDx2), dus we laten het open (we verplaatsen het sensorbord naar de andere kant), en het is beter om de resterende twee draden (VCC en GND) te solderen ) voordat we de planken aan elkaar lijmen, want hierna wordt het moeilijker. Seconde: eerst solderen lange draden(GND en INT), en dan korte (SCL, SDA, AD0). Zoals je op de foto kunt zien, heb ik een fout gemaakt met INT. En het allerbelangrijkste: bezuinig niet op de gumboil! En als het neutraal is (bijvoorbeeld colofonium), hoeft het niet gewassen te worden.

De knop wordt eenvoudig aan het ene uiteinde aan de Arduino (10) gesoldeerd en het andere uiteinde via een draad aan de dichtstbijzijnde aarde (GND). In principe zit de knop al vast, maar ik heb hem extra gelijmd met cyanoacrylaat.

En dat is alles, je kunt het gebruiken!

Verbeteringen

Weet je nog hoe ik in het begin de twee-pins connector noemde? Het is nodig om nadruk te leggen. Het wordt met secondelijm direct onder de knop gelijmd. Twee kleine druppels zijn voldoende.

In principe vind ik het leuk verschijning apparaat, en het is vrij moeilijk om het te bederven. Maar voor de zekerheid heb ik het nog steeds in krimpkous verborgen.

We zijn niet geïnteresseerd in indicatoren - het is nog steeds een apparaat op het hoofd. En de knop is in principe gemakkelijk in te drukken, zelfs door middel van krimpkous, maar ik heb toch een klein gaatje gesneden en een klein stukje plastic op de knop zelf geplakt om hem gemakkelijker te voelen.

Firmware, kalibratie en configuratie

Alles is hier meer dan eenvoudig. Downloaden officiële aanvraag EDTracker GUI, uitpakken en starten.

Selecteer de versie (EDTraket2_9250) en de bijbehorende poort. Als gewenste haven nee, u kunt de lijst bijwerken met de knop “Scan Ports”. Wanneer u de juiste poort hebt geselecteerd, start u de firmware met behulp van de Flash-knop. Na voltooiing van de firmware begint de standaard 20 seconden durende kalibratie van de gyroscoop, waarbij u de tracker stil moet houden. Elke keer dat het apparaat wordt ingeschakeld, wordt dezelfde kalibratie uitgevoerd.

  1. Rechts openen we het Magnetometr-metselwerk
  2. Stel de gevoeligheid in op ongeveer 75% (schaal 3/4)
  3. Klik op Opnieuw opstarten en begin ons apparaat in alle mogelijke vlakken te draaien
  4. Dit moet worden gedaan totdat de matrixcoëfficiënten niet meer veranderen, maar er moeten minstens 500 punten worden verzameld, meer is beter

Op de afbeelding worden stippen weergegeven. Rode zijn ruwe metingen van de sensor, groene zijn herberekende metingen. Dit alles 3D-beeld draait rond nul, d.w.z. het midden van een bol met groene stippen.

Als u het kompas niet kalibreert, zal het volgen van de hoofdrotatie niet correct werken.

Er zijn hier niet veel instellingen:

  • Selectie van asmodus (exponentieel/lineair)
  • Gevoeligheid per as
  • Gladmaken

Ik hou er niet van om met mijn ogen naar de monitor te kijken, dus gebruik ik de exponentiële modus, gevoeligheid boven 100, anti-aliasing 75-90%. Ik voel me zo op mijn gemak.

Het enige wat je hoeft te doen is hem aan je favoriete headset te koppelen en je kunt meedoen aan de strijd! De enige knop is voor centreren.

Indrukken

De indrukken zijn uiterst positief. Ik had al een tracker op de camera en tag (GTX vTrack MkI) en ik heb iets om mee te vergelijken.

  • lage kosten
  • compactheid
  • geen camera (voor de paranoïde)
  • en het allerbelangrijkste: je hoeft je positie voor de computer niet te bepalen. Ik ga graag steeds hoger tijdens het spel, maar met de camera moest ik mezelf altijd in het midden van het beeld houden
  • ratelen in extreme posities - de prijs die moet worden betaald voor hoge gevoeligheid en exponentiële modus
  • De gyroscoopkalibratie zweeft weg; de headset ligt al een tijdje op tafel, je moet hem 20 seconden opnieuw kalibreren voordat je hem gebruikt.
  • hoge gevoeligheidswaarden worden niet opgeslagen na het uitschakelen; voor elk gebruik moet je de gevoeligheid opnieuw instellen - dit is hoogstwaarschijnlijk een bug in de firmware
  • De gebruikersinterface van EDTracker crasht met een fout nadat deze enige tijd is uitgevoerd
  • op sneltoets Het is onmogelijk om een ​​combinatie van knoppen toe te wijzen, en het feit dat het programma regelmatig crasht maakt het gebruik van HotKey onmogelijk. Het is goed dat een knop op het apparaat zelf voldoende is

Wat mij betreft zijn de nadelen vrij onbeduidend. En sinds open source software broncode- je kunt altijd iets repareren. Ik vind het apparaat leuk en ga het gebruiken. Misschien professionele apparaten Net zoals TrackIR misschien iets beters blijkt te zijn, ben ik niet bereid de voordelen van dit apparaat op te geven.

Een aantal jaren geleden had ik het idee om een ​​apparaat te ontwikkelen waarmee je de locatie van een object kunt volgen met behulp van GPS GSM-systemen, Ik begon met verwerven benodigde modules, maar het project kwam nooit tot bloei. En een paar maanden geleden herinnerde ik me dit idee weer en ging aan de slag. De volgende ideeën kwamen bij mij op: het apparaat moet autonoom en zo zuinig mogelijk zijn; controle en datatransmissie worden uitgevoerd door mobiele netwerken GSM-communicatie; bepaling van coördinaten met behulp van het systeem mondiale positionering GPS.

Voor netwerken mobiele communicatie Er worden GSM-modules gebruikt, die behoorlijk veel energie verbruiken; als de module constant is ingeschakeld, zal de lading van de batterijen of accu's niet voldoende zijn lang werk apparaten. Daarom besloot ik de geplande bedrijfsmodus te gebruiken, het apparaat heeft een realtime klok, op de ingestelde tijd wordt het apparaat wakker en wordt het ingeschakeld GSM-module wachten op een oproep of SMS-berichten. Nadat alle taken zijn voltooid, “valt het apparaat in slaap”. Dit resulteert in een aanzienlijke energiebesparing.

De volgende afbeelding toont een diagram van een GPS-GSM-tracker op een PIC16F690-microcontroller:

Het apparaat maakt gebruik van. De DD1-chip (PCF8583) is een chip met een alarmfunctie. Microcontroller DD2 uit de slaapmodus halen opgegeven tijd vindt plaats via een interrupt die wordt gegenereerd op de INT-lijn van de DD1-chip. Door de capaciteit van condensator C2* te veranderen, kunt u de kloksnelheid aanpassen.

Wordt gebruikt om coördinaten te bepalen. Het modulebord is aangepast om de module aan en uit te kunnen zetten op basis van een signaal van de microcontroller. Aanvankelijk ging de module onmiddellijk aan nadat de stroom werd ingeschakeld, wat niet geschikt was voor mij. Een spanningsstabilisator van 3,3 V is op de modulekaart geïnstalleerd in een SOT-23-pakket, dat een terminal heeft die de stabilisator aanstuurt, maar deze is rechtstreeks op de voedingslijn aangesloten. Ik heb de sporen doorgesneden en de controlepin voor de microcontroller vrijgemaakt. Op één exemplaar kon ik de spanningsstabilisator niet redden (de terminal brak af), dus heb ik een andere stabilisator geïnstalleerd, voor een spanning van 3V, in hetzelfde geval (DA1’ – LP2981-30DBVR). In China kun je twee soorten modules kopen: met een blauw bord en een grote antenne, en met een rood bord en een kleine antenne.

De microcontroller “communiceert” met beide modules via het UART-protocol, en voor de GSM-module wordt een hardware-UART gebruikt die in de microcontroller is ingebouwd, voor de GPS-module is een software-UART geïmplementeerd, de gegevensoverdrachtsnelheid is 9600 bps, de modules moeten eerst voor deze snelheid geconfigureerd zijn.

LED's HL1, HL2 zijn indicatielampjes; wanneer de microcontroller in de bedrijfsmodus staat, licht LED HL1 op; wanneer de microcontroller in de slaapmodus gaat, gaat de LED uit. De HL2-LED brandt als er tijdens de werking van het apparaat fouten optreden. De HL3-LED geeft de status van de GSM-module weer.

Er zijn twee belangrijke bedrijfsmodi: de stand-bymodus en de bakenmodus. In de slaapmodus wordt het apparaat volgens het opgegeven schema wakker en wacht inkomend gesprek Wanneer een oproep wordt gedetecteerd, reset het apparaat de oproep bij de tweede "piep" en blijft het resetten nog eens 20 seconden duren, bepaalt vervolgens de coördinaten en verzendt deze als sms-bericht naar de abonnee van wie de oproep afkomstig is. De wachttijd voor een inkomende oproep kan worden geconfigureerd. In de bakenmodus wordt het apparaat periodiek wakker opgegeven interval tijd, bepaalt de coördinaten en stuurt deze naar de abonnee.

Na de eerste inschakeling is de stand-bymodus standaard actief; u moet een sms-bericht naar het apparaat sturen met de tekst GPS-STARThhmm, waarbij uu-uren, mm-minuten de periode instellen. voor het verzenden van coördinaten. Als u bijvoorbeeld elk anderhalf uur coördinaten moet ontvangen, ziet het bericht er als volgt uit: GPS-START0130. In deze modus worden coördinaten verzonden naar de abonnee van wie het bericht is ontvangen. Om de tracker uit te zetten en naar de standby-modus te gaan, moet u een bericht sturen met de tekst GPS-STOP, het apparaat blijft werken zoals gepland.

Het apparaat leest tijdens elke weksessie sms-berichten op de simkaart. Het lezen wordt uitgevoerd na het bepalen en verzenden van coördinaten naar de abonnee, of nadat de inkomende oproep in de standby-modus is verstreken (als de oproep niet is ontvangen).

Bij het verzenden van berichten moet u rekening houden met enkele nuances. Het is een feit dat als u een bericht verzendt terwijl het apparaat "slaapt" (de GSM-module is uitgeschakeld), het bericht de volgende keer wordt weergegeven wanneer u het inschakelt. komt mogelijk niet onmiddellijk bij de module aan; de vertraging kan variëren van enkele minuten tot enkele uren, afhankelijk van de kenmerken mobiele operator. Om dit te doen, heeft het apparaat een pauze voor het wachten op sms-berichten; het aftellen van de pauze begint na het bepalen en verzenden van de coördinaten naar de abonnee (de duur van de pauze kan worden aangepast). Het is dus raadzaam om tijdens de sms-wachtpauze of tijdens het wachten berichten naar het apparaat te sturen inkomend gesprek.

Er zijn twee opties om de bakenmodus in te schakelen: tijdens de volgende ontwaking van het apparaat, een oproep plaatsen, na ontvangst van een bericht met coördinaten (tijdens de sms-wachtpauze), een sms-bericht verzenden GPS-STARThhmm. Vervolgens schakelt het apparaat over naar de bakenmodus en de volgende keer wordt het wakker na de in het bericht aangegeven tijdsperiode. De tweede optie, zonder te bellen, een sms-bericht verzenden GPS-STARThhmm (terwijl u wacht op een inkomende oproep), na het lezen van het bericht bepaalt het apparaat de coördinaten en stuurt deze naar de abonnee, waarna het overschakelt naar het baken modus en in slaap vallen, zal de pauze voor het wachten op SMS-berichten in dit geval niet worden uitgevoerd.

Tijdens het bepalen van de coördinaten wordt de waarde van de real-time klok bijgewerkt om de klokafwijking als gevolg van onnauwkeurigheid te compenseren. Exacte waarde De tijd wordt geëxtraheerd uit gegevens die zijn ontvangen van de GPS-module. Bovendien wordt de voedingsspanning van het apparaat gemeten, waarvan de waarde wordt verzonden in een sms-bericht met coördinaten. De berichttekst met coördinaten ziet er als volgt uit: “5511.21316,N,06117.54100,E 4.07V.” Als er binnen een bepaalde tijd geen coördinaten zijn ontvangen, wordt er een bericht als: “GEEN KOORD 4.10V” naar de abonnee gestuurd. De wachttijd voor coördinaten van de GPS-module kan worden geconfigureerd.

De ontwaaktijd (schema) van het apparaat en andere parameters kunnen op twee manieren worden ingesteld: schrijf het geheugen van de microcontroller vooraf naar EEPROM tijdens het programmeren, of gebruik SMS versturen berichten naar het apparaat.

Laten we eens kijken naar de eerste methode voor het instellen van parameters; de onderstaande tabel toont de basisinstellingen van de GPS-GSM-tracker en de bijbehorende adressen in het EEPROM-geheugen:

EEPROM-geheugenadres Parameter Beschrijving Standaardwaarde
0x00 Horloge De tijdwaarde die naar de realtime klok wordt geschreven wanneer het apparaat voor het eerst wordt ingeschakeld (tek_time) 00 uur
0x01 notulen 00 min.
0x02 Tgsm Wachttijd voor inkomende oproepen,

2 min ≤ Tgsm ≤ 30 min

10 minuten
0x03 Tgps Wachttijd voor coördinaten van de GPS-module, 2 min ≤ Tgps ≤ 20 min 7 minuten
0x04 Tsms Wachttijd sms-bericht,

2 min ≤ Tsms ≤ 20 min

5 minuten
0x05 UTC Tijdzone

00u ≤ UTC ≤ 23u

00u
0x06 Horloge Wektijd apparaat (Alarm 1) 00 uur
0x07 notulen
0x7E Horloge Wektijd apparaat, (Alarm 61)
0x7F notulen
0x80 Code Foutinformatie, (Fout 1)
0x81 Maand
0x82 Dag
0x83 Horloge
0x84 notulen
0xF3-0xF7 Foutinformatie, (Fout 24)
0xF8-0xFC Foutinformatie, (Fout 25)

De tijd voor alarmen moet opeenvolgend in oplopende volgorde worden ingesteld vanaf 00:00 uur (referentiepunt), de waarde van het eerste alarm hoeft niet gelijk te zijn aan 00:00 uur, de tijd van de laatste wekker in de EEPROM geheugen mag niet groter zijn dan 23:59 uur. Het resterende ongebruikte EEPROM-cellengeheugen moet een waarde hebben die groter is dan 23, (24 of meer); de celwaarde is meestal ingesteld op 0xFF (255).

De tijdsperiode die is opgegeven in het SMS-bericht voor de bakenmodus mag niet langer zijn dan 23:59 (1439 minuten) en mag niet korter zijn dan 00:05 (5 minuten). Anders is de standaardperiode 1 uur.

GPS-module ontvangt tijd in Greenwich Mean Time, dus u moet de tijdzone instellen op basis van uw regio.
In totaal kunnen in het EEPROM-geheugen 61 tijdwaarden voor de wekker worden ingesteld in het bereik van 00:00-23:59 uur. Als de parameters onjuist of helemaal niet zijn opgegeven, of als de in de tabel aangegeven limieten worden overschreden, worden de standaardwaarden gebruikt.

Laten we de tweede methode voor het instellen van parameters bekijken via sms berichten. Wanneer u het apparaat voor de eerste keer inschakelt, leest het gedurende deze periode gedurende 5 minuten de sms-berichten op de simkaart. U moet het onderstaande bericht verzenden of het vooraf opnemen op de simkaart voordat u het inschakelt:

NAST– – – – –[Alarm 1] –[Alarm 2]–…–[Alarm 11]

Voorbeeld: NAST0850–10–07–05–05–0900–1200–1500–1800–2100–2300

Bij deze optie kunt u maximaal 11 alarmen instellen, waarvan de volgorde moet beginnen vanaf het startpunt (00:00 uur), zoals hierboven vermeld. Na het lezen van het bericht worden alle parameters herschreven in het EEPROM-geheugen van de microcontroller. Als de bewerking succesvol was, knipperen de LED's HL1, HL2 drie keer, waarna het apparaat in de slaapstand gaat. IN verdere instellingen De tracker kan snel worden gewijzigd door een sms-bericht met nieuwe parameters te sturen wanneer het apparaat wakker wordt (tijdens de sms-wachtpauze of tijdens het wachten op een inkomende oproep). Er wordt geen rekening gehouden met de parameter (deze wordt alleen gebruikt wanneer de tracker voor de eerste keer wordt ingeschakeld), maar kan niet worden overgeslagen.

Ik voer de eerste lancering van de tracker als volgt uit: laten we bijvoorbeeld het schema nemen (12.00–15.00–18.00–21.00 uur), ik stel de parameter in op 11.50 uur, dus na het succesvol accepteren van de parameters wordt de tracker over 10 uur wakker. notulen. Daarna bel ik hem en ontvang de coördinaten, de tijd van de tracker wordt bijgewerkt volgens GPS-gegevens, waarna de tracker volgens het schema wakker wordt.

Alle SMS-berichten op de SIM-kaart worden na elke leeshandeling verwijderd om ruimte vrij te maken voor volgende berichten.

Als de microcontroller, wanneer hij voor de eerste keer wordt ingeschakeld, de GSM-module niet kan initialiseren of als de real-time klok niet reageert op opdrachten, stopt de programma-uitvoering ( kritische fout), en de HL2 “Error” LED zal constant knipperen.

Als er in de toekomst fouten optreden, zal het programma verder worden uitgevoerd, waarbij het probleemgebied wordt overgeslagen, en de HL2 “Error” LED zal oplichten, die aan blijft nadat het apparaat in de slaapstand is gegaan, en uitgaat bij het daaropvolgende ontwaken. Bovendien verzendt de microcontroller in realtime een foutcode via de UART-lijn. Om fouten te monitoren met behulp van een computer (evenals opdrachten die naar de GSM-module worden verzonden), kunt u een USB-UART-converter op het apparaat aansluiten op het TX-punt in het diagram. Fouten worden aan de terminal gemeld in de vorm van een bericht ERRxx, waarbij xx de foutcode is. Op punt RX' kunt u berichten monitoren die van de module naar de microcontroller komen.

Naast de indicatie wordt foutinformatie opgeslagen in het EEPROM-geheugen van de microcontroller. Elke fout neemt 5 bytes in beslag in het geheugen (zie de tabel hierboven): de eerste byte bevat de foutcode (nummer), de tweede en derde byte - de datum waarop de fout plaatsvond (maand, dag), de vierde en vijfde byte - de tijd van de fout (uren en minuten). Er worden 128 bytes toegewezen voor fouten in het EEPROM-geheugen, beginnend bij adres 0x80 (128), zodat de microcontroller de laatste 25 fouten kan opslaan.

Om het energieverbruik te verminderen LED-indicatie fouten kunnen worden uitgeschakeld; hiervoor moet de linker aansluiting van weerstand R4 in het diagram worden aangesloten op de gemeenschappelijke draad. Een lijst met alle fouten vindt u in tekstbestand, die aan het einde van het artikel kan worden gedownload.

Het apparaat wordt aan twee zijden gemonteerd printplaat 49 x 62 mm groot, voornamelijk SMD-elementen zijn op het bord geïnstalleerd. Voor voeding gebruik ik er drie AA-batterijen. Alle onderdelen van het apparaat zijn ondergebracht in een waterdichte behuizing met afmetingen van 85x58x33 mm (aangekocht in China). In de slaapmodus verbruikt het apparaat 90-104 µA, in de wachtmodus 5,5 mA, terwijl de coördinaten worden bepaald 60 mA. Een van de tracker-kopieën werkt al ongeveer 2 maanden voor mij, terwijl hij volgens schema 5 keer per dag wakker wordt, de wachttijd voor een inkomend gesprek is 10 minuten. De voedingsspanning daalde gedurende deze tijd met ongeveer 0,3V.

De firmware aan het einde van het artikel heeft een beperking: coördinaten kunnen slechts 10 keer worden opgevraagd, na het verzenden van het 10e sms-bericht met coördinaten valt de tracker in slaap en wordt niet wakker. Firmware met beperkingen opgeheven betaald, neem dan contact op met de contacten aangegeven op de pagina “ ”, daarnaast kan ik een tracker op bestelling samenstellen.



Dit is al de tweede versie van de tracker. Met de eerste kon een object alleen via sms worden gevolgd. Wat, weet je, niet helemaal handig is. Daarom werd besloten om een ​​tweede versie te maken, maar deze keer om met GPS-monitoringdiensten te werken. Nog niet alles wat gepland is, is geïmplementeerd, maar de belangrijkste functies werken al.

De tracker verzendt elke minuut gegevens naar gratis server GPS-monitoring via Wialon IPS v1.1-protocol: locatiegegevens, snelheid, koersrichting. Het is ook mogelijk om vanaf elk nummer coördinaten via sms te configureren en op te vragen.

De volgende commando's zijn mogelijk:

1. De tracker instellen:

$0000#INSTELLING#111111111111111;2222#

0000 - Oud wachtwoord of standaardwachtwoord (tijdens de eerste installatie).
1111111111111111 - Apparaat-ID die is opgegeven op de server (willekeurig 15 cijfers).
2222 - Nieuw wachtwoord. In de toekomst zouden alle commando's ermee moeten beginnen. Het wachtwoord moet overeenkomen met het wachtwoord dat is ingesteld op de GPS-monitoringserver.

Als reactie verschijnt een bericht als: “ID-1111111111111111; PASS-2222" met een nieuwe ID en een nieuw wachtwoord.

0000 is uw wachtwoord.

Als antwoord komt er een bericht in de vorm: “A;111111;222222;N3333.33333;E4444.44444;5;1”

“A” - Gegevens zijn betrouwbaar of “V” - gegevens zijn verouderd.
"111111" is UTC-tijd.
"222222" - datum.
"N3333.33333" - breedtegraad.
"E4444.44444" - lengtegraad.
“5” - snelheid in km/u.
“1” - voeding van de hoofdbron of “0” - voeding van de ingebouwde batterij.

Als bepaalde gegevens niet beschikbaar zijn, wordt in plaats daarvan “NA” verzonden.

3.Alarm:

In dit geval worden locatiegegevens met tussenpozen van 30 seconden naar de server verzonden. Als reactie hierop worden berichten ontvangen als: “ALARM AAN”. Als u het commando opnieuw verzendt, wordt het alarm uitgeschakeld. Als reactie hierop komen berichten als: “ALARM UIT”.

Als reactie hierop verschijnen berichten als: “Je saldo 50.01r.”

Als er een opdracht wordt verzonden verkeerd wachtwoord, dan ontvang je als reactie een bericht als: “Wachtwoord ERROR”.

Nu het technische gedeelte.

Basis: Arduino PROMINI 3.3V 8MHz, GSM-modem NEOWAY M590, GPS-module UBLOX NEO-6M, externe actieve GPS-antenne.
Voeding: DC-DC converter gebaseerd op MP2307DN, batterijlaadcontroller STC4054, batterij 3,7v 900mAh.

De levensduur van de batterij is 9 uur, op voorwaarde dat de batterij niet nieuw is.

Wat de GPS-monitoringserver betreft, er zijn veel van dergelijke services. Als u wilt, kunt u hiervoor met een andere server werken; u hoeft alleen maar het IP-adres en het poortnummer van de server in de code te wijzigen. Het belangrijkste is dat de server het werken met het Wialon IPS v1.1-protocol ondersteunt. Het lichaam is gemaakt van PVC. Het bleek echter dat het er niet zo goed uitzag, maar ik heb niet erg mijn best gedaan, het zal sowieso niet zichtbaar zijn. In de toekomst wil ik controle toevoegen extern apparaat of een soort relais en het ontvangen van enkele parameters over de staat van de auto. Hiervoor heeft het bord twee ingangen en één uitgang. Dit is nog niet softwarematig geïmplementeerd.

Er werd ongeveer 1500 - 2000 roebel uitgegeven.












Ik zal nu niet alle nuances van de technische en softwarekant beschrijven. Als iemand geïnteresseerd is, schrijf dan, ik zal proberen iedereen te antwoorden. er is alles wat je nodig hebt: een diagram, bronnen in SI, een hex-bestand voor de tracker-firmware (het bestand moet worden geflasht voor EEPROM, een bestand met de .eep-extensie), firmware en programma voor GPS, softwarebestanden voor Sprint -Lay-out, informatie over het Wialon IPS-protocol en een paar foto's.

Zandbak

Natasja 27 april 2016 om 12:12 uur

DIY GPS-tracker voor een auto

  • DIY of doe het zelf,
  • Autogadgets *,
  • Gadgets *

Dit is al de tweede versie van de tracker. Met de eerste kon een object alleen via sms worden gevolgd. Wat, weet je, niet helemaal handig is. Daarom werd besloten om een ​​tweede versie te maken, maar deze keer om met GPS-monitoringdiensten te werken. Nog niet alles wat gepland is, is geïmplementeerd, maar de belangrijkste functies werken al.

De tracker verzendt elke minuut gegevens naar een gratis GPS-monitoringserver met behulp van het Wialon IPS v1.1-protocol: locatiegegevens, snelheid, koersrichting. Het is ook mogelijk om vanaf elk nummer coördinaten via sms te configureren en op te vragen.

De volgende commando's zijn mogelijk:

1. De tracker instellen:

$0000#INSTELLING#111111111111111;2222#

0000 - oud wachtwoord of standaardwachtwoord (tijdens de eerste installatie).
1111111111111111 - Apparaat-ID die is opgegeven op de server (willekeurig 15 cijfers).
2222 - Nieuw wachtwoord. In de toekomst zouden alle commando's ermee moeten beginnen. Het wachtwoord moet overeenkomen met het wachtwoord dat is ingesteld op de GPS-monitoringserver.

Als reactie verschijnt een bericht als: “ID-1111111111111111; PASS-2222" met een nieuwe ID en een nieuw wachtwoord.

0000 is uw wachtwoord.

Als antwoord komt er een bericht in de vorm: “A;111111;222222;N3333.33333;E4444.44444;5;1”

“A” - Gegevens zijn betrouwbaar of “V” - gegevens zijn verouderd.
"111111" is UTC-tijd.
"222222" - datum.
"N3333.33333" - breedtegraad.
"E4444.44444" - lengtegraad.
“5” - snelheid in km/u.
“1” - voeding van de hoofdbron of “0” - voeding van de ingebouwde batterij.

Als bepaalde gegevens niet beschikbaar zijn, wordt in plaats daarvan “NA” verzonden.

3.Alarm:

In dit geval worden locatiegegevens met tussenpozen van 30 seconden naar de server verzonden. Als reactie hierop worden berichten ontvangen als: “ALARM AAN”. Als u het commando opnieuw verzendt, wordt het alarm uitgeschakeld. Als reactie hierop komen berichten als: “ALARM UIT”.

Als reactie hierop verschijnen berichten als: “Je saldo 50.01r.”

Als bij een opdracht een onjuist wachtwoord wordt verzonden, wordt als reactie een bericht als “Wachtwoord ERROR” verzonden.

Nu het technische gedeelte.

Basis: Arduino PROMINI 3.3V 8MHz, GSM-modem NEOWAY M590, GPS-module UBLOX NEO-6M, externe actieve GPS-antenne.
Voeding: DC-DC converter gebaseerd op MP2307DN, batterijlaadcontroller STC4054, batterij 3,7v 900mAh.

De levensduur van de batterij is 9 uur, op voorwaarde dat de batterij niet nieuw is.

Wat de GPS-monitoringserver betreft, er zijn veel van dergelijke services. Als u wilt, kunt u hiervoor met een andere server werken; u hoeft alleen maar het IP-adres en het poortnummer van de server in de code te wijzigen. Het belangrijkste is dat de server het werken met het Wialon IPS v1.1-protocol ondersteunt. Het lichaam is gemaakt van PVC. Het bleek echter dat het er niet zo goed uitzag, maar ik heb niet erg mijn best gedaan, het zal sowieso niet zichtbaar zijn. In de toekomst wil ik de besturing van een extern apparaat of een soort relais toevoegen en hiervoor enkele parameters verkrijgen over de staat van de auto. Het bord heeft twee ingangen en één uitgang; Dit is nog niet softwarematig geïmplementeerd.

Er werd ongeveer 1500 - 2000 roebel uitgegeven.

Ik zal nu niet alle nuances van de technische en softwarekant beschrijven. Als iemand geïnteresseerd is, schrijf dan, ik zal proberen iedereen te antwoorden.

Na verschillende experimenten met Arduino besloot ik een eenvoudige en niet al te dure GPS-tracker te maken waarvan de coördinaten via GPRS naar de server worden verzonden.
Gebruikte Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS-module (voor het verzenden van informatie naar de server), GPS-ontvanger SKM53-gps.

Alles werd gekocht op ebay.com, voor een totaal van ongeveer 1500 roebel (ongeveer 500 roebel voor de Arduino, iets minder voor de GSM-module, iets meer voor de GPS).

GPS-ontvanger

Eerst moet u begrijpen hoe u met GPS moet werken. De geselecteerde module is een van de goedkoopste en eenvoudigste. De fabrikant belooft echter een batterij om satellietgegevens op te slaan. Volgens het gegevensblad is koud begin zou 36 seconden moeten duren, maar onder mijn omstandigheden (10e verdieping vanaf de vensterbank, geen gebouwen in de buurt) duurde het maar liefst 20 minuten. De volgende start is echter al 2 minuten.

Een belangrijke parameter van apparaten die op de Arduino zijn aangesloten, is het stroomverbruik. Als u de Arduino-converter overbelast, kan deze doorbranden. Voor de gebruikte ontvanger bedraagt ​​het maximale stroomverbruik 45mA @ 3,3V. Waarom de specificatie de stroomsterkte zou moeten aangeven bij een andere spanning dan de vereiste (5V) is mij een raadsel. De Arduino-converter is echter bestand tegen 45 mA.

Verbinding
GPS wordt niet aangestuurd, hoewel het een RX-pin heeft. Met welk doel is onbekend. Het belangrijkste wat u met deze ontvanger kunt doen, is gegevens uitlezen NMEA-protocol van TX-pin. Niveaus - 5V, alleen voor Arduino, snelheid - 9600 baud. Ik verbind VIN met VCC van de Arduino, GND met GND, TX met RX van het overeenkomstige serienummer. Ik lees de gegevens eerst handmatig uit en vervolgens met behulp van de TinyGPS-bibliotheek. Verrassend genoeg is alles leesbaar. Nadat ik naar Uno was overgestapt, moest ik SoftwareSerial gebruiken, en toen begonnen de problemen: sommige berichttekens gingen verloren. Dit is niet erg kritisch, aangezien TinyGPS ongeldige berichten afsnijdt, maar het is behoorlijk onaangenaam: je kunt de 1Hz-frequentie vergeten.

Een korte opmerking over SoftwareSerial: er zijn geen hardwarepoorten op de Uno (behalve degene die is aangesloten op USB Serial), dus je moet software gebruiken. Het kan dus alleen gegevens ontvangen op een pin waarop het bord interrupts ondersteunt. In het geval van Uno zijn dit 2 en 3. Bovendien kan slechts één zo'n poort tegelijk gegevens ontvangen.

Zo ziet de “proefstand” eruit.

GSM-ontvanger/zender


Nu komt het interessantere deel. GSM-module - SIM900. Het ondersteunt GSM en GPRS. Noch EDGE, noch vooral 3G, worden ondersteund. Voor het verzenden van coördinaatgegevens is dit waarschijnlijk goed: er zullen geen vertragingen of problemen optreden bij het schakelen tussen modi, en GPRS is nu bijna overal beschikbaar. Echter, voor nog wat meer complexe toepassingen dit is misschien niet langer voldoende.

Verbinding
De module wordt ook bestuurd door seriële poort, met hetzelfde niveau - 5V. En hier hebben we zowel RX als TX nodig. De module is schild, dat wil zeggen dat hij op de Arduino is geïnstalleerd. Bovendien is het compatibel met zowel mega als uno. De standaardsnelheid is 115200.

We monteren het op Mega, en hier wacht ons de eerste onaangename verrassing: de TX-pin van de module valt op de 7e pin van Mega. Op de 7e pin van de mega zijn er geen interrupts beschikbaar, waardoor je bijvoorbeeld de 7e pin moet aansluiten op de 6e pin, waarop wel onderbrekingen mogelijk zijn. We zullen dus één Arduino-pin verspillen. Nou, voor een mega is het niet erg eng - er zijn tenslotte genoeg pinnen. Maar voor Uno is dit al ingewikkelder (ik herinner je eraan dat er maar 2 pinnen zijn die interrupts ondersteunen - 2 en 3). Als oplossing voor dit probleem kunnen we voorstellen om de module niet op de Arduino te installeren, maar met draden aan te sluiten. Dan kunt u Serie1 gebruiken.

Na het verbinden proberen we met de module te “praten” (vergeet niet deze aan te zetten). We selecteren de poortsnelheid - 115200, en het is goed als alle ingebouwde seriële poorten (4 op mega, 1 op uno) en alle softwarepoorten op dezelfde snelheid werken. Op deze manier kunt u een stabielere gegevensoverdracht realiseren. Ik weet niet waarom, hoewel ik het wel kan raden.

We schrijven dus primitieve code voor het doorsturen van gegevens tussen seriële poorten, stuur Atz, stilte als antwoord. Wat is er gebeurd? Ah, hoofdlettergevoelig. ATZ, het komt goed. Hoera, de module kan ons horen. Wilt u ons uit nieuwsgierigheid even bellen? ATD +7499... De vaste telefoon gaat, er komt rook uit de Arduino, de laptop gaat uit. De Arduino-converter is doorgebrand. Het was een slecht idee om hem 19 volt te geven, hoewel er geschreven staat dat hij van 6 tot 20 V kan werken, 7-12 V wordt aanbevolen. De datasheet van de GSM-module vermeldt nergens iets over het stroomverbruik onder belasting. Nou, Mega gaat naar het magazijn met reserveonderdelen. Met ingehouden adem zet ik de laptop aan, die +19V ontving via de +5V-lijn van USB. Het werkt, en zelfs de USB is niet doorgebrand. Bedankt Lenovo voor het beschermen van ons.

Nadat de converter was doorgebrand, zocht ik naar het huidige verbruik. Dus piek - 2A, typisch - 0,5A. Dit valt duidelijk buiten de mogelijkheden van de Arduino-converter. Heeft aparte voeding nodig.

Programmering
De module biedt volop mogelijkheden gegevensoverdracht. Vanaf spraakoproepen en SMS en eindigend met GPRS. Bovendien is het voor dit laatste mogelijk om uit te voeren HTTP-verzoek met behulp van AT-commando's. Je zult er meerdere moeten sturen, maar het is de moeite waard: je wilt niet echt handmatig een verzoek indienen. Er zijn een paar nuances bij het openen van een datatransmissiekanaal via GPRS - onthoud de klassieke AT+CGDCONT=1, “IP”, “apn”? Hier is dus hetzelfde nodig, maar dan iets sluwer.

Om een ​​pagina op een specifieke URL te krijgen, moet u de volgende opdrachten verzenden:
AT+SAPBR=1,1 //Open carrier (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //verbindingstype - GPRS AT+SAPBR=3,1,"APN","internet" //APN, voor Megafon - internet AT+HTTPINIT //Initialiseer HTTP AT+HTTPPARA="CID",1 //Carrier ID om te gebruiken. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //De daadwerkelijke URL, na sprintf met coördinaten AT+HTTPACTION=0 // Vraag gegevens op met behulp van de GET-methode //wacht op antwoord AT+HTTPTERM //stop HTTP

Als er dus verbinding is, krijgen wij een reactie van de server. Dat wil zeggen dat we in feite al weten hoe we coördinaatgegevens moeten verzenden als de server deze via GET ontvangt.

Voeding
Omdat het voeden van de GSM-module via een Arduino-converter, zoals ik ontdekte, een slecht idee is, werd besloten om op dezelfde eBay een 12v->5v, 3A-converter te kopen. De module houdt echter niet van 5V-voeding. Laten we voor een hack gaan: sluit 5V aan op de pin waar 5V uit de Arduino komt. Vervolgens maakt de ingebouwde converter van de module (veel krachtiger dan de Arduino converter, MIC 29302WU) vanaf 5V wat de module nodig heeft.

Server

De server schreef een primitieve versie: coördinaten opslaan en tekenen op Yandex.maps. In de toekomst is het mogelijk om diverse features toe te voegen, waaronder ondersteuning voor veel gebruikers, “gewapend/ongewapend”-status, de staat van de autosystemen (ontsteking, koplampen etc.) en mogelijk zelfs bediening van de autosystemen. Uiteraard met passende ondersteuning voor de tracker, die soepel verandert in een volwaardig alarmsysteem.

Veldtesten

Zo ziet het gemonteerde apparaat eruit, zonder behuizing:

Nadat u de stroomomvormer hebt geïnstalleerd en in de behuizing van een dood DSL-modem hebt geplaatst, ziet het systeem er als volgt uit:

Ik heb de draden gesoldeerd en verschillende contacten uit de Arduino-blokken verwijderd. Ze zien er zo uit:

Ik sloot 12V aan in de auto, reed door Moskou en kreeg de track:


De trackpunten liggen behoorlijk ver uit elkaar. De reden hiervoor is dat het verzenden van gegevens via GPRS relatief lang duurt, en gedurende deze tijd worden de coördinaten niet gelezen. Dit is duidelijk een programmeerfout. Het wordt ten eerste behandeld door onmiddellijk een pakket coördinaten in de loop van de tijd te verzenden, en ten tweede door asynchroon te werken met de GPRS-module.

De zoektijd voor satellieten op de passagiersstoel van een auto bedraagt ​​enkele minuten.

Conclusies

Met uw eigen handen een GPS-tracker op Arduino maken is mogelijk, maar dat is niet het geval triviale taak. De belangrijkste vraag nu - hoe u het apparaat in de auto kunt verbergen zodat het niet wordt blootgesteld aan invloeden schadelijke factoren(water, temperatuur), was niet bedekt met metaal (GPS en GPRS worden afgeschermd) en viel niet bijzonder op. Voorlopig ligt hij gewoon in de cabine en wordt hij aangesloten op de sigarettenaansteker.

Welnu, we moeten ook de code corrigeren voor een vloeiender spoor, hoewel de tracker de hoofdtaak al vervult.

Gebruikte apparaten

  • Arduino Mega2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • Op SIM900 gebaseerd GSM/GPRS-schild
  • DC-DC 12v -> 5v 3A omvormer