Mätning av avstånd (och mer) enhet använder Arduino och GPS (5 / 5 steg)

Steg 5: Arduino programmering

1. LCD-chaufför

Först av allt, sökte jag för en enkel och liten bibliotek för LCD, Nokia 5110. Det fanns några olika bibliotek för denna LCD: Adafruit, Sparkfunoch Henning Karlsen' s. Bland dessa bibliotek valde jag Henning Karlsen eftersom jag behövde bara enkel text visas med ett par olika storlekar. Henning Karlsen har separata bibliotek för grafik också. Jag skulle vilja tacka Henning för att hans dela hans fina arbete på biblioteket. Henning's library stödjer 3 olika storlekar: SmallFont (text och nummer, 6 × 8), MediumNumber (nummer, 12 × 16) och BigNumber (nummer endast, 14 x 24). Enda nackdelen med detta bibliotek är att de medelstora och stora teckensnitt inte stöder texter men bara siffror. Men jag behöver bara siffror att Visa med större teckensnitt, var denna begränsning inga problem med mig.

2. avstånd beräkning mellan två orter

Det finns antal webbplatser visar hur man beräknar avståndet mellan två platser från latituder och longituder. Movable Type skript visar olika beräkningar av avstånd, bärande och andra användbara konverteringar använda Haversine formel och BlueMM postat Excel formel för att beräkna avstånd vilket är i princip samma sätt som Haversine.

Beräkningen är ganska enkelt men jag hittade ett problem: Arduino (Atmega328p) inte kan hantera mer än 6-7 decimaler vilket är mycket viktigt i trigonometriska beräkningar för kort avstånd.

Arduino referenssida säger "flöten har endast 6-7 decimaler för precision. Det innebär att det totala antalet siffror, inte numret till höger om decimalkommat. Till skillnad från andra plattformar, där du kan få mer precision genom att använda en dubbel (t.ex. upp till 15 siffror), på Arduino, är dubbel samma storlek som flöte."

Låt mig ge er ett exempel. Antag att vi startade från en position A (lat: 40,00, lång: 80) till en position B (lat: 40.01, lång: 80,00). Det vill säga flyttade vi 0,01 grader latitud bara. Om du beräknar avståndet med Haversine formel på din PC, kommer att du få ca 1,111.9m. Dock beräknas Arduino som 3,110.8m. Stora fel! Mer intressanta är att även om du minskar latitude skillnaden till 0.001 eller 0,0001 grader, du får samma resultat, 3,110.8m. Så undersöka jag närmare vad exakt orsakar felet. Jag vet naturligtvis skyldige är flyttal precision begränsningen som sa ovan. Men jag ville veta vilken del av beräkningen av Arduino orsakar stora felet. I den Haversine formeln finns COS, synd och ACOS funktioner används. Jag testade några olika beräkningar med dessa funktioner och fann vid beräkningen av COS och SIN funktioner påverkar minimal men problemet var ACOS. Om du beräknar formeln på datorn bara inne i ACOS fäste, får du 0.9999999848. Se min poäng? Decimalerna nedan 6 i ACOS funktion är faktiskt viktigt att beräkna kantiga skillnaden för små avstånd, men tyvärr Arduino inte kan hantera detta. Inte bara för små avstånd utan även relativt lång sträcka (säga över 1 grad för anföra som exempel) det finns fel mellan resultaten på PC och Arduino.

Tja, så jag började tänka på hur man undviker trigonometriska funktionen beräkning när över 6 decimaler är viktiga. Och jag hittade en lösning! I stället för beräkning av kantiga skillnaden mellan två positioner och sedan beräkna avståndet genom att multiplicera betyder jordens radie, beräkning av ett förhållande av vinkeln mellan två positioner (latitud och longitud separat) över 360 grader och klyftan omkretsen på jorden av detta förhållande. Med andra ord hålla siffrorna stora medan beräkningen. Arduino's float typ har en begränsning på antalet decimaler som liten, men kan hantera relativt stora siffror!

Här är min formel:

Jorden betyder omkrets är 2 x 6,371,000m x π = 40,030,170 m

Δd (lat) = 40,030,170 x ΔΘ (lat) / 360 (om ΔΘ är små)

Δd(Long) = 40,030,170 x ΔΘ(long) x cosΘm / 360 (Θm: betyder latitud mellan två positioner)

Avståndet är nu √ [Δd (lat) ^ 2 Δd (lång) ^ 2]

Jag har testat denna metod genom att mäta avståndet från hemmet till mitt arbete och det fungerade bra. Först av allt, jag fick koordinaterna för mitt hem och mitt arbete och därefter beräknas avståndet med Haversine metod och av min formeln ovan. Det finns vissa skillnader i resultat, men instrument.

Arduino skiss bifogas. LCD biblioteket kan laddas ner från här.

Tack för att läsa min Instructable. Hoppas någon hittar detta användbara.

Se Steg
Relaterade Ämnen

Mätintervall för puls enhet använder arduino

Detta projekt visar du hur att designa och bygga en apparat för att mäta pulsen med hjälp av våra härliga Arduino!Steg 1: Grundläggande information om projektet En pulsmätare är en personlig övervakning anordning som gör att man kanSom du ser i figur...

Kör motorn med android använder arduino och bluetooth

Hej vänner! Detta är min första instructable någonsin och idag jag ska visa dig hur man kör 2 motorer med android använder arduino och en billigt Bluetooth-modul. Detta projekt kan vara till stor hjälp för dig att bygga robotar som kan kontrolleras a...

Hem automationssystem använder Arduino och SIM900 GSM modul

Hej du! Som jag har nästan avslutat mina studier på Lunds tekniska högskola, jag var tvungen att göra ett examensarbete och min tanke var att göra en häpnadsväckande sak (jag vet att det roliga: D) att visa alla att jag är en bra prototyp maker och j...

Hinder Avoider Robot använder Arduino Uno och IR-närhet Sensor

Följ stegen för att skapa ett hinder undvika Robot använder Arduino Uno och IR-rörelsesensorSteg 1: Delar krävs1) Arduino Uno R3 (klon kommer att göra)2) IR närhet sensorer (2 rekommenderas)3) chassi med motorer4) bakbord5) L293D Motor förare ombord6...

Dataintrång min RC bil använder Arduino och Android Smart Phone

Har en gammal leksaksbil? Jag hackade min använder Arduino och en H bro krets för att kontrollera motorerna, brukade min Sony Z1 Android telefon styra med de senaste 1Sheeld jag fick från kicken.Jag tänkte att använda gyroskop sensorn i att driva det...

ADS-B realtid flyg tracker och kontrollerande enhet använder Intel Edison

Automatisk beroende positionsövervakning-sändning (ADS-B) är ett exakt satellitbaserade övervakningssystem. ADS-B ut använder GPS-teknik för att bestämma ett flygplan läge, fart och andra data, och sänder att information till ett nätverk av marken st...

Temperatur mätning Display på 16 x 2 LCD med att justera temperaturen övre och undre gräns för varning använder Arduino

Hej alla, här är mitt första projekt med Arduino. I detta projekt kommer jag visa dig hur du mäter temperatur och visar det på en 16 x 2 LCD med Arduino, och vi kan använda 2-knappen för att välja vad vi vill se på LCD: grader Celsius eller Fahrenhei...

Ultrasonic Mapmaker använder Arduino och MatLab

Vision är en av de mest spännande sinnen du kan utrusta på din robot. Förmågan att uppfatta hinder kan en robot att göra ett välgrundat beslut om ytterligare förflyttningar.Det är dock också inte de enklaste sinnena att genomföra några skäl. För det...

Använder Arduino Leonardo som mus och tangentbord, kontroll av bluetooth.

En awsome funktion i Arduino Leonardo, som gör det särskilda styrelsemöte, är att det kan fungera som mus och tangentbord på datorn. Detta kan vara nyttigt till controll datorn av olika sätt, till exempel styrspak och här BLUETOOTH!saker som används...

Hemautomation använder arduino med wifi, bluetooth och IR-fjärrkontroll

Detta är en handledning för att visa hur man bygger ett hem automationssystem med arduino med Wifi [ESP8266-01], bluetooth (HC-05) och IR-fjärrkontroll. Hemautomation resulterar i ett smartare hem och används för att ge en högre och friskare levnadss...

Blinkande lampor använder Arduino och LumiGeek

jag använde Arduino UNO kombinerat med tre LumiGeek sköldar för att köra belysning. LumiGeek har ägnat sköldar för att stödja 1 Watts RGB lysdioder som kräver konstant ström, adresserbara RGB LED Strip och icke-påverkbara RGB LED Strip.Steg 1: 1 Watt...

SONAR system använder Arduino och Android

I detta projekt jag guidar dig hur du gör din egen Android app som kan kommunicera med Arduino via Bluetooth.Arduino använder en Ultrasonic sensor och en servomotor för att få avståndet på olika position och dessa värden som överförs till vår Android...

TV KONTROLLERBAR fjärrdatorn MP3 spelare använder ARDUINO och bearbetning

Hej var och en. här visar jag min projekt TV kontrollerbar fjärrdatorn MP3 spelare med bearbetning programvara och arduino ombord. Denna projektidé är baserad på att kontrollera datorn med TV-fjärrkontrollen. I detta projekt skapade jag egna MP3-spel...

Utveckla ett ATtiny firefly projekt använder Arduino och det är IDE

Jag såg nyligen ett intressant projekt av Karl Lunt som används en ATtiny13 för att efterlikna en firefly (http://www.seanet.com/~karllunt/fireflyLED.html). Detta i sig, är verkligen inte unik, men det fick mig att tänka om en av mina tidiga microcon...

Kontrollera AC apparater via sms-använder Arduino fjärrstyra fläkt och ljus

Hej vänner, jag är Ostin. Jag ska förklara, hur man styr en fläkt och ljus med hjälp av arduino via sms.Låt oss slå på/av en fläkt och ljus genom sms-kommandon, faktiskt jag har för projektet för att styra en bevattning motor i jordbruksmark, bara fö...

Hemgjord robotarm med hjälp av standarddelar använder Arduino och en bearbetning GUI

Jag nyligen pensionerad och saker jag lovat mig själv var att när jag slutar jag skulle slutföra alla de projekt som jag hade sprungit runt i mitt huvud sedan jag var tonåring. Det är omkring 50 år eller så av projekt. På den tiden fanns det inga mik...

Hur man gör och använder arduino som en Internet-leverantör för en ATtiny 45/85

i detta instructable jag visar dig hur du kan göra din egen Atting programmering sköld för arduino och sedan använda arduino som programmerare.Vanligtvis om du inte har en sköld kan du göra en skärbräda version för att programmera ATtiny. (Steg 1)Men...

Twinkle Twinkle använder Arduino och Summer; Den enklaste handledningen

Hej beslutsfattare,Kan spela våra favorit barndom rim "Twinkle Twinkle Little Stars" på vår favorit styrelse Arduino!Steg 1: Hur fungerar det?Pulse bredd Modulation, eller PWM, är en teknik för att få analog resultat med digitala hjälpmedel. Dig...

QR koden betalning enhet använder Intel Edison

Hoppa över de nästa 2 styckena om du inte är intresserad av vår motivation.Det var en punkt när kontanter är en tillräcklig betalningsmetod. Som vår vardag blir livligare och teknik rör sig framåt, vi har en hel del alternativ för att betala: kontant...