- Vereiste materialen:
- Blind Stick schakelschema:
- Arduino-programma voor Smart Blind Stick:
- Arduino Blind Stick in actie:
Ooit gehoord van Hugh Herr? Hij is een beroemde Amerikaanse bergbeklimmer die de beperkingen van zijn handicaps heeft verbrijzeld; hij is er sterk van overtuigd dat technologie gehandicapten zou kunnen helpen een normaal leven te leiden. In een van zijn TED-talks zei Herr: “ Mensen zijn niet gehandicapt. Een persoon kan nooit worden gebroken. Onze gebouwde omgeving, onze technologieën, is kapot en uitgeschakeld. Wij mensen hoeven onze beperkingen niet te accepteren, maar kunnen handicap overdragen door middel van technologische innovatie ”. Dit waren niet alleen woorden, maar hij leefde zijn leven voor hen, tegenwoordig gebruikt hij prothetische benen en beweert dat hij een normaal leven leidt. Dus ja, technologie kan inderdaad menselijke handicap neutraliseren; Laten we met dit in gedachten een paar eenvoudige ontwikkelborden en sensoren gebruiken om een ultrasone blinde wandelstok te bouwen met Arduino die meer kunnen presteren dan alleen een stok voor slechtzienden.
Deze slimme stick heeft een ultrasone sensor om de afstand tot elk obstakel te detecteren, LDR om de lichtomstandigheden te detecteren en een RF-afstandsbediening waarmee de blinde zijn stick op afstand kan lokaliseren. Alle feedback wordt via een zoemer aan de blinde man gegeven. Je kunt natuurlijk een vibratormotor gebruiken in plaats van Buzzer en nog veel meer vooruitgaan met je creativiteit.
Vereiste materialen:
- Arduino Nano (elke versie werkt)
- Ultrasone sensor HC-SR04
- LDR
- Zoemer en LED
- 7805
- 433 MHz RF-zender en ontvanger
- Weerstanden
- Condensatoren
- Druk op de knop
- Perf bord
- Soldeerkit
- 9V-batterijen
U kunt hier alle benodigde componenten voor dit slimme blindstick- project kopen.
Blind Stick schakelschema:
Dit Arduino Smart Blind Stick-project vereist twee afzonderlijke circuits. Een daarvan is het hoofdcircuit dat op de stok van de blinde man wordt gemonteerd. Het andere is een klein RF-zendcircuit op afstand dat zal worden gebruikt om het hoofdcircuit te lokaliseren. Het schakelschema van het moederbord om een blinde stok te bouwen met behulp van een ultrasone sensor wordt hieronder weergegeven:
Zoals we kunnen zien, wordt een Arduino Nano gebruikt om alle sensoren aan te sturen, maar je kunt deze slimme blinde stick ook bouwen met arduino uno maar volgens dezelfde pinouts en hetzelfde programma. Het complete bord wordt gevoed door een 9V-batterij die wordt geregeld tot + 5V met behulp van een 7805-spanningsregelaar. De ultrasone sensor wordt gevoed door 5V en de trigger en echo-pin zijn verbonden met Arduino nano-pin 3 en 2 zoals hierboven weergegeven. De LDR is verbonden met een weerstand van 10K om een potentiaalverdeler te vormen en het verschil in spanning wordt gelezen door Arduino ADC pin A1. De ADC-pin A0 wordt gebruikt om het signaal van de RF-ontvanger te lezen. De output van het bord wordt gegeven door de zoemer die is aangesloten op pin 12.
Het RF-afstandscircuit wordt hieronder weergegeven. De werking wordt ook verder uitgelegd.
Ik heb een kleine hack gebruikt om dit RF-afstandsbedieningscircuit te laten werken. Normaal gesproken vereist het gebruik van deze 433 MHz RF-module een encoder en decoder of twee MCU om te werken, zoals in ons vorige RF-zender- en ontvangercircuit dat we respectievelijk de HT12D en HT12E, decoder en encoder IC gebruikten. Maar in onze applicatie hebben we alleen de ontvanger nodig om te detecteren of de zender signalen uitzendt. Dus de datapin van de zender is verbonden met aarde of Vcc van de voeding.
De datapin van de ontvanger wordt door een RC-filter geleid en vervolgens aan de Arduino gegeven zoals hieronder weergegeven. Nu, telkens wanneer de knop wordt ingedrukt, voert de ontvanger herhaaldelijk een constante ADC-waarde uit. Deze herhaling kan niet worden waargenomen als de knop niet wordt ingedrukt. Dus we schrijven het Arduino-programma om te controleren op herhaalde waarden om te detecteren of de knop wordt ingedrukt. Dus zo kan een blinde zijn stok volgen. U kunt hier controleren: hoe RF-zender en ontvanger werken.
Ik heb een perfboard gebruikt om alle verbindingen te solderen zodat het intact wordt met de stick. Maar je kunt ze ook op een breadboard maken. Dit zijn de borden die ik met arduino voor dit blinde stokproject heb gemaakt .
Arduino-programma voor Smart Blind Stick:
Zodra we klaar zijn met onze hardware, kunnen we de Arduino op onze computer aansluiten en beginnen met programmeren. De volledige code die voor deze pagina wordt gebruikt, vindt u onderaan deze pagina, u kunt deze rechtstreeks naar uw Arduino-bord uploaden. Als u echter nieuwsgierig bent naar hoe de code werkt, lees dan verder.
Zoals alle programma's beginnen we met void setup () om Input Output-pinnen te initialiseren. In ons programma is de Buzzer en Trigger pin een Output device en de Echo pin is een Input device. We initialiseren ook de seriële monitor voor foutopsporing.
void setup () {Serial.begin (9600); pinMode (Buzz, OUTPUT); digitalWrite (Buzz, LOW); pinMode (trigger, OUTPUT); pinMode (echo, INPUT); }
Binnen de belangrijkste lus we lezen alle sensoren gegevens. We beginnen met het lezen van de sensorgegevens van de ultrasone sensor voor afstand, LDR voor lichtintensiteit en RF-signaal om te controleren of de knop is ingedrukt. Al deze gegevens worden opgeslagen in een variabele zoals hieronder weergegeven voor toekomstig gebruik.
bereken_afstand (trigger, echo); Signaal = analogRead (Remote); Intens = analogRead (licht);
We beginnen met het controleren op het Remote-signaal. We gebruiken een variabele met de naam similar_count om te controleren hoe vaak dezelfde waarden worden herhaald door de RF-ontvanger. Deze herhaling vindt alleen plaats als de knop wordt ingedrukt. Dus we activeren het alarm Remote ingedrukt als de telling de waarde van 100 overschrijdt.
// Controleer of Remote is ingedrukt int temp = analogRead (Remote); similar_count = 0; while (Signal == temp) {Signal = analogRead (Remote); similar_count ++; } // Indien op afstand gedrukt if (similar_count <100) {Serial.print (similar_count); Serial.println ("Remote Pressed"); digitalWrite (Buzz, HIGH); delay (3000); digitalWrite (Buzz, LOW); }
U kunt het ook bekijken op Serial Monitor op uw computer:
Vervolgens kijken we naar de intensiteit van het licht rond de blinde man. Als de LDR een waarde van minder dan 200 geeft, wordt aangenomen dat het erg donker is en we geven hem de waarschuwing door middel van een zoemer met een specifieke vertragingstoon van 200 ms. Als de intensiteit erg helder is, dat is meer dan 800, dan geven we ook een waarschuwing met een andere toon. De alarmtoon en intensiteit kunnen eenvoudig worden gevarieerd door de respectieve waarde in de onderstaande code te wijzigen.
// Indien erg donker if (Intens <200) {Serial.print (Intens); Serial.println ("Bright Light"); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); vertraging (500); } // Indien zeer helder if (Intens> 800) {Serial.print (Intens); Serial.println ("Low Light"); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); }
Ten slotte beginnen we met het meten van de afstand tot elk obstakel. Er zal geen alarm zijn als de gemeten afstand meer dan 50 cm is. Maar als het minder dan 50 cm is, begint het alarm met een pieptoon. Naarmate het object dichter bij de zoemer komt, neemt het piepinterval ook af. Hoe dichterbij het object, hoe sneller de zoemer piept. Dit kan gedaan worden door een vertraging te creëren die evenredig is met de gemeten afstand. Omdat de delay () in Arduino geen variabelen kan accepteren, moeten we een for- lus gebruiken die lus op basis van de gemeten afstand zoals hieronder weergegeven.
if (dist <50) {Serial.print (dist); Serial.println ("Object Alert"); digitalWrite (Buzz, HIGH); voor (int i = dist; i> 0; i--) vertraging (10); digitalWrite (Buzz, LOW); voor (int i = dist; i> 0; i--) vertraging (10); }
Lees meer over het meten van de afstand met een ultrasone sensor en Arduino.
Het programma kan eenvoudig worden aangepast aan uw toepassing door de waarde te wijzigen die we gebruiken om te vergelijken. U gebruikt de seriële monitor om te debuggen als er een vals alarm wordt geactiveerd. Als je een probleem hebt, kun je het commentaargedeelte hieronder gebruiken om je vragen te stellen
Arduino Blind Stick in actie:
Eindelijk is het tijd om ons blind stick Arduino- project te testen. Zorg ervoor dat de aansluitingen zijn gemaakt volgens het schakelschema en dat het programma met succes is geüpload. Voorzie nu beide circuits van stroom met een 9V-batterij en u zou resultaten moeten gaan zien. Beweeg de Ultra Sonic-sensor dichter bij het object en u zult de zoemer horen piepen en deze piepfrequentie neemt toe naarmate de stick dichter bij het object komt. Als de LDR is bedekt met donker of als er te veel licht is, zal de zoemer piepen. Als alles normaal is, piept de zoemer niet.
Als u op de knop op de afstandsbediening drukt, geeft de zoemer een lange pieptoon. De volledige werking van deze Smart Stick voor blinden met Arduino wordt getoond in de video aan het einde van deze pagina. Ik gebruik ook een kleine stok om de complete montage te monteren, je kunt een grotere of een echte blinde stok gebruiken en deze in actie brengen.
Als uw zoemer altijd piept, betekent dit dat het alarm vals wordt geactiveerd. U kunt de seriële monitor openen om de parameters te controleren en te controleren welke kritiek wordt en dat aanpassen. Zoals altijd kunt u uw probleem in het commentaargedeelte plaatsen om hulp te krijgen. Ik hoop dat je het project begreep en het leuk vond om iets te bouwen.