InPace - en Arduino baserad GPS-data logga fitness armband med bluetooth och en iOS app (1 / 13 steg)
Steg 1: Hur fungerar den InPace elektroniken?
Hela systemet drivs av en 3.7V 500mAh litium Polymer batteri.
Att bygga växeln "on/off" (som ligger i centrum av Kontrollpanelen i bilden ovan) till läge tillåter LiPo laddning modul 's röda (+) tråd form en anslutning till spänningsregulatorer (+) ingång. Batteriet är svart (-) jordledning ansluts till spänningsregulatorer (-) ingång.
Spänningsregulator omvandlar LiPo batteri utspänning av ~3.7V i 5V. Detta är standardinställningen men denna spänningsregulator klarar av 4-12V DC utspänning genom att justera det fasta motståndet. Regulatorn är endast kan ge maximalt 1A (1000mA) av strömmen. InPace förbrukar 750mA (+/-~ 150mA) medan påslagen så denna begränsning inte är ett problem.
Den spänningsregulator (+) och (-) utgångsstift förbinds av en röd och svart kabel till en bit av PCB som jag skar i ett 6 x 4 pins avsnitt med hjälp av en Dremel verktyg. Syftet med detta PCB är power distribution. 12 stift (hälften av dem) används som en gemensam 5V VCC; den andra 12 används som en gemensam grund.
Den Arduino Pro Mini "RAW" pin (märkt VIN på en Arduino Uno och de flesta andra styrelser) är ansluten till en av (+) stift på power distribution tavlan jag gjorde. VCC (+) och jord (-) stift av följande kopplas också till power distribution styrelsen: modulen Bluetooth 4.0, RGB LED och Kontrollpanelen.
Alla moduler är ansluten till Arduino enligt följande:
---------------------------------------
Adafruit microSD-kort läsa/skriva Pins
CS -> pin D-10
MOSI -> pin D-11
MISO -> pin D-12
CLK -> pin D-13
-----------------------------
Adafruit Ultimate GPS_Module modul Pins
RX -> pin D-2
TX -> pin D-3
-----------------------------
Röd Björn Lab BLE Mini Bluetooth 4.0 modul Pins
(BLE Mini) RX -> TX (Arduino)
(BLE Mini) TX -> RX (Arduino)
-----------------------------
momentan taktil knapp--> stift 8 (för att skicka Bluetooth data)
momentan taktil knapp--> pin 9 (för start/stopp GPS datan förde in i Loggboken)
-----------------------------
Gemensam anod RGB LED
4 stift: röd | VIN | Green | Blå |
(1) röd--> pin A0 (på Arduino)
(2) VIN--> VCC (på power distribution bordet)
(3) Green--> pin A1 (på Arduino)
(4) blå -> pin A2 (på Arduino)
-----------------------------
Om allt är korrekt ansluten och Arduino har programmerats med min InPace kod, kommer 3 virtuella påstår nu att existera. Dessa kallas systemState (int) inom koden.
Om systemState = 1, systemet gör ingenting men väntar användarinteraktion. RGB LED blir röd. Om det inte redan, kommer att GPS-modulen försöka få satellit fix.
Om GPS knappen trycks, Arduino anmäls via digital stift 9, systemState ändras till 2 och RGB LED lyser grön. När systemState = 2, InPace koden tolkar NMEA GPS satellitdata att GPS-modulen är utfodring Arduino. Jag använde Arduino SoftwareSerial biblioteket för att göra stift 2 och 3 fungerar som RX och TX stift att möjliggöra kommunikation med GPS-modulen. Efter att tolkas till strängar, skrivs GPS-data sedan till microSD-kortet genom stift 10-13 (Arduino) som är anslutna till microSD utbrytning som ovan. Longitud, latitud, datum och tid läggs till en text-fil gpsdata.txt (den enda filen på microSD-kortet).
Här är ett exempel på hur strängarna GPS-data sparas till microSD-kortet.
Start
-105.269462
40.005664
04/22/2015
23:47:14
-105.269363
40.005630
04/22/2015
23:47:16
-105.269409
40.005664
04/22/2015
23:47:17
-105.269340
40.005699
04/22/2015
23:47:20
slutet
Om GPS knappen trycks igen, kommer dataloggning att stoppas. Om knappen Bluetooth trycks samtidigt systemState = 2, ingenting kommer att hända.
Om knappen Bluetooth används medan Arduino är tillbaka i "virtuell stat 1" (systemState = 1, väntar på användaråtgärder), systemState sätts till lika med 3 och den textfil data skickas via bluetooth. Detta görs genom att gå igenom alla rader i filen gpsdata.txt och skriver ut det till följetong som en UTF-8-kodade strängar. RGB LED blir blå förrän varje fodra av gpsdata.txt har skickats via Bluetooth genom följetong (stift 0 och 1, RX och TX för Arduino) minst en 57600 Baud.