Akuta Fall anmälaren med panik-knappen (4 / 17 steg)

Steg 4: Programmering ATmega328P mikrokontroller med Arduino Uno



Den kompletta Arduino programmet bifogas härmed. Du kan behöva kalibrera MPU sensorn för att få korrekta resultat. Du kan också behöva justera de tröskelvärden som används i programmet. Kontrollera att Arduino tråd bibliotek är installerat.

MPU-6050 kort exempel skiss
Public Domain
#include
CONST int MPU_addr = 0x68; I2C adress MPU-6050
int16_t AcX AVAL, AcZ, Tmp, GyX, GyY, GyZ;
float ax = 0, ay = 0, az = 0, gx = 0, gy = 0, gz = 0;

int data [STORE_SIZE] [5]. matris för spara senaste data
byte currentIndex = 0; lagrar nuvarande data vektorindex (0-255)
booleska hösten = false; butiker om en nedgång skett
booleska trigger1 = false; butiker om första trigger (lägre tröskel) har inträffat
booleska trigger2 = false; butiker om andra trigger (övre tröskelvärde) har inträffat
booleska trigger3 = false; butiker om tredje trigger (orientering ändra) har inträffat

byte trigger1count = 0; lagrar de senaste räkningarna sedan utlösa 1 sattes sant
byte trigger2count = 0; lagrar de senaste räkningarna sedan utlösa 2 sattes sant
byte trigger3count = 0; lagrar de senaste räkningarna sedan utlösa 3 sattes sant
int angleChange = 0;

void setup() {
Wire.BEGIN();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); PWR_MGMT_1 register
Wire.write(0); satt till noll (vaknar upp MPU-6050)
Wire.endTransmission(true);
Serial.BEGIN(9600);

pinMode (11, OUTPUT);
digitalWrite (11, hög).
}
void loop() {

mpu_read();
2050, är 77, 1947 värden för kalibrering av accelerometer
värden kan vara annorlunda för dig
AX = (AcX-2050) / 16384.00;
AY = (AVAL-77) / 16384.00;
AZ = (AcZ-1947) / 16384.00;

270, 351, 136 för gyroskop
GX = (GyX + 270) / 131.07;
Gy = (GyY-351) / 131.07;
gz = (GyZ + 136) / 131.07;

beräkning av Amplitute vactor för 3 axel
flyta Raw_AM = pow(pow(ax,2)+pow(ay,2)+pow(az,2),0.5);
int är = Raw_AM * 10; som värden inom 0 till 1, jag multipliceras
det av för att använda om annat villkorar

Serial.println(am);
Serial.println(PM);
Delay(500);

om (trigger3 == true) {
trigger3count ++;
Serial.println(trigger3count);
om (trigger3count > = 10) {
angleChange = pow(pow(gx,2)+pow(gy,2)+pow(gz,2),0.5);
Delay(10);
Serial.println(angleChange);
om ((angleChange > = 0) & & (angleChange < = 10)) {//if orientering förändringar är fortfarande mellan 0-10 grader
falla = sant; trigger3 = false; trigger3count = 0;
Serial.println(angleChange);
}
annat {//user återfått normala orientering
trigger3 = false; trigger3count = 0;
Serial.println ("TRIGGER 3 AVAKTIVERAS");
}
}
}
om (falla == true) {//in-händelse för en höst upptäckt
Serial.println ("FALL UPPTÄCKS");
digitalWrite (11, låg).
Delay(20);
digitalWrite (11, hög).
falla = false;
Exit(1);
}
om (trigger2count > = 6) {//allow 0.5s för orientering förändring
trigger2 = false; trigger2count = 0;
Serial.println ("TRIGGER 2 DECACTIVATED");
}
om (trigger1count > = 6) {//allow 0.5s för AM att bryta övre tröskelvärde
trigger1 = false; trigger1count = 0;
Serial.println ("TRIGGER 1 DECACTIVATED");
}
om (trigger2 == true) {
trigger2count ++;
angleChange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*(double)bz)/(double)AM/(double)BM);
angleChange = pow(pow(gx,2)+pow(gy,2)+pow(gz,2),0.5); Serial.println(angleChange);
om (angleChange > = 30 & & angleChange < = 400) {//if orientering förändringar av mellan 80-100 grader
trigger3 = sant; trigger2 = false; trigger2count = 0;
Serial.println(angleChange);
Serial.println ("TRIGGER 3 aktiverad");
}
}
om (trigger1 == true) {
trigger1count ++;
om (AM > = 12) {//if AM raster övre tröskelvärde (3g)
trigger2 = sant;
Serial.println ("TRIGGER 2 aktiveras");
trigger1 = false; trigger1count = 0;
}
}
om (AM < = 2 & & trigger2 == false) {//if AM raster lägre tröskel (0,4 g)
trigger1 = sant;
Serial.println ("TRIGGER 1 aktiveras");
}
Det verkar att dröjsmål behövs för att inte täppa till hamnen
Delay(100);
}

void mpu_read() {
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); börjar med register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,14,true); begäran sammanlagt 14 register
AcX=Wire.read() << 8|Wire.read(); 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY=Wire.read() << 8|Wire.read(); 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ=Wire.read() << 8|Wire.read(); 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp=Wire.Read() << 8|Wire.read(); 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX=Wire.read() << 8|Wire.read(); 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY=Wire.read() << 8|Wire.read(); 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ=Wire.read() << 8|Wire.read(); 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
}

Se Steg
Relaterade Ämnen

DIY Facebook anmälaren med Arduino - Arduino Facebook Notifier (v.0.1.1) - öppna källkodsprojekt

för en första gången projektet detta är ganska imponerande - Arduino forummedlem Apolikamixitos har publicerat Detaljer för hans öppen Facebook status anmälaren. Det kommer att varna dig för nya meddelanden, meddelanden eller vänförfrågningar med hjä...

Närvaro anmälaren med tryckknapp

Dessa dagar i familjer, har både män och kvinnor börjat jobba. Både män och kvinnor vill lyckas i livet och för detta de måste arbeta hårt och tillbringade mer tid i kontor. Och med detta blir det svårt för dem att se efter sina barn båda. På grund a...

Vatten Tank bräddavlopp anmälaren med LinkitONE

Ditt vatten overflow varje gång? Glömmer du att stänga ditt vattenventil när din vattentanken är full? Då har jag en lösning på problemet!Här ska jag visa dig hur man gör vattnet spill anmälare som meddelar dig när någonsin din vattentank läckor. Du...

IoT Silhouette humör lampa (e-post och Twitter anmälaren)

Sakernas Internet (Internet of Things) blir mer och mer populär och fler antal mikro-kontrollanter är IoT aktiverat, beslutat jag att göra en serie av handledning på Sakernas Internet med hjälp av en partikel foton och en Intel Edison.Ska idag jag vi...

Regna anmälaren

I brådskan att komma ut på morgonen, har du fem minuter att kolla vädervarning för dagen? Skulle inte du föredrar att spendera att fem minuter med en varm kopp kaffe, läsa nyheter som frågan till dig? Eller få de extra fem minuter att få lite välbehö...

LittleWork: funktionsdugliga timmar anmälaren

Har du någonsin räknat ner minuter till slutet av arbetsdagen? littleWork funktionsdugliga timmar anmälaren hand tar om det för dig!Projektet byggdes på Taipei Hackerspace 2014 juni Instructables bygga natten med littleBits.Allteftersom tiden går på...

Seeeduino fukt och buller anmälaren

Seeed studio office är en mycket öppen kontor och mötesrummet är inte ett enskilt rum, ibland killar kan njuta av diskussionen för mycket och stör andra killar som arbetar bredvid.I detta fall beslutar vi att göra en buller anmälaren. Vi har också en...

Bärbar och minimal installation för jakt anmälningar med fristående ESP8266

När jag började spela med ESP8266 wifi/uart modul jag insåg snabbt att detta är en mycket kraftfull liten lilla och mycket billig modul för alla typer av projekt. Med stor gemenskapsstöd är det nu möjligt att använda denna modul som en fristående enh...

Power strömavbrott anmälaren

Load Shedding anmälaren är ett enkelt projekt som meddelar dig när det finns ett strömavbrott/strömavbrott som när strömmen kommer tillbaka. Anmälan via SMS skickas till ett angivet mobilnummer.Mitt land upplever just nu ökad belastning Shedding händ...

Panik-knappen Pro

MotivationMin kompis farbror bor ensam för länge. Om vi kunde hade ta hand om honom bättre, skulle han fortfarande leva hälsosamt och lyckligt. Miljontals sårbara människor kanske inte lika tur som har familjemedlemmar att ta hand om. De flesta av de...

Akut sista minuten multi-purpose panik cookies

när endast en cookie kommer att göra...En flexibel, anpassningsbar cookie recept. Gör grundläggande degen, och sedan lägga till ditt val av extras.Jag gick med tranbär och vit choklad. Vänligen dela din smaker i kommentarerna nedan...Steg 1: akut sis...

Facebook anmälaren använder Intel Galileo

Jag kommer att visa dig hur du enkelt kan bygga en enhet som meddelar dig när du har ett Facebook-meddelande med Intel Galileo.Steg 1: Initierar input och output portarDu kan interagera med den Galileos stift i Linux sys-gränssnittet. Du kan ställa i...

Arduino nyhetsflödet anmälaren

Detta är en Arduino nyheter anmälaren.Funktion: Kontrollerar olika online RSS-källor (både nyheter och sociala medier), och om den hittar en uppdatering på någon av dessa källor signalerar med LED och servo innan visas nyheter titeln på en LCD. Med a...

Lua USB twittier anmälaren

dess verkar som varje dag vi är att se ett nytt twitter anmälaren projekt, det verkade bara rätt att vi tillbringade några minuter och gjorde vår egen. Hårdvara portion bör ta längre än 20 minuter och programvaran tog oss ungefär samma, men det bör v...

PANIK-knappen

Ok, lite förklaring först. Vi har en dator som en demokratisk jukebox på Hackspace Manchester. Tanken är att vem som helst kan sätta musik på det, och det spelar hela biblioteket på shuffle under vår hacka sessioner för lite bakgrundsmusik.Problemet...

Missat samtal anmälaren

En av de första projekten som jag hade skapat när jag började min resa in i elektronik var ett missat samtal anmälaren (http://dushyant.ahuja.ws/2013/11/physical-android-notifier/). Tyvärr används det bluetooth och en lösning med Tasker, S4LA och Pyt...

Genomföra logga in med Twitter knappen

Genomföra logga in med Twitter direkt via deras medföljande API ändpunkter kan vara tråkiga och kräver kunskap om externa system som OAuth protokollet. Det finns några användbara bibliotek som kan hjälpa dig att snabbt och enkelt genomföra en "Logga...

Panik-knappen med SMS + GPS (Linkit en)

Detta projekt är för Linkit One. Denna prototyp styrelse är programmerat som en Arduino men har mycket mer funktioner. Detta projekt visar GSM (SMS) och GPS enheter.Funktionerna i detta projekt:Tryck på knappen Skicka SMS till ett eller flera nummerS...

IoT Jar ljuskrona, fysiska Gmail Twitter Facebook & väder anmälaren

Detta är min andra instruera om ljuskrona, som jag mycket favorit och ville göra det mer perfekt.Jag är en heltid arbetar med datorer, men jag har inte mycket tid att kolla nya meddelanden från sociala nätverk som Facebook eller Twitter och Gmail ock...