Ansluta öppen loger och accelerometer



Jag skriver detta så jag kan komma ihåg hur man gör detta senare. Detta är ett hack som jag för några år sedan och bara drog ur garderoben för att använda igen.

BAKRUND

Det är vanligt att du vill spara data från en accelerometer med en enhet som är liten. Jag använder två brädor från Spark kul; Öppnar logg och MMA8452 Breakout (dvs accelerometer, som i din smartphone).

Styrelsens MMA8452 breakout är en låg kostnad 3-axlig accelerometer monterad på en liten tryckt kretskort. Rubriken innehåller meddelande stiften (I2C (tror jag)). Det finns exempel på hur du ansluter och använder detta med en arduino utveckling ombord.

IDÉN

Den öppna logg styrelser är i grunden en arduino med en microSD-kortplats kopplad. Arduinoen tar emot seriella data från TX/RX linjer och sparar det till microSD-kortet. Stiften tog fram huvudet är precis vad du behöver att koppla till en arduino mini - så avsedda användning är att använda detta för att läsa några utdata från en annan arduino krets.

SLADDAR

Så om du bara vill läsa och spara data accelerometer, klokt det att koppla den direkt till den data loggern. Du måste bara klura ut vilket stift gå där...

MMA8452: OpenLog(atmega328) motsvarande stift använder Arduino IDE

3.3V---Vcc huvudet

SDA---Pin 27 atmega 328---A4 (gula kabeln i foto)

SCL---stift 28 på atmega 328---A5 (vit tråd i foto)

GND---GND

Obs: arduino pinut diagram http://forum.arduino.cc/index.php?topic=132130.0

atmegaTQFP



Program öppna loggen med en 3.3V FTDI grundläggande. De flesta av stiften ansluta direkt från huvud till huvud--utom du behöver byta TX/RX raderna. Så OpenLogTXO går till FTDI_RXI.

Här är ledningarna

OpenLog FTDI Basic

BLK---BLK

GND---GND

VCC---3.3V

TXO---RXI (inte rakt över)

RXI---TXO (inte sundet över)

GND---GND

används inte---BLK

KOD - bibliotek som är nödvändiga

Du behöver biblioteket för accelerometern:

https://github.com/Sparkfun/MMA8452_Accelerometer/...

Sätta filen den biblioteken fil i sketchbook katalog. För att hitta skissbok, på arduino IDE, Välj Arkiv -> Inställningar och det är högst upp. Sedan stänger arduino IDE och öppnar igen.

(massor av info här:)

https://learn.Sparkfun.com/tutorials/mma8452q-acce...

KOD - skriver accelerometer utdata till SD-kort.

Det finns några mycket bra kod för användning med den öppna loggern, det låter dig ändra parametrar och göra nya filer, jag använder inte det just nu. Helt enkelt lagt till SD-kortet skrivning till exemplet grundläggande accelerometer. Detta har catch - det måste vara fil som heter datalog.txt på SD kortet. Det är den filen data kommer att gå till.

Koden ska kopplas.

Den heter: MMA8452_Plus_SDLogger

LÄNKAR:

https://github.com/Sparkfun/MMA8452_Accelerometer

https://github.com/Sparkfun/OpenLog

OBS:

koden verkar inte till att lägga upp... så här det är som text.

Accelerometer plus data logger kod / / /

ändrat av MPC Marc Cryan / / /

/ * MMA8452Q grundläggande exempel kod Nathan Seidle SparkFun elektronik 5 November 2012 licens: denna kod är allmän egendom men du köpa mig en öl om du använder detta och vi träffas en dag (Beerware licens). Denna exempelkod visar hur du läsa X/Y/Z accelerationer och grundläggande funktioner i MMA5842. Det lämnar ut alla snygga finesser denna IC kan (tap, orientering och inerrupts) och bara visar X/Y/Z. Se avancerade exempelkoden att se fler funktioner. Installation av maskinvara: MMA8452 Breakout---Arduino 3.3V---3.3V SDA---^ ^ (330) ^ ^---A4 SCL---^ ^ (330) ^ ^---A5 GND---GND The MMA8452 är 3.3V så vi rekommenderar att du använder 330 eller 1 k motstånd mellan en 5V Arduino och MMA8452 utbrytning. MMA8452 har inbyggd pull-up motstånd för I2C så du inte behöver ytterligare pull-ups. */

#include < Wire.h > / / används för I2C / / The SparkFun breakout styrelsen standardvärdet 1, ange 0 om SA0 jumper på undersidan av styrelsen är inställd
#define MMA8452_ADDRESS 0x1D / / 0x1D om SA0 är hög, 0x1C om låg / / definiera några av de journaler som vi kommer att komma åt på MMA8452
#define OUT_X_MSB 0x01
#define XYZ_DATA_CFG 0x0E
#define WHO_AM_I 0x0D
#define CTRL_REG1 0x2A

#define GSCALE 2 / / uppsättningar fullskaligt utbud till +/-2, 4 eller 8g. Brukade calc verkliga g values.///datalogger
#include < SD.h >

På Ethernet Shield är CS stift 4. Observera att även om det inte är / / begagnade som CS stift, hårdvara CS stift (10 på de flesta Arduino styrelser, / / 53 på Mega) måste lämnas som en utgång eller SD biblioteket / / funktioner kommer inte work.constint chipSelect = 10;
Annullerasetup)
{
Seriella.begin(57600);
Seriella.println ("MMA8452 grundläggande exempel");

Wire.BEGIN(); Gå med bussen som en mästare

initMMA8452(); Testa och initierades inte MMA8452

SDLogger
Seriella.print ("initiera SD-kortet...");
se till att den standard chip välja stiftet är inställd
utgång, även om du inte använder det:
pinMode (10, OUTPUT);

se om kortet är närvarande och kan initieras:
IF (!. SD.begin(chipSelect)) {
Seriella.println ("kort misslyckades, eller inte finns");
inte göra något mer:
hemkomst.
}
Seriella.println ("kort initierats.");
/////////////////////
}

Ogiltigloop)
{
int accelCount [3]. Innehåller 12-bitars signerat
readAccelData(accelCount); Läs x/y/z adc värdena

Nu ska vi beräkna accleration värdet till faktiska Gunnarssons
float accelG [3]. Lagrar värdet verkliga accel i Gunnarssons
för (int jag = 0; jag < 3; i ++)
{
accelG [i] = (float) accelCount [i] / ((1 << 12)/(2*GSCALE)); får faktiska g värde, detta beror på skalan sätts
}

Skriva ut värden
för (int jag = 0; jag < 3; i ++)
{
Seriella.print (accelG [i], 4); Skriva ut g-värden
Seriella.print("\t"); tabbar mellan axlarna
}
Seriella.println();

data till SD-kort
Öppna filen. Observera att endast en fil kan vara öppna samtidigt,
så du måste stänga detta en innan du öppnar en annan.
Fil dataFile = SD.open ("datalog.txt", FILE_WRITE);
om filen är tillgänglig, skriva till det:
om (dataFile) {

för (int jag = 0; jag < 3; i ++)
{
dataFile.print (accelG [i], 4); Skriva ut g-värden
dataFile.print("\t"); tabbar mellan axlarna
dataFile.close();
}
}
om filen inte är öppen, dyker upp ett felmeddelande:
annat {
Seriella.println ("fel öppna datalog.txt");
}

//////////////

Delay(10); Dröjsmål här för synlighet
}

void readAccelData(int *destination)
{
byte \Data [6]. x/y/z accel registrera data som lagras här

readRegisters (OUT_X_MSB, 6, \Data); Läs sex rådata registren till data array

Slinga för att beräkna 12-bitars ADC och g värde för varje område
för (int jag = 0; jag < 3; i ++)
{
int gCount = (\Data [jag * 2] << 8) | \Data [(i*2) + 1]; Kombinera två 8-bitars register till en 12-bitars tal
gCount >> = 4; Registren är Vänsterjustera, här vi rätt anpassa 12-bitars heltal

Om talet är negativt, vi måste göra det manuellt (ingen 12-bitars datatyp)
om (\Data [jag * 2] > 0x7F)
{
gCount = ~ gCount + 1;
gCount * = -1; Omvandla till negativ 2 komplettera #
}

destination [i] = gCount; Spela in denna gCount i arrayen 3 int
}
}

Initiera MMA8452 registren / / se de många program anteckningarna för mer info om att alla dessa register: / / http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8452Qvoid initMMA8452()
{
byte c = readRegister(WHO_AM_I); Läs WHO_AM_I register
om (c == 0x2A) / / WHO_AM_I bör alltid 0x2A
{
Seriella.println ("MMA8452Q är online...");
}
annat
{
Seriella.print ("kunde inte ansluta till MMA8452Q: 0 x");
Seriella.println (c, HEX).
While(1); Slinga för evigt om kommunikation inte sker
}

MMA8452Standby(); Måste vara i standby-läge att ändra register

Ställ in full skala till 2, 4 eller 8g.
byte fsr = GSCALE;
om (fsr > 8) fsr = 8. Lätt misstag kontroll
FSR >> = 2; Snyggt knep, se sidan 22. 00 = 2 G, 01 = 4A, 10 = 8 G
writeRegister (XYZ_DATA_CFG, fsr);

Standard datahastigheten är 800Hz och vi ändra inte den i detta exempelkod

MMA8452Active(); Anges som aktivt att börja läsa
}

Anger MMA8452 till standby-läge. Det måste vara i standby-läge att ändra de flesta register settingsvoid MMA8452Standby()
{
byte c = readRegister(CTRL_REG1);
writeRegister (CTRL_REG1, c & ~ (0x01)); Rensa den aktiva bit att gå in i vänteläge
}

Anger MMA8452 till aktivt läge. Måste vara i detta läge att mata datavoid MMA8452Active()
{
byte c = readRegister(CTRL_REG1);
writeRegister (CTRL_REG1, c | 0x01); Ange active bit att börja upptäcka
}

Läs bytesToRead sekventiellt, börjar på addressToRead till dest byte arrayvoid readRegisters (byte addressToRead, int bytesToRead, byte * dest)
{
Wire.beginTransmission(MMA8452_ADDRESS);
Wire.write(addressToRead);
Wire.endTransmission(false); endTransmission men hålla anslutningen aktiv

Wire.requestFrom (MMA8452_ADDRESS, bytesToRead); Be om byte, en gång gjort, buss är släppt som standard

While(Wire.available() < bytesToRead); Hänga ut tills vi får # byte vi förväntar oss

för (int x = 0; x < bytesToRead; x ++)
dest [x] = Wire.read();
}

Läsa en enda byte från addressToRead och lämna tillbaka det som en bytebyte readRegister (addressToRead byte)
{
Wire.beginTransmission(MMA8452_ADDRESS);
Wire.write(addressToRead);
Wire.endTransmission(false); endTransmission men hålla anslutningen aktiv

Wire.requestFrom (MMA8452_ADDRESS, 1); Be om 1 byte, en gång gjort, buss är släppt som standard

tag (!. Wire.available()); Vänta att komma tillbaka
returnWire.read(); Returnera denna en byte
}

Skriver en enda byte (bytesAttSkriva) i addressToWritevoid writeRegister (byte addressToWrite, byte bytesAttSkriva)
{
Wire.beginTransmission(MMA8452_ADDRESS);
Wire.write(addressToWrite);
Wire.write(dataToWrite);
Wire.endTransmission(); Stoppa överföring
}

Se Steg
Relaterade Ämnen

Log och Graf du händelser med 24V termostat (Optocoupler + Raspberry Pi)

Det finns en hel del Instructables som visar hur man gör en termostat. Men vad händer om du redan har en termostat, och du vill logga eller bildskärm när det blir av och på? Detta Instructable visar hur man använder en optocoupler få logik-nivå DC-sp...

Arduino: Hur du ansluter gemensamma sensorer och objekt

Ibland, tycks du bara inte kunna räkna ut hur till få en krets för att träna! Detta instructable hjälper dig använda din elektronik på det sätt de var tänkta att användas genom att visa dig hur du ansluter dem till din Arduino ombord.Svårighet: e a s...

GY-521 MPU6050 3 axel gyroskop och Accelerometer med Arduino

Denna video tutorial går över installation och konfiguration av en GY-521 styrelse med MPU6050 3 axel gyroskop och Accelerometer med en Arduino. Efter några inledande felsökning med kunde jag få komponent fungerar. Först hade jag problem med lös skär...

Log och Cedar stolar

dessa är pine log och cedar stolar för mitt däck. mycket lätt att bygga om du har verktygen. men de är dyra men det är dem och önskar att jag tog bilden när jag byggde dem men detta är det. Jag kommer att bygga mer snart och ta bilder av hela process...

Guide till gyro och accelerometer med Arduino inklusive Kalman filtrering

denna guide var först postat på forumet Arduino, och kan hittas här: http://arduino.cc/forum/index.php/topic, 58048.0.htmlJag återuppfört bara den, så ännu mer kommer att få användning av den. Koden kan hittas här:https://github.com/TKJElectronics/ex...

Styra raspberry pi musen och tangentbordet distans utan att ansluta fysiska mus och tangentbord (inte vnc)

Jag behövde få tillgång till flera hallon pajer för att styra musen och tangentbordet på skärmen utan hooking fysiska mus och tangentbord till var och en av dem i ett av mina projekt.Att göra att jag har skrivit en liten instrumentpanel som tillåter...

IoT: Ansluter RPi, Arduino och världen!

(Om du gillar detta Instructable, glöm inte att rösta på det (ovan: högra hörnet flaggan). det konkurrerar om SAKERNAS INTERNET och sensorer tävlingar. Tack så mycket! ;-)I detta projekt kommer vi program en RPi och en Arduino, arbeta tillsammans för...

Schwarzwald Log och Spider

Använd dessa enkla steg för att göra dig själv en logg med en spindel och dess ägg direkt från den svart skogen!INGREDIENSERRecept på chokladkaka-1 kopp vitt socker-1 kopp mjöl-6 msk osötad kakao pulver-3/4 tsk bakpulver-3/4 tsk bakning soda-1/2 tsk...

Raspberry Pi fotocell log och alert system

detta är ett enkelt instructable för att göra en RasPi-baserade photosensor-utlöst alert och loggning system som enkelt kan utökas för att visa möjliga posterna in i ett rum som en garderob eller utrustning skåp som är oftast mörkt, eller att övervak...

Vinkel mätning med gyro, accelerometer och Arduino

enheten är en grov prototyp av vad kommer så småningom bli en egen balans robot, detta är den andra delen av det hål som (Läs accelerometer och styra en motor själv balans). Den första delen med bara gyro kan hittas här.Detta instructable vi mäter vi...

ANSLUTA 16384 reläer till en enda ARDUINO och oändliga andra möjligheter

Kan du ansluta 16384 reläer till en enda Arduino uno?OMÖJLIGT? MÖJLIGA?Steg 1: Hur man gör det? (introduktion) Teoretiskt är det mycket lätt att göra. Kan du tro det?I en Arduino uno finns 14 digitala I/O Pins (varav 6 ge PWM-utgång) och 6 analoga st...

Knappen e-post: Ansluter Arduino till IFTTT att skicka e-post, tweets, textmeddelanden och mer

vad om du kunde med en enda knapp, skicka ett e-postmeddelande, en tweet eller ett SMS?Denna tutorial ska show dig hur man ansluter en enkel knapp till dina favoritprogram på internet genom att ansluta den till IFTTT.IFTTTIFTTT.com (om detta sedan de...

Accelerometer kontrollerat robot (pickup och plats)

De flesta av industrirobotar är fortfarande programmerade med typiska lärandeprocessen, med hjälp av roboten lär hänge. I detta dokument föreslås en accelerometer-baserat system för att styra en industrirobot med två billiga och små 3-axlig trådlös a...

Hur du ansluter din Arduino BLE sköld till ett anpassat program som iOS/Android framkallade i HTML5 och JavaScript.

Detta instructable visar dig hur man bygger en mobil applikation som kommunicerar med din Bluetooth låg energi (BLE) sköld. I denna tutorial jag har använt en BLE sköld från RedBearLab, men detta exempel bör vara lätt att bygga om för att fungera med...

Accelerometer och magnetometer utforskning av LSM303DLHC

LSM303 kombinerar avläsningar från jordens elektromagnetiska fält som en magnetometer med läsningar av jordens gravitationskonstant kraft som en triple-axlig accelerometer. Denna information gör det ett kompakt system.Som det är, kan LSM303 användas...

Skjut regel via vanliga och naturliga Log skalor

Räknestickor som tog män till månen gjordes utan datorer, så dessa instruktioner är baserade på computerless produktion. Det finns fortfarande böcker i existens som innehåller log skalor nödvändiga utan att använda ot datorer.Jag använde aldrig något...

Bluetooth Game controller med Accelerometer och Arduino

Alla älskar att spela spel på PC :) Spelkonsoler ta dem till nästa nivå och vad är mer kul än att göra en själv? Här har vi byggt en spelkonsol med Accelerometer, Arduino och Bluetooth. Accelerometern i spelkonsolen översätter dina rörelser in i spel...

Arduino glas - öppen källkod Augmented Reality Headset

Har du någonsin funderat på att få en förstärkt verklighet headset? Var du också bländade på möjligheten till förstärkt verklighet och tittade på prislappen med ett brustet hjärta?Ja, mig också!Men det hindrade mig där. Jag byggt upp mitt mod och i s...

Baby Monitor med Arduino och SmartLiving Maker plattform

Babyvakten är fina exempel på anslutna enheter med hjälp av Arduino, Grove sköld bas och SmartLiving Maker platfrom (https://maker.smartliving.io) för IoT beslutsfattare.Babyvakt hur?Finns i rumstemperatur och ljudnivå när som helst på din mobila enh...