Montering av en smart hjelm hjemme
En hjelm har enorm betydning for en syklist, og mesteparten av tiden har vi sett at den har reddet menneskers liv. Hvis en person bruker hjelm, reduseres risikoen for hode- og hjerneskader i stor grad. De vanlige hjelmene som er lett tilgjengelige i markedet, garanterer ikke 100% sikkerhet på grunn av ingen funksjoner for deteksjon av alkohol, ingen varsler etter en ulykke osv. Funksjonene som jeg har nevnt, er tilgjengelige i Smarte hjelmer som for det meste tunge syklister bruker, og det koster rundt $ 300-400. Med tanke på dette i dag vil jeg designe en budsjettvennlig Smart hjelm som vil ha funksjoner som alkoholdeteksjon, ulykkesvarsling, GPS-tracker osv. Denne hjelmen kan enkelt utformes hjemme uten problemer hvis man har kunnskap om kretser / hun kan gjøre noen programvarebaserte simuleringer. Følg fremgangsmåten nedenfor trinn for trinn for å fullføre dette prosjektet.
Hvordan montere grunnleggende elektroniske komponenter med GSM-modul?
Det er bedre å tegne en grov notatbokskisse av hjelmen før du starter dette prosjektet, fordi det vil tillate oss å forstå plassering av komponenter bedre, og det vil være enkelt for oss å montere kretsen. En utmerket tilnærming før du starter arbeidet er å lage en komplett liste over alle komponentene for å spare tid og for å unngå sjansen for å bli sittende fast midt i prosjektet. En komplett liste over alle komponentene som er lett tilgjengelige i markedet er gitt nedenfor:
Trinn 1: Brukte komponenter (maskinvare)
Trinn 2: Komponenter som brukes (programvare)
Trinn 3: Blokkdiagram
For å demonstrere at hjelmen fungerer godt har jeg laget et blokkdiagram som er vist nedenfor:
Trinn 4: Arbeidsprinsipp
Alle typer Arduino-brett kan brukes i prosjektet, men jeg foretrakk Arduino Nano fordi to av dem blir plassert inne i hjelmen og de krever mindre plass. Jeg har brukt Alkohol sensor MQ-3 for å bestemme mengden alkohol sjåføren har tatt, og dette nivået er indikert med en Bi-Color LED. Hvis sjåføren har tatt en stor mengde alkohol, lyser LED-lampen rød og SMS-varsling sendes til nummeret som er nevnt i koden via en GPS. Hvis lysdioden slår seg Gul det betyr at alkoholnivået er moderat og hvis det snur Grønn det betyr at sjåføren ikke er full. Derfor sikrer dette sikkerheten til sjåføren og risikoen for en ulykke minimeres i stor grad. De Ultralydssensor vil bli plassert på baksiden av hjelmen, og den vil fortsette å beregne avstanden mellom rytteren og kjøretøyene bak. Hvis et kjøretøy nærmer seg syklisten med veldig høy hastighet, vil ultralydssensoren sende et signal til Arduino for å utløse summeren, og dermed vil rytteren komme seg til side og la bilen gå forbi. Jeg har tatt med GPS-modul å sende varsler til det spesifikke mobilnummeret i tilfelle en ulykke. For å oppdage ulykken er vibrasjonssensoren inkludert i kretsen som kan innstilles til et bestemt vibrasjonsnivå, og ber straks GSM-modulen om å sende et varsel til bestemte numre som en ringe om hjelp. To Arduino’er vil bli brukt i dette prosjektet. Den ene vil være koblet til ultralydssensoren og alkoholsensoren, og den andre vil være koblet til GSM-modulen og vibrasjonssensoren. Det vil være to separate kretser som vil bli plassert inne i hjelmen, og de vil være koblet til det samme batteriet. Merk:Den variable kondensatoren som er tilstede i vibrasjonssensoren vil bli innstilt.
Trinn 5: Montering av kretsen på Proteus
- Når du har lastet ned og installert Proteus-programvaren, åpner du den. Åpne et nytt skjema ved å klikke på ISISikonet på menyen.
- Når det nye skjemaet vises, klikker du på Pikonet på sidemenyen. Dette åpner en rute der du kan velge alle komponentene som skal brukes.
- Skriv inn navnet på komponentene som skal brukes til å lage kretsen. Komponenten vises i en liste på høyre side.
- På samme måte, som ovenfor, søk i alle komponentene som ovenfor. De vil vises i Enheter Liste.
Trinn 6: Kretsdiagrammer
Sett sammen maskinvarekretsen din i henhold til kretsdiagrammene vist nedenfor:
- Kretsdiagram 1:
- Kretsdiagram nr.2:
Trinn 7: Komme i gang med Arduino
Hvis du ikke er kjent med Arduino IDE før, ikke bekymre deg, for nedenfor kan du se klare trinn for å brenne kode på mikrokontrollerkortet ved hjelp av Arduino IDE. Du kan laste ned den nyeste versjonen av Arduino IDE herfra og følge trinnene nedenfor:
- Koble Arduino Nano-kortet til den bærbare datamaskinen og åpne kontrollpanelet. i kontrollpanelet, klikk påMaskinvare og lyd. Klikk nå påEnheter og skrivere.Her finner du porten som mikrokontrollerkortet er koblet til. I mitt tilfelle er det COM14men det er forskjellig på forskjellige datamaskiner.
- Vi må inkludere et bibliotek for å bruke GSM-modulen. Gå til Skisse> Inkluder bibliotek> Legg til .ZIP-bibliotek.
- Klikk på Verktøy-menyen og sett tavlen til Arduino Nano.
- I samme verktøymeny, sett prosessoren til ATmega328P (gammel bootloader).
- I samme Verktøy-meny, sett porten til portnummeret du observerte før i Enheter og skrivere.
- Last ned koden som er vedlagt nedenfor, og lim den inn i Arduino IDE. Klikk på laste opp -knappen for å brenne koden på mikrokontrollerkortet.
Trinn 8: Kode for prosjektet
Koden er litt lang, men den er veldig enkel. Noen av biter er forklart nedenfor:
1. I starten er biblioteker inkludert, slik at vi enkelt kan kommunisere med spesielle eksterne enheter.
#include "Adafruit_FONA.h" #includeSoftwareSerial fonaSS = SoftwareSerial (FONA_TX, FONA_RX); SoftwareSerial * fonaSerial = & fonaSS; Adafruit_FONA fona = Adafruit_FONA (FONA_RST);
2. Deretter defineres pinner på Arduino nano som skal brukes til å koble de eksterne sensorene til mikrokontrolleren. Disse pinnene vil være ansvarlige for inn- og utdata av dataene i mikrokontrolleren.
#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. Deretter initialiseres forskjellige variabler som senere vil bli brukt i beregningsprosessene i løpet av koden. Det lages også en buffer som skal brukes med GSM-modulen.
int gaslevel; // dette er en stor buffer for svar char replybuffer [255]; uint8_t readline (char * buff, uint8_t maxbuff, uint16_t timeout = 0); uint8_t type; int vs = 10; int shockVal = HØY;
4. ugyldig oppsett ()er en funksjon som bare utføres en gang når mikrokontrolleren slås på eller aktiveringsknappen trykkes. baudhastigheten er satt i denne funksjonen, som i utgangspunktet er hastigheten i bits per sekund som mikrokontrolleren kommuniserer med de eksterne sensorene. Alle pinnene på Arduino initialiseres her for at de skal brukes til å ta inngang fra sensoren eller sende utdata til en annen enhet. GSM-modulen er også initialisert i denne funksjonen.
ugyldig oppsett () {Serial.begin (9600); // vi starter seriekommunikasjon, slik at vi kan se avstanden på den serielle skjermen Serial.println ("Tech Ponders UltraSonic Sensor Tutorial"); pinMode (triggerPin, OUTPUT); // definere pins pinMode (echoPin, INPUT); pinMode (summer, UTGANG); digitalWrite (summer, LAV); pinMode (MQ3, INPUT); pinMode (R, OUTPUT); pinMode (Y, OUTPUT); pinMode (vs, INPUT); mens (! Serial); // Serial.println (F ("FONA basic test")); // Serial.println (F ("Initialiserer .... (kan ta 3 sekunder)")); fonaSerial-> begynn (4800); hvis (! fona.begin (* fonaSerial)) {// Serial.println (F ("Kunne ikke finne FONA")); mens (1); } type = fona.type (); // Serial.println (F ("FONA er OK")); // Serial.print (F ("Fant")); bryter (type) {case FONA800L: // Serial.println (F ("FONA 800L")); gå i stykker; sak FONA800H: // Serial.println (F ("FONA 800H")); gå i stykker; sak FONA808_V1: // Serial.println (F ("FONA 808 (v1)")); gå i stykker; sak FONA808_V2: // Serial.println (F ("FONA 808 (v2)")); gå i stykker; sak FONA3G_A: // Serial.println (F ("FONA 3G (amerikansk)")); gå i stykker; sak FONA3G_E: // Serial.println (F ("FONA 3G (europeisk)")); gå i stykker; standard: // Serial.println (F ("???")); gå i stykker; } // Skriv ut IMEI-nummer for modul. char imei [15] = {0}; // MÅ bruke en buffer med 16 tegn for IMEI! uint8_t imeiLen = fona.getIMEI (imei); if (imeiLen> 0) {// Serial.print ("Module IMEI:"); Serial.println (imei); }}
5. ugyldig sløyfe ()er en funksjon som kjøres gjentatte ganger i en sløyfe mens mikrokontrolleren er slått på. En kode skrives for en ultralydssensor at hvis den måler en avstand mindre enn en bestemt verdi, vil den sende et signal til summeren som vil bli brukt til å varsle føreren om at et kjøretøy nærmer seg i nærheten. Gassføleren er også integrert her. Tre lysdioder brukes for å fortelle at hvis rytteren er tung, delvis eller mindre full. Hvis grønn LED lyser, betyr det at føreren er god å gå. På slutten av denne funksjonen kalles en annen funksjon navngitt viberationFun ().
void loop () {int varighet, avstand; // Legge til varighet og avstand digitalWrite (triggerPin, HIGH); // utløse bølgen (som å blinke en LED) forsinkelse (10); digitalWrite (triggerPin, LOW); varighet = pulseIn (echoPin, HIGH); // en spesiell funksjon for å lytte og vente på bølgedistansen = (varighet / 2) / 29.1; // transformere tallet til cm (hvis du vil ha tommer, må du endre 29.1 med en passende tallforsinkelse (1000); Serial.print (avstand); // skrive ut tallene Serial.print ("cm"); / / og enheten Serial.println (""); // bare skriver ut til en ny linje hvis (avstand <35) {digitalWrite (summer, HIGH); Serial.println ("Buzzer On");} digitalWrite (summer, LAV ); gassnivå = (analogRead (MQ3)); gassnivå = kart (gassnivå, 0,1023,0,255); hvis (gassnivå> 100 && gassnivå <= 300) {// gassnivå er større enn 100 og mindre enn 300 digitalWrite (R , LOW); // RED led er av _delay_ms (500); // forsinkelse digitalWrite (Y, HIGH); // GUL led er på _delay_ms (500);} annet hvis (gassnivå> 300 && gassnivå <= 600) { // gassnivået er større enn 300 og mindre enn 600 digitalWrite (Y, LOW); // GUL led er av _forsinkelse_ms (500); digitalWrite (R, HØY); // RØD led er på} annet {digitalWrite (R, LOW ); // rød led er av digitalWrite (Y, LAV); // GUL led er av} Serial.println (gaslevel); // utskriftsverdier på seriell skjerm _delay_ms (100); viberationFun ();}
6. viberationFun ()er en funksjon som vil oppdage om sykkelen hadde en kollisjon med en annen gjenstand eller ikke. Hvis den oppdager en kollisjon, vil den sende en melding til tallene som er spesifisert i koden. På denne måten vil nyheten om ulykken nå noen andre som vil ta de nødvendige skritt for å redde rytteren.
ugyldig viberationFun () {shockVal = digitalRead (vs); int t = 0; char sendto [11] = "DITT NUMMER"; char sendto1 [11] = "DITT NUMMER 2"; char message [27] = "Ulykke er oppdaget"; if (shockVal == HIGH || shockVal == 1) {if (t == 0) {Serial.println (shockVal); hvis (! fona.sendSMS (sendto, melding) &&! fona.sendSMS (sendto1, melding)) {Serial.println (F ("Mislyktes")); } annet {Serial.println (F ("Sendt!")); t = 1; } forsinkelse (1000); hvis (! fona.sendSMS (sendto1, melding)) {Serial.println (F ("Mislyktes")); } annet {Serial.println (F ("Sendt!")); t = 1; }}} annet {t = 0; }}
Trinn 9: Montere maskinvaren
Nå som vi kjenner hovedforbindelsene og også hele kretsen til prosjektet vårt, la oss gå videre og begynne å lage maskinvaren til prosjektet vårt. En ting må huskes på at kretsen må være kompakt og komponentene må plasseres i nærheten. Veroboard er det bedre alternativet i forhold til brødplaten fordi forbindelser løsner på brødplaten og kortslutning kan finne sted og brødplaten har større vekt sammenlignet med Veroboard. Kretsen plassert på Veroboard vil være veldig liten, slik at den enkelt kan monteres inne i hjelmen.
- Ta en Veroboard og gni siden med kobberbelegget med skrapepapir.
- Plasser nå komponentene forsiktig og nær nok til at kretsens størrelse ikke blir veldig stor.
- Gjør koblingene forsiktig ved hjelp av loddejern. Hvis det gjøres feil mens du gjør tilkoblingene, kan du prøve å avlaste tilkoblingen og lodde tilkoblingen riktig, men til slutt må forbindelsen være tett.
- Når alle tilkoblingene er gjort, utfør en kontinuitetstest. I elektronikk er kontinuitetstesten kontrollen av en elektrisk krets for å kontrollere om strømmen strømmer i ønsket bane (at det i sikkerhet er en total krets). En kontinuitetstest utføres ved å sette en liten spenning (kablet i ordning med en LED eller opprørsdel som skaper en del, for eksempel en piezoelektrisk høyttaler) over den valgte veien.
- Hvis kontinuitetstesten består, betyr det at kretsen er tilstrekkelig laget etter ønske. Den er nå klar til å bli testet.
- Koble batteriet til kretsen.
Resten av kretsen vil bli plassert inne i hjelmen bortsett fra ultralydsensoren som vil bli montert på baksiden av hjelmen for å oppdage kjøretøyene som kommer bakfra. Lipo-batteri brukes i dette prosjektet fordi det er et veldig lett batteri, og selv om rytteren skal på en lang tur, kan det gi bedre timing. Juster Lipo-batteriet inne i hjelmen, fordi det på grunn av tøffe værforhold som regn kan føre til svikt i kretsen.
Trinn 10: Testing
Som nå er maskinvaren samlet, og koden lastes også opp på mikrokontrolleren, la oss gå gjennom det siste trinnet og teste kretsen. Sett deg på motorsykkelen og snu PÅ trykknappbryteren for å aktivere kretsen. Begynn å ri i gaten din og be noen om å nærme deg bilen i høy hastighet bakfra. Du vil observere at summeren begynner å ringe og deretter bruke bremser i høy hastighet slik at store vibrasjoner kan oppstå. Så snart vibrasjonen oppstår, sendes et varselvarsel til mobilnummeret du har nevnt i koden.
Anbefalinger
Dette er et veldig interessant prosjekt. Det er flere alternativer som kan inkluderes videre i det ved hjelp av noen grunnleggende elektroniske komponenter. Noen av dem er illustrert nedenfor:
- Du kan bruke Raspberry Pi med Pi kameramodul og juster posisjonen på en slik måte at du kan observere projeksjonen på hjelmens speil. På denne måten vil du kunne få et bakfra av veien, og det vil være veldig nyttig når du forbikjøring, etc.
- Relémodulen kan kobles til motorsykkelens tenningsbryter, og den kan settes på en slik måte at tenningen snur PÅbare når rytteren har brukt hjelmen.
- Små solcellepaneler kan også festes på toppen og baksiden av hjelmen slik at behovet for batteriet reduseres og vekten på kretsløpet kan reduseres ytterligere inne i hjelmen.