Afstand meten (en meer) apparaat met behulp van de Arduino en GPS (5 / 5 stap)

Stap 5: Arduino programmering

1. LCD Driver

Eerst en vooral, zocht ik naar een eenvoudige en kleine bibliotheek voor het LCD-scherm, de Nokia 5110. Er waren een paar verschillende bibliotheken voor dit LCD: Adafruit, Sparkfunen Henning Karlsen' s. Onder deze bibliotheken koos ik Henning Karlsen van omdat ik nodig alleen eenvoudige tekst weer te geven met een paar verschillende lettergroottes. Henning Karlsen heeft aparte bibliotheek voor afbeeldingen zo goed. Ik bedank Henning voor zijn delen zijn nice work op de bibliotheek. Henning van bibliotheek ondersteunt 3 verschillende lettergroottes: SmallFont (tekst en nummer, 6 × 8), MediumNumber (alleen nummer, 12 × 16) en BigNumber (nummer enkel, 14 x 24). Slechts aan de onderkant van deze bibliotheek is dat de middelgrote en grote lettertypen geen teksten, maar alleen getallen ondersteunen. Maar ik zou alleen getallen weer te geven met grotere lettertypes nodig, was deze beperking geen probleem mee.

2. de afstand berekenen tussen twee locaties

Er zijn aantal websites tonen hoe Bereken afstand tussen twee locaties van breedtegraden en posities. Movable Type Scripts bevat diverse berekeningen van afstand, peiling en andere nuttige conversies met behulp van de Haversine formule en BlueMM geboekt de Excel formule voor het berekenen van de afstand die is in principe op dezelfde manier als Haversine.

De berekening is vrij eenvoudig, maar ik vond dat er een probleem was: Arduino (Atmega328p) niet overweg kan met meer dan 6-7e decimalen dat is heel belangrijk in trigonometrische berekening voor korte afstand.

Arduino referentie pagina zegt "Floats hebben 6-7 alleen decimale cijfers van precisie. Dat betekent dat het totale aantal cijfers, niet het nummer rechts van de decimale komma. In tegenstelling tot andere platforms, waar kunt u nauwkeuriger met behulp van een double (bijvoorbeeld maximaal 15 cijfers), op de Arduino, is dubbele hetzelfde formaat als zweven."

Laat me u een voorbeeld geven. Stel dat we begonnen vanuit een positie A (lat: 40,00, lange: 80) naar een positie B (lat: 40.01, lange: 80,00). Dat wil zeggen, zijn we verhuisd 0,01 graden in latitude alleen. Als u berekenen van de afstand met behulp van de Haversine formule op uw PC, krijgt u ongeveer 1,111.9m. Echter, Arduino wordt berekend door het 3,110.8m. Grote fout! Meer interessante ding is dat zelfs als je het verschil van de latitude 0,001 of 0.0001 graden verminderen, u dezelfde resultaten, 3,110.8m krijgt. Dus onderzoeken ik verder wat precies deze fout veroorzaken. Natuurlijk weet ik dat de boosdoener is de float precisie beperking zoals gezegd hierboven. Maar ik wilde graag weten welk deel van de berekening door Arduino deze grote fout veroorzaken. In de formule van Haversine zijn er COS, SIN en ACOS functies gebruikt. Ik getest een paar verschillende berekeningen met behulp van deze functies en de berekening van COS en SIN functies minimaal beïnvloeden maar het probleem was de ACOS. Als u de formule op uw PC alleen binnenkant ACOS beugel berekenen, zult u 0.9999999848 krijgen. Zie mijn punt? Het aantal decimalen hieronder 6e in functie ACOS is eigenlijk belangrijk het hoekige verschil voor kleine afstand wilt berekenen, maar helaas Arduino niet overweg kan met dit. Niet alleen voor kleine afstand maar voor zelfs relatief lange afstand (zeg meer dan 1 graad bijvoorbeeld) er is fout tussen de resultaten op de PC en Arduino.

Nou, dus ik begon te denken over hoe om te voorkomen dat de berekening van de goniometrische functie als hij zich in 6e decimalen zijn belangrijk. En ik vond een oplossing! In plaats van hoekige verschil tussen twee posities te berekenen en vervolgens de afstand berekend door te vermenigvuldigen met de gemiddelde aarde straal, berekening van een ratio van de hoek tussen twee posities (lengte- en breedtegraad afzonderlijk) meer dan 360 graden en verdeel de omtrek van de aarde door deze verhouding. Met andere woorden, de nummers groot terwijl berekening te houden. De Arduino float type heeft een beperking op het kleine aantal decimalen, maar relatief grote getallen kan omgaan!

Hier is mijn formule:

De gemiddelde omtrek van de aarde is 2 x 6,371,000m x π = 40,030,170 m

Δd (lat) = 40,030,170 x ΔΘ (lat) / 360 (ervan uitgaande dat ΔΘ is klein)

Δd(Long) = 40,030,170 x ΔΘ(long) x cosΘm / 360 (Θm: bedoel latitude tussen twee posities)

Nu, de afstand is √ [Δd (lat) ^ 2 Δd (lang) ^ 2]

Ik heb deze methode getest door het meten van afstand van huis naar mijn werk en het werkte boete. Eerst en vooral, ik heb de coördinaten van mijn huis en mijn werk en vervolgens de afstand door Haversine methode en mijn bovenstaande formule berekend. Er is een verschil in de resultaten, maar negligeable.

Schets van de Arduino is aangesloten. De LCD-bibliotheek kan worden gedownload van hier.

Dank u voor het lezen van mijn Instructable. Hoop iemand vindt dit nuttig.

Gerelateerde Artikelen

Afstand meten en obstakel detectie met behulp van NXP 89v51rd2fn en ultrasone sensor HC-SR04.

Afstand meten en obstakel detectie met behulp van NXP 89v51rd2fn en ultrasone sensor HC-SR04.

Iedereen maakt gebruik van arduino uno of mega om projecten te maken zoals ze makkelijk te gebruiken zijn en de code voor de arduino gemakkelijk beschikbaar zijn op de arduino forums is en niemand atmel, philips of andere microcontroller gebruik te m
Zet een oude mobiele telefoon in een apparaat (met behulp van een arduino) verzenden gegevens

Zet een oude mobiele telefoon in een apparaat (met behulp van een arduino) verzenden gegevens

Wat zal dit apparaat doen?Als alles klaar is, zal de combinatie van circuits, arduino en modded cellphone kunnen autonoom om gegevens te verzenden via teksten via het mobiele netwerk. Dit zou zijn sensorgegevens, bijvoorbeeld uit de sensoren weer.Wat
GPS auto tracking-apparaat met behulp van de Arduino en smartphone

GPS auto tracking-apparaat met behulp van de Arduino en smartphone

Tegen het einde van 2013, werden meer dan 7,2 miljoen auto's wereldwijd geïdentificeerd als gestolen, dus het is zeer belangrijk om uw voertuig te beschermen tegen diefstal.in dit project, zullen we u helpen :)u hoeft niet te kopen dure onderdelen zo
Afstand meten door ultrasone Sensor met behulp van Arduino

Afstand meten door ultrasone Sensor met behulp van Arduino

Het is zeer eenvoudig en nuttig project die worden in ons dagelijks leven gebruikt kan.Dingen die u zult moeten project staat hieronder...Arduino Uno.Ultrasone sensor.4 male naar vrouwelijke aansluitende draad.USB-kabel aansluiten.Stap 1: Circuit ver
Androino! Controle van een Arduino vanaf uw Android-apparaat met behulp van een goedkope bluetooth-module.

Androino! Controle van een Arduino vanaf uw Android-apparaat met behulp van een goedkope bluetooth-module.

Dit instructable toont je hoe om te lezen van sensor-waardes van een Arduino met uw Androïde apparaat met behulp van een seriële goedkoop bluetooth-apparaat dat u voor onder $10 op dealextreme of ebay bestellen kunt.In het volgende voorbeeld gebruikt
Maak een aangepaste 3D prothetische afdrukbare apparaat met behulp van gegevens uit een CT-scanner

Maak een aangepaste 3D prothetische afdrukbare apparaat met behulp van gegevens uit een CT-scanner

Dit Instructable illustreert hoe maak je een aangepaste 3D prothetische afdrukbare apparaat met behulp van gegevens uit een CT-scanner. In dit geval zal ik het proces voor het maken van een aangepaste luchtpijp stent illustreren. Dit Instructable bev
Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

er zijn veel elektronische apparaten die gebruikmaken van de SPI bus, of Serial Peripheral Interface bus, voor communicatie (bijvoorbeeld verschillende sensoren, LCD displays, digitale potentiometers, D/A en A/D converters, draadloze zenders en ontva
Een Echo-apparaat met behulp van de Computer C.H.I.P. $9

Een Echo-apparaat met behulp van de Computer C.H.I.P. $9

Dit zijn instructies voor de bouw van de behuizing van een vak uit een aantal oude USB-luidsprekers die implementeert een Amazon Alexa Echo-apparaat met behulp van de C.H.I.P. $9-computer uit de volgende ding Co. (http://www.getchip.com/).Dus wat is
Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Web in te schakelen voor uw interactieve sensoren over desktop, smartphone en tablet apparaten.Deze tutorial beschrijft in detail hoe met de gratis SensorMonkey -service op afstand besturen van een pan en tilt webcam aangesloten op een Arduino met ni
Rijden van een webpagina in realtime met behulp van de Arduino, SensorMonkey en Processing.js

Rijden van een webpagina in realtime met behulp van de Arduino, SensorMonkey en Processing.js

externe visualisatie van real-time sensorgegevens.Deze tutorial beschrijft in detail hoe u met de gratis SensorMonkey -service push realtime sensor data van een Arduino naar een webpagina voor visualisatie met behulp van Processing.js. Geen server-si
Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

ik begon dit project met als doel goedkoop draaien mijn RC helikopter in iets van een UAV of althans te passen sommige sensoren aan het verminderen van aanvaringen en andere "mis haps."Nu helaas aan het begin van het project misrekend ik mijn kl
Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

chipKIT platen hebben meestal veel meer geheugen en rekenkracht dan vele Arduino boards Arduino boards, en dientengevolge, ze zijn zo veel beter in het manipuleren van gegevens.Aan de andere kant is de Arduino IDE gemakkelijk te gebruiken en te begri
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
Ik hou van u teken met behulp van een Arduino

Ik hou van u teken met behulp van een Arduino

dit is een leuke project dat een decoratief doel fungeert. Mijn vrouw vond het geweldig toen ik gaf het aan haar voor Valentijnsdag. Haar woorden waren, "Als u niet had vertelde me dat je dit hebt gemaakt, ik zou hebben gedacht was uit de winkel!&quo