- Materiale necesare:
- Diagrama circuitului stickului orb:
- Program Arduino pentru Smart Blind Stick:
- Arduino Blind Stick în acțiune:
Ai auzit vreodată de Hugh Herr? Este un celebru alpinist american care a spulberat limitele dizabilităților sale; el este un credincios puternic că tehnologia ar putea ajuta persoanele cu dizabilități să ducă o viață normală. Într-una din discuțiile sale despre TED, Herr a spus „ Oamenii nu sunt invalizi. O persoană nu poate fi ruptă niciodată. Mediul nostru construit, tehnologiile noastre, sunt rupte și dezactivate. Noi, oamenii, nu trebuie să ne acceptăm limitările, dar putem transfera dizabilități prin inovația tehnologică ”. Acestea nu au fost doar cuvinte, dar și-a trăit viața pentru ei, astăzi folosește picioare protetice și susține că trăiește la viața normală. Deci da, tehnologia poate neutraliza într-adevăr handicapul uman; având în vedere acest lucru, permiteți-ne să folosim niște plăci simple și senzori pentru a construi un baston de mers cu ultrasunete, folosind Arduino care ar putea fi mai mult decât un simplu stick pentru persoanele cu deficiențe de vedere.
Acest stick inteligent va avea un senzor cu ultrasunete pentru a detecta distanța față de orice obstacol, LDR pentru a detecta condițiile de iluminare și o telecomandă RF cu ajutorul căreia orbul ar putea localiza de la distanță stick-ul său. Toate feedback-urile vor fi date orbului printr-un buzzer. Desigur, puteți folosi un motor vibrator în locul lui Buzzer și puteți avansa mult mai mult folosind creativitatea dvs.
Materiale necesare:
- Arduino Nano (Orice versiune va funcționa)
- Senzor cu ultrasunete HC-SR04
- LDR
- Buzzer și LED
- 7805
- Transmițător și receptor RF de 433 MHz
- Rezistențe
- Condensatoare
- Apasa butonul
- Tablou de perfecționare
- Set de lipit
- Baterii de 9V
Puteți cumpăra toate componentele necesare pentru acest proiect smart blind stick de aici.
Diagrama circuitului stickului orb:
Acest proiect Arduino Smart Blind Stick necesită două circuite separate. Unul este circuitul principal care va fi montat pe stick-ul orbului. Celălalt este un mic circuit transmițător RF care va fi utilizat pentru localizarea circuitului principal. Schema circuitului plăcii principale pentru a construi un stick orb cu ajutorul senzorului cu ultrasunete este prezentată mai jos:
După cum putem vedea, un Arduino Nano este utilizat pentru a controla toți senzorii, dar puteți construi și acest stick orb inteligent folosind arduino uno, dar urmând aceleași pinouts și program. Placa completă este alimentată de o baterie de 9V care este reglată la + 5V folosind un regulator de tensiune 7805. Senzorul ultrasonic este alimentat de 5V și de declanșare și Echo PIN - ul este conectat la Arduino nano pinul 3 și 2 așa cum este arătat mai sus. LDR este conectat cu un rezistor de valoare 10K pentru a forma un divizor potențial și diferența de tensiune este citit de Arduino ADC PIN - ul A1. Pinul ADC A0 este utilizat pentru a citi semnalul de la receptorul RF. Ieșirea plăcii este dată de buzzerul care este conectat la pinul 12.
Circuitul de la distanță RF este prezentat mai jos. Funcționarea sa este, de asemenea, explicată în continuare.
Am folosit un mic hack pentru ca acest circuit de telecomandă RF să funcționeze. În mod normal, în timpul utilizării acestui modul RF de 433 MHz necesită un codificator și un decodor sau două MCU pentru a funcționa, ca în circuitul nostru anterior de emițător și receptor RF, am folosit HT12D și HT12E, decodor și respectiv codul IC. Dar, în aplicația noastră, avem nevoie doar de receptor pentru a detecta dacă emițătorul trimite niște semnale. Deci pinul de date al emițătorului este conectat la masă sau Vcc al sursei.
Pinul de date al receptorului este trecut printr-un filtru RC și apoi dat Arduino așa cum se arată mai jos. Acum, de fiecare dată când butonul este apăsat, receptorul produce o valoare constantă ADC în mod repetat. Această repetare nu poate fi observată atunci când butonul nu este apăsat. Așa că scriem programul Arduino pentru a verifica valorile repetate pentru a detecta dacă butonul este apăsat. Deci, astfel, un orb își poate urmări bastonul. Puteți verifica aici: cum funcționează emițătorul și receptorul RF.
Am folosit o placă perf pentru a lipi toate conexiunile, astfel încât să devină intactă cu stick-ul. Dar, le puteți face și pe o placă de măsurare. Acestea sunt plăcile pe care le-am realizat pentru acest proiect blind stick folosind arduino.
Program Arduino pentru Smart Blind Stick:
Odată ce suntem pregătiți cu hardware-ul nostru, putem conecta Arduino la computer și putem începe programarea. Codul complet utilizat pentru această pagină poate fi găsit în partea de jos a acestei pagini, o puteți încărca direct la bord Arduino. Cu toate acestea, dacă sunteți curioși să știți cum funcționează codul, citiți mai departe.
Ca toate programele, începem cu setarea nulă () pentru a inițializa pinii de ieșire de intrare. În programul nostru, pinul Buzzer și Trigger este un dispozitiv de ieșire, iar pinul Echo este un dispozitiv de intrare. De asemenea, inițializăm monitorul serial pentru depanare.
void setup () {Serial.begin (9600); pinMode (Buzz, OUTPUT); digitalWrite (Buzz, LOW); pinMode (trigger, OUTPUT); pinMode (ecou, INPUT); }
În interiorul buclei principale citim toate datele senzorilor. Începem cu citirea datelor senzorului senzorului ultrasonic pentru distanță, LDR pentru intensitatea luminii și semnal RF pentru a verifica dacă butonul este apăsat. Toate aceste date sunt salvate într-o variabilă așa cum se arată mai jos pentru utilizare ulterioară.
calculate_distance (declanșator, ecou); Semnal = analogRead (Remote); Intens = analogRead (Light);
Începem cu verificarea semnalului la distanță. Folosim o variabilă numită similar_count pentru a verifica de câte ori se repetă aceleași valori de la receptorul RF. Această repetare va apărea numai atunci când butonul este apăsat. Deci, declanșăm alarma apăsată la distanță dacă numărul depășește o valoare de 100.
// Verificați dacă Remote este apăsat int temp = analogRead (Remote); similar_count = 0; while (Signal == temp) {Signal = analogRead (Remote); similar_count ++; } // Dacă este apăsat de la distanță if (similar_count <100) {Serial.print (similar_count); Serial.println ("Apăsat de la distanță"); digitalWrite (Buzz, HIGH); întârziere (3000); digitalWrite (Buzz, LOW); }
O puteți verifica și pe Serial Monitor de pe computer:
Apoi verificăm intensitatea luminii în jurul orbului. Dacă LDR dă o valoare mai mică de 200, se presupune că este foarte întunecat și îi dăm avertizarea prin buzzer cu un ton specific de întârziere cu 200ms. Dacă intensitatea este foarte strălucitoare, aceasta este mai mare de 800, atunci dăm și un avertisment cu un alt ton. Tonul și intensitatea alarmei pot fi ușor variate prin schimbarea valorii respective în codul de mai jos.
// Dacă este foarte întunecat dacă (Intens <200) {Serial.print (Intens); Serial.println („Lumina puternică”); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); digitalWrite (Buzz, HIGH); delay (200); digitalWrite (Buzz, LOW); delay (200); întârziere (500); } // Dacă este foarte luminos dacă (Intens> 800) {Serial.print (Intens); Serial.println („Lumina scăzută”); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); digitalWrite (Buzz, HIGH); delay (500); digitalWrite (Buzz, LOW); delay (500); }
În cele din urmă, începem să măsurăm distanța față de orice obstacol. Nu va exista nicio alarmă dacă distanța măsurată este mai mare de 50cm. Dar, dacă este mai mic de 50 cm, alarma va începe prin a emite un bip. Pe măsură ce obiectul se apropie de sonerie, intervalul de semnal sonor va scădea. Cu cât obiectul este mai aproape, cu atât mai rapid va emite un semnal sonor. Acest lucru se poate face prin crearea unei întârzieri proporționale cu distanța măsurată. Deoarece delay () în Arduino nu poate accepta variabile, trebuie să folosim o buclă for , care se bazează pe distanța măsurată așa cum se arată mai jos.
if (dist <50) {Serial.print (dist); Serial.println ("Alertă obiect"); digitalWrite (Buzz, HIGH); for (int i = dist; i> 0; i--) întârziere (10); digitalWrite (Buzz, LOW); for (int i = dist; i> 0; i--) întârziere (10); }
Aflați mai multe despre măsurarea distanței folosind senzorul cu ultrasunete și Arduino.
Programul poate fi adaptat cu ușurință pentru aplicația dvs. prin schimbarea valorii pe care o folosim pentru a compara. Utilizați monitorul serial pentru a depana dacă este declanșată o alarmă falsă. Dacă aveți vreo problemă, puteți folosi secțiunea de comentarii de mai jos pentru a posta întrebările dvs.
Arduino Blind Stick în acțiune:
În cele din urmă, este timpul să testăm proiectul nostru arduino blind stick. Asigurați-vă că conexiunile sunt realizate conform schemei de circuit și că programul este încărcat cu succes. Acum, alimentați ambele circuite utilizând o baterie de 9V și ar trebui să începeți să vedeți rezultate. Mutați senzorul Ultra Sonic mai aproape de obiect și veți observa buzzerul bipând, iar această frecvență de bip crește pe măsură ce stick-ul se apropie de obiect. Dacă LDR este acoperit de întuneric sau dacă există prea multă lumină, buzzerul va emite un sunet. Dacă totul este normal, buzzerul nu va emite.
Când apăsați butonul de pe telecomandă, sunetul va emite un semnal sonor lung. Funcționarea completă a acestui Smart Stick pentru nevăzători care utilizează Arduino este prezentată în videoclipul prezentat la sfârșitul acestei pagini. De asemenea, folosesc un stick mic pentru a monta ansamblul complet. Puteți utiliza unul mai mare sau un stick orb real și îl puteți pune în acțiune.
Dacă sunetul dvs. sună întotdeauna, înseamnă că alarma este declanșată în mod fals. Puteți deschide monitorul serial pentru a verifica parametrii și pentru a verifica care este critic și pentru a regla acest lucru. Ca întotdeauna, puteți posta problema dvs. în secțiunea de comentarii pentru a obține ajutor. Sper că ai înțeles proiectul și ți-a plăcut să construiești ceva.