Orodha ya maudhui:

Tamathali zinazosikika za Kusafiri kwa meli: Hatua 11
Tamathali zinazosikika za Kusafiri kwa meli: Hatua 11

Video: Tamathali zinazosikika za Kusafiri kwa meli: Hatua 11

Video: Tamathali zinazosikika za Kusafiri kwa meli: Hatua 11
Video: UANDISHI WA INSHA ZA KCPE | Class 8 | Kiswahili 2024, Novemba
Anonim
Image
Image
Vifaa vya Telltale
Vifaa vya Telltale

Telltales ni vipande vya kamba vilivyotumika katika kusafiri kuonyesha ikiwa kuna mtiririko wa msukosuko au wa laminar kwenye meli. Walakini, vipande vya rangi tofauti vilivyounganishwa kwa kila upande wa baharia ni viashiria vya kuona. Hadithi hizi zinazosikika ni kifaa cha kusaidia ambacho kinalenga kuwasilisha habari ya kuona kwa fomu ya ukaguzi kwa mabaharia wote wenye kuona na wasioona, kama vile Pauline.

Kifaa hicho kina mfumo wa kuingiza, ambao unasoma mwendo wa hadithi, na mfumo wa pato, ambao hutoa mfululizo wa beeps zinazowasilisha habari ya mtiririko wa hewa.

Ufikiaji wa vifaa vya kuuza na printa ya 3D inahitajika katika utengenezaji wa kifaa hiki.

Hatua ya 1: Muswada wa Vifaa

BOM na viungo na bei

Kumbuka: utahitaji seti 2 za yote yafuatayo.

Mfumo wa Uingizaji

  • Arduino Nano
  • Adafruit perma-proto bodi ya mikate yenye ukubwa wa nusu
  • NRF24L01 Moduli ya Mpitishaji wa waya
  • Usumbufu wa Picha
  • Bodi ya kuzuka kwa Sparkfun Photo
  • Arduino Sambamba ya 9V pakiti ya betri
  • 9V betri
  • Urefu kadhaa wa waya ya kupima 22
  • Uzi
  • Sumaku za Neodymium
  • Epoxy

Mfumo wa Pato

  • Arduino Nano
  • Adafruit perma-proto bodi ya mikate yenye ukubwa wa nusu
  • NRF24L01 Moduli ya Mpitishaji wa waya
  • Arduino Sambamba ya 9V pakiti ya betri
  • 1K Ohm potentiometer
  • 120 Ohm kupinga
  • 2N3904 transistor
  • 0.1 capacitor
  • Spika inayoendana na Arduino

Faili za GitHub

  • Nambari zote za nambari na faili za STL zinahitajika kujenga hadithi hizi zinaweza kupatikana katika repo hii ya GitHub.
  • Utahitaji seti mbili za ua, na moja ya nyumba ya spika.

Hatua ya 2: Zana / Mashine / Mahitaji ya Programu

Ili kupanga Arduino utahitaji kupakua IDE ya Arduino. Kiungo cha kupakua kinaweza kupatikana hapa.

Ili kupanga moduli ya nRF24L01, utahitaji kupakua maktaba yake kupitia Arduino IDE. Zana> Simamia Maktaba…> sakinisha maktaba RF24

Ili kukusanya vifaa vya elektroniki upatikanaji wa zana za msingi za kutengenezea inahitajika. Pampu inayoshambulia pia inaweza kuwa muhimu lakini sio lazima.

Ili kujenga sura ya hadithi ya hadithi na kesi ya spika utahitaji kupata printa ya 3D.

Hatua ya 3: Vifaa vya Telltale

Vifaa vya Telltale
Vifaa vya Telltale
Vifaa vya Telltale
Vifaa vya Telltale

Kusanya mzunguko kulingana na michoro hapo juu. Arduino Nano inapaswa kushikamana na juu ya jumba la protoboard. Hii hukuruhusu kufikia bandari ya USB hata baada ya vifaa vyote vya elektroniki kushikamana.

Ili kuzuia kufupisha umeme, hakikisha kukata alama za protoboard kwenye safu ambazo nRF24 itachukua kama inavyoonyeshwa kwenye picha hapo juu.

Vinginevyo utahitaji nyaya za kuruka ili kuunganisha nRF24 na protoboard.

Muunganisho wa kontena, GND, na waya za 5V kwa kipingamizi cha picha hazijaonyeshwa. Funga kizuizi cha picha kama inavyoonyeshwa kwenye bodi yake ya kuzuka. Picha ya bodi ya kuzuka imejumuishwa.

Mizunguko ya hadithi za kulia na kushoto ni sawa kabisa.

Hatua ya 4: Programu ya Telltale

Hapa kuna nambari ya hadithi ya kulia. Unganisha nano ya hadithi ya kulia kwenye kompyuta yako, fungua Arduino IDE, nakili na ubandike nambari hii ndani yake, na uipakie kwenye bodi.

/ ** Programu inayotumia picha ya picha kuchunguza hadithi za hadithi

* / # pamoja na # pamoja na # pamoja na # pamoja na redio ya RF24 (9, 10); // CE, anwani ya baiti ya CSN [6] = "00010"; // --- programu consts --- // time const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0.6; // weka var hapo juu kulingana na majaribio yako ya majaribio const int max_in_flow = min (max_when_testing, int (flow_check_time / string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #fafanua STRING_THRESH 0.2 // --- vars za programu --- int num_string_seen = 0; int num_loops = 0; kuanzisha batili () {// wakati (! Serial); // kwa mimea // kuchelewa (500); num_string_seen = 0; idadi_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial. Kuanza (115200); // kwa utatuzi wa redio. anza (); radio.openWritingPipe (anwani); seti ya redioPALevel (RF24_PA_MIN); redio. Acha Kusikiliza (); } kitanzi batili () {// weka nambari yako kuu hapa, ili kuendeshwa mara kwa mara: ikiwa (num_loops% string_check_time == 0) {// check string state check_string (); } ikiwa (num_loops == flow_check_time) {// chunguza mtiririko //Serial.println(num_string_seen); mtiririko_num = kuchunguza_mtiririko (); // tuma maadili tuma_kutoka (flow_num); // upya vars num_string_seen = 0; idadi_loops = 0; kuchelewesha (flow_check_delay); } idadi_loops ++; kuchelewesha (base_delay); } / * * Njia ya kuangalia ikiwa kamba inavuka lango * / batili check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println (string_state); ikiwa (string_state == 0) {num_string_seen ++; //Serial.println ("Saw kamba!"); }

int bot_state = kusoma kwa dijiti (GATE_PIN_2);

ikiwa (bot_state == 0) {num_string_seen--; //Serial.println ("kamba chini!"); } //Serial.print("Kuhesabu kamba kunapita:"); //Serial.println (idadi_string_seen); kurudi; } / * * Njia ya kuchambua ni sehemu gani ya kamba ya muda iliyofunika lango * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Asilimia imefunikwa:"); chapa mara mbili (asilimia_imeonekana, 100); // pima thamani kwa kiwango cha mawasiliano int scaled_flow = int (percent_seen * msg_max_val); ikiwa (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } ikiwa (scaled_flow = 0) frac = (val - int (val)) * usahihi; mwingine frac = (int (val) - val) * usahihi; Serial.println (frac, DEC); }

Hapa kuna nambari ya hadithi ya kushoto. Fuata hatua sawa na hapo juu kwa hadithi ya kushoto. Kama unavyoona, tofauti pekee ni anwani ambayo telltale hutuma matokeo yake.

/ ** Programu inayotumia picha ya picha kuchunguza hadithi za hadithi

* / # pamoja na # pamoja na # pamoja na # pamoja na redio ya RF24 (9, 10); // CE, anwani ya baiti ya CSN [6] = "00001"; // --- programu consts --- // time const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0.6; // weka var hapo juu kulingana na majaribio yako ya majaribio const int max_in_flow = min (max_when_testing, int (flow_check_time / string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #fafanua STRING_THRESH 0.2 // --- vars za programu --- int num_string_seen = 0; int num_loops = 0; kuanzisha batili () {// wakati (! Serial); // kwa mimea // kuchelewa (500); num_string_seen = 0; idadi_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial. Kuanza (115200); // kwa utatuzi wa redio. anza (); radio.openWritingPipe (anwani); seti ya redioPALevel (RF24_PA_MIN); redio. Acha Kusikiliza (); } kitanzi batili () {// weka nambari yako kuu hapa, ili kuendeshwa mara kwa mara: ikiwa (num_loops% string_check_time == 0) {// check string state check_string (); } ikiwa (num_loops == flow_check_time) {// chunguza mtiririko //Serial.println(num_string_seen); mtiririko_num = kuchunguza_mtiririko (); // tuma maadili tuma_kutoka (flow_num); // upya vars num_string_seen = 0; idadi_loops = 0; kuchelewesha (flow_check_delay); } idadi_loops ++; kuchelewesha (base_delay); } / * * Njia ya kuangalia ikiwa kamba inavuka lango * / batili check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println (string_state); ikiwa (string_state == 0) {num_string_seen ++; //Serial.println ("Saw kamba!"); }

int bot_state = kusoma kwa dijiti (GATE_PIN_2);

ikiwa (bot_state == 0) {num_string_seen--; //Serial.println ("kamba chini!"); } //Serial.print("Kuhesabu kamba kunapita:"); //Serial.println (idadi_string_seen); kurudi; } / * * Njia ya kuchambua ni sehemu gani ya kamba ya muda iliyofunika lango * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Asilimia imefunikwa:"); chapa mara mbili (asilimia_imeonekana, 100); // pima thamani kwa kiwango cha mawasiliano int scaled_flow = int (percent_seen * msg_max_val); ikiwa (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } ikiwa (scaled_flow = 0) frac = (val - int (val)) * usahihi; mwingine frac = (int (val) - val) * usahihi; Serial.println (frac, DEC); }

Hatua ya 5: Mkutano wa Telltale

Mkutano wa Telltale
Mkutano wa Telltale

Sehemu za kibinafsi

  • Sura ya hadithi
  • Uzi
  • Mzunguko wa hadithi ya kujengwa
  • Pakiti ya betri
  • Mkanda wa umeme
  • Epoxy au gundi

STL za vifaa vya uchapishaji wa 3D

  • STL kwa fremu ya kusimulia: kushoto, kulia
  • STL za sanduku la umeme: juu, chini

Maagizo ya Bunge

  1. Weka sumaku za baa katika nafasi za fremu ya kuchapisha ya 3D. Hakikisha sumaku zinajipanga vizuri kati ya fremu ya kulia na fremu ya kushoto, kisha tumia epoxy (au gundi) kupata sumaku kwenye fremu. Ruhusu epoxy (au gundi) kuweka kabisa.
  2. Weka vipingamizi vya picha kwenye sehemu za juu na chini nyuma ya fremu. Makini epoxy (au gundi) bodi za vipingamizi vya picha kwenye fremu. Ruhusu epoxy (au gundi) kuweka kabisa
  3. Kata ~ 7 kwa kipande cha uzi. Funga ncha moja ya uzi kwenye notch ya bar ya kwanza ya wima. Kata kipande kidogo cha mkanda wa umeme na funga mkanda wa umeme juu ya sehemu ya uzi ambao utakuwa katika mkoa wa wapiga picha. Punga uzi kupitia fremu ili ipite kupitia pengo la lango la kuingilia picha.
  4. Weka sumaku za baa katika nafasi za chini za sanduku la elektroniki zilizochapishwa za 3D. Hakikisha sumaku zinajipanga vizuri kati ya sanduku la kulia na sanduku la kushoto, kisha tumia epoxy (au gundi) kupata sumaku kwenye fremu. Ruhusu epoxy (au gundi) kuweka kabisa.
  5. Weka mzunguko uliyosimuliwa wa kisimulizi kwenye kisanduku cha vifaa vya elektroniki, ukipangilia vifaa tofauti kwenye nafasi zao. Funga sanduku na kisanduku cha elektroniki kilichochapishwa cha 3D. Epoxy (au gundi) kifurushi cha betri juu ya sanduku ili swichi iwe wazi.

Hatua ya 6: Vifaa vya Spika

Vifaa vya Spika
Vifaa vya Spika
Vifaa vya Spika
Vifaa vya Spika
Vifaa vya Spika
Vifaa vya Spika

Mfumo wa pato una mizunguko miwili ya spika, moja kwa kila hadithi, iliyo na mawasiliano ya waya na kitovu cha kurekebisha sauti. Kwanza, andaa protoboards zitumike na moduli za nRF24L01 kama tulivyofanya kwa mizunguko ya kusimulia kwa kukata njia zinazojitenga safu mbili za pini ambapo bodi itawekwa.

Kisha, unganisha mzunguko kama inavyoonyeshwa kwenye mchoro hapo juu wakati unarejelea picha za mizunguko iliyokamilishwa.

Maagizo ya Mkutano wa Bodi

Ili kubandika bodi kwenye eneo la spika, vifaa kuu lazima viwekwe katika maeneo fulani ya bodi. Katika maagizo yafuatayo, nitakuwa nikirejelea mfumo wa kuratibu unaotumika kuashiria safu na nguzo kwenye jalada la Adafruit:

  1. Arduino Nano lazima iwekwe dhidi ya ukingo wa juu wa bodi katikati ili pini ya Vin iwekwe G16. Hii itaruhusu urekebishaji rahisi wa Arduino Nano baada ya mzunguko kukusanywa.
  2. Bodi ya nRF24L01 lazima iwekwe kona ya chini kulia ya bodi iliyo na nafasi nane kutoka C1 hadi D5. Hii itaacha nRF24L01 ikining'inia kwenye protoboard ili kuruhusu mawasiliano bora bila waya.
  3. Kifurushi cha betri cha mfumo wa spika kinapeana protoboard zote mbili, kwa hivyo hakikisha unganisha reli / pini mbili za Arduino Nano na pini za Vin kwenye usambazaji wa umeme.
  4. Kwa mzunguko wa 'chini', potentiometer inapaswa kuwekwa juu ya ubao ikitazama nje ili pini zake ziwekwe kwenye nafasi J2, J4, na J6

    1. Pato la J2 ↔ Arduino Nano kutoka kwa pini ya dijiti 3 (D3)
    2. Pini ya msingi ya J4 of ya 2N3904 transistor
    3. J6 ↔ haijaunganishwa
  5. Kwa mzunguko wa 'juu', potentiometer inapaswa kuwekwa chini ya ubao ikitazama nje ili pini zake ziwekwe kwenye nafasi J9, J11, na J13

    1. Pato la J13 ↔ Arduino Nano kutoka kwa pini ya dijiti 3 (D3)
    2. Pini ya msingi ya J11 of ya 2N3904 transistor
    3. J9 ↔ haijaunganishwa

Hatua ya 7: Programu ya Spika

Hapa kuna nambari ya spika inayowasiliana na hadithi ya kushoto. Unganisha Arduino Nano kwenye bodi ya spika ya chini kwenye kompyuta yako, fungua Arduino IDE, nakili na ubandike nambari hii ndani yake, na uipakie kwenye bodi.

# pamoja

# pamoja # redio RF24 (7, 8); // CE, CSN // hadithi ya kushoto, anwani ya bodi ya spika ya juu ya anwani [6] = "00001"; lami int = 2000; const int pitch_duration = 200; msemaji wa int = 3; const int delay_gain = 100; hali ya int = 0; kuchelewesha = 0; char kusoma [2]; kuanzisha batili () {pinMode (spika, OUTPUT); Serial. Kuanza (115200); Serial.println ("Kuanzisha mawasiliano bila waya…"); redio.anza (); radio.openReadingPipe (0, anwani); seti ya redioPALevel (RF24_PA_MIN); redio.kuanza Kusikiliza (); } kitanzi batili () {if (radio.available ()) {radio.read (& read, sizeof (read)); hadhi = (int) (soma [0] - '0'); Serial.print ("Imepokelewa:"); Serial.println (hadhi); cur_delay = kuchelewesha_pata * hadhi; } ikiwa (cur_delay) {tone (spika, lami, urefu wa lami); kuchelewesha (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Hapa kuna nambari ya spika inayowasiliana na hadithi ya kulia. Unganisha Arduino Nano kwenye bodi ya spika ya juu kwenye kompyuta yako, fungua Arduino IDE, nakili na ubandike nambari hii ndani yake, na uipakie kwenye bodi.

# pamoja

# pamoja # redio RF24 (7, 8); // CE, CSN // haki ya kusema, anwani ya chini ya bodi ya wasemaji [6] = "00010"; lami int = 1500; const int pitch_duration = 200; msemaji wa int = 3; const int delay_gain = 100; hali ya int = 0; kuchelewesha = 0; char kusoma [2]; kuanzisha batili () {pinMode (spika, OUTPUT); Serial. Kuanza (115200); Serial.println ("Kuanzisha mawasiliano bila waya…"); redio.anza (); radio.openReadingPipe (0, anwani); seti ya redioPALevel (RF24_PA_MIN); redio.kuanza Kusikiliza (); } kitanzi batili () {if (radio.available ()) {radio.read (& read, sizeof (read)); hadhi = (int) (soma [0] - '0'); Serial.print ("Imepokelewa:"); Serial.println (hadhi); cur_delay = kuchelewesha_pata * hadhi; } ikiwa (cur_delay) {tone (spika, lami, urefu wa lami); kuchelewesha (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Hatua ya 8: Mkutano wa Spika

Sehemu za kibinafsi

  • Mizunguko 2 ya spika iliyojengwa
  • Spika 2
  • Pakiti 1 ya betri

STL za uchapishaji wa 3D

  • Juu ya sanduku
  • Sanduku chini

Maagizo ya Mkutano wa Kimwili

  1. Weka kwa uangalifu mizunguko ya spika chini ya sanduku, ubao mmoja juu ya nyingine ili kwamba vifungo vya sauti viko karibu na kila mmoja na kuteleza kwenye mashimo. Chips za mawasiliano zinapaswa kufunuliwa nyuma ya sanduku.
  2. Weka spika kushoto na kulia kwa bodi ya mzunguko, hakikisha spika zinahusiana na pande sahihi za hadithi. Patanisha spika kwa nafasi kwenye pande za sanduku.
  3. Kulisha waya za pakiti za betri kupitia shimo ndogo nyuma ya sanduku. Epoxy (au gundi) kifurushi cha betri nyuma ya sanduku kama kwamba swichi imefunuliwa.
  4. Weka kisanduku kilichochapishwa cha 3D juu ya kisanduku chini ili iwe na kila kitu.

Hatua ya 9: Usanidi / Kuweka

Usanidi / Kuweka
Usanidi / Kuweka
  1. Washa visimulizi kwa kupindua swichi kwenye vifurushi vya betri kwenda kwenye nafasi ya 'ON'. Fanya vivyo hivyo kwa mkutano wa spika ili kuwasha mfumo wa pato.
  2. Kuweka hadithi za kusikika hufanywa kwa urahisi na watu wawili, lakini zinaweza kufanywa na moja. Kwa kuweka juu ya jib isiyo ya manyoya, hadithi zinaweza kuwekwa kwa urahisi kabla ya kupandisha baharia.
  3. Ili kuhakikisha kuwa sura ya hadithi inaelekezwa kwa usahihi, angalia notch kwenye moja ya baa za wima. Wakati wa kushikilia sura wima, notch inapaswa kuwa juu. Upande wa fremu na baa hiyo inapaswa pia kutazama kuelekea mbele ya mashua.
  4. Weka hadithi moja kwa urefu na msimamo uliotaka kwenye matanga. Inapaswa kuwekwa kama kwamba uzi uko katika sehemu ile ile ingekuwa ikiwa ni sehemu ya hadithi ya hadithi ya jadi.
  5. Mara baada ya kuwa na hadithi moja katika nafasi inayotakiwa. Weka hadithi nyingine upande wa pili wa baharia, kinyume kabisa na ile ya kwanza uliyoweka, ili sumaku zijipange. Mara sumaku zinapounganisha zinapaswa kushikilia fremu salama kwa baharia. Panga sumaku za vizuizi vya elektroniki, kwa kila hadithi kwenye kila upande wa baharia, ili ziunganishwe pia.
  6. Ukigundua kuwa wakati kamba inapita moja kwa moja haivuki mbele ya lango la juu, zungusha sura ya hadithi kama kwamba nusu ya nyuma ya fremu inaelekea chini. Zungusha sura mpaka kamba ipite kwa kipingamizi cha picha ya juu wakati uzi unatiririka moja kwa moja.

Hatua ya 10: Utatuzi wa matatizo

Vipande vyote vya msimbo vina taarifa za kuchapisha utatuzi ili kuonyesha kuwa zinatuma, kupokea, na kusindika data. Kufungua bandari ya COM kwa kutumia Arduino IDE na moja ya mfumo wa Arduino Nano iliyowekwa kwenye kompyuta itakuruhusu kuona ujumbe huu wa hali.

Ikiwa mfumo haufanyi kazi vizuri, badilisha swichi kwenye vifaa vyote.

Hatua ya 11: Hatua zinazofuata zinazowezekana

  • Kuzuia maji
  • Mawasiliano ya muda mrefu. WiFi iwe chaguo la kuahidi.
  • Usanidi wetu wa sasa unatumia vipingamizi 2 vya picha kwa kila hadithi. Kuongeza vipingamizi zaidi vya picha kwenye mfumo kunaweza kufurahisha kujaribu.

Ilipendekeza: