Vi kan alla vara överens om att det är irriterande när du cyklar och plötsligt hittar en annan cyklist som försöker köra om dig utan att signalera och i vissa fall kanske du inte ens observerar honom och av misstag slår honom. Så det här projektet kan hjälpa till med detta problem genom att bygga ett omkörningsvarningssystem som kommer att använda en ultraljudssensor för att spåra inkommande cyklister som planerar att köra om dig från sidan, och det kommer att använda en vibrationsmotor som kommer att vibrera för att varna dig när detta oannonserat omkörning äger rum. Detta kan också vara användbart för människor som jag som gillar att använda öronsnäckor eller ett headset när de cyklar.
Komponenter krävs
För att kunna genomföra detta projekt behöver du följande komponenter (Varje komponenter innehåller en länk där du kan köpa dem från vår hemsida):
1 |
|
1 |
|
1 |
|
7 |
|
1 |
|
1 |
|
Lipo 18650 batteri |
1 |
3D-tryckt fodral |
1 |
Liten 170 anslutningspunkter Breadboard |
1 |
Filerna för 3D Printed Case kommer att inkluderas i artikeln.
Guide
Förutsättningar
Du måste installera Arduino IDE från denna länk , du använder den för att programmera din Arduino Nano.
Du kan installera denna version:
I Arduino IDE måste du gå till fliken Verktyg:
Och ändra brädan till Arduino Nano så här:
Och efter att du har anslutit ditt kort till din dator kommer det automatiskt att hitta och välja kommunikationsporten som det använder.
Hårdvara
Kabeldiagram
För att driva mikrokontrollkortet kan du använda en 18650 batterihållare/laddare från vår hemsida, observera att du måste tillhandahålla ditt eget 18650 batteri.
Du måste löda två stift på batterihållaren som på bilden nedan:
Det 3D-tryckta fodralet
Det 3D-utskrivna fodralet
Det 3D-printade locket
Du kan få nätfilerna så att du skriver ut fallet på denna länk .
För det har du möjlighet att fästa locket på lådan med 4 M4*0,7 skruvar som är minst 6 mm och upp till 10 i längd, eller så kan du använda tejp för enklare demontering. Och för att fästa på cykelstolen skulle jag rekommendera antingen ducktejp eller en mycket stark dubbelhäftande tejp.
Koda
För det här projektet måste du ställa in sensorn från koden, och för att göra det enklare för dig kommer jag att dela upp koden åt dig, och jag kommer också att inkludera hela koden i slutet av denna uppdelning.
Ställa in variablerna
Variabler lagrar information som siffror eller ord, i vårt fall använder vi dem för att enkelt flytta information runt koden och vi kan också använda dem för att ge namn till stiften från Arduino, detta kommer att göra det mycket lättare att använda dem i koden två användningsområden.
Det spelar ingen roll var du initierar dem, vilket ger dem ett startvärde, vilket rekommenderas varje gång du vill använda dem i koden för att jämföra med andra värden, till exempel.
När du skapar en variabel måste du ange vilken typ av variabel du vill ha, beroende på programmeringsspråk kan dessa typer vara olika, men i vårt fall betyder "int" heltal och definierar att variabeln är ett heltal.
Const betyder konstant vilket betyder att vi inte vill att värdet från den variabeln ska ändras.
Därefter måste vi definiera "Speed of Sound" och skapa två variabler utan att ge initiala värden.
Vi ska använda dem för ultraljudssensorn, för att kunna beräkna avståndet.
Ultraljudssensorn använder något som liknar ekolokalisering , men i vårt fall kan vi använda den tid som det tog vågen att träffa objektet och komma tillbaka.
Installationsfas
Som standard när du skapar ett nytt projekt i Arduino IDE får du 2 funktioner, setup och loop.
För inställningsfunktionen måste vi starta seriekommunikationen så att vi kan få avståndet utskrivet i terminalen. Detta använder vi för att testa sensorn när vi har enheten kopplad till datorn som vi programmerar den från. Efteråt ställer vi in de relevanta ultraljudssensorstiften som en ingång eller en utgång.
Huvudfunktion
För vår huvudfunktion använder vi den förgenererade loop-funktionen, som loopar koden som är inkapslad av loop-funktionen.
I slingfunktionen hämtar vi avläsningarna från vår sensor och utför beräkningar så att vi kan se till att vi hela tiden kontrollerar om någon vill göra en omkörning.
Det första vi vill göra är att ta avläsningar från ultraljudssensorn genom att be den skicka en puls och tala om för oss när den kommer tillbaka med hjälp av den här delen av koden:
Vi måste använda en ekvation för att bestämma "avståndet", i den ekvationen tar vi den tid som det tog vågen att resa avståndet till objektet och komma tillbaka. Vi tar "avståndet" och multiplicerar det med "ljudets hastighet", som vi vet är 343 m/s. Vi ska använda 0,034 eftersom vi vill få avståndet i cm inte i meter, slutligen måste vi dividera med 2 för att bara få "avståndet" från sensorn till objektet.
Avstånd = (längd * ljudhastighet)/ 2
I koden måste vi skriva det så här:
För att skriva ut detta i terminalen använder vi denna kod:
Nu har vi den del där vi bestämmer om någon vill köra om oss eller inte:
Här tar vi avläsningar och om något inom 2 meter ändrar sitt avstånd jämfört med sensorn väldigt snabbt, så tar vi det som en annan cyklist som vill köra om oss, du kan justera tillståndet från om för att kalibrera sensorn för dina behov .
När det händer kommer vi att trigga vår vibrationsmotor. Denna motor använder analoga värden för att bestämma dess styrka, genom att skriva ett analogt värde ( PWM ) på 255 till vibrationsmotorn.
I mitt fall ville jag ha det maximala värdet så att jag kunde använda det för att testa, men du kan ändra det som du vill.
Detta är hela koden:
const int trigPin = 9 ;
const int echoPin = 8 ;
const int pwmPin = 5 ;
int x= 0 ;
int y= 0 ;
# define Speed_of_Sound 0,034
lång varaktighet;
flytavstånd ;
ogiltig installation ()
{
Seriell . börja ( 115200 );
pinMode (trigPin, OUTPUT );
pinMode (echoPin, INPUT );
pinMode (pwmPin, OUTPUT );
}
void loop ()
{
digitalWrite (trigPin, LOW );
delayMikrosekunder ( 2 );
digitalWrite (trigPin, HIGH );
delayMikrosekunder ( 10 );
digitalWrite (trigPin, LOW );
duration = pulseIn (echoPin, HIGH );
distans = varaktighet * Speed_of_Sound/ 2 ;
Seriell . print ( "Avståndet är: " );
Seriell . println (avstånd);
x=avstånd;
if (yx>= 90 &&x< 200 )
{
Seriell . print ( "Någon kommer" );
digitalWrite (pwmPin, HIGH );
fördröjning ( 1000 );
digitalWrite (pwmPin, LOW );
}
annat
om (x< 200 )
y=x;
fördröjning ( 1000 );
}
Du kan komma åt hela koden på denna länk .
Efter att du skrivit eller kopierat klistra in koden i Arduino IDE kan du ladda upp den till Microcontroller Board genom att trycka på uppladdningsknappen som ser ut så här: