Montering af en smart hjelm derhjemme

En hjelm har enorm betydning for en motorcykel, og det meste af tiden har vi set, at den har reddet menneskers liv. Hvis en person har hjelm på, reduceres risikoen for hoved- og hjerneskader i høj grad. De almindelige hjelme, der er let tilgængelige på markedet, garanterer ikke 100% sikkerhed på grund af ingen alkoholdetekteringsfunktion, ingen meddelelse efter en ulykke osv. De funktioner, som jeg har nævnt, er tilgængelige i Smarte hjelme som for det meste tunge cyklister bærer, og det koster omkring $ 300-400. Når jeg holder dette med i dag, vil jeg designe en budgetvenlig Smart hjelm, der vil have funktioner som påvisning af alkohol, anmeldelse af ulykker, GPS-tracker osv. Denne hjelm kan let designes derhjemme uden besvær, hvis man har en vis viden om kredsløb og han / hun kan lave nogle softwarebaserede simuleringer. Følg proceduren nedenfor trin for trin for at gennemføre dette projekt.

Sådan samles grundlæggende elektroniske komponenter med GSM-modul?

Det er bedre at tegne en grov notesbogsskitse af hjelmen, inden vi starter dette projekt, fordi det giver os mulighed for at forstå placeringen af ​​komponenter bedre, og det er let for os at samle kredsløbet. En fremragende tilgang, inden arbejdet påbegyndes, er at lave en komplet liste over alle komponenterne for at spare tid og undgå chancen for at sidde fast midt i projektet. En komplet liste over alle de komponenter, der let er tilgængelige på markedet, er angivet nedenfor:

Trin 1: Brugte komponenter (hardware)

Trin 2: Brugte komponenter (software)

Trin 3: Blokdiagram

For at demonstrere hjelmens funktion har jeg lavet et blokdiagram, der er vist nedenfor:

Trin 4: Arbejdsprincip

Alle typer Arduino-brædder kan bruges i projektet, men jeg foretrak Arduino Nano, fordi to af dem placeres inde i hjelmen, og de kræver mindre plads. Jeg har brugt Alkoholsensor MQ-3 til at bestemme den mængde alkohol, som føreren har taget, og dette niveau er angivet med en Bi-Color LED. Hvis føreren har taget en stor mængde alkohol, tænder lysdioden Rød og SMS-besked sendes til det nummer, der er nævnt i koden via en GPS. Hvis LED lyser Gul det betyder, at alkoholniveauet er moderat, og hvis det vender Grøn det betyder, at føreren ikke er beruset. Derfor sikrer dette førerens sikkerhed, og risikoen for en ulykke minimeres i høj grad. Det Ultralydssensor placeres bag på hjelmen, og den fortsætter med at beregne afstanden mellem rytteren og køretøjerne bagpå. Hvis et køretøj nærmer sig rytteren med meget høj hastighed, sender ultralydssensoren et signal til Arduino for at udløse summeren, og dermed vil rytteren komme til side og lade køretøjet passere. Jeg har medtaget GPS-modul at sende alarmer til det specifikke mobilnummer i tilfælde af en ulykke. For at detektere ulykken er vibrationssensoren inkluderet i kredsløbet, der kan indstilles til et bestemt vibrationsniveau, og fortæller straks GSM-modulet at sende en meddelelse til bestemte numre som et kald til hjælp. To Arduino'er vil blive brugt i dette projekt. Den ene tilsluttes ultralydssensoren og alkoholsensoren, og den anden forbindes til GSM-modulet og vibrationssensoren. Der vil være to separate kredsløb, der placeres inde i hjelmen, og de vil være forbundet til det samme batteri. Bemærk:Den variable kondensator til stede i vibrationssensoren vil blive indstillet.

Trin 5: Samling af kredsløbet på Proteus

  1. Når du har downloadet og installeret Proteus-softwaren, skal du åbne den. Åbn et nyt skema ved at klikke på ISISikonet i menuen.
  2. Når det nye skema vises, skal du klikke på Pikonet i sidemenuen. Dette åbner et felt, hvor du kan vælge alle de komponenter, der skal bruges.
  3. Skriv nu navnet på de komponenter, der skal bruges til at skabe kredsløbet. Komponenten vises i en liste på højre side.
  4. På samme måde som ovenfor skal du søge i alle komponenter som ovenfor. De vises i Enheder Liste.

Trin 6: Kredsløbsdiagrammer

Saml dit hardwarekredsløb i henhold til kredsløbsdiagrammerne vist nedenfor:

  1. Kredsløbsdiagram 1:
  2. Kredsløbsdiagram nr.2:

Trin 7: Kom godt i gang med Arduino

Hvis du ikke er bekendt med Arduino IDE før, skal du ikke bekymre dig, for nedenfor kan du se klare trin til at brænde kode på mikrocontrolerkortet ved hjælp af Arduino IDE. Du kan downloade den nyeste version af Arduino IDE herfra og følge nedenstående trin:

  1. Tilslut dit Arduino Nano-kort til din bærbare computer, og åbn kontrolpanelet. i kontrolpanelet skal du klikke påHardware og lyd. Klik nu påEnheder og printere.Her finder du den port, som dit mikrocontrollerkort er tilsluttet. I mit tilfælde er det COM14men det er anderledes på forskellige computere.
  2. Vi bliver nødt til at medtage et bibliotek for at bruge GSM-modulet. Gå til Skitse> Inkluder bibliotek> Tilføj .ZIP-bibliotek.
  3. Klik på værktøjsmenuen, og indstil tavlen til Arduino Nano.
  4. I samme værktøjsmenu skal du indstille processoren til ATmega328P (gammel bootloader).
  5. I den samme værktøjsmenu skal du indstille porten til det portnummer, du tidligere har observeret i Enheder og printere.
  6. Download koden, der er vedhæftet nedenfor, og indsæt den i din Arduino IDE. Klik på upload knap til at brænde koden på dit mikrocontrollerkort.

Trin 8: Kode af projektet

Koden er lidt lang, men den er virkelig enkel. Nogle af dens klumper forklares nedenfor:

1. I starten medtages biblioteker, så vi let kan kommunikere med specielle perifere enheder.

#include "Adafruit_FONA.h" #include  SoftwareSerial fonaSS = SoftwareSerial (FONA_TX, FONA_RX); SoftwareSerial * fonaSerial = & fonaSS; Adafruit_FONA fona = Adafruit_FONA (FONA_RST);

2. Derefter defineres ben på Arduino nano, som skal bruges til at forbinde de eksterne sensorer til mikrocontrolleren. Disse ben er ansvarlige for input og output af dataene i mikrocontrolleren.

#define FONA_RX 2 #define FONA_TX 3 #define FONA_RST 4 // vibration sensor #define VS 10 #define R 2 #define Y 4 #define MQ3 A0 # define buzzer 9. #define triggerPin 7 // triggering on pin 7 #define echoPin 8 // echo on pin 8

3. Derefter initialiseres forskellige variabler, som senere vil blive brugt i beregningsprocesserne i løbet af koden. Der oprettes også en buffer, der skal bruges sammen med GSM-modulet.

int gasniveau; // dette er en stor buffer til svar char svarbuffer [255]; uint8_t readline (char * buff, uint8_t maxbuff, uint16_t timeout = 0); uint8_t type; int vs = 10; int shockVal = HØJ;

4. ugyldig opsætning ()er en funktion, der kun udføres en gang, når mikrokontrolleren tændes, eller der trykkes på aktiveringsknappen. baudhastigheden er indstillet i denne funktion, som dybest set er hastigheden i bits pr. sekund, hvormed mikrocontrolleren kommunikerer med de eksterne sensorer. Alle benene på Arduino initialiseres her, at de vil blive brugt til at tage input fra sensoren eller sende output til en anden enhed. GSM-modulet initialiseres også i denne funktion.

ugyldig opsætning () {Serial.begin (9600); // vi starter seriel kommunikation, så vi kan se afstanden på den serielle skærm Serial.println ("Tech Ponders UltraSonic Sensor Tutorial"); pinMode (triggerPin, OUTPUT); // definerende pins pinMode (echoPin, INPUT); pinMode (summer, OUTPUT); digitalWrite (summer, LAV); pinMode (MQ3, INPUT); pinMode (R, OUTPUT); pinMode (Y, OUTPUT); pinMode (vs, INPUT); mens (! Serial); // Serial.println (F ("FONA grundlæggende test")); // Serial.println (F ("Initialiserer .... (kan tage 3 sekunder)")); fonaSerial-> start (4800); hvis (! fona.begin (* fonaSerial)) {// Serial.println (F ("Kunne ikke finde FONA")); mens (1); } type = fona.type (); // Serial.println (F ("FONA er OK")); // Serial.print (F ("Fundet")); switch (type) {case FONA800L: // Serial.println (F ("FONA 800L")); pause; sag FONA800H: // Serial.println (F ("FONA 800H")); pause; sag FONA808_V1: // Serial.println (F ("FONA 808 (v1)")); pause; sag FONA808_V2: // Serial.println (F ("FONA 808 (v2)")); pause; sag FONA3G_A: // Serial.println (F ("FONA 3G (amerikansk)")); pause; sag FONA3G_E: // Serial.println (F ("FONA 3G (europæisk)")); pause; standard: // Serial.println (F ("???")); pause; } // Udskriv modul IMEI-nummer. char imei [15] = {0}; // SKAL bruge en buffer på 16 tegn til IMEI! uint8_t imeiLen = fona.getIMEI (imei); hvis (imeiLen> 0) {// Serial.print ("Modul IMEI:"); Serial.println (imei); }}

5. ugyldig sløjfe ()er en funktion, der kører gentagne gange i en sløjfe, mens mikrokontrolleren er tændt. En kode er skrevet til en ultralydssensor, at hvis den måler en afstand mindre end en bestemt værdi, sender den et signal til summeren, som vil blive brugt til at underrette rytteren om, at et køretøj nærmer sig nær. Gassensoren er også integreret her. Tre lysdioder bruges til at fortælle, at hvis rytteren er stærkt, delvist eller mindre beruset. Hvis grøn LED lyser, betyder det, at rytteren er god at gå. I slutningen af ​​denne funktion kaldes en anden funktion navngivet viberationFun ().

ugyldig loop () {int varighed, afstand; // Tilføjelse af varighed og afstand digitalWrite (triggerPin, HIGH); // udløser bølgen (som blinker en LED) forsinkelse (10); digitalWrite (triggerPin, LOW); varighed = pulseIn (echoPin, HIGH); // en speciel funktion til at lytte og vente på bølgedistancen = (varighed / 2) / 29.1; // omdanne tallet til cm (hvis du vil have tommer, skal du ændre 29.1 med en passende nummerforsinkelse (1000); Serial.print (afstand); // udskrivning af numrene Serial.print ("cm"); / / og enheden Serial.println (""); // kun udskrivning til en ny linje, hvis (afstand <35) {digitalWrite (summer, HIGH); Serial.println ("Buzzer On");} digitalWrite (summer, LOW ); gasniveau = (analogRead (MQ3)); gasniveau = kort (gasniveau, 0,1023,0,255); hvis (gasniveau> 100 && gasniveau <= 300) {// gasniveau er større end 100 og mindre end 300 digitalWrite (R , LAV); // RØD LED er slukket _delay_ms (500); // forsinkelse digitalWrite (Y, HIGH); // GUL led er på _delay_ms (500);} ellers hvis (gasniveau> 300 && gasniveau <= 600) { // gasniveau er større end 300 og mindre end 600 digitalWrite (Y, LOW); // GUL led er slukket _delay_ms (500); digitalWrite (R, HIGH); // RØD led er tændt} andet {digitalWrite (R, LOW ); // rød lysdiode er slukket digitalWrite (Y, LAV); // GUL led er slukket} Serial.println (gasniveau); // udskrivningsværdier på seriel skærm _delay_ms (100); viberationFun ();}

6. viberationFun ()er en funktion, der registrerer, om cyklen har kollideret med en anden genstand eller ej. Hvis den opdager en kollision, sender den en besked til de numre, der er angivet i koden. På denne måde vil nyheden om ulykken nå ud til en anden, der vil tage de nødvendige skridt til at redde rytteren.

ugyldig viberationFun () {shockVal = digitalRead (vs); int t = 0; char sendto [11] = "DIN NUMMER"; char sendto1 [11] = "DIN NUMMER 2"; char message [27] = "Ulykke er fundet"; if (shockVal == HIGH || shockVal == 1) {if (t == 0) {Serial.println (shockVal); hvis (! fona.sendSMS (sendto, besked) &&! fona.sendSMS (sendto1, meddelelse)) {Serial.println (F ("mislykkedes")); } andet {Serial.println (F ("Sendt!")); t = 1; } forsinkelse (1000); hvis (! fona.sendSMS (sendto1, meddelelse)) {Serial.println (F ("mislykkedes")); } andet {Serial.println (F ("Sendt!")); t = 1; }}} andet {t = 0; }}

Trin 9: Samling af hardwaren

Nu, som vi kender hovedforbindelserne og også hele projektets kredsløb, lad os gå videre og begynde at fremstille hardware til vores projekt. En ting skal huskes, at kredsløbet skal være kompakt, og komponenterne skal placeres tæt. Veroboard er den bedre mulighed sammenlignet med breadboardet, fordi forbindelser løsner sig på breadboardet og kortslutning kan finde sted, og breadboard har mere vægt sammenlignet med Veroboard. Kredsløbet placeret på Veroboard vil være meget lille, så det let kan monteres inde i hjelmen.

  1. Tag en Veroboard og gnid den med kobberbelægningen på siden med et skrabepapir.
  2. Anbring nu komponenterne omhyggeligt og tæt nok, så kredsløbets størrelse ikke bliver særlig stor.
  3. Forbind forsigtigt ved hjælp af loddejern. Hvis der begås en fejl under tilslutningerne, skal du prøve at aflode forbindelsen og lodde forbindelsen igen korrekt, men til sidst skal forbindelsen være tæt.
  4. Når alle forbindelser er foretaget, skal du udføre en kontinuitetstest. I elektronik er kontinuitetstesten kontrol af et elektrisk kredsløb for at kontrollere, om strømmen strømmer i den ønskede sti (at det med sikkerhed er et samlet kredsløb). En kontinuitetstest udføres ved at indstille en lille spænding (kablet i arrangement med en LED eller oprør, der skaber en del, for eksempel en piezoelektrisk højttaler) over den valgte måde.
  5. Hvis kontinuitetstesten består, betyder det, at kredsløbet er tilstrækkeligt lavet efter ønske. Det er nu klar til at blive testet.
  6. Tilslut batteriet til kredsløbet.

Resten af ​​kredsløbet placeres inde i hjelmen undtagen Ultralydssensoren, der monteres på bagsiden af ​​hjelmen for at opdage køretøjer, der kommer bagfra. Lipo-batteri bruges i dette projekt, fordi det er et meget let batteri, og selvom rytteren skal på en lang tur, kan det give bedre timing. Juster Lipo-batteriet inde i hjelmen, fordi det på grund af barske vejrforhold som regn kan resultere i svigt i kredsløbet.

Trin 10: Test

Som nu er hardware samlet, og koden uploades også til mikrocontrolleren, lad os gennemgå det sidste trin og teste kredsløbet. Sid på motorcyklen og drej trykknappen for at aktivere kredsløbet. Begynd at køre i din gade og bed nogen om at nærme dig dig i bilen i høj hastighed bagfra. Du vil bemærke, at summeren begynder at ringe og derefter bremse med høj hastighed, så der kan opstå store vibrationer. Så snart vibrationen opstår, sendes en advarselsmeddelelse til det mobilnummer, du har nævnt i koden.

Anbefalinger

Dette er et meget interessant projekt, der er flere muligheder, der kan inkluderes yderligere i det ved hjælp af nogle grundlæggende elektroniske komponenter. Nogle af dem er illustreret nedenfor:

  1. Du kan bruge Raspberry Pi med Pi kameramodul og juster dens position på en sådan måde, at du kunne observere fremspringet på spejlet på hjelmen. På denne måde vil du være i stand til at få et bagfra af vejen, og det ville være meget nyttigt, når du overhaler osv.
  2. Relæmodulet kan tilsluttes motorcykelens tændingskontakt, og det kan indstilles på en sådan måde, at tændingen drejer kun når rytteren har brugt hjelmen.
  3. Små solpaneler kan også fastgøres på toppen og bagsiden af ​​hjelmen, så behovet for batteriet mindskes, og vægten af ​​kredsløbet kan yderligere reduceres inde i hjelmen.
Facebook Twitter Google Plus Pinterest