Noodgevallen val Notifier met paniektoets (4 / 17 stap)

Stap 4: ATmega328P Microcontroller programmeren met Arduino Uno


Het volledige programma van de Arduino is hierbij gevoegd. Mogelijk moet u de MPU-sensor voor het verkrijgen van nauwkeurige resultaat kalibreren. u kan ook verlangd dat het aanpassen van de drempelwaarden in het programma gebruikt. Zorg ervoor dat de Arduino draad bibliotheek is geïnstalleerd.

 // MPU-6050 Short Example Sketch// Public Domain#includeconst int MPU_addr=0x68; // I2C address of the MPU-6050int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;float ax=0, ay=0, az=0, gx=0, gy=0, gz=0; //int data[STORE_SIZE][5]; //array for saving past data//byte currentIndex=0; //stores current data array index (0-255)boolean fall = false; //stores if a fall has occurredboolean trigger1=false; //stores if first trigger (lower threshold) has occurredboolean trigger2=false; //stores if second trigger (upper threshold) has occurredboolean trigger3=false; //stores if third trigger (orientation change) has occurred byte trigger1count=0; //stores the counts past since trigger 1 was set truebyte trigger2count=0; //stores the counts past since trigger 2 was set truebyte trigger3count=0; //stores the counts past since trigger 3 was set trueint angleChange=0; void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); Serial.begin(9600); pinMode(11, OUTPUT); digitalWrite(11, HIGH);}void loop(){ mpu_read(); //2050, 77, 1947 are values for calibration of accelerometer // values may be different for you ax = (AcX-2050)/16384.00; ay = (AcY-77)/16384.00; az = (AcZ-1947)/16384.00; //270, 351, 136 for gyroscope gx = (GyX+270)/131.07; gy = (GyY-351)/131.07; gz = (GyZ+136)/131.07; // calculating Amplitute vactor for 3 axis float Raw_AM = pow(pow(ax,2)+pow(ay,2)+pow(az,2),0.5); int AM = Raw_AM * 10; // as values are within 0 to 1, I multiplied // it by for using if else conditions Serial.println(AM); //Serial.println(PM); //delay(500); if (trigger3==true){ trigger3count++; //Serial.println(trigger3count); if (trigger3count>=10){ angleChange = pow(pow(gx,2)+pow(gy,2)+pow(gz,2),0.5); //delay(10); Serial.println(angleChange); if ((angleChange>=0) && (angleChange<=10)){ //if orientation changes remains between 0-10 degrees fall=true; trigger3=false; trigger3count=0; Serial.println(angleChange); } else{ //user regained normal orientation trigger3=false; trigger3count=0; Serial.println("TRIGGER 3 DEACTIVATED"); } } } if (fall==true){ //in event of a fall detection Serial.println("FALL DETECTED"); digitalWrite(11, LOW); delay(20); digitalWrite(11, HIGH); fall=false; // exit(1); } if (trigger2count>=6){ //allow 0.5s for orientation change trigger2=false; trigger2count=0; Serial.println("TRIGGER 2 DECACTIVATED"); } if (trigger1count>=6){ //allow 0.5s for AM to break upper threshold trigger1=false; trigger1count=0; Serial.println("TRIGGER 1 DECACTIVATED"); } if (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); if (angleChange>=30 && angleChange<=400){ //if orientation changes by between 80-100 degrees trigger3=true; trigger2=false; trigger2count=0; Serial.println(angleChange); Serial.println("TRIGGER 3 ACTIVATED"); } } if (trigger1==true){ trigger1count++; if (AM>=12){ //if AM breaks upper threshold (3g) trigger2=true; Serial.println("TRIGGER 2 ACTIVATED"); trigger1=false; trigger1count=0; } } if (AM<=2 && trigger2==false){ //if AM breaks lower threshold (0.4g) trigger1=true; Serial.println("TRIGGER 1 ACTIVATED"); }//It appears that delay is needed in order not to clog the port delay(100);} void mpu_read(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers 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) } 

Gerelateerde Artikelen

Vlag van E-mail Notifier met behulp van Intel-Edison

Vlag van E-mail Notifier met behulp van Intel-Edison

In dit project, zullen we zien hoe maak je een fysieke Mail-Notifier met behulp van Intel EdisonDit project is ondersteund door BAL-IoTLAB (www.iotlab.in)Onderdelen vereist:1. Intel Edison met Arduino basisbord - als de hoofdprocessor: https://www.sp
Ongelezen E-mail licht-Notifier met Raspberry Pi

Ongelezen E-mail licht-Notifier met Raspberry Pi

In dit Instructable, ik zal je laten zien, hoe het bouwen van uw eigen 'ongelezen Email'-Notifier, die aan het licht begint wanneer er een nieuwe E-mail binnenkomt. U hoeft geen speciale apparatuur hiervoor. Wanneer jij DIY-projecten naar jezelf, moe
Water Tank overloop Notifier met LinkitONE

Water Tank overloop Notifier met LinkitONE

Uw water overflow telkens? Vergeet u om te sluiten uw ventiel voor vers water wanneer je watertank vol is? Dan heb ik een oplossing voor het probleem!Hier zal ik u tonen hoe te maken van een water overflow notifier die u waarschuwt wanneer ooit uw wa
DIY Facebook notifier met Arduino - Arduino Facebook Notifier (v.0.1.1) - Open Source project

DIY Facebook notifier met Arduino - Arduino Facebook Notifier (v.0.1.1) - Open Source project

voor een eerste keer-project dat is behoorlijk indrukwekkend - Arduino forumlid Apolikamixitos heeft details van zijn open-source notifier van de status van de Facebook gepubliceerd. Het zal u attent maken op nieuwe berichten, berichten of vriendscha
Facebook Notifier met behulp van Intel Galileo

Facebook Notifier met behulp van Intel Galileo

Ik zal u tonen hoe u kunt gemakkelijk het bouwen van een apparaat dat u waarschuwen zal wanneer heb je een Facebook kennisgeving met behulp van Intel Galileo.Stap 1: Initialiseren input en output poortenU kunt communiceren met de Galileo's pinnen met
Aanwezigheid Notifier met drukknop

Aanwezigheid Notifier met drukknop

Deze dagen in gezinnen, hebben zowel mannen als vrouwen begon te werken. Zowel mannen als vrouwen willen slagen in het leven en hiervoor ze hard moeten werken en meer tijd doorgebracht in de kantoren. Hierdoor wordt het moeilijk voor hen om hun kinde
Noodgevallen GPS baken met LinkIt ONE

Noodgevallen GPS baken met LinkIt ONE

Ga op een wandeling dit weekend op een plek zonder WiFi? Soms kan het moeilijk om uw dierbaren gemoedsrust wanneer u in het midden van nergens. Vandaag zullen wij streven naar het oplossen van dat probleem met de LinkIt één apparaat door Mediatek. De
Noodgevallen kartonnen stoffer (met 4 functies)

Noodgevallen kartonnen stoffer (met 4 functies)

enkele dagen geleden mijn stoffer was gebroken. Gisteravond, plotseling werd ik wakker met dit ontwerp in mijn hoofd (ik was echt verbaasd) en realiseerde dit wordt een instructable. Hier heb je!Het heeft vier functies:-Handvat.-Anti-omzet.-Flexibele
Noodgevallen schoen reparatie met Sugru

Noodgevallen schoen reparatie met Sugru

tijdens een bergwandeling een schoen scheurde open. Bij het bereiken van de toevlucht van de berg wij sommige sugru toegepast en laat het genezen overnachten. Volgende ochtend, was het probleem opgelost!
Uw vriends computer afsluiten met een vals spel!

Uw vriends computer afsluiten met een vals spel!

Eerst vragen u uw vrienden hun favoriete spel dat ze zou willen hebben, en het volgen van deze tutorial die zal je een vals spel met het pictogram van hun spel dat ze zou willen hebben. Dit vals spel zal afsluiten hun computer. Kun je het spel aan uw
Goedkope draadloze muizenval alarm met behulp van een ATtiny85

Goedkope draadloze muizenval alarm met behulp van een ATtiny85

Een paar weken geleden maakte ik de jaarlijkse expeditie tot onze zolder te halen de Chrismas decoraties. Zoals ik was het passeren van de vakken naar mijn vrouw die realiseerde ik me hadden we sommige ongenode kostgangers, duidelijk door hun uitwerp
Primitieve stijl Survival vis mand val

Primitieve stijl Survival vis mand val

het doel van deze mand val is om vis te vangen, gedurende een lange periode van tijd. Als u van plan bent om te verblijven in een locatie voor een paar dagen, is deze val perfect voor het vangen van vis. Het is een steviger, natuurlijke versie van de
De val van de kooi voor de meest extreme!

De val van de kooi voor de meest extreme!

Howdy, th3_ jungle_inv3ntor komt omhoog met alle soorten van vreemde dingen - een deur door middel van de kant van het huis, brood fruit sap om bot vliegen larven van huid, een gemotoriseerde kite winder, harten van bomen, en rietjes met LEDs in hen.
Best Home Made fruit fly trap trekt & doodt vliegen gegarandeerd uiteindelijke controle (met bewijs)

Best Home Made fruit fly trap trekt & doodt vliegen gegarandeerd uiteindelijke controle (met bewijs)

Korte video toont alle fasen en resultaten van dit instructable zonder wafel :)Stap 1: Items die u nodig hebt U zult een ondiepe kom, een hersluitbare plastic zak, een beetje wijn en bier, 1 druppel afwasmiddel (wassen vloeistof) en een scherp puntig