Thuis een slimme helm in elkaar zetten
Een helm is enorm belangrijk voor een motorrijder en we hebben vaak gezien dat hij het leven van mensen heeft gered. Als een persoon een helm draagt, wordt het risico op hoofd- en hersenletsel sterk verminderd. De gewone helmen die gemakkelijk op de markt verkrijgbaar zijn, bieden geen 100% veiligheid omdat ze geen alcoholdetectiefunctie hebben, geen melding krijgen na een ongeval, enz. De functies die ik heb genoemd, zijn beschikbaar in de Slimme helmen die meestal zware motorrijders dragen en het kost ongeveer $ 300-400. Om dit in het achterhoofd te houden, zal ik een budgetvriendelijke slimme helm ontwerpen die functies zal hebben zoals alcoholdetectie, ongevalsmelding, GPS-tracker, enz. Deze helm kan gemakkelijk thuis worden ontworpen zonder gedoe als men enige kennis heeft van circuits en hij / zij kan enkele softwarematige simulaties doen. Volg de onderstaande procedure stap voor stap om dit project te voltooien.
Hoe basis elektronische componenten samen te stellen met een GSM-module?
Het is beter om een ruwe notebookschets van de helm te maken voordat we aan dit project beginnen, omdat het ons in staat zal stellen de plaatsing van componenten beter te begrijpen en het monteren van het circuit gemakkelijk voor ons zal zijn. Een uitstekende aanpak voordat u met de werkzaamheden begint, is om een volledige lijst van alle componenten te maken om tijd te besparen en om te voorkomen dat u midden in het project vastloopt. Hieronder vindt u een volledige lijst van alle componenten die gemakkelijk op de markt verkrijgbaar zijn:
Stap 1: gebruikte componenten (hardware)
Stap 2: Gebruikte componenten (software)
Stap 3: Blokschema
Om de werking van de helm goed te demonstreren heb ik een blokschema gemaakt dat hieronder wordt weergegeven:
Stap 4: Werkingsprincipe
Alle soorten Arduino-boards kunnen in het project worden gebruikt, maar ik gaf de voorkeur aan Arduino Nano omdat er twee in de helm worden geplaatst en ze minder ruimte nodig hebben. Ik heb alcoholsensor MQ-3 gebruikt om de hoeveelheid alcohol te bepalen die de bestuurder heeft ingenomen en dit niveau wordt aangegeven met een tweekleurige LED. Als de chauffeur veel alcohol heeft gedronken, gaat de led branden Rood en een sms-melding wordt via een GPS naar het nummer dat in de code wordt vermeld, verzonden. Als de LED gaat branden Geel het betekent dat het alcoholpeil matig is en als het verandert Groen het betekent dat de chauffeur niet dronken is. Hierdoor wordt de veiligheid van de chauffeur gegarandeerd en wordt het risico op een ongeval in hoge mate geminimaliseerd. De Ultrasoon sensor wordt aan de achterkant van de helm geplaatst en blijft de afstand tussen de berijder en de voertuigen achteraan berekenen. Als een voertuig de berijder met een zeer hoge snelheid nadert, stuurt de ultrasone sensor een signaal naar Arduino om de zoemer te activeren en daarom zal de berijder opzij gaan en het voertuig voorbij laten gaan. Ik heb de GPS-module om waarschuwingen te sturen naar het specifieke mobiele nummer in geval van een ongeval. Voor het detecteren van het ongeval is de trillingssensor in het circuit opgenomen die kan worden afgestemd op een bepaald trillingsniveau en onmiddellijk de GSM-module vertelt om een melding naar bepaalde nummers te sturen als een hulpoproep. In dit project zullen twee Arduino’s worden gebruikt. De ene wordt verbonden met de ultrasone sensor en de alcoholsensor en de andere met de GSM-module en de trillingssensor. Er zullen twee afzonderlijke circuits zijn die in de helm worden geplaatst en ze zullen op dezelfde batterij worden aangesloten. Opmerking:De in de trillingssensor aanwezige variabele condensator wordt afgesteld.
Stap 5: Het circuit op Proteus monteren
- Nadat u de Proteus-software heeft gedownload en geïnstalleerd, opent u deze. Open een nieuw schema door op het ISISpictogram op het menu.
- Wanneer het nieuwe schema verschijnt, klikt u op het P.pictogram in het zijmenu. Hierdoor wordt een venster geopend waarin u alle componenten kunt selecteren die zullen worden gebruikt.
- Typ nu de naam van de componenten die zullen worden gebruikt om het circuit te maken. De component verschijnt aan de rechterkant in een lijst.
- Zoek op dezelfde manier als hierboven in alle componenten zoals hierboven. Ze verschijnen in de Apparaten Lijst.
Stap 6: Circuitdiagrammen
Stel uw hardwarecircuit samen volgens de onderstaande schakelschema's:
- Schakelschema # 1:
- Schakelschema #2:
Stap 7: Aan de slag met Arduino
Maak je geen zorgen als je nog niet bekend bent met Arduino IDE, want hieronder zie je duidelijke stappen voor het branden van code op het microcontrollerbord met Arduino IDE. U kunt vanaf hier de nieuwste versie van Arduino IDE downloaden en de onderstaande stappen volgen:
- Sluit je Arduino Nano-bord aan op je laptop en open het configuratiescherm. klik in het configuratiescherm opHardware en geluid. Klik nu opApparaten en printers.Zoek hier de poort waarop uw microcontroller-kaart is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
- We zullen een bibliotheek moeten toevoegen om de GSM-module te gebruiken. Ga naar Schets> Bibliotheek opnemen> .ZIP-bibliotheek toevoegen.
- Klik op het menu Tool en zet het bord op Arduino Nano.
- Stel in hetzelfde toolmenu de processor in op ATmega328P (Oude Bootloader).
- Stel in hetzelfde Tool-menu de poort in op het poortnummer dat u eerder in het Apparaten en printers.
- Download de onderstaande code en plak deze in uw Arduino IDE. Klik op de uploaden knop om de code op uw microcontroller-bord te branden.
Stap 8: Code van het project
De code is een beetje lang, maar het is heel eenvoudig. Enkele van de brokken worden hieronder uitgelegd:
1. Bij de start zijn bibliotheken inbegrepen zodat we gemakkelijk kunnen communiceren met speciale randapparatuur.
#include "Adafruit_FONA.h" #includeSoftwareSerial fonaSS = SoftwareSerial (FONA_TX, FONA_RX); SoftwareSerial * fonaSerial = & fonaSS; Adafruit_FONA fona = Adafruit_FONA (FONA_RST);
2. Vervolgens worden pinnen op de Arduino nano gedefinieerd die zullen worden gebruikt om de externe sensoren op de microcontroller aan te sluiten. Deze pinnen zijn verantwoordelijk voor de invoer en uitvoer van de gegevens in de microcontroller.
#define FONA_RX 2 #define FONA_TX 3 #define FONA_RST 4 // trillingssensor #define VS 10 #define R 2 #define Y 4 #define MQ3 A0 # definieer zoemer 9. #define triggerPin 7 // triggering op pin 7 #define echoPin 8 // echo op pin 8
3. Vervolgens worden verschillende variabelen geïnitialiseerd die later zullen worden gebruikt in de berekeningsprocessen gedurende de looptijd van de code. Er wordt ook een buffer gemaakt die zal worden gebruikt met de GSM-module.
int gasniveau; // dit is een grote buffer voor antwoorden char replybuffer [255]; uint8_t readline (char * buff, uint8_t maxbuff, uint16_t timeout = 0); uint8_t-type; int vs = 10; int shockVal = HOOG;
4. leegte setup ()is een functie die slechts één keer wordt uitgevoerd wanneer de microcontroller wordt ingeschakeld of de inschakelknop wordt ingedrukt. de baudrate wordt in deze functie ingesteld, wat in feite de snelheid in bits per seconde is waarmee de microcontroller communiceert met de externe sensoren. Alle pinnen van de Arduino worden hier geïnitialiseerd zodat ze worden gebruikt om input van de sensor te krijgen of om output naar een ander apparaat te sturen. De GSM-module wordt ook geïnitialiseerd in deze functie.
leegte setup () {Serial.begin (9600); // we beginnen met seriële communicatie, zodat we de afstand kunnen zien op de seriële monitor Serial.println ("Tech Ponder's UltraSonic Sensor Tutorial"); pinMode (triggerPin, UITGANG); // definiëren pinnen pinMode (echoPin, INPUT); pinMode (zoemer, OUTPUT); digitalWrite (zoemer, LOW); pinMode (MQ3, INPUT); pinMode (R, OUTPUT); pinMode (Y, OUTPUT); pinMode (vs, INPUT); while (! Serial); // Serial.println (F ("FONA basistest")); // Serial.println (F ("Initialiseren ... (kan 3 seconden duren)")); fonaSerial->begin(4800); if (! fona.begin (* fonaSerial)) {// Serial.println (F ("Kon FONA niet vinden")); terwijl (1); } type = fona.type(); // Serial.println (F ("FONA is OK")); // Serial.print (F ("Gevonden")); switch (type) {case FONA800L: // Serial.println (F ("FONA 800L")); breken; zaak FONA800H: // Serial.println(F("FONA 800H")); breken; case FONA808_V1: // Serial.println (F ("FONA 808 (v1)")); breken; geval FONA808_V2: // Serial.println (F ("FONA 808 (v2)")); breken; geval FONA3G_A: // Serial.println (F ("FONA 3G (Amerikaans)")); breken; case FONA3G_E: // Serial.println (F ("FONA 3G (European)")); breken; standaard: // Serial.println (F ("???")); breken; } // IMEI-nummer van module afdrukken. char imei [15] = {0}; // MOET een buffer van 16 tekens gebruiken voor IMEI! uint8_t imeiLen = fona.getIMEI (imei); if (imeiLen> 0) {// Serial.print ("Module IMEI:"); Serial.println (imei); }}
5. leegte lus ()is een functie die herhaaldelijk in een lus wordt uitgevoerd terwijl de microcontroller is ingeschakeld. Er wordt een code geschreven voor een ultrasone sensor die, als deze een afstand meet die kleiner is dan een bepaalde waarde, een signaal naar de zoemer stuurt die wordt gebruikt om de berijder te laten weten dat er een voertuig in de buurt komt. Ook de gassensor is hier geïntegreerd. Er worden drie leds gebruikt om aan te geven of de berijder zwaar, gedeeltelijk of minder dronken is. Als de groene LED brandt, betekent dit dat de berijder klaar is om te gaan. Aan het einde van deze functie wordt een andere functie genoemd viberationFun ().
void loop() { int duur, afstand; // Duur en afstand toevoegen digitalWrite (triggerPin, HIGH); // het triggeren van de golf (zoals het knipperen van een LED) vertraging (10); digitalWrite (triggerPin, LOW); duur = pulseIn(echoPin, HOOG); // een speciale functie voor luisteren en wachten op de golfafstand = (duur / 2) / 29.1; // het getal omzetten in cm (als je inches wilt, moet je de 29.1 wijzigen met een geschikte nummervertraging (1000); Serial.print (afstand); // de nummers afdrukken Serial.print ("cm"); / / en de eenheid Serial.println (""); // gewoon afdrukken naar een nieuwe regel if (afstand <35) {digitalWrite (buzzer, HIGH); Serial.println ("Buzzer On");} digitalWrite (buzzer, LOW ); gaslevel = (analogRead (MQ3)); gaslevel = map (gaslevel, 0,1023,0,255); if (gaslevel> 100 && gaslevel <= 300) {// gaslevel is groter dan 100 en kleiner dan 300 digitalWrite (R ,LOW);//RODE led is uit _delay_ms(500);//delay digitalWrite(Y,HIGH);//GELE led is aan _delay_ms(500); } else if(gasniveau > 300 && gasniveau <= 600){ // gaslevel is groter dan 300 en kleiner dan 600 digitalWrite (Y, LOW); // GELE led is uit _delay_ms (500); digitalWrite (R, HIGH); // RODE led is aan} anders {digitalWrite (R, LOW ); // rode led is uit digitalWrite (Y, LOW); // GELE led is uit} Serial.println (gaslevel); // print waarden op seriële monitor _delay_ms (100); viberationFun ();}
6. viberationFun ()is een functie die detecteert of de fiets een aanrijding heeft gehad met een ander object of niet. Als het een botsing detecteert, stuurt het een bericht naar de nummers die in de code zijn gespecificeerd. Op deze manier komt het nieuws van het ongeval bij iemand anders terecht die de nodige maatregelen zal nemen om de berijder te redden.
void viberationFun () {shockVal = digitalRead (vs); int t = 0; char sendto [11] = "UW NUMMER"; char sendto1 [11] = "UW NUMMER 2"; char message [27] = "Ongeval gedetecteerd"; if (shockVal == HIGH || shockVal == 1) {if (t == 0) {Serial.println (shockVal); if (! fona.sendSMS (sendto, message) &&! fona.sendSMS (sendto1, message)) {Serial.println (F ("Failed")); } else {Serial.println (F ("Verzonden!")); t = 1; } vertraging (1000); if (! fona.sendSMS (sendto1, message)) {Serial.println (F ("Failed")); } else {Serial.println (F ("Verzonden!")); t = 1; }}} anders {t = 0; }}
Stap 9: De hardware monteren
Nu we de belangrijkste verbindingen kennen en ook het volledige circuit van ons project, laten we doorgaan en beginnen met het maken van de hardware van ons project. Een ding moet in gedachten worden gehouden dat het circuit compact moet zijn en dat de componenten dicht bij elkaar moeten worden geplaatst. Veroboard is de betere optie ten opzichte van het breadboard omdat verbindingen op het breadboard losraken en er kortsluiting kan optreden en het breadboard meer gewicht heeft in vergelijking met het Veroboard. Het circuit dat op het Veroboard wordt geplaatst, is erg klein, zodat het gemakkelijk in de helm kan worden gemonteerd.
- Neem een Veroboard en wrijf de zijkant met de koperen coating in met een schraappapier.
- Plaats nu de componenten zorgvuldig en voldoende dichtbij zodat de omvang van het circuit niet erg groot wordt.
- Maak de verbindingen voorzichtig met soldeerbout. Als er een fout wordt gemaakt tijdens het maken van de verbindingen, probeer dan de verbinding te desolderen en de verbinding opnieuw goed te solderen, maar uiteindelijk moet de verbinding goed vastzitten.
- Voer een continuïteitstest uit nadat alle aansluitingen zijn gemaakt. In de elektronica is de continuïteitstest het controleren van een elektrisch circuit om te controleren of er stroom vloeit in het gewenste pad (dat het zeker een totaalcircuit is). Een continuïteitstest wordt uitgevoerd door een kleine spanning in te stellen (bedraad in opstelling met een LED of commotie creërend onderdeel, bijvoorbeeld een piëzo-elektrische luidspreker) over de gekozen weg.
- Als de continuïteitstest slaagt, betekent dit dat het circuit naar behoren is gemaakt zoals gewenst. Het is nu klaar om getest te worden.
- Sluit de batterij aan op het circuit.
De rest van het circuit wordt in de helm geplaatst, behalve de ultrasone sensor die aan de achterkant van de helm wordt gemonteerd om de voertuigen die van achteren komen te detecteren. Lipo-batterij wordt in dit project gebruikt omdat het een zeer lichtgewicht batterij is en zelfs als de berijder een lange reis maakt, kan dit een betere timing geven. Pas de Lipo-batterij in de helm aan, want door barre weersomstandigheden zoals regen kan het circuit uitvallen.
Stap 10: testen
Zoals nu, wordt de hardware geassembleerd en wordt de code ook geüpload naar de microcontroller, laten we de laatste stap doorlopen en het circuit testen. Ga op de motor zitten en draai AAN de drukknopschakelaar om het circuit te activeren. Begin in uw straat te rijden en vraag iemand om u met hoge snelheid van achteren op de auto te naderen. U zult zien dat de zoemer gaat rinkelen en daarna met hoge snelheid afremmen zodat er grote trillingen kunnen ontstaan. Zodra de trilling optreedt, wordt er een waarschuwingsmelding verzonden naar het mobiele nummer dat je in de code hebt genoemd.
Aanbevelingen
Dit is een zeer interessant project, er zijn verschillende opties die er verder in kunnen worden opgenomen met behulp van enkele elektronische basiscomponenten. Sommigen van hen worden hieronder geïllustreerd:
- U kunt Raspberry Pi gebruiken met de Pi-cameramodule en pas de positie zo aan dat u de projectie op de spiegel van de helm kunt observeren. Op deze manier zou je een achteraanzicht van de weg kunnen krijgen en zou het erg handig zijn tijdens het inhalen, enz.
- De relaismodule kan worden aangesloten op de contactschakelaar van de motor en kan zo worden ingesteld dat het contact draait AANalleen als de berijder de helm heeft gedragen.
- Kleine zonnepanelen kunnen ook aan de boven- en achterkant van de helm worden bevestigd, zodat de behoefte aan de batterij wordt verminderd en het gewicht van de schakelingen in de helm verder kan worden verminderd.