Orodha ya maudhui:

Kofia ya Dhana ya Dhana: Hatua 5 (na Picha)
Kofia ya Dhana ya Dhana: Hatua 5 (na Picha)

Video: Kofia ya Dhana ya Dhana: Hatua 5 (na Picha)

Video: Kofia ya Dhana ya Dhana: Hatua 5 (na Picha)
Video: VIDEO;MREMBO AKIFANYA NA CHUPA YA FANTA 2024, Julai
Anonim
Image
Image
Kofia ya dhana ya LED
Kofia ya dhana ya LED

Nimekuwa nikitaka kufanya mradi wa Arduino, lakini sikuwahi kuwa na maoni mazuri kwa mtu mmoja hadi familia yangu ilipoalikwa kwenye sherehe ya kupendeza ya kofia. Kwa muda wa wiki mbili za kuongoza, nilikuwa na hamu ya kujua ikiwa ningeweza kupanga na kutekeleza kofia nyeti ya uhuishaji ya mwendo wa mwendo. Inageuka ningeweza! Labda nilikwenda juu kidogo, lakini jumla ya mradi iligharimu karibu $ 80. Kwa majaribio na usimbuaji kadhaa unaweza kuifanya kwa chini.

Lengo na kofia ilikuwa yafuatayo:

  1. Kuwa na seti ya taa kutoka mbele mbele ya kofia kwenda nyuma, taa moja kila upande
  2. Badilisha kasi ya safari ya taa iliyoamriwa na mwelekeo wa kofia mbele hadi nyuma
  3. Ruhusu taa zirudie nyuma wakati bendi ya kofia ilikuwa imeinama chini (kwa mfano kuiga athari ya mvuto kwenye taa)
  4. Badilisha rangi kulingana na mwelekeo wa kofia kushoto kwenda kulia
  5. Sense mshtuko, na kuonyesha athari maalum
  6. Sikia mvaaji akizunguka, na uonyeshe athari maalum
  7. Kuwa nayo kabisa kwenye kofia

Hatua ya 1: Sehemu Zinazohitajika

Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika
Sehemu Zinazohitajika

Nilitumia vifaa vikuu vifuatavyo (viungo visivyohusiana vya Amazon vimejumuishwa):

  • Mdhibiti mdogo wa LC - nilichagua hii juu ya Arduino ya kawaida kwa sababu ya udogo wake, na ina unganisho maalum la kudhibiti LED zangu, pamoja na msaada mkubwa wa maktaba na jamii.
  • Sensor ya nafasi ya msingi ya Bosch BNO055 - kwa uaminifu moja ya kwanza nimepata nyaraka. Kuna chaguzi za bei ghali zaidi, hata hivyo mara tu unapogundua Bosch inakufanyia mengi ambayo ungetakiwa kufanya kwa nambari
  • Ukanda wa LED unaoweza kushughulikiwa na WS2812 - nilichagua urefu wa mita 1 na LED za 144 kwa kila mita. Kuwa na wiani huo husaidia mwanga kuonekana zaidi kama unavyosonga, badala ya vitu vya kibinafsi kuangaza kwa mlolongo.

Na vitu vifuatavyo vifuatavyo:

  • Kofia - kofia yoyote iliyo na kamba ya kofia itafanya. Hii ni kofia ya $ 6 kutoka duka la karibu. Ikiwa ina mshono nyuma itakuwa rahisi kupata wiring kupitia. Zingatia ikiwa bendi ya kofia imewekwa gundi kwani hiyo pia itasababisha ugumu wa ziada. Hii ni kushonwa juu, lakini chini vunjwa juu kwa urahisi.
  • Vipinga vya 4.7K ohm
  • Kesi ya betri ya 3x AAA - kutumia betri 3 AAA hutoa voltage haswa katika anuwai ya umeme, ambayo inarahisisha mambo. AAA inafaa kwenye kofia rahisi kuliko AA na bado ina wakati mzuri wa kukimbia.
  • Waya ndogo ya kupima - Nilitumia waya thabiti niliyokuwa nimeweka kutoka kwa mradi uliopita wa LED.
  • Chuma cha kutengeneza na solder
  • Spandex inayofanana na rangi ya ndani ya kofia, na uzi

Imependekezwa, lakini si lazima:

  • Viunganisho vya haraka kwa waya za betri
  • Kusaidia zana ya Mikono, vitu hivi ni vidogo sana na ni ngumu kutengenezea

Hatua ya 2: Badilisha Kofia

Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia
Rekebisha Kofia

Utahitaji mahali kwenye kofia kuweka umeme, na mahali pa betri. Mke wangu anafanya kazi na mavazi kitaaluma, kwa hivyo nilimuuliza ushauri na msaada. Tulimaliza kuunda mifuko miwili na spandex. Mfuko mdogo wa kwanza kuelekea mbele umeelekezwa kama kofia yenyewe ili wakati umeme umesakinishwa sensorer ya nafasi iko vizuri, lakini inaweza kutolewa kwa urahisi ikiwa ni lazima. Mfuko wa pili kuelekea nyuma ni kushikilia kifurushi cha betri mahali pake.

Mifuko ilipandwa na uzi ambao ulilingana na rangi ya kofia, wote ndefu laini ya taji. Kulingana na mtindo wa kofia na vifaa hufanywa kwa YMMV na mbinu hii.

Tuligundua pia kofia ya bendi ya kofia yenyewe upande mmoja, na ilikuwa imeshonwa kikamilifu kwa kofia katika eneo hilo. Tulilazimika kuondoa mshono wa asili ili kuendesha LEDs chini ya bendi. Wakati wa ujenzi ulifanyika mahali na pini, na kisha kushonwa na uzi unaofanana ukikamilika.

Hatimaye tulifungua mshono nyuma ya kofia ikiwa imefunikwa na bendi. Tuliunganisha waya iliyokuja na LED kupitia mshono huo na kuweka LED ya kwanza kwenye ukanda ili iwe sawa kwenye mshono. Kisha tukazungusha taa kwenye kofia na kukata ukanda chini ili mwangaza wa mwisho uwe karibu na wa kwanza. Ukanda wa LED unaweza kushikiliwa na bendi ya kofia, hata hivyo kulingana na bendi yako na nyenzo unaweza kuhitaji kupata LEDs kwa kushona au gundi.

Hatua ya 3: Waya It Up

Waya It Up
Waya It Up

Bodi ya Vijana na LED zitafanya kazi na popote kutoka 3.3v hadi 5v kwa nguvu. Hii ndio sababu nilichagua kutumia betri 3 AAA, voltage ya pato la 4.5v iko vizuri katika anuwai hiyo, na wana wakati mwingi wa kukimbia kwa njia ambayo nimeweka LEDs kufanya kazi. Unapaswa kupata zaidi ya masaa 8 ya wakati wa kukimbia.

Wiring nguvu

Nilitia waya mwelekeo mzuri na hasi kutoka kwenye sanduku la betri na LED pamoja, kisha nikauza kwenye Vijana katika maeneo yanayofaa. Chanya kutoka kwa betri inahitaji kushikamana na pini ya juu ya kulia ya Vijana kwenye mchoro (iliyoitwa Vin kwenye ubao), na hasi inaweza kushonwa kwa pini yoyote iliyoitwa GND. Kwa urahisi kuna moja moja kwa moja upande wa ubao, au karibu kabisa na pini ya Vin. Mchoro kamili wa pinout kwa bodi unaweza kupatikana chini ya ukurasa huu. Na katika hali zingine nakala ya karatasi imejumuishwa wakati unaamuru bodi.

Ikiwa unapanga kutumia kificho ambacho kimewashwa tu na taa za LED kwa wakati mmoja, unaweza kuwasha LED kutoka kwa Vijana yenyewe, kwa kutumia pato la 3.3v na GND, hata hivyo ukijaribu kuvuta nguvu nyingi unaweza kuharibu bodi. Kwa hivyo kujipa chaguzi nyingi ni bora kuweka waya kwenye chanzo chako cha betri moja kwa moja.

Wiring LEDs

Nilichagua Teensy LC kwa mradi huu kwani ina pini ambayo inafanya iwe rahisi sana kuweka waya zinazoweza kushughulikiwa. Kwenye chini ya ubao pini ambayo ni ya pili kutoka kwa vioo vya kushoto Pin # 17, lakini pia ina 3.3v juu yake. Hii inajulikana kama kuvuta, na kwenye bodi zingine itabidi uweke waya kwenye kontena ili kutoa voltage hiyo. Kwa upande wa Teensy LC unaweza tu waya kutoka kwa pini hiyo moja kwa moja kwa waya wako wa data za LED.

Wiring sensor ya msimamo

Baadhi ya bodi za BNO055 zinazopatikana ni kali zaidi kwenye voltage na zinataka 3.3v tu. Kwa sababu ya hii, nilitia waya Vin kwenye bodi ya BNO055 kutoka kwa pato la kujitolea la 3.3v kwenye Teensy, ambayo ni pini ya 3 chini kulia. Basi unaweza kuunganisha GND kwenye BNO055 kwa GND yoyote kwenye Vijana.

Sensorer ya msimamo wa BNO055 hutumia I2c kuzungumza na Teensy. I2c inahitaji vuta nikuvute, kwa hivyo nilitia waya mbili za kupinga 4.7K ohm kutoka kwa pato la 3.3v kwenye Teensy hadi pini 18 na 19. Kisha nikatia waya 19 kwa pini ya SCL kwenye bodi ya BNO055, na 18 kwa pini ya SDA.

Vidokezo vya wiring / ujanja

Ili kufanya mradi huu nilitumia waya thabiti badala ya kukwama. Faida moja kwa waya thabiti ni wakati wa kuuzia bodi za mfano kama hizi. Unaweza kuvua waya, kuinama hadi digrii 90, na kuiingiza chini ya moja ya vituo, ili mwisho wa waya uwe juu juu ya bodi yako. Wewe basi unahitaji tu kiwango kidogo cha solder kuishikilia kwenye terminal, na unaweza kukata ziada kwa urahisi.

Waya ngumu inaweza kuwa ngumu zaidi kufanya kazi nayo kwani huwa inataka kukaa jinsi imeinama. Walakini kwa mradi huu ambayo ilikuwa faida. Nilikata na kuunda waya zangu kwa njia ambayo mwelekeo wa sensorer ya msimamo ingekuwa sawa wakati niliingiza na kuondoa vifaa vya elektroniki kutoka kwa kofia ya kutengeneza na kupanga programu.

Hatua ya 4: Programu

Sasa kwa kuwa kila kitu kimekusanyika utahitaji zana inayofaa ya programu ya Arduino. Nilitumia Arduino IDE halisi (inafanya kazi na Linux, Mac, na PC). Utahitaji pia programu ya Teensyduino kuungana na bodi ya Vijana. Mradi huu hutumia sana maktaba ya FastLED kufanya rangi na nafasi ya programu za LED.

Upimaji

Jambo la kwanza ambalo utataka kufanya ni kwenda kwa Hifadhi bora ya GitHub ya Kris Winer kwa BNO055 na kupakua BNO_055_Nano_Basic_AHRS_t3.ino mchoro. Sakinisha nambari hiyo na Serial Monitor inayoendesha na itakuambia ikiwa bodi ya BNO055 inakuja mkondoni na kupitisha majaribio yake ya kibinafsi. Pia itakutembea kupitia kusawazisha BNO055, ambayo itakupa matokeo thabiti zaidi baadaye.

Kuanza na mchoro wa Dhana ya LED

Nambari ya kofia ya LED ya Dhana haswa imeambatishwa, na pia kwenye hazina yangu ya GitHub. Nina mpango wa kutengeneza tweaks zaidi kwa nambari hiyo na hizo zitachapishwa kwenye repo ya GitHub. Faili hapa linaonyesha nambari wakati Agizo hili lilichapishwa. Baada ya kupakua na kufungua mchoro, kuna vitu kadhaa utahitaji kubadilisha. Maadili mengi muhimu ya kubadilisha yako juu kabisa kama #fafanua taarifa:

Mstari wa 24: #fafanua NUM_LEDS 89 - badilisha hii kuwa idadi halisi ya LED kwenye ukanda wako wa LED

Mstari wa 28: #fafanua SERIAL_DEBUG uwongo - labda utataka kuifanya hii kuwa kweli, ili uweze kuona pato kwenye mfuatiliaji wa serial

Msimbo wa kugundua nafasi

Kugundua nafasi na utaftaji wako mwingi huanza kwenye laini ya 742, na hupitia 802. Tunapata data ya Pitch, Roll, na Yaw kutoka kwa sensor ya msimamo na kuitumia kuweka maadili. Kulingana na jinsi umeme wako umewekwa unaweza kuhitaji kuibadilisha. Ukipachika kihisi cha nafasi na chip kuelekea juu ya kofia, na mshale karibu na X uliochapishwa kwenye ubao umeelekezwa mbele ya kofia unapaswa kuona yafuatayo:

  • Pitch ni nodding kichwa yako
  • Roll inaelekeza kichwa chako, k.m. gusa sikio lako kwa bega lako
  • Yaw ni mwelekeo gani. unakabiliwa (Kaskazini, Magharibi, nk).

Ikiwa bodi yako imewekwa katika mwelekeo tofauti utahitaji kubadilisha Bomba / Roll / Yaw kwao kuishi jinsi ungependa.

Ili kurekebisha mipangilio ya Roll unaweza kubadilisha maadili yafuatayo #fafanua:

  • ROLLOFFSET: na kofia yako imara na imejikita kadri inavyoweza kuwa, ikiwa Roll sio 0, badilisha hii kwa tofauti. Yaani. ikiwa unaona Roll saa -20 wakati kofia yako imejikita, fanya hii 20.
  • ROLLMAX: thamani ya juu ya kutumia kwa kipimo cha Roll. Rahisi kupata kwa kuvaa kofia na kusogeza sikio lako la kulia kuelekea bega lako la kulia. Utahitaji kebo ndefu ya USB kufanya hivyo wakati unatumia mfuatiliaji wa serial.
  • ROLLMIN: thamani ya chini kabisa ya kutumia kwa kipimo cha Roll, kwa wakati kichwa chako kikigeuza kushoto

Vivyo hivyo, kwa Pitch:

  • MAXPITCH - thamani ya juu wakati unatafuta
  • MINPITCH - thamani ya chini wakati unatazama chini
  • PITCHCENTER - thamani ya lami wakati unatazama mbele moja kwa moja

Ikiwa utaweka SERIALDEBUG kuwa kweli juu ya faili unapaswa kuona maadili ya sasa ya Pato la Roll / Pitch / Yaw kwa mfuatiliaji wa serial kusaidia kurekebisha maadili haya.

Vigezo vingine unavyoweza kubadilisha

  • MAX_LED_DELAY 35 - polepole zaidi ambayo chembe ya LED inaweza kusonga. Hii iko katika milliseconds. Ni ucheleweshaji kutoka kwa LED moja hadi nyingine kwenye kamba.
  • MIN_LED_DELAY 10 - kufunga ambayo chembe ya LED inaweza kusonga. Kama ilivyo hapo juu iko katika milliseconds.

Hitimisho

Ikiwa umekwenda mbali, unapaswa kuwa na kofia inayofanya kazi kikamilifu, na ya kufurahisha! Ikiwa unataka kufanya zaidi nayo, ukurasa unaofuata una habari ya hali ya juu juu ya kubadilisha mipangilio, na kufanya mambo yako mwenyewe. pamoja na ufafanuzi wa kile nambari yangu zingine zinafanya.

Hatua ya 5: Advanced na Hiari: Ndani ya Kanuni

Athari na kugundua spin

Kugundua athari / kuzunguka hufanywa kwa kutumia kazi za sensorer za juu-G za BNO055. Unaweza kurekebisha unyeti wake na mistari ifuatayo katika initBNO055 ():

  • Mstari # 316: BNO055_ACC_HG_DURATION - hafla hiyo inapaswa kudumu kwa muda gani
  • Mstari # 317: BNO055_ACC_HG_THRESH - jinsi athari inavyotakiwa kuwa ngumu
  • Mstari # 319: BNO055_GYR_HR_Z_SET - kizingiti cha kasi ya kuzungusha
  • Mstari # 320: BNO055_GYR_DUR_Z - hata mzunguko lazima udumu kwa muda gani

Maadili yote mawili ni binary 8, kwa sasa athari imewekwa kwa B11000000, ambayo ni 192 kati ya 255.

Wakati athari au spin inagunduliwa BNO055 inaweka thamani ambayo nambari inatafuta mwanzoni mwa Kitanzi:

// Tambua usumbufu wowote uliosababishwa, i.e.kwa juu ya G byte intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS); ikiwa (intStatus> 8) {impact (); } vingine ikiwa (intStatus> 0) {spin (); }

Tafuta laini batili () laini hapo juu kwenye nambari ili kubadilisha tabia juu ya athari, au batili spin () kubadilisha tabia ya spin.

Wasaidizi

Nimeunda kazi rahisi ya msaidizi (batili setAllLeds ()) kwa kuweka haraka LED zote kwa rangi moja. Tumia moja kuzima zote:

setAllLeds (CRGB:: Nyeusi);

Au unaweza kuchagua rangi yoyote inayotambuliwa na maktaba ya FastLED:

setAllLeds (CRGB:: Nyekundu);

Pia kuna kazi ya fadeAllLeds () ambayo itapunguza LED zote kwa 25%.

Darasa la Chembe

Ili kurahisisha wiring nilitaka kutumia kamba moja ya LED, lakini ziwe na tabia kama kamba nyingi. Kwa kuwa hii ilikuwa jaribio langu la kwanza nilitaka kuiweka iwe rahisi iwezekanavyo, kwa hivyo mimi huchukua kamba moja kama mbili, na taa za katikati zikiwa pale mgawanyiko utakuwa. Kwa kuwa tunaweza kuwa na idadi hata au nambari isiyo ya kawaida, tunahitaji kuhesabu hiyo. Ninaanza na anuwai kadhaa za ulimwengu:

/ * * Zinazobadilika na vyombo kwa LEDs / leds za CRGB [NUM_LEDS]; tuli iliyosainiwa int curLedDelay = MAX_LED_DELAY; tuli kati kituoLed = NUM_LEDS / 2; tuli int maxLedPos = NUM_LEDS / 2; starehe bool oddLeds = 0; chembe ya bool tuliTir = 1; kasi ya bool tuli = Dir = 1; dirCount ndefu isiyosainiwa; hueCount ndefu isiyosainiwa;

Na nambari fulani katika usanidi ():

ikiwa (NUM_LEDS% 2 == 1) {oddLeds = 1; maxLedPos = NUM_LEDS / 2; } mwingine {oddLeds = 0; maxLedPos = NUM_LEDS / 2 - 1; }

Ikiwa tuna nambari zisizo za kawaida, tunataka kutumia alama ya 1/2 kama katikati, vinginevyo tunataka hatua ya 1/2 - 1. Hii ni rahisi kuona na LED 10 au 11:

  • LED 11: 11/2 zilizo na nambari kamili zinapaswa kutathmini hadi 5. na hesabu za kompyuta kutoka 0. Kwa hivyo 0 - 4 ni nusu moja, 6 - 10 ni nusu nyingine, na 5 iko kati yao. Tunachukua # 5 katika kesi hii kana kwamba ni sehemu ya zote mbili, i.e. ni # 1 kwa nyuzi zote mbili za LED
  • LED 10: 10/2 ni 5. Lakini kwa kuwa kompyuta zinahesabu kutoka 0 tunahitaji kuondoa moja. Halafu tuna 0 - 4 kwa nusu moja, na 5 - 9 kwa nyingine. # 1 kwa kamba ya kwanza halisi itakuwa 4, na # 1 kwa kamba ya pili ya kweli itakuwa # 5.

Halafu katika nambari yetu ya chembe tunapaswa kuhesabu kutoka kwa msimamo wetu wa jumla hadi nafasi halisi kwenye kamba ya LED:

ikiwa (oddLeds) {Pos1 = centerLed + currPos; Pos2 = kituoLed - currPos; } mwingine {Pos1 = centerLed + currPos; Pos2 = (katikatiLed -1) - currPos; }

Nambari hiyo pia ina hali ambapo chembe inaweza kubadilisha mwelekeo, kwa hivyo inabidi pia kuzingatia hilo:

ikiwa (chembeDir) {ikiwa ((currPos == NUM_LEDS / 2) && oddLeds) {currPos = 0; } vingine ikiwa ((currPos == NUM_LEDS / 2 - 1) && (! oddLeds)) {currPos = 0; } mwingine {currPos ++; }} mwingine {if ((currPos == 0) && oddLeds) {currPos = centerLed; } vingine ikiwa ((currPos == 0) && (! oddLeds)) {currPos = centerLed - 1; } mwingine {currPos--; }}

Kwa hivyo tunatumia mwelekeo uliokusudiwa (chembeDir), kuhesabu ni LED ipi inapaswa kuwashwa ijayo, lakini pia tunapaswa kuzingatia ikiwa tumefika mwisho halisi wa kamba ya LED, au kituo chetu, ambacho pia hufanya kama mwisho wa kila moja ya masharti halisi.

Mara tu tutakapogundua yote hayo, tunaangazia taa inayofuata kama inahitajika:

ikiwa (particleDir) {if (oddLeds) {Pos1 = centerLed + currPos; Pos2 = kituoLed - currPos; } mwingine {Pos1 = centerLed + currPos; Pos2 = (katikatiLed -1) - currPos; }} mwingine {if (oddLeds) {Pos1 = centerLed - currPos; Pos2 = kituoLed + currPos; } mwingine {Pos1 = centerLed - currPos; Pos2 = (katikatiLed -1) + currPos; }} viongozo [Pos1] = CHSV (currHue, 255, 255); risasi [Pos2] = CHSV (currHue, 255, 255); FastLED.show ();}

Kwa nini ufanye darasa hili kabisa? Kama ilivyo, hii ni sawa na haiitaji kabisa kuwa kwenye darasa. Walakini nina mipango ya baadaye ya kusasisha nambari ili kuruhusu chembe zaidi ya moja kutokea kwa wakati mmoja, na wengine kufanya kazi kinyume wakati wengine wanasonga mbele. Nadhani kuna uwezekano mkubwa sana wa kugundua spin kutumia chembe nyingi.

Ilipendekeza: