Mündəricat:

Görmə Əlillər üçün Periferik Radar: 14 addım
Görmə Əlillər üçün Periferik Radar: 14 addım

Video: Görmə Əlillər üçün Periferik Radar: 14 addım

Video: Görmə Əlillər üçün Periferik Radar: 14 addım
Video: Post COVID-19 Autonomic Dysfunction 2024, Noyabr
Anonim
Görmə Əlillər üçün Periferik Radar
Görmə Əlillər üçün Periferik Radar

Dəhşətli qəza nəticəsində yaxınlarda bir dostum sağ gözünü görmə qabiliyyətini itirdi. Uzun müddət işsiz idi və geri qayıtdıqda, ən çətin şeylərindən birinin sağ tərəfində nə olduğunu bilməməsi olduğunu söylədi. Daha az periferik görmə şeylərə və insanlara zərbə vurmaq deməkdir. Bu məni narahat etdi. Qərara gəldim ki, edə biləcəyimiz bir şey olmalıdır.

Dostumun sağ tərəfindəki obyektlərə olan məsafəni ölçə biləcək bir cihaz qurmaq istədim. Planım, bir obyektə olan məsafəyə tərs mütənasib olaraq cihazı titrəmək üçün bir haptik motor istifadə etməkdir. Sonra cisimlər uzaqda olsaydı, motor titrəməzdi və cisim yaxınlaşdıqca aşağı səviyyədə titrəməyə başlayardı. Cisim yaxın olsaydı daha yüksək səviyyədə (və ya istədiyiniz səviyyədə) titrəyərdi. Cihaz, eynəklərin yan tərəfinə, sensorun sağa baxması üçün asılacaq qədər kiçik olmalıdır. Dostum cihazı eynəyinin sağ tərəfinə qoyardı, amma əlbəttə ki, başqası üçün sol tərəf ola bilər.

Evdə bir neçə akustik məsafə sensoru olduğunu xatırladım. Ancaq bir az böyük və həcmlidirlər, daha az dəqiqdir və ehtimal ki, eynəklərdə istifadə etmək üçün çox ağır olacaqlar. Başqa bir şey axtarmağa başladım.

Tapdığım şey, ST Electronics VL53L0X Uçuş Zamanı sensoru idi. Bu infraqırmızı lazer və infraqırmızı detektordur. İnsanda görünən diapazondan (940 nm) kənarda lazer işığı nəbzi yayır və əks olunan nəbzi aşkar etmək üçün keçən vaxtı qeyd edir. Bu vaxtı 2 -yə bölür və millimetrdə çox dəqiq məsafə yaradan işığın sürəti ilə çarpılır. Sensor 2 metrə qədər olan məsafəni aşkar edə bilər, amma gördüyüm kimi 1 metr daha optimaldır.

Olduğu kimi, Adafruit -də VL53L0X qırılma lövhəsi var. Buna görə də titrəyən bir motora ehtiyacım var və hamısını idarə etmək üçün bir mikro nəzarətçiyə ehtiyacım var. Təsadüfən əlimdə bir PJRC Teensy 3.2 var. İstədiyimdən daha böyük olsa da, yavaş sürətlə işləmə qabiliyyəti var idi. Gücə qənaət etmək üçün saat sürətini aşağı salmaq istədim. Güc mənbəyinə gəldikdə, zibil qutusunda bir AAA batareya tutacağı ilə birlikdə bir Sparkfun gücləndirici tənzimləyicim vardı. Ehtiyacım olan hər şeyə sahib idim.

Addım 1: İlk Prototip

İlk Prototip
İlk Prototip
İlk Prototip
İlk Prototip

Əlimdə olan hissələri götürdüm və nəzərdə tutduğum cihazın əl prototipini hazırladım. Mən 3D qolu və montaj lövhəsini çap etdim və bütün elektronikləri Adafruit protoboardına lehimlədim. Titrəyən motoru Teensy -yə 2N3904 NPN tranzistoru ilə bağladım. Cihazın cavab verəcəyi maksimum məsafəni təyin etmək üçün istifadə ediləcək bir potensiometr əlavə etdim.

Növbəti həftə sonuna qədər işlədim (yuxarıdakı şəklə baxın). Gözəl deyildi, amma prinsipini nümayiş etdirdi. Dostum cihazı sağ tərəfində tutaraq cihazın faydalı olub olmadığını yoxlaya bilər və xüsusiyyətlər üçün istədiyini dəqiqləşdirməyə kömək edə bilər.

Addım 2: Prototip #2

Prototip #2
Prototip #2
Prototip #2
Prototip #2
Prototip #2
Prototip #2

İlk əl prototipindən sonra daha kiçik bir versiya hazırlamağa başladım. Eynəyə sığa biləcək bir şey etmək məqsədimə yaxınlaşmaq istədim. Əl versiyasında istifadə etdiyim Teensy, enerjiyə qənaət etmək üçün saatı yavaşlatmağa imkan verdi. Ancaq ölçü bir amil olacaqdı və buna görə də Adafruit Trinket M0 -ə keçdim. Saat tezliyi 48 MHz olsa da, əsaslandığı ARM prosessoru daha yavaş işlənə bilər. Daxili RC osilatörü istifadə edərək 8, 4 2 və hətta 1 MHz -də işləyə bilər.

Növbəti həftə sonuna qədər hamısını bir araya gətirdiyim üçün #2 prototipi olduqca tez bir araya gəldi. Dövrə, ARM M0 istisna olmaqla, 1 nömrəli prototiplə eynidir. Mən 3D kiçik bir korpus çap etdim və arxaya bələdçilər qoydum ki, eynəklərə sürüşsün. Yuxarıdakı şəklə baxın. Başlanğıcda 48 MHz tezliyində işləyir.

Addım 3: Prototip #3

Prototip #3
Prototip #3

Beləliklə, bu Təlimat həqiqətən buradan başlayır. Son bir prototip hazırlamağa qərar verdim. Xüsusi bir PWB -dən istifadə edə bilməyəcəyim qədər kiçik bir şəkildə sıxmağa qərar verdim (ora getdiyimizə əminəm). Bu Təlimatın qalan hissəsi sizə necə hazırlanacağını göstərməklə bağlı olacaq. Əlilliyi olan uşaqlar üçün 3D çaplı əllər düzəldən insanlar kimi, ümidim də odur ki, insanlar bunu gözlərində oxşar görmə itkisi olan hər kəs üçün etsinlər.

Parça siyahısını 2 nömrəli prototiplə eyni saxladım, amma potensiometrini çıxarmağa qərar verdim. Dostumla danışdıqdan sonra proqramdan istifadə edərək maksimum məsafəni təyin etməyə qərar verdik. Teensy istifadə edərək bir toxunma sensoru istifadə edə bildiyim üçün, toxunaraq maksimum məsafəni hər zaman bir ayar edə bilərik. Bir toxunuş qısa bir məsafə və ya daha çox toxunma daha uzun bir məsafə təyin edir, digəri ən uzun məsafəyə toxunur və daha bir toxunuş üçün əvvələ geri sarın. Ancaq əvvəlcə yola çıxmaq üçün sabit bir məsafədən istifadə edəcəyik.

Addım 4: hissələri

Hissələri
Hissələri

Bu prototip üçün daha kiçik bir lövhəyə ehtiyacım var idi. Kiçik ölçüləri (təxminən 1.8 "X 1.3") çəkmək üçün yaxşı bir ölçü olacağı üçün bir Sparkfun protoboard (PRT-12702) ilə getdim.

Güc mənbəyi olaraq AAA batareyasından başqa bir şey istifadə etməliyəm. LiPo saxlama qabiliyyəti və yüngül olması səbəbindən doğru seçim kimi görünürdü. Bir sikkə hüceyrəsini sınadım, amma motoru uzun müddət idarə etmək üçün kifayət qədər gücə malik deyildi. 150 mAH tutumlu kiçik bir LiPo seçdim.

Trinket M0 və əlbəttə ki, VL53L0X qırılma lövhəsi ilə qalacaqdım.

İndi detallara gəldikdən sonra, bu prototip üçün hissələrin siyahısı:

Adafruit VL53L0X Uçuş Məsafə Sensoru - MƏHSUL ID: 3317 Adafruit - Titrəyən Mini Motor Diski - ÜRÜN ID: 1201 Adafruit - Lityum İon Polimer Batareya - 3.7v 150mAh - ÜRÜN ID: 1317 SparkFun - Lehimləmə imkanı olan Çörək Paneli - Mini - PRT -1270 Sparkfun - JST Düz Açılı Konnektor - 2 Delikli 2 Delikli - PRT -09749 10K ohm rezistor - Junkbox (zəminə baxın) 2N3904 NPN Transistor - Junkbox (və ya bir dostunuza zəng edin) Bəzi bağlama teli (22 ölçülü qapalı istifadə etdim)

LiPo batareyasını doldurmaq üçün də götürdüm:

Adafruit - Micro Lipo - USB LiIon/LiPoly şarj cihazı - v1 - MƏHSUL ID: 1304

Addım 5: Şematik

Sxematik
Sxematik

Bu cihazın sxematik təsviri yuxarıda göstərilmişdir. Toxunma girişi gələcək bir versiya üçün olacaq, amma hər halda sxematik olaraq göstərilmişdir. Ayrıca, Trinket M0 və 2N3904 -ün bazası arasındakı 10K müqavimət, motoru çox sərt vurmadan açmaq üçün kifayət qədər əsas təmin edir.

Aşağıdakı addım-addım montaj təsviridir.

Addım 6: Protoboard

Protoboard
Protoboard

Təcrübəli bir çoxlarınız bunu bilir, ancaq bu, protoboardları lehimləməkdə yeni başlayanlar üçündür:

Yuxarıda göstərilən Sparkfun protoboardında (PRT-12702) düymlük boşluğun üçdə bir hissəsinin hər tərəfində 5 sancaqdan ibarət 17 sütun (qrup) var. Boşluğun hər iki tərəfindəki 5 sancaqdan ibarət hər bir şaquli sütun bir -biri üçün ortaqdır. Bununla demək istəyirəm ki, qrupdakı hər hansı bir pinlə bağlılıq, qrupdakı hər bir pinlə əlaqəlidir. Bu lövhədə bu açıq görünmür, ancaq DVM (Digital Volt Meter) istifadə edirsinizsə bunu təsdiqləyə bilərsiniz. Arxaya baxsanız, qrupları birləşdirən izləri ayırd edə bilərsiniz.

Addım 7: Komponentlərin Yerləşdirilməsi

Komponentlərin yerləşdirilməsi
Komponentlərin yerləşdirilməsi
Komponentlərin yerləşdirilməsi
Komponentlərin yerləşdirilməsi

Çox güman ki, pin zolaqlarını həm Trinket M0, həm də VL53L0X -ə lehimləməlisiniz. Hər ikisi də zolaqlar ilə gəlir, ancaq lehimlənməlidir. Adafruit -in Öyrənmə Mərkəzində hər iki hissə üçün təlimatlar var. Bu işdə yenisinizsə, zolaqları lövhələrə lehimləmədən əvvəl ora (bura və buraya) gedin. Pin şeritləri, bir yuvadan daha aşağı bir profil təmin edir.

Məhdud sahəsi olan bir protoboya bir şey lehimləyərkən nəzərə alınacaq ilk şey komponentlərin yerləşdirilməsidir. Biblo və VL53L0X -i yuxarıdakı şəkildə göstərilən mövqelərə yerləşdirdim. Trinket -in lövhənin hər iki kənarında sancaqlar var, lakin VL53L0X -in hamısının lövhəsinin bir kənarında 7 pin var. VL53L0X -in sancaqlar olmayan tərəfi, bəzi komponentləri birləşdirmək üçün istifadə edəcəyik … görəcəyimiz kimi.

Sürüşmə açarını da yerinə lehimlədim və 2N3904 -ü lehimlədim. Bu hissələrin yerləşdirildiyi delikləri qaraldırdım və 2N3904 üçün hansı pinlərin Kollektor, Baza və Emitter olduğunu qeyd etdim. İlk dəfə lehimləyərkən lövhəyə dik qoymalısınız, beləliklə digər əlaqələri lehimləyə bilərsiniz. Daha sonra onu (diqqətlə) əymək mümkün olacaq, beləliklə lövhə ilə eyni hizada olmağa daha yaxındır.

Qeyd: JST Battery Breakout bu anda lövhəyə lehimlənmir. Lövhənin arxasına lehimlənəcək, ancaq digər bağlantılarımızı lehimlədikdən sonra. Lehdiyimiz son şey olacaq.

Addım 8: Tellər

Tellər
Tellər

Yuxarıdakı diaqram, komponentlərin yerləşəcəyi qaranlıq çuxurlu protoboardı yenidən göstərir. Tel çəkməyi asanlaşdırmaq üçün kənarları boyunca etiketləri əlavə etdim. Vibrasiya motorunun göstərildiyini unutmayın, ancaq lövhənin arxa tərəfində yerləşəcək və demək olar ki, son vaxta qədər bağlanacaq, buna məhəl qoymayın. JST Battery Breakout'u da kəsilmiş bir xətt ilə göstərirəm. Əvvəlki addımda müəyyən edildiyi kimi, onu bağlamayın, ancaq lövhənin yuxarı hissəsindəki 4 çuxuru açıq qoyun (yəni onlara lehim etməyin).

Bu nöqtədə, bir teldən izolyasiyanı necə çıxardacağınızı, uclarını lehimlə necə lövhəyə qoyduğunuzu və lövhəyə necə yapışdıracağınızı bilirsiniz. Əks təqdirdə, lehimləmə təlimatlarından birinə baxın.

Bu addım üçün lehim telləri sarı rəngdə göstərildiyi kimi. Son nöqtələr, onları lehimləməli olduğunuz deliklərdir. Şou olaraq 10K ohm müqavimətini də lövhəyə lehimləməlisiniz. Bağlantılar bunlardır:

1. Batareyanın müsbət terminalından sürüşmə açarının COMmon (mərkəzi) terminalına bir əlaqə. Sürüşmə açarının bir tərəfi, Bibloya BAT girişi ilə əlaqə yaradacaq. Trinket-in təyyarə tənzimləyicisi BAT giriş gərginliyindən 3.3V istehsal edir.

2. Batareyanın neqativ (yerüstü) terminalından Əşyənin zəmininə olan əlaqə.

3. Batareyanın mənfi (torpaq) terminalından 2N3904 emitörünə olan əlaqə

4. Trinket -in 3.3 volt (3V) pinindən VL53L0X -in VIN -ə olan əlaqə. VL53L0X, bunu daha da öz istifadəsi üçün 2,8 volta tənzimləyəcək. Həm də bu gərginliyi bir pinə çıxarır, amma buna ehtiyacımız yoxdur, buna görə də əlaqəsiz qalacaq.

Addım 9: Daha çox tel

Daha çox tel
Daha çox tel

Beləliklə, indi yuxarıda göstərildiyi kimi növbəti tel qrupunu əlavə edirik. Budur hər bir əlaqənin siyahısı:

1. Trinket pinindən VL53L0X SCL pininə 2 olaraq etiketlənmiş bir əlaqə. Bu I2C saat siqnaldır. I2C serial protokolu, Trinket tərəfindən VL53L0X ilə əlaqə qurmaq üçün istifadə olunan şeydir.

2. VL53L0X SDA pininə 0 (sıfır) kimi etiketlənmiş Biblo pinindən bir əlaqə. Bu I2C məlumat siqnalıdır.

3. VL53L0X GND pinindən protoboarddakı boşluqdan 2N3904 Emitörünə qədər olan əlaqə. Bu, VL53L0X üçün zəmin yaradır.

4. 4 -dən 10K -a qədər müqavimət göstərən Trinket pinindən bir əlaqə. Bu titrəmə motoru üçün sürücüdür. Bağlantı nöqtəmi seçsəniz, bu tel mütləq lövhənin arxa tərəfinə lehimlənməlidir.

Unutmayın ki, 5 sancaqdan ibarət hər hansı bir şaquli qrup bir -biri üçün ortaqdır, buna görə də bu qrupun hər hansı bir yerində rahatlıqla əlaqə qura bilərsiniz. Lövhəmin fotoşəkillərində bir neçə əlaqə nöqtəmi dəyişdirdiyimi görəcəksiniz. Doğru əlaqə olduğu müddətcə, hansı pad seçsəniz yaxşıdır.

Addım 10: Vibrasiya Motoru

Vibrasiya Motoru
Vibrasiya Motoru

Titrəmə mühərriki arxa tərəfində qabıqlı bir etiket ilə gəlir. Mühərriki lövhənin arxasına yapışdırmağa imkan verən yapışqan bir material ortaya çıxarmaq üçün bunu çəkin (ancaq yapışdırmadan əvvəl aşağıdakı şərhə baxın). Hələ bağlamadığımız JST Battery Breakout lövhəsinin soluna (lövhənin arxasına baxaraq) yerləşdirdim. Beləliklə, JST Battery Breakout lövhəsi üçün bir az yer buraxın. Motorun metal korpusunun protoboard boşluğunda heç bir sancaq qısaltmadığından əmin olmaq istədim. Beləliklə, kiçik bir cüt tərəfli lent kəsdim və vibrasiya motorunun yapışqan tərəfinin arxasına yapışdırdım. Sonra lövhənin arxasına itələdim. Metal kassanı yüksək tutmağa və hər hansı bir sancaqdan uzaq tutmağa kömək edir. Ancaq yenə də, hər hansı bir sancağı QISMAYACAQ şəkildə yerləşdirmək üçün diqqətli olun.

Titrəmə motorunun qırmızı telini Trinketin 3V pininə lehimləyin. Titrəmə motorunun qara teli 2N3904 kollektoruna lehimlənir. Proqram 2N3904 -ü (3.3V olaraq bir məntiq təmin edir) vurduqda, tranzistor titrəmə motorunun qara telini yerə (və ya ona yaxın) bağlayır. Bu, motorun titrəməsinə səbəb olur.

Vibrasiya Motorunun qırmızı telli bağlantı nöqtəsinə bir qədər tutum əlavə edə bilərdim. Ancaq Trinket 'in 3.3V xəttində bir tutum var, buna görə əminəm ki, yaxşıdır, amma başqa bir tutum əlavə etmək istəyirsinizsə, onu sıxa biləcəyiniz müddətcə edə bilərsiniz. Bunun üçün qırmızı tel bağlana bilər. birbaşa LiPo batareyasının müsbət tərəfinə. Gərginliyi sabit saxlamaq üçün 3.3V tərəfi seçdim. İndiyə qədər yaxşı işlədiyi görünür.

Addım 11: Son, lakin ən az …

Son amma En Az deyil …
Son amma En Az deyil …
Son amma En Az deyil…
Son amma En Az deyil…

Nəhayət, JST Battery qırılma lövhəsini protobonun arxa tərəfinə bağlayırıq. Sancaqları lövhəyə lehimlədim və yuxarı tərəfi yuxarıda göstərildiyi kimi üst tərəfi protoboya baxan JST Battery qırılma taxtasını qoydum. Bu hissəni qoyduğunuzda, pozitiv batareya üçün telləri lehimlədiyinizdən və doğru sancaqlara bağladığınızdan əmin olun. Səhv edirsinizsə, hissələrin polaritesini geri çevirəcəksiniz və çox güman ki, hamısını məhv edəcəksiniz. Lütfən, batareyanı lehimləmədən və bağlamadan əvvəl yoxlayın və yenidən yoxlayın.

Addım 12: Proqram təminatı

Proqram təminatı
Proqram təminatı

Proqramı qurmaq və/və ya dəyişdirmək üçün Arduino IDE və Trinket M0 üçün lövhə fayllarına, VL53L0X üçün kitabxanalara ehtiyacınız olacaq. Bütün bunlar burada, burada və burada.

Burada öyrənmə saytında Adafruit M0 istifadə etmək üçün təlimatları izləyin.

Proqram yükləndikdən sonra lövhə USB serial bağlantısı ilə işə salınmalıdır. VL53L0X ilə lövhənin yan tərəfini divara və ya əlinizə yaxınlaşdırın və motorun titrədiyini hiss etməlisiniz. Titrəmə, bir cisim cihazdan uzaqlaşdıqca amplituda aşağı düşməlidir.

Cihazda görülən davranış mənbə kodundakı şərhlərdə bir qədər izah edilmişdir. Ancaq əlavə edilmiş qrafik bu nöqtəni yaxşı göstərməlidir. Cihaz bir cisimdən təxminən 863 mm qədər titrəməyə başlamamalıdır. Maksimum titrəmə səviyyəsinə bir obyektdən 50 mm məsafədə çatacaq. Bir obyektə 50 mm -dən çox yaxınlaşsanız, cihaz 50 mm -dən daha çox titrəmə çıxarmaz.

Addım 13: Qoşma

Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə

Bir korpus hazırladım və 3D -ni ABS plastikdən çap etdim. PLA və ya ABS -də və ya istədiyiniz materialda çap edə bilərsiniz. ABS istifadə edirəm, çünki lazım olduqda taxtaya aseton qaynaq edə bilərəm. Hazırladığım lövhə sadədir və Trinketdəki USB portu və güc açarı üçün bir çuxur var. İki lövhəni də kiçik qollarla qutunun kənarlarına yapışdırdım. Çox xoşuma gəlmir, ona görə də dəyişə bilərəm. Əlbəttə ki, görmək istədiyiniz dəyişiklikləri edə bilərsiniz.

Hal -hazırda bu versiya üçün, LiPo batareyasını doldurmaq üçün onu ayırmaq üçün qutunun açılması lazımdır. Bu layihə üçün bir devre kartı yaratsam, batareyanı qutunu açmadan əlçatan etmək üçün başqa bir bağlayıcı əlavə edəcəyəm. Bu protoboard dizaynında bunu etmək və bağlayıcı üçün şarj etmək üçün bir çuxur açmaq mümkün ola bilər. Bunu sınamaq istəyirsinizsə, nəticələrinizi paylaşın.

Tamamilə nifrət etmədiyim bir qutu hazırlamağı bacardım. Sistemi sınamaq üçün bundan istifadə edəcəyik. Qutunun yuxarı və aşağı hissələrini STL faylları kimi əlavə etdim, altına əlavə etdiyim mötərizə/bələdçi. Parçaları kimyəvi şəkildə qaynaq etmək üçün asetondan istifadə edərək bir cüt bələdçi əlavə etdim. Bunu edirsinizsə, diqqətli olun. Yuxarıdakı məclisi görə bilərsiniz.

Addım 14: İndi Nə?

İndi nə?
İndi nə?

Məni yoxla … Yaşlıyam və ola bilsin ki, bir şeyi unutmuşam və ya qarışıqmışam. Bunu yenidən oxuyuram və yoxlayıram, amma yenə də bəzi şeyləri qaçıra bilərəm. Səhv etdiyimi/etdiyimi söyləməkdən çekinmeyin.

İndi, Periferik Radar lövhəsini qurdunuz və yüklədiniz və LiPo batareyası gözəl bir 3D çap qutusundadır (bitirdikdə və ya öz işinizlə məşğul olsanız), bundan sonra nə edəcəksiniz? Hesab edirəm ki, necə işlədiyini öyrənmək və proqramda dəyişiklik etmək lazımdır. Proqramdakı lisenziya müqaviləsində ondan istifadə edə biləcəyiniz bildirilir, ancaq hər hansı bir dəyişiklik etsəniz, onları paylaşmalısınız. Mən demirəm ki, bu layihənin proqram təminatı hansısa cəhətdən mürəkkəb və ya heyrətləndiricidir. Məqsədlərinə çatır, ancaq inkişaf etdirmək üçün yer var. Bu cihazı daha yaxşı hala gətirməyə kömək edin və bunu hamımızla paylaşın. Unutmayın ki, bu layihə insanlara kömək etmək üçündür. Beləliklə, kömək edin!

Tövsiyə: