Table des matières:

Lumière interactive sans contact : 7 étapes (avec photos)
Lumière interactive sans contact : 7 étapes (avec photos)

Vidéo: Lumière interactive sans contact : 7 étapes (avec photos)

Vidéo: Lumière interactive sans contact : 7 étapes (avec photos)
Vidéo: Les Distributeurs Ne Veulent Pas Que Vous Sachiez Ça 2024, Novembre
Anonim
Lumière interactive sans contact
Lumière interactive sans contact

Salut à tous! J'aimerais partager le projet sur lequel j'ai travaillé ici. J'ai été inspiré pour expérimenter la détection tactile capacitive à travers un projet dans mon université. J'ai découvert cette technologie via des instructables et j'ai utilisé les choses que j'ai apprises ici et d'autres endroits sur Internet pour créer mon propre contrôleur sans contact, que j'utilise pour mélanger différentes valeurs RVB afin de créer des couleurs claires intéressantes.

Pour commencer, lorsque j'ai commencé ce projet, je ne connaissais presque rien à l'électronique ni à la détection tactile capacitive.

Certains problèmes que j'ai rencontrés au début ont été causés par une mauvaise compréhension de ce qui se passe réellement. Alors une petite introduction de ce que je comprends:

Un capteur capacitif utilise plusieurs composants, principalement:

Un condensateur (dans ce projet, nous utilisons du papier d'aluminium, mais il est également possible d'utiliser des fluides conducteurs, etc.), fils (bien sûr, son électronique)

et une résistance, tout ce qui est inférieur à 10 MOhm est une résistance trop petite pour plus qu'un contact direct.

la façon dont cela fonctionne est de mesurer une différence de temps entre le point A et le point B. De la broche de départ, il envoie un signal à une broche d'extrémité, le temps qu'il faut est mesuré avec une minuterie. En diminuant la valeur de la résistance (en rapprochant un condensateur (dans ce cas votre main) du condensateur du capteur (la feuille d'aluminium) ce temps raccourcit, la différence de temps est ce que le capteur renvoie comme valeur.

En raison du capteur affecté par les surfaces capacitives, les données peuvent être extrêmement erratiques en raison des interférences. Cela peut être résolu en grande partie en isolant correctement le condensateur et aussi en utilisant une masse (je montrerai comment plus tard).

Alors maintenant que c'est réglé, nous pouvons commencer à inventorier tout ce dont nous avons besoin:

Étape 1: De quoi avons-nous besoin ?

Électronique:

1. 2 x 22M Ohm + résistances (plus la valeur de résistance est grande, plus votre capteur réagit loin, j'ai personnellement utilisé 22M Ohm, le minimum pour obtenir des données utilisables que j'ai rencontrées était de 10M Ohm)

2. 3 résistances de 330 Ohm

3. Fils

4. Planche à pain

5. Circuit imprimé (le mien avait des bandes de cuivre continues)

6. Plusieurs Leds RVB cathodiques communes (j'en ai utilisé 8, mais vous pouvez en avoir plus ou moins selon la quantité de lumière que vous souhaitez)

7. feuille d'aluminium

8. Film étirable

9. Arduino Uno

10. Ruban

L'affaire:

1. Bois J'ai utilisé du MDF 50 x 50 x 1,8 CM (vous pouvez vraiment utiliser n'importe quoi. Cela dépend de l'effet que vous voulez et des outils dont vous disposez)

2. Plexiglas acrylique que j'ai utilisé 50 x 50 x 0,3 CM (ou tout autre matériau transparent/translucide comme le papier de riz)

3. Papier de verre (papier de verre fin)

4. Bois-colle

5. placage (facultatif)

6. colle acrylique

Outils:

Pince à dénuder

Fer à souder + étain

couteau Stanley

percer

Scie (j'ai utilisé une scie à table)

Étape 2: Prototypage:

Prototypage
Prototypage
Prototypage
Prototypage

Maintenant, nous avons tout et nous pouvons commencer à faire un prototype pour voir comment cela fonctionne:

Travail de préparation:

Découpez 4 rectangles dans le papier d'aluminium (les miens mesurent environ 10 cm sur 5 cm), enveloppez-les dans du film alimentaire pour les isoler du contact direct et collez un fil sur le papier d'aluminium. J'ai juste collé une extrémité dénudée à la feuille (tant qu'ils restent en contact).

Pour m'assurer que l'aluminium est isolé en toute sécurité, je l'ai enveloppé dans du film alimentaire et l'ai repassé entre des papiers (juste pendant quelques secondes pour qu'il ne fonde pas complètement).

Ensuite, configurez le circuit comme indiqué sur l'image.

La broche 4 est utilisée comme broche d'envoi pour les deux capteurs, tandis que les broches de réception sont les broches 2 et 5. Vous pouvez utiliser plusieurs broches d'envoi, mais cela cause des problèmes car elles ne sont pas parfaitement synchronisées.

utilisez cette configuration à des fins de débogage avant de tout souder ensemble, pour vous assurer que tout fonctionne vraiment comme prévu.

Étape 3: Coder:

Maintenant, nous avons tout et nous pouvons commencer à déboguer les capteurs.

Pour utiliser mon code, vous devez télécharger la bibliothèque de détection capacitive d'Arduino et l'installer selon les instructions données par la page de référence: Cliquez sur moi

Le code: (je ne suis pas doué pour coder, donc si vous savez comment le faire mieux, faites-le)

#include //importe la bibliothèque de code

CapacitiveSensor cs_4_2 = CapacitiveSensor(4, 2); //Envoyer la broche = 4, recevoir 2 et 5 CapacitiveSensor cs_4_5 = CapacitiveSensor(4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // taille du tableau const int numIndexG = 10; int couleurR = 0; int couleurG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; long totalR = 0; // il doit être long car le total de mon tableau était trop grand pour un entier. int moyenneR = 0; int indexG [numIndexG]; int posIndexG = 0; long totalG = 0; int moyenneG = 0; void setup() { pinMode(redPin, OUTPUT); pinMode(vertPin, SORTIE); pinMode(bluePin, SORTIE); for (int thisIndexR = 0; thisIndexR < numIndexR; thisIndexR++) { //définit le tableau sur 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500){ // limitez les valeurs du capteur à un maximum utilisable, ce n'est pas le même pour chaque valeur de résistance et peut également différer un peu d'un environnement à l'autre, vous devrez peut-être le modifier pour vos propres besoins. total1 = 4500; } si (total2 >= 4500){ total2 = 4500; } totalR = totalR - indexR[posIndexR]; // ceci crée ici un tableau qui ajoute en continu une sortie de capteur et produit la moyenne. indexR[posIndexR] = total1; totalR = totalR + indexR[posIndexR]; posIndexR = posIndexR + 1; if (posIndexR >= numIndexR){ posIndexR = 0; } moyenneR = totalR / numIndexR; // nous utilisons la moyenne au lieu des données brutes pour lisser la sortie, cela ralentit légèrement le processus mais cela crée également un très bon flux fluide. totalG = totalG - indexG[posIndexG]; indexG[posIndexG] = total2; totalG = totalG + indexG[posIndexG]; posIndexG = posIndexG + 1; if (posIndexG >= numIndexG){ posIndexG = 0; } moyenneG = totalG / numIndexG; if (averageR >= 2000){ // nous ne voulons pas que les LED changent constamment de valeur à moins qu'il n'y ait une entrée de votre main, donc cela garantit que toutes les lectures environnementales inférieures ne sont pas prises en compte. colorR = map(averageR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000){ colorG = map(averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (averageG <= 1000){ colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125){ //B fonctionne un peu différemment car je n'ai utilisé que 2 capteurs donc j'ai mappé B sur les deux capteurs colorB = map(colorR, 255, 125, 0, 127,5) + map (couleurG, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } else{ colorB = map(colorR, 255, 125, 127.5, 0) + map(colorG, 255, 125, 127.5, 0); if (couleurB>= 255){ couleurB = 255; } if (couleurB <= 0){ couleurB = 0; } analogWrite (bluePin, colorB); } Serial.print(millis() - démarrer); //c'est à des fins de débogage Serial.print("\t"); Serial.print(couleurR); Serial.print("\t"); Serial.print(couleurG); Serial.print("\t"); Serial.println(couleurB); retard(1); }

Ce que fait ce code est d'extraire les données brutes du capteur (ces données seront toujours légèrement erratiques en raison de tous les différents facteurs qui affectent le capteur) et il met les données brutes en continu dans un tableau, lorsque le tableau atteint sa valeur maximale (dans mon cas 10) il purge la dernière valeur et en ajoute une nouvelle. Chaque fois qu'une valeur est ajoutée, il calcule la valeur moyenne et la met dans une nouvelle variable. Cette variable moyenne est utilisée pour mapper une valeur à une valeur de 0 à 255, c'est la valeur que nous écrivons sur les broches RVB pour augmenter la luminosité de chaque canal (les canaux étant R V et B).

Maintenant, si vous téléchargez votre code sur l'arduino et que vous ouvrez le moniteur série, vous devriez voir les valeurs RVB inférieures lorsque vous passez votre main sur chaque capteur et la couleur de la lumière de la led devrait changer.

Étape 4: Maintenant pour le cas:

Maintenant pour le cas
Maintenant pour le cas
Maintenant pour le cas
Maintenant pour le cas
Maintenant pour le cas
Maintenant pour le cas

Le dossier: j'ai réalisé le dossier à l'aide des outils disponibles dans mon université, ce workflow n'est donc pas applicable à tout le monde. Cependant, il n'y a rien de trop spécial à ce sujet, il a besoin d'un trou d'un côté pour que le port USB passe à travers, mais à part cela, il ne s'agit que d'un boîtier ouvert.

Les dimensions sont les suivantes:

15 x 15 CM pour le dessus transparent

et

15 x 8 CM pour le socle en bois (l'épaisseur du bois était de 1,8 CM pour moi).

J'ai utilisé une scie à table pour couper une plaque de MDF aux dimensions correctes dont j'avais besoin (soit 4 panneaux de 15 x 8 CM et 1 panneau de sol de 15 x 15 CM), après quoi j'ai coupé les coins à un angle de 45 degrés. Toutes les pièces que j'ai collées à l'aide de colle à bois et de pinces (laisser sécher au moins 30 minutes), j'ai utilisé le même procédé pour le Plexiglas mais avec une lame de scie spéciale.

1 des côtés en bois doit avoir un trou au centre à la hauteur de la prise USB arduino pour permettre à l'arduino d'être branché.

J'ai fini la base de placage. Je l'ai coupé en morceaux légèrement plus gros que la surface de chaque côté.

Je l'ai collé dessus, puis je l'ai serré 30 minutes de chaque côté (il vaut mieux le faire individuellement pour vous assurer qu'il ne glisse pas et après qu'il ait séché, j'ai coupé tout ce qui dépasse.

J'ai collé le capuchon à l'aide d'une colle spécifique pour Acryl appelée Acryfix.

Sachez que si vous utilisez du plexiglas acrylique, la colle dissout un peu le plexiglas, soyez donc aussi précis et rapide que possible (il sèche en quelques minutes, mais exposé à l'air en quelques secondes).

Pour finir le capuchon, j'ai dépoli le cube avec une sableuse, mais vous pouvez également utiliser du papier de verre fin, cela prend juste beaucoup plus de temps pour le rendre uniforme. Faites attention cependant si vous utilisez du papier de verre, il doit être à grain fin et également coller les pièces ensemble après la procédure de glaçage (afin de ne pas le casser accidentellement en appliquant trop de pression)

Pour m'assurer que le capuchon ne glisse pas trop, j'ai collé quelques petites barres de bois sur les bords du cube en bois.

Étape 5: Le résultat final devrait ressembler à ceci:

Le résultat final devrait ressembler à ceci
Le résultat final devrait ressembler à ceci

Étape 6: Souder

Soudure!
Soudure!
Soudure!
Soudure!

Si vous avez une carte de circuit imprimé, vous pouvez commencer à souder toutes les pièces ensemble en utilisant la même configuration que votre planche à pain.

Mon circuit imprimé a des bandes de cuivre continues pour une facilité d'utilisation.

Pour chaque capteur, j'ai coupé un petit carré pour y souder les résistances et les fils.

Les fils d'envoi (les fils qui vont de la broche 4 à chaque capteur) sont soudés en séquence à un carré séparé, avec 1 fil qui va dans la broche 4.

J'ai gardé un long rectangle pour faire une bande led improvisée (mesurez-la pour qu'elle rentre à l'intérieur du capuchon mais sur les bords de la base). Vous pouvez simplement souder les leds les unes après les autres (gardez à l'esprit dans l'image que j'ai accidentellement soudé les leds et les résistances du mauvais côté du circuit imprimé, les bandes de cuivre doivent toujours être sur la face inférieure).

Lorsque vous avez terminé de souder les pièces individuelles ensemble, placez-les dans le boîtier. Je n'ai pas soudé mes fils individuels ensemble afin que je puisse les changer facilement si nécessaire.

Il est temps de tout mettre dans la base: c'est à peu près l'étape la plus simple, l'arduino doit être placé en premier avec le port USB à travers le trou à l'arrière du boîtier. Ajoutez maintenant les capteurs, assurez-vous que la feuille de capteur s'adapte contre le bois des deux côtés, avec la feuille de sol directement contre elle. Lorsque tout s'emboîte bien, branchez les leds RVB dans les bonnes broches (9, 10, 11) et laissez-le s'appuyer sur les bords de la base.

Étape 7: Nous avons terminé

Si vous avez suivi tout cela, vous devriez maintenant avoir une lampe de travail avec un mélange de couleurs tactile capacitif. S'amuser!

Conseillé: