INHOUDSOPGAWE:

Hoorbare tellers vir seil: 11 stappe
Hoorbare tellers vir seil: 11 stappe

Video: Hoorbare tellers vir seil: 11 stappe

Video: Hoorbare tellers vir seil: 11 stappe
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, November
Anonim
Image
Image
Tellingale hardeware
Tellingale hardeware

Telltales is stukke tou wat in seil gebruik word om aan te dui of daar onstuimige of laminaire vloei oor die seil is. Die stukke gare wat aan elke kant van die seil vasgemaak is, is egter suiwer visuele aanwysers. Hierdie hoorbare tellers is 'n hulpmiddel wat daarop gemik is om die visuele inligting in 'n gehoorvorm te kommunikeer vir beide siende en gesiggestremde matrose, soos Pauline.

Die toestel bestaan uit 'n insetstelsel wat die beweging van die verteller lees, en 'n uitsetstelsel wat 'n reeks piepboodskappe gee wat lugvloei -inligting oordra.

Toegang tot soldeertoerusting en 'n 3D -drukker is nodig vir die vervaardiging van hierdie toestel.

Stap 1: Staatsbrief

BOM met skakels en pryse

Let wel: u benodig 2 stelle van al die volgende.

Invoerstelsel

  • Arduino Nano
  • Adafruit perma-proto half-groot broodbord PCB
  • nRF24L01 Module vir draadlose ontvanger
  • Foto onderbrekers
  • Sparkfun Photo Interrupter Breakout Board
  • Arduino versoenbare 9V battery
  • 9V battery
  • Verskeie lengtes van 22 meter draad
  • Gare
  • Neodymium magnete
  • Epoksie

Uitsetstelsel

  • Arduino Nano
  • Adafruit perma-proto half-groot broodbord PCB
  • nRF24L01 Module vir draadlose ontvanger
  • Arduino versoenbare 9V battery
  • 1K Ohm potensiometer
  • 120 Ohm weerstand
  • 2N3904 transistor
  • 0,1 uF kapasitor
  • Arduino -verenigbare luidspreker

GitHub -lêers

  • Al die kode- en STL -lêers wat nodig is om hierdie tellings te bou, kan gevind word in hierdie GitHub -repo.
  • U benodig twee stelle omhulsel en een van die luidsprekerbehuizing.

Stap 2: Gereedskap/masjiene/sagtewarevereistes

Om die Arduino te programmeer, moet u die Arduino IDE aflaai. Die aflaai skakel kan hier gevind word.

Om die nRF24L01 -module te programmeer, moet u die biblioteek daarvan aflaai deur die Arduino IDE. Gereedskap> Bestuur biblioteke …> installeer biblioteek RF24

Toegang tot basiese soldeergereedskap is nodig om die elektroniese komponente te monteer. 'N Ontsoldeerpomp kan ook nuttig wees, maar is nie nodig nie.

Om 'n raam en luidsprekerkas te bou, benodig u toegang tot 'n 3D-drukker.

Stap 3: Tellingale hardeware

Tellingale hardeware
Tellingale hardeware
Tellingale hardeware
Tellingale hardeware

Monteer die stroombaan volgens die diagramme hierbo. Die Arduino Nano moet in lyn wees met die bokant van die protobord. Dit stel u in staat om toegang tot die USB -poort te hê, selfs nadat al die elektronika aangeslote is.

Om te voorkom dat die elektronika kortkom, moet u die spore van die protobord sny op die rye wat die nRF24 sal inneem, soos in die prent hierbo getoon.

Andersins het u jumperkabels nodig om die nRF24 aan te sluit op die protobord.

Die weerstandsverbinding, GND en 5V -drade na die fotoonderbreker word nie uitgebeeld nie. Verbind die fotoonderbreker soos aangedui op die uitbreekbord. 'N Beeld van die uitbreekbord is ingesluit.

Die kringe vir die regter- en linkervertalers is presies dieselfde.

Stap 4: Tellingale sagteware

Hier is die kode vir die regte verteller. Koppel die Right telltale's nano aan u rekenaar, maak die Arduino IDE oop, kopieer en plak die kode daarin en laai dit op die bord.

/** Program wat photogate gebruik om die storie te ondersoek

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte adres [6] = "00010"; // --- program 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; // stel die var hierbo op grond van u eie eksperimentele proewe 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; #define STRING_THRESH 0.2 // --- program vars --- int num_string_seen = 0; int num_loops = 0; ongeldige opstelling () {// while (! Serial); // vir flora // vertraging (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // vir ontfouting van radio.begin (); radio.openWritingPipe (adres); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// plaas u hoofkode hier om herhaaldelik te hardloop: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// ondersoek vloei //Serial.println(num_string_seen); int flow_num = ondersoek_stroom (); // stuur waardes send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; vertraging (flow_check_delay); } num_loops ++; vertraging (basis_vertraging); } / * *Metode om na te gaan of die string deur die hek kruis * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); as (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

as (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); terugkeer; }/ * * Metode om te analiseer watter fraksie van die tydstring die hek */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Persentasie gedek:"); printDouble (persentasie gesien, 100); // skaal die waarde na kommunikasie skaal int scaled_flow = int (percent_seen * msg_max_val); as (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } as (scaled_flow = 0) frac = (val - int (val)) * presisie; anders frac = (int (val)- val) * presisie; Serial.println (frac, DEC); }

Hier is die kode vir die linkerverteller. Volg dieselfde stappe as hierbo vir die linkerverteller. Soos u kan sien, is die enigste verskil die adres waarna die verteller die resultate stuur.

/** Program wat photogate gebruik om die storie te ondersoek

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte adres [6] = "00001"; // --- program 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; // stel die var hierbo op grond van u eie eksperimentele proewe 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; #define STRING_THRESH 0.2 // --- program vars --- int num_string_seen = 0; int num_loops = 0; ongeldige opstelling () {// while (! Serial); // vir flora // vertraging (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // vir ontfouting van radio.begin (); radio.openWritingPipe (adres); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// plaas u hoofkode hier om herhaaldelik te hardloop: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// ondersoek vloei //Serial.println(num_string_seen); int flow_num = ondersoek_stroom (); // stuur waardes send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; vertraging (flow_check_delay); } num_loops ++; vertraging (basis_vertraging); } / * *Metode om te kyk of die string deur die hek kruis * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); as (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

as (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Telreeks slaag: "); //Serial.println(num_string_seen); terugkeer; }/ * * Metode om te analiseer watter fraksie van die tydstring die hek */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Persentasie gedek:"); printDouble (persentasie gesien, 100); // skaal die waarde na kommunikasie skaal int scaled_flow = int (percent_seen * msg_max_val); as (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } as (scaled_flow = 0) frac = (val - int (val)) * presisie; anders frac = (int (val)- val) * presisie; Serial.println (frac, DEC); }

Stap 5: Taalvergadering

Tellingale Vergadering
Tellingale Vergadering

Individuele onderdele

  • Vertelraam
  • Gare
  • 'N Konstrukteerkringbaan
  • Batterypak
  • Elektriese band
  • Epoksie of gom

STL's vir 3D -druk tellende komponente

  • STL vir die raam: links, regs
  • STL's vir elektroniese boks: bo, onder

Monteerinstruksies

  1. Plaas staafmagnete in die gleuwe van die 3D -gedrukte raam. Maak seker dat die magnete behoorlik in lyn is tussen die regte raam en die linker raam, en gebruik dan epoxy (of gom) om die magnete aan die raam vas te maak. Laat epoksie (of gom) heeltemal stol.
  2. Plaas die fotoonderbrekers in die boonste en onderste gleuwe aan die agterkant van die raam. Maak die fotoonderbrekersplanke versigtig aan die raam vas. Laat epoksie (of gom) heeltemal stol
  3. Sny 'n stuk van ongeveer 7 in 'n stuk gare. Bind die een kant van die gare vas by die kerf van die eerste vertikale balk. Sny 'n klein stukkie elektriese band en draai die elektriese band oor die gedeelte van die gare wat in die omgewing van die fotoonderbrekers is. Ryg die gare deur die raam sodat dit deur die gaping van die fotoonderbrekerhek gaan.
  4. Plaas staafmagnete in die gleuwe van die onderkant van die 3D -gedrukte elektroniese boks. Maak seker dat die magnete behoorlik in lyn is tussen die regte boks en die linker boks, en gebruik dan epoxy (of gom) om die magnete aan die raam vas te maak. Laat epoksie (of gom) heeltemal stol.
  5. Plaas die gekonstrueerde kring in die elektroniese boks, en pas die verskillende komponente by hul gleuwe. Maak die boks toe met die 3D -gedrukte bokant van elektronika. Epoksie (of gom) die battery aan die bokant van die boks sodat die skakelaar blootgestel word.

Stap 6: Luidsprekerhardeware

Luidspreker hardeware
Luidspreker hardeware
Luidspreker hardeware
Luidspreker hardeware
Luidspreker hardeware
Luidspreker hardeware

Die uitsetstelsel bestaan uit twee luidsprekerbane, een vir elke verteller, toegerus met draadlose kommunikasie en 'n volume -verstelknop. Berei eers die protoborde voor vir gebruik met die nRF24L01 -modules, soos ons vir die tellcircuits gedoen het deur die leidings te sny tussen die twee rye penne waar die bord geplaas sal word.

Monteer dan die stroombaan soos in die diagram hierbo getoon, terwyl u na die foto's van die voltooide stroombane verwys.

Raad Vergadering Instruksies

Om die planke in die luidsprekeromhulsel te stapel, moet die hoofkomponente in sekere dele van die bord geplaas word. In die volgende instruksies verwys ek na die koördinaatstelsel wat gebruik word om rye en kolomme op die Adafruit protobord aan te dui:

  1. Die Arduino Nano moet teen die boonste rand van die bord in die middel geplaas word sodat die Vin -pen op G16 geplaas word. Dit sal die Arduino Nano maklik herprogrammeer nadat die stroombaan saamgestel is.
  2. Die nRF24L01 -bord moet in die regter onderste hoek van die bord geplaas word wat strek oor die agt posisies van C1 tot D5. Dit laat die nRF24L01 aan die protobord hang om beter draadlose kommunikasie moontlik te maak.
  3. Die battery vir die luidsprekerstelsel dryf beide protoborde aan, dus maak seker dat u die twee Arduino Nano se GND -rails/penne en Vin -penne aan die kragtoevoer koppel.
  4. Vir die 'onderste' kring moet die potensiometer bo -op die bord na buite geplaas word sodat sy penne op posisies J2, J4 en J6 geplaas word

    1. J2, Arduino Nano -uitvoer vanaf digitale pen 3 (D3)
    2. J4 ↔ basispen van 2N3904 transistor
    3. J6, nie gekoppel nie
  5. Vir die 'boonste' kring moet die potensiometer aan die onderkant van die bord na buite geplaas word sodat sy penne op posisies J9, J11 en J13 geplaas word

    1. J13, Arduino Nano -uitvoer vanaf digitale pen 3 (D3)
    2. J11 ↔ basispen van 2N3904 transistor
    3. J9 ↔ nie gekoppel nie

Stap 7: Luidsprekerprogrammatuur

Hier is die kode vir die spreker wat met die linkerverteller kommunikeer. Koppel die Arduino Nano op die onderste luidsprekerbord aan op u rekenaar, maak die Arduino IDE oop, kopieer en plak die kode daarin en laai dit op die bord.

#insluit

#include #include RF24 radio (7, 8); // CE, CSN // verteller links, boonste luidsprekerbord const byte adres [6] = "00001"; const int toonhoogte = 2000; const int pitch_duration = 200; const int spreker = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char lees [2]; ongeldige opstelling () {pinMode (luidspreker, OUTPUT); Serial.begin (115200); Serial.println ("Begin met draadlose kommunikasie …"); radio.begin (); radio.openReadingPipe (0, adres); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } nietige lus () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (lees [0]-'0'); Serial.print ("Ontvang:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {toon (spreker, toonhoogte, toonhoogte_duur); vertraging (cur_delay + pitch_duration); Serial.println ("Piep!"); }}

Hier is die kode vir die spreker wat met die regte verteller kommunikeer. Koppel die Arduino Nano op die boonste luidsprekerbord aan op u rekenaar, maak die Arduino IDE oop, kopieer en plak hierdie kode en plak dit op die bord.

#insluit

#include #include RF24 radio (7, 8); // CE, CSN // regterkant, onderste luidsprekerbord konst byte adres [6] = "00010"; const int toonhoogte = 1500; const int pitch_duration = 200; const int spreker = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char lees [2]; ongeldige opstelling () {pinMode (luidspreker, OUTPUT); Serial.begin (115200); Serial.println ("Begin met draadlose kommunikasie …"); radio.begin (); radio.openReadingPipe (0, adres); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } nietige lus () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (lees [0]-'0'); Serial.print ("Ontvang:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {toon (spreker, toonhoogte, toonhoogte_duur); vertraging (cur_delay+pitch_duration); Serial.println ("Piep!"); }}

Stap 8: Sprekerbyeenkoms

Individuele onderdele

  • 2 saamgestelde luidsprekerbane
  • 2 sprekers
  • 1 battery

STL's vir 3D -drukwerk

  • Boks bokant
  • Onderkant boks

Fisiese samestellingsinstruksies

  1. Plaas die luidsprekerkringe versigtig onder in die boks, die een bord bo -op die ander sodat die volumeknoppies langs mekaar is en in die gate gly. Die kommunikasie -skyfies moet aan die agterkant van die boks blootgestel word.
  2. Plaas die luidsprekers links en regs van die printplaat, en maak seker dat die luidsprekers ooreenstem met die korrekte kenmerkende kante. Pas die luidsprekers by die gleuwe aan die kante van die boks.
  3. Voer die batterykabels deur die klein gaatjie aan die agterkant van die boks. Epoksie (of gom) die battery aan die agterkant van die boks sodat die skakelaar blootgestel word.
  4. Plaas die 3D -gedrukte boks bo -op die boks se onderkant om alles te bevat.

Stap 9: Opstel/montering

Opstel/montering
Opstel/montering
  1. Skakel die skakelaars aan deur die skakelaars op die batterye na die 'AAN' posisie te draai. Doen dieselfde met die luidspreker om die uitsetstelsel aan te skakel.
  2. Die montering van hoorbare tellers word die maklikste gedoen met twee mense, maar kan met een gedoen word. Vir montering op 'n nie-draaibare jib, sou die tellers die maklikste aangetrek word voordat die seil gehys word.
  3. Om seker te maak dat die raam van die vertelling korrek gerig is, kyk na die kerf op een van die vertikale balke. As die raam regop gehou word, moet die kerf boontoe wees. Die kant van die raam met die staaf moet ook na die voorkant van die boot wys.
  4. Plaas een van die verhale op die verlangde hoogte en posisie op die seil. Dit moet so geplaas word dat die gare op dieselfde plek is as wat dit sou wees as dit deel was van 'n tradisionele vertelling.
  5. As u eers een vertelverhaal in die gewenste posisie het. Plaas die ander storie aan die ander kant van die seil, presies teenoor die eerste wat u geplaas het, sodat die magnete in lyn kom. Sodra die magnete 'n verbinding maak, moet hulle die raam styf teen die seil hou. Rangskik die magnete van die elektroniese omhulsels vir elke vertelling aan weerskante van die seil, sodat hulle ook aansluit.
  6. As u agterkom dat wanneer die tou reguit terugvloei, dit nie voor die boonste hek kruis nie, draai die raamwerk sodat die agterste helfte van die raam afwaarts draai. Draai die raam totdat die tou deur die boonste foto -onderbreker gaan as die gare reguit terugvloei.

Stap 10: Probleemoplossing

Alle stukke kode bevat ontfoutingstate om aan te dui dat hulle data stuur, ontvang en verwerk. Deur die COM -poort oop te maak met die Arduino IDE met een van die Arduino Nano -substelsels wat op 'n rekenaar ingeskakel is, kan u hierdie statusboodskappe sien.

As die stelsel nie behoorlik werk nie, skakel al die komponente aan.

Stap 11: Moontlike volgende stappe

  • Waterdigtheid
  • Langerreikommunikasie. WiFi is 'n belowende opsie.
  • Ons huidige opstelling gebruik tans 2 fotoonderbrekers per verteller. Dit kan interessant wees om meer fotoonderbrekers by die stelsel te voeg.

Aanbeveel: