Table des matières:

Témoins sonores pour la voile : 11 étapes
Témoins sonores pour la voile : 11 étapes

Vidéo: Témoins sonores pour la voile : 11 étapes

Vidéo: Témoins sonores pour la voile : 11 étapes
Vidéo: Sale temps pour la planète "Somme, un littoral en mouvement" 2024, Juillet
Anonim
Image
Image
Matériel révélateur
Matériel révélateur

Les témoins sont des morceaux de ficelle utilisés en voile pour indiquer s'il y a un écoulement turbulent ou laminaire à travers la voile. Cependant, les différents morceaux de fil de couleur attachés de chaque côté de la voile sont des indicateurs purement visuels. Ces témoins sonores sont un dispositif d'assistance qui vise à communiquer les informations visuelles sous une forme auditive pour les marins voyants et malvoyants, comme Pauline.

L'appareil se compose d'un système d'entrée, qui lit le mouvement du témoin, et d'un système de sortie, qui émet une série de bips transmettant des informations sur le débit d'air.

L'accès à du matériel de soudure et à une imprimante 3D est nécessaire pour la fabrication de cet appareil.

Étape 1: Nomenclature

BOM avec liens et prix

Remarque: vous aurez besoin de 2 ensembles de tous les éléments suivants.

Système d'entrée

  • Arduino Nano
  • PCB de planche à pain demi-taille perma-proto Adafruit
  • Module émetteur-récepteur sans fil nRF24L01
  • Interrupteur photo
  • Carte de dérivation d'interrupteur photo Sparkfun
  • Batterie 9V compatible Arduino
  • pile 9V
  • Plusieurs longueurs de fil de calibre 22
  • Fil
  • Aimants en néodyme
  • Époxy

Système de sortie

  • Arduino Nano
  • PCB de planche à pain demi-taille perma-proto Adafruit
  • Module émetteur-récepteur sans fil nRF24L01
  • Batterie 9V compatible Arduino
  • Potentiomètre 1K Ohm
  • Résistance 120 Ohms
  • Transistor 2N3904
  • Condensateur 0,1 uF
  • Haut-parleur compatible Arduino

Fichiers GitHub

  • Tout le code et les fichiers STL nécessaires à la construction de ces témoins peuvent être trouvés dans ce référentiel GitHub.
  • Vous aurez besoin de deux ensembles d'enceintes et d'un des boîtiers d'enceintes.

Étape 2: Outils/Machines/Logiciels requis

Pour programmer l'Arduino, vous devrez télécharger l'IDE Arduino. Le lien de téléchargement se trouve ici.

Pour programmer le module nRF24L01, vous devrez télécharger sa bibliothèque via l'IDE Arduino. Outils > Gérer les bibliothèques… > installer la bibliothèque RF24

Pour assembler les composants électroniques, il est nécessaire d'avoir accès à des outils de soudage de base. Une pompe à dessouder peut également être utile mais n'est pas nécessaire.

Pour construire le cadre du témoin et le boîtier du haut-parleur, vous aurez besoin d'un accès à une imprimante 3D.

Étape 3: matériel témoin

Matériel révélateur
Matériel révélateur
Matériel révélateur
Matériel révélateur

Assemblez le circuit selon les schémas ci-dessus. L'Arduino Nano doit être aligné avec le haut du protoboard. Cela vous permet d'avoir accès au port USB même après que tous les composants électroniques sont connectés.

Afin d'éviter de court-circuiter l'électronique, assurez-vous de couper les traces du protoboard sur les rangées qu'occupera le nRF24 comme indiqué dans l'image ci-dessus.

Sinon, vous aurez besoin de câbles de démarrage pour connecter le nRF24 à la carte proto.

La connexion de la résistance, GND et les fils 5V à l'interrupteur photo ne sont pas représentés. Câblez l'interrupteur photo comme indiqué sur sa carte de dérivation. Une image du tableau de répartition est incluse.

Les circuits des témoins droit et gauche sont exactement les mêmes.

Étape 4: Logiciel Telltale

Voici le code pour le témoin droit. Connectez le nano du témoin droit à votre ordinateur, ouvrez l'IDE Arduino, copiez et collez ce code dedans et téléchargez-le sur la carte.

/** Programme qui utilise photogate pour examiner les témoins

*/ #include #include #include #include radio RF24 (9, 10); // CE, adresse d'octet const CSN[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; //définissez la variable ci-dessus en fonction de vos propres essais expérimentaux 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 nombre_boucles = 0; void setup() { //while(!Serial); // pour la flore //delay(500); num_string_seen = 0; nombre_boucles = 0; pinMode(GATE_PIN, INPUT); pinMode(GATE_PIN_2, INPUT); Serial.begin(115200); // pour le débogage radio.begin(); radio.openWritingPipe(adresse); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); } void loop() { // mettez votre code principal ici, pour l'exécuter à plusieurs reprises: if(num_loops % string_check_time == 0){ //vérifiez l'état de la chaîne check_string(); } if(num_loops == flow_check_time){ //examiner le flux //Serial.println(num_string_seen); int flow_num = examine_flow(); //envoyer les valeurs send_out(flow_num); //réinitialiser les variables num_string_seen = 0; nombre_boucles = 0; delay(flow_check_delay); } nombre_boucles++; delay(base_delay); } /* *Méthode pour vérifier si la chaîne traverse la porte */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Série.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Saw string!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("chaîne en bas!"); } //Serial.print("La chaîne de comptage passe: "); //Série.println(num_string_seen); revenir; } /* * Méthode pour analyser quelle fraction de temps la chaîne a couvert la porte */ int examine_flow(){ double percent_seen = double(num_string_seen)/max_in_flow; Serial.print("Pourcentage couvert: "); printDouble(percent_seen, 100); //mettre à l'échelle la valeur à l'échelle de communication int scaled_flow = int(percent_seen * msg_max_val); if(scaled_flow > msg_max_val){ scaled_flow = msg_max_val; } if(scaled_flow = 0) frac = (val - int(val)) * précision; sinon frac = (int(val)- val) * précision; Serial.println(frac, DEC); }

Voici le code du témoin gauche. Suivez les mêmes étapes que ci-dessus pour le témoin gauche. Comme vous pouvez le voir, la seule différence est l'adresse à laquelle le témoin envoie ses résultats.

/** Programme qui utilise photogate pour examiner les témoins

*/ #include #include #include #include radio RF24 (9, 10); // CE, adresse d'octet const CSN[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; //définissez la variable ci-dessus en fonction de vos propres essais expérimentaux 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 nombre_boucles = 0; void setup() { //while(!Serial); // pour la flore //delay(500); num_string_seen = 0; nombre_boucles = 0;

pinMode(GATE_PIN, INPUT);

pinMode(GATE_PIN_2, INPUT); Serial.begin(115200); // pour le débogage radio.begin(); radio.openWritingPipe(adresse); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); }void loop() { // mettez votre code principal ici, pour l'exécuter à plusieurs reprises: if(num_loops % string_check_time == 0){ //vérifiez l'état de la chaîne check_string(); } if(num_loops == flow_check_time){ //examiner le flux //Serial.println(num_string_seen); int flow_num = examine_flow(); //envoyer les valeurs send_out(flow_num); //réinitialiser les variables num_string_seen = 0; nombre_boucles = 0; delay(flow_check_delay); } nombre_boucles++; delay(base_delay); } /* *Méthode pour vérifier si la chaîne traverse la porte */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Série.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Saw string!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("chaîne en bas!"); } //Serial.print("La chaîne de comptage passe: "); //Série.println(num_string_seen); revenir; } /* * Méthode pour analyser quelle fraction de temps la chaîne a couvert la porte */ int examine_flow(){ double percent_seen = double(num_string_seen)/max_in_flow; Serial.print("Pourcentage couvert: "); printDouble(percent_seen, 100); //mettre à l'échelle la valeur à l'échelle de communication int scaled_flow = int(percent_seen * msg_max_val); if(scaled_flow > msg_max_val){ scaled_flow = msg_max_val; } if(scaled_flow = 0) frac = (val - int(val)) * précision; sinon frac = (int(val)- val) * précision; Serial.println(frac, DEC); }

Étape 5: assemblage témoin

Assemblée témoin
Assemblée témoin

Pièces individuelles

  • Cadre révélateur
  • Fil
  • Circuit témoin construit
  • Batterie
  • Ruban électrique
  • Époxy ou colle

STL pour les composants témoins d'impression 3D

  • STL pour cadre témoin: gauche, droite
  • STL pour boîtier électronique: haut, bas

Instructions de montage

  1. Placez des barreaux magnétiques dans les fentes du cadre témoin imprimé en 3D. Assurez-vous que les aimants s'alignent correctement entre le cadre droit et le cadre gauche, puis utilisez de l'époxy (ou de la colle) pour fixer les aimants au cadre. Laissez l'époxy (ou la colle) durcir complètement.
  2. Placez les interrupteurs photo dans les fentes supérieure et inférieure à l'arrière du cadre. Époxydez soigneusement (ou collez) les panneaux de l'interrupteur photo sur le cadre. Laisser l'époxy (ou la colle) durcir complètement
  3. Coupez un morceau de fil d'environ 7 pouces. Attachez une extrémité du fil à l'encoche de la première barre verticale. Coupez un petit morceau de ruban électrique et enroulez le ruban électrique sur la section du fil qui sera dans la région des interrupteurs photo. Enfilez le fil à travers le cadre afin qu'il passe à travers l'espace de la porte de l'interrupteur photo.
  4. Placez des barreaux magnétiques dans les fentes du fond du boîtier électronique imprimé en 3D. Assurez-vous que les aimants s'alignent correctement entre la boîte de droite et la boîte de gauche, puis utilisez de l'époxy (ou de la colle) pour fixer les aimants au cadre. Laissez l'époxy (ou la colle) durcir complètement.
  5. Placez le circuit témoin construit dans le boîtier électronique, en alignant les différents composants sur leurs fentes. Fermez la boîte avec le dessus du boîtier électronique imprimé en 3D. Epoxy (ou colle) la batterie sur le dessus de la boîte afin que l'interrupteur soit exposé.

Étape 6: Matériel de haut-parleur

Matériel de haut-parleur
Matériel de haut-parleur
Matériel de haut-parleur
Matériel de haut-parleur
Matériel de haut-parleur
Matériel de haut-parleur

Le système de sortie se compose de deux circuits de haut-parleurs, un pour chaque témoin, équipés d'une communication sans fil et d'un bouton de réglage du volume. Tout d'abord, préparez les protoboards à utiliser avec les modules nRF24L01 comme nous l'avons fait pour les circuits témoins en coupant les fils séparant les deux rangées de broches où la carte sera placée.

Ensuite, assemblez le circuit comme indiqué sur le schéma ci-dessus en vous référant aux photos des circuits terminés.

Instructions d'assemblage de la carte

Afin d'empiler les cartes dans l'enceinte du haut-parleur, les composants principaux doivent être placés dans certaines zones de la carte. Dans les instructions suivantes, je ferai référence au système de coordonnées utilisé pour désigner les lignes et les colonnes sur le protoboard Adafruit:

  1. L'Arduino Nano doit être placé contre le bord supérieur de la carte au centre afin que la broche Vin soit positionnée en G16. Cela permettra une reprogrammation facile de l'Arduino Nano une fois le circuit assemblé.
  2. La carte nRF24L01 doit être placée dans le coin inférieur droit de la carte couvrant les huit positions de C1 à D5. Cela laissera le nRF24L01 suspendu au protoboard pour permettre une meilleure communication sans fil.
  3. La batterie du système de haut-parleurs alimente les deux protoboards, alors assurez-vous de connecter les deux rails/broches GND et les broches Vin de l'Arduino Nano à l'alimentation.
  4. Pour le circuit « bas », le potentiomètre doit être placé sur le dessus de la carte face vers l'extérieur de sorte que ses broches soient placées aux positions J2, J4 et J6

    1. J2 ↔ Sortie Arduino Nano de la broche numérique 3 (D3)
    2. Broche de base J4 ↔ du transistor 2N3904
    3. J6 ↔ non connecté
  5. Pour le circuit « haut », le potentiomètre doit être placé sur le bas de la carte face vers l'extérieur de sorte que ses broches soient placées aux positions J9, J11 et J13

    1. J13 ↔ Arduino Nano sortie de la broche numérique 3 (D3)
    2. Broche de base J11 ↔ du transistor 2N3904
    3. J9 ↔ non connecté

Étape 7: Logiciel de haut-parleur

Voici le code du haut-parleur communiquant avec le témoin gauche. Connectez l'Arduino Nano sur la carte de haut-parleur inférieure à votre ordinateur, ouvrez l'IDE Arduino, copiez et collez ce code dedans et téléchargez-le sur la carte.

#comprendre

#include #include radio RF24 (7, 8); // CE, CSN //témoin gauche, adresse d'octet const de la carte haut-parleur supérieure[6] = "00001"; const int pas = 2000; const int pitch_duration = 200; const int locuteur = 3; const int delay_gain = 100; état entier = 0; int cur_delay = 0; caractère lu[2]; void setup() { pinMode(haut-parleur, SORTIE); Serial.begin(115200); Serial.println("Démarrage de la communication sans fil…"); radio.begin(); radio.openReadingPipe(0, adresse); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if(radio.available()) { radio.read(&read, sizeof(read)); status = (int)(read[0]-'0'); Serial.print("Reçu: "); Serial.println(statut); cur_delay = delay_gain*status; } if (cur_delay) { tone(speaker, pitch, pitch_duration); delay(cur_delay + pitch_duration); Serial.println("Bip !"); } }

Voici le code pour le haut-parleur communiquant avec le bon témoin. Connectez l'Arduino Nano sur la carte haut-parleur supérieure à votre ordinateur, ouvrez l'IDE Arduino, copiez et collez ce code dedans, et téléchargez-le sur la carte.

#comprendre

#include #include radio RF24 (7, 8); // CE, CSN //témoin droit, adresse d'octet const de la carte de haut-parleur inférieure[6] = "00010"; const int pas = 1500; const int pitch_duration = 200; const int locuteur = 3; const int delay_gain = 100; état entier = 0; int cur_delay = 0; caractère lu[2]; void setup() { pinMode(haut-parleur, SORTIE); Serial.begin(115200); Serial.println("Démarrage de la communication sans fil…"); radio.begin(); radio.openReadingPipe(0, adresse); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if (radio.available()) { radio.read(&read, sizeof(read)); status = (int)(read[0]-'0'); Serial.print("Reçu: "); Serial.println(statut); cur_delay = delay_gain*status; } if (cur_delay) { tone(speaker, pitch, pitch_duration); delay(cur_delay+pitch_duration); Serial.println("Bip !"); } }

Étape 8: Assemblage du haut-parleur

Pièces individuelles

  • 2 circuits de haut-parleurs construits
  • 2 haut-parleurs
  • 1 batterie

STL pour l'impression 3D

  • Haut de la boîte
  • Fond de boîte

Instructions d'assemblage physique

  1. Placez soigneusement les circuits des haut-parleurs dans le fond de la boîte, une carte au-dessus de l'autre de sorte que les boutons de volume soient côte à côte et glissent dans les trous. Les puces de communication doivent être exposées à l'arrière du boîtier.
  2. Placez les haut-parleurs à gauche et à droite du circuit imprimé, en vous assurant que les haut-parleurs correspondent aux bons côtés du témoin. Alignez les haut-parleurs sur les fentes sur les côtés de la boîte.
  3. Faites passer les fils de la batterie à travers le petit trou à l'arrière de la boîte. Epoxy (ou colle) la batterie à l'arrière de la boîte de manière à ce que l'interrupteur soit exposé.
  4. Placez le haut de la boîte imprimée en 3D sur le bas de la boîte pour tout contenir.

Étape 9: configuration/montage

Configuration/Montage
Configuration/Montage
  1. Allumez les témoins en basculant les interrupteurs des batteries sur la position « ON ». Faites de même pour l'ensemble haut-parleur afin d'activer le système de sortie.
  2. Le montage de témoins sonores se fait le plus facilement avec deux personnes, mais peut être fait avec une seule. Pour un montage sur foc non enrouleur, les témoins seraient plus facilement mis en place avant de hisser la voile.
  3. Pour vous assurer que le cadre du témoin est correctement orienté, regardez l'encoche sur l'une des barres verticales. Lorsque vous maintenez le cadre droit, l'encoche doit être vers le haut. Le côté du cadre avec cette barre doit également faire face à l'avant du bateau.
  4. Placez l'un des témoins à la hauteur et à la position souhaitées sur la voile. Il doit être placé de telle sorte que le fil soit au même endroit qu'il le serait s'il faisait partie d'un témoin traditionnel.
  5. Une fois que vous en avez un dans la position souhaitée. Placez l'autre témoin de l'autre côté de la voile, exactement à l'opposé du premier que vous avez placé, de sorte que les aimants s'alignent. Une fois que les aimants ont établi une connexion, ils doivent maintenir le cadre solidement à la voile. Alignez les aimants des boîtiers électroniques, pour chaque témoin de chaque côté de la voile, de sorte qu'ils se connectent également.
  6. Si vous remarquez que lorsque la ficelle revient tout droit, elle ne passe pas devant la porte supérieure, faites pivoter le cadre du témoin de telle sorte que la moitié arrière du cadre se dirige vers le bas. Faites pivoter le cadre jusqu'à ce que la ficelle passe à travers l'interrupteur photo supérieur lorsque le fil revient directement.

Étape 10: Dépannage

Tous les morceaux de code ont des instructions d'impression de débogage pour indiquer qu'ils envoient, reçoivent et traitent des données. L'ouverture du port COM à l'aide de l'IDE Arduino avec l'un des sous-systèmes Arduino Nano branché sur un ordinateur vous permettra d'afficher ces messages d'état.

Si le système ne fonctionne pas correctement, basculez les interrupteurs sur tous les composants.

Étape 11: Étapes suivantes possibles

  • Imperméabilisation
  • Communication à plus longue portée. Le WiFi est une option prometteuse.
  • Notre configuration actuelle utilise actuellement 2 interrupteurs photo par témoin. L'ajout de plus d'interrupteurs photo au système pourrait être intéressant à essayer.

Conseillé: