ITTT - Thomas Vlekke - Sonar Proximity Sensor

by ThomasVlekke in Circuits > Arduino

235 Views, 0 Favorites, 0 Comments

ITTT - Thomas Vlekke - Sonar Proximity Sensor

FTMEINLLD4J8SZC.jpg

Voor ITTT heb ik een proximity sensor gemaakt die gebruik maakt van sonar. De feedback die gebruikt wordt is visueel door middel van LED lichtjes. Met gebruik van een Ultrasonic Sensor stuurt het apparaat een sonar ping naar buiten, en alles waar de sonar tegenaan komt kaatst de sonar terug, zodat het apparaat weet of een object dichtbij is (en zo ja, hoe dichtbij). Als een object dichterbij komt dan gaat en LED lampje harder branden en juist weer zachter als het object verder weg gaat. Als een object te dichtbij komt dan gaat een rood lampje branden met af en toe een knipper als waarschuwing.


Terwijl ik bezig was met het uitpakken van mijn Arduino pakket vielen mijn ogen eigenlijk direct al op de Ultrasonic sensor(US). Initieel wilde ik iets doen met geluid (wat geregeld werd met de US. Dit bleek alleen veel te moeilijk en over het algemeen te hoog gegrepen voor mij. Ik vind Arduino erg interessant maar ik merkte snel dat de mindset en en fysieke koppelen aan het digitale verassend moeilijk was voor mij om onder de knie te krijgen. Al helemaal toen ik erachter kwam dat ik moest multi-threaden als ik de US wilde gebruiken EN met geluid zou gaan werken. Ik moest dus wat anders verzinnen. Toen ik naar mijn code keek realiseerde ik me dat ik wel iets kon doen met de waarde die ik voorheen genereerde (een afstand en gekoppeld hieraan een waarde die van 0-255 ging, normaal zou ik dit gebruiken voor geluid maar dit kon ik ook voor een LED lampje gebruiken waar ik niet voor hoefde te multi-threaden). Helaas zat ik de hele eerste periode vast op het muziek instrumentje waardoor ik eigenlijk niet eens een beetje een product had bij de initiële beoordeling. Maar ik ging de tijd benutten die ik zou krijgen als jaar 2 restricted. En toen ik eenmaal mijn code kon herschrijven en aanpassen voor een LED lamp-gebruikende proximity sensor ging het alleen nog om de behuizing en het solderen.

Het idee is nu dat je het kastje neerzet in het donker op een object waar je je tenen zou stoten. Het lampje gaat feller branden als je dichterbij komt, dus dan weet je dat daar het object staat. En vervolgens, als je te echt te dichtbij loopt, dan gaat het rode lampje branden. Dan weet je dat je dus al helemaal op moet passen met waar je loopt, omdat je bijna bij het object bent waar je dus pijnlijk je teen zou stoten. Dit idee waarmee ik mijn oude code goed toe kon passen kwam in me op toen mijn vader uitlegde hoe hij zijn teen tegen de wasmand stootte maar hij geen licht aan wilde doen (in de overloop op de 1e verdieping). Toen dacht ik dus dat dit een leuk idee zou zijn om te maken voor ITTT, omdat het ook echt bruikbaar is. Ik heb dit project uiteindelijk ook aan mijn vader gegeven, zodat hij die, als de wasmand op de overloop staat, zo kan neerzetten dat hij goed zou zien waar hij wel of niet kan lopen.

Supplies

Componenten gebruikt

  • Arduino Uno
  • HC-SR04 UltraSonic Sensor
  • Rood LED lampje
  • Blauw LED lampje
  • Weerstand (x2)
  • jumper wires (x10)
  • Phone charger wall plug met juiste specificaties voor Arduino
  • Extended Arduino cable (1 meter)


Materialen gebruikt voor behuizing

  • plastic (3D geprint)
  • Plastic lijm (merk: citadel)


Gereedschap

  • Soldeerbout met soldeer
  • 3D printer
  • Kniptang
  • Striptang
  • stanleymes/zakmes
  • Mijn handen

Testing

testing.png
Vlekke Thomas Arduino Testing
ITTT testing video

Voordat ik de behuizing ging maken stortte ik me op het testen met een bread board. Ik denk dat iedereen dit wel heeft gedaan, en ik dus ook. Pas toen ik hiermee klaar was wist ik waar ik aan toe was met wat ik nodig zou hebben als behuizing.

Building (The Bad Part)

rn_image_picker_lib_temp_bee00c14-1719-4155-ad12-fa820e170161.jpg
20230119_211953.jpg
20230120_165843.jpg

Mijn allereerste print mislukte lichtelijk en kwam er niet helemaal mooi uit. Ook had ik onderschat (achteraf niet heel scherp) hoe lang de print zou duren, dus ook is deze niet helemaal af (dekseltje). Ik vind het alleen ontzettende verspilling om het dekseltje weg te gooien, dus ik heb deze wel gebruikt in mijn uiteindelijke product! Helaas was een andere print (hoorde het grotere doosje te worden) mislukt. Dit kwam gelukkig(?) niet door mij, maar door simpelweg een beetje ongeluk met de 3D printer. Deze heb ik de dag erna volledig geprint zodat ik het definitief in elkaar kon zetten. Het bouwen ging dus zeker niet zonder tegenslag.

Ook had één van mijn katten een goed idee verzonnen. Dit idee was om op de eettafel te springen (wat niet mag!) en een lekker kabeltje door te kauwen. Dit zorgde ervoor dat ik vrolijk opnieuw kon gaan solderen. Gelukkig stond er geen stroom op terwijl ze haar elektrische prooi in tweeën deelde.

Building (the Good Part)

ITTT 3D printing
20230118_162220.jpg
20230119_212038.jpg
20230120_165858.jpg
20230120_101818.jpg

Gelukkig zat het niet alleen maar tegen en heb ik alles 3D kunnen printen (ik vind 3D printen per definitie gewoon erg interessant en een leuk concept! Vanaf het begin stond mijn blik dus eigenlijk al op het 3D printen van alle benodigde onderdelen voor de behuizing).

Ik heb de kabel iets moeten verplaatsen (plastic verwarmen en een beetje de goede richting op duwen) want anders kon hij niet met de Arduino connecten. Maar gelukkig was dat het enige waar ik tegenaan liep.

Overigens zijn de stukjes plakband die je op latere foto's gaat zien erop geplakt, omdat de plastic lijm nog niet gedroogd was, en zo bleef het dekseltje op de goede plek zitten. Het uiteindelijke resultaat was eigenlijk redelijk dichtbij wat ik in gedachte had toen ik de bakjes en de deksels in Blender maakte voor het 3D printen. En het half mislukte dekseltje wat technisch gezien mislukt was, gaf eigenlijk een beetje karakter aan het bakje, dus ik ben blij dat ik het plastic dekseltje niet heb verspilt!

Ik heb uiteindelijk 2 doosjes gemaakt die beide een passend dekseltje hebben. Één deksel zit bovenop het bakje en de ander zit onderop het bakje (zit strak, valt er niet uit. Past precies!). Heb elk onderdeel (4) 3D geprint in Makerspace op het IBB door middel van de Ultimaker 2+ en Ultimaker 3.

Coding

Math01.png

Mijn code avontuur zat vol met gedachtes, frustraties, verwarring maar vooral de gedachte "wacht, waarom werkt dit niet?". Gelukkig ben ik uiteindelijk (met behulp van een wiskunde forum die al gesloten was) en een arduino forum, dus ver gekomen dat mijn bedenksel werkte. Dit was overigens het winnende kopje als het gaat om "welk onderdeel heeft het meeste tijd gekost".

Mijn code is als volgt (inclusief een paar notities (begint met //) die ik tijdens het maken van de code noteerde voor duidelijkheid voor mijzelf):


#include "NewPing.h"

#define TRIGGER_PIN 10
#define ECHO_PIN 13
#define MAX_DISTANCE 50

int LEDPin = 9;
int analogPin = 0;
int val = 0;
int LEDPinRed = 11;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

float duration, distance;

void setup() {
 pinMode(LEDPin, OUTPUT);
 pinMode (LEDPinRed, OUTPUT);
 Serial.begin (9600);
}

void loop() {
 analogPin = 255 * (1 - (distance / 50));      
//analogRead values gaan van 0 tot 1023, en analogWrite van 0 tot 255. Max range/distance = 50. 50 * 5.1 = 255 <- voor oude berekening. Maar de interval van 0 - 50 is nu wel met 1 = 5.1. Dit laat zien dat ik in beide berekeningen goed zit (wiskundig en theoretisch

 analogWrite(LEDPin, analogPin);    //kan ik de distance gebruiken als een analogPin replacement?
 Serial.print("Ultrasonic sensor LED value: ");
 Serial.print(analogPin);

 duration = sonar.ping();

 distance = (duration / 2) * 0.0343;   
//Hoe lang is de sonar (geluid) aan het reizen heen en terug. Maar we hebben alleen de afstand nodig, niet een retourtje. Dus vandaar de /2. En dan doen we dat keer de snelheid van geluid om een accuraat mogelijke afstand te krijgen van de sonar

 Serial.print(" Distance = ");

 if (distance >= 400 || distance <= 6) {
  Serial.println(" Out of range");
  distance = 50;
  analogWrite(11, 200);
  delayMicroseconds(1000000);
  analogWrite(11, 10);
  delayMicroseconds(1000000);
 }
 else {
  Serial.print(distance);
  Serial.println(" cm");
  analogWrite(11, 0);
  delay (10);
 }
 delay(10);
}

Finalizing

Arduino_Drawing.png
20230120_213225.jpg
20230120_221359.jpg

Uiteindelijk kon ik alles precies in elkaar zetten zoals ik geplanned had toen ik de 3D models maakte etc. Hier was ik erg tevreden mee aangezien solderen, 3D printen en Arduino (en per definitie al coden wat iets fysieks aanstuurt) allemaal een 'first' waren voor mij tijdens dit project.

Conclusie

20230120_232132.jpg
20230120_232221.jpg
FinalOpname GeenGeluid

Ik ben erg veel opgestoken tijdens het werken aan ITTT. Ik vind het jammer dat ik niet alles toe heb kunnen passen en ook dat het coden + fysieke me niet helemaal ligt om in elkaar te zetten, want toen dingen tijdens testen werkte (bij beide fysieke en code gerelateerde testen) voelde dat niet alleen erg goed, maar het bracht ook nieuwe ideeën (wat helaas allemaal te ambitieus voor mij was). Het concept van een sonar heb ik eigenlijk altijd erg interessant gevonden, en ik denk dat dit dan ook de reden is dat ik vleermuizen bijvoorbeeld hele mooie en interessante dieren vind. Dus dat ik uiteindelijk iets heb gekozen met een HC-SR04 is eigenlijk niet heel verassend. Los van dat ik best een tegenslag had toen ik initieel moest toegeven dat het concept, van het doosje waar je zelf het volume en de toonhoogte kon regelen met de handen (wederom met een HC-SR04), veel te hoog gegrepen voor mij was, heb ik toch best veel lol gehad met testen en heb ik ook redelijk wat opgestoken over Arduino, wiskunde, hoe geluid werkt en toen nog meer over Arduino. Ik had maar 2 formules nodig maar hierdoor kwam ik een soort spiraal van het internet en kwam ik op forums waar ik niet van wist dat ze bestonden. Ookal was dit 1 van de redenen waardoor het onderzoeken misschien wel het meeste tijd heeft gevraagd dit project, heb ik alsnog lol gehad. Ik had alleen denk ik iets meer verwacht van mezelf als eindproduct toen ik vorig schooljaar aan dit project begon. (Bij het filmpje heb ik ook nog 2 foto's toegevoegd zonder dat er plakban op zit: plastic lijm was hier opgedroogd.)