Table des matières:

Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED : 7 étapes
Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED : 7 étapes

Vidéo: Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED : 7 étapes

Vidéo: Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED : 7 étapes
Vidéo: La vérité derrière le personnage de Farine de Blé 2024, Novembre
Anonim
Image
Image
Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED
Porte-clés Arduino Guitar Jack avec reconnaissance Jack et OLED

Introduction:

Cette instructable détaillera la construction de mon porte-clés de plugin Guitar Jack basé sur Arduino

Il s'agit de mon tout premier instructable, veuillez donc supporter avec moi car je peux apporter des modifications / mises à jour en cours de route

Étape 1: Pièces et outils

Pièces et outils
Pièces et outils
Pièces et outils
Pièces et outils
Pièces et outils
Pièces et outils

La plupart des pièces que j'ai achetées sur Amazon.co.uk ou eBay, certaines que j'avais déjà utilisées - Voici une liste de ce dont vous aurez besoin.

Les liens Amazon sont tous des liens d'affiliation, vous pourrez peut-être trouver moins cher ailleurs - j'utilise beaucoup Amazon Prime, alors Amazon était justement mon choix.

Je voulais garder cette construction assez peu coûteuse et économique. Vous pouvez utiliser un écran TFT plus grand si vous le souhaitez, ainsi qu'un Arduino différent. N'utilisez pas de NANO, car il plantera en raison d'une utilisation élevée de la mémoire. Le code utilise environ 72% de la RAM du Pro Micro et est stable, mais à partir des tests, un NANO plantera et se bloquera.

(Plus de détails dans l'étape Code.)

LES PIÈCES

1x Arduino Pro Micro -

1x OLED 0,96 avec écran jaune et bleu -

4x WS2812 'Pixels' -

1x DS3231 RTC -

4x 1/4 Mono Jack (ou autant que vous le souhaitez) - Amazon (Gold) ou Amazon (Silver) ou eBay.co.uk

1x pack de résistances mixtes -

4x jacks pour guitare 1/4 -

1x câble d'extension de câble micro USB -

4x vis M3

OUTILS & MATÉRIAUX

- Fer à souder (c'est celui que j'ai acheté - un TS100 - car il est venu avec des astuces supplémentaires

- Soudure

- Pistolet à colle chaude (https://amzn.to/2UTd9PN)

- Fil (https://amzn.to/2VK2ILU)

- Coupe-fils/dénudeurs (https://amzn.to/2KzqUzp)

- Imprimante 3D ou service d'impression 3D

FACULTATIF - Ces éléments sont facultatifs, selon la façon dont vous choisissez de tout connecter

- Veroboard / Stripboard (https://amzn.to/2KzMFPE)

- Connecteurs à bornes à vis (2 pôles | 3 pôles | 4 pôles)

- En-têtes PCB (https://amzn.to/2X7RjWf)

Étape 2: Impression 3D du boîtier

Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier
Impression 3D du boîtier

J'ai imprimé le mien sur ma Creality CR-10S, en utilisant Black PLA+ (https://amzn.to/2X2SDtE)

J'ai imprimé à une hauteur de 0,2 couche, avec un remplissage de 25 %.

Étape 3: Assembler le tout + Schéma

Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma
Tout mettre ensemble + schéma

La façon dont vous choisissez de connecter votre Arduino dépend entièrement de vous - j'ai personnellement choisi de me faire un "bouclier" pour ainsi dire. Pour fabriquer le blindage, j'ai soudé des embases femelles au veroboard pour correspondre au Pro Micro, j'ai ensuite ajouté un rail de +5v et GND, aux extrémités opposées. J'ai utilisé un cavalier pour connecter le +5v à mon «rail» maintenant 5v, et j'ai fait de même pour le GND. J'ai ensuite ajouté mes 4 résistances 100k, une extrémité connectée à +5v pour chacune d'elles, puis l'autre côté se connecte respectivement à A0, A1, A2 et A3. J'ai ensuite ajouté des bornes à vis aux broches analogiques A0, A1, A2 et A3 ainsi qu'aux broches 2 (SDA), 3 (SCL) et 4

Mesurez votre câblage et coupez aux longueurs appropriées. J'ai d'abord commencé avec les LED Pixel WS2812 - la PREMIÈRE LED WS2812 se connecte à + 5v de l'Arduino, GND de l'Arduino et DIN se connecte à la broche 4. Après cela, les 3 autres sont enchaînés, enchaînant tous les 5v > 5v, Les broches GND > GND et DOUT d'un pixel se connectent au DIN du suivant. Une fois soudés, appuyez doucement sur ceux-ci dans les trous carrés du haut et collez à chaud en place et également pour protéger l'arrière de toute connexion accidentelle ou de tout court-circuit.

Après les LED, j'ai ensuite vissé les prises jack guitare. Une broche de chaque se connecte à GND, puis la 2ème broche de chaque se connecte à A0, A1, A2 et A3 en conséquence. C'est donc Socket 1, à A0, Socket 2 à A1, Socket 3 à A2 et Socket 4 à A3.

Ensuite, j'ai soudé 4 fils aux connexions OLED et j'ai réduit autant que possible tout excès de soudure. Vous voulez attacher vos fils à l'arrière de l'écran, donc vous soudez à l'avant de l'écran.

Attention aux épingles ! Certains OLED ont GND à l'extérieur, puis VCC, certains ont VCC à l'extérieur, puis GND

Une fois que vous avez soudé et que vous avez coupé ou aplati la connexion de soudure autant que possible, appuyez doucement sur l'écran dans son emplacement. C'est un peu serré par conception, mais sachez que différentes tolérances d'impression peuvent affecter cela et vous devrez donc peut-être effectuer un post-traitement mineur pour l'adapter. Une fois en place, placez de la colle chaude sur chacun des 4 coins pour le maintenir en place.

Connectez tout pour faire correspondre le schéma et les images, et une fois satisfait, vous pouvez ensuite coller à chaud le Pro Micro et l'horloge RTC en place, puis connecter l'extension USB au Pro Micro.

J'ai utilisé une extension micro USB pour que a) l'USB puisse être utilisé pour fournir de l'énergie, mais plus encore, b) pour qu'il soit possible de reprogrammer le Pro Micro si nécessaire sans tout démonter

Une fois satisfait, vissez le boitier ensemble à l'aide des 4 vis

Étape 4: Les bouchons

Les bouchons !
Les bouchons !
Les bouchons !
Les bouchons !
Les bouchons !
Les bouchons !

La façon dont cela fonctionne est que, à toutes fins utiles, une partie de la conception fonctionne comme un "ohmmètre". Un ohmmètre est un instrument de mesure de résistance électrique. La plupart des multimètres ont cette fonction par laquelle vous choisissez l'échelle, puis mesurez une résistance pour trouver sa valeur. Le principe de fonctionnement est que vous connectez une résistance CONNUE au +ve, qui est ensuite connectée à une résistance INCONNUE, qui se connecte à -ve. Le joint entre les 2 résistances se connecte à la broche analogique Arduino afin qu'il puisse lire la tension et calculer la résistance.

Il fonctionne comme un diviseur de tension et calcule la résistance de la résistance inconnue.

En tant que réseau diviseur de tension des résistances R1 et R2, Vout = Vin * R2 / (R1 + R2) - Nous utilisons 100k pour notre résistance connue (R1). Cela nous donne la "chute de tension"

À partir de là, nous pouvons maintenant calculer la résistance de la résistance inconnue (R2), R2 = Vout * R1 / (Vin – Vout) - où R1 est notre résistance de 100k (100 000 ohms)

En utilisant une résistance différente dans chaque prise que vous souhaitez utiliser, vous pouvez ensuite ajuster le code en conséquence en fonction de la prise utilisée.

J'utilise 4 prises jack. J'ai choisi d'utiliser:

Résistance connue (x4) - 100k

Prise Jack 1 - 5.6k

Prise Jack 2 - 10k

Prise Jack 3 - 22k

Prise Jack 4 - 39k

Vous pouvez bien sûr développer cela et coder autant que vous le souhaitez.

Étape 5: Le code

Le code
Le code

Tout d'abord, vous aurez besoin de l'IDE Arduino, disponible ici:

Vous devrez également vous assurer que vous disposez également de quelques bibliothèques Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (facultatif):

Une note sur le choix de la bonne carte "Arduino". À l'origine, j'ai commencé ce projet avec un Arduino Nano, car ils sont très bon marché à environ 3 à 4 £ au Royaume-Uni, ou aussi peu que 1,50 £ si vous achetez sur AliExpress (mais ne vous inquiétez pas de l'attente de 30 à 50 jours). Le problème avec le Nano est que sa SRAM fait 2 Ko (2048 octets). Cette esquisse utilise 1728 octets de mémoire dynamique avec des variables globales. C'est 84% de la SRAM, ne laissant que 320 octets libres pour les variables locales. Cela était insuffisant et provoquerait le blocage et le gel du Nano.

Le Pro Micro (Leonardo) a 2,5K SRAM (2560 octets), ce qui signifie qu'il y a 694 octets libres pour les variables locales (le sketch utilise 72% de la SRAM du Pro Micro). Jusqu'à présent, cela s'est avéré parfaitement adéquat et stable pour mon utilisation. Si vous avez l'intention d'utiliser de nombreuses prises jack, vous pouvez envisager d'utiliser quelque chose avec plus de SRAM.

En ce qui concerne le stockage Flash, ce sketch utilise 88% (25252 octets) de 30k (Les ATMega328p [Nano] et ATMega32u4 [Pro Micro] ont tous les deux 32k, mais 2k sont réservés au bootloader)

J'ai écrit des centaines de croquis Arduino au fil des ans, mais je suis un amateur - alors gardez à l'esprit que certaines parties du code peuvent être inefficaces ou qu'il peut y avoir de "meilleures façons de faire cela". Cela étant dit, cela fonctionne parfaitement pour moi et j'en suis satisfait. J'ai utilisé des bibliothèques qui DEVRAIENT fonctionner sur la plupart des cartes, que ce soit AVR (les Arduino les plus basiques) ou SAMD21 (j'ai une poignée d'appareils Cortex M0)

Je voulais également afficher un graphique différent en fonction de la prise utilisée. Si vous souhaitez créer le vôtre, voici un guide simple et brillant sur la façon de créer le C Array pour les images à utiliser avec cet écran:

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

Assurez-vous d'utiliser PROGMEM pour vos graphiques. Par exemple:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = { }

De par sa conception, l'écran « expirera » après 5 secondes et reviendra à l'affichage de l'heure.

La plupart des paramètres se trouvent dans Settings.h, en particulier, le nom des prises jack associées est codé ici:

#define PLUG1 "CLÉS"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

Il y a aussi des parties importantes du code dans Variables.h

flottant R1=96700,0;

flottant R2=96300,0; flottant R3=96500,0; flottant R4=96300,0;

Ce sont les valeurs de résistance CONNUES, en ohms, de chacune des 4 résistances.

R1 connecté à A0, R2 à A1, R3 à A2 et R4 à A3.

Il est conseillé de mesurer vos résistances de 100k à l'aide d'un multimètre et d'utiliser la valeur exacte de la résistance. Prenez la mesure de la résistance une fois que tout est connecté. (Mais pas sous tension).

Lorsque vous choisissez des résistances pour vos prises jack, assurez-vous qu'il y a un bon écart en ohms entre elles, et lors de leur codage, donnez-vous une belle plage inférieure et supérieure à la résistance de votre choix. Voici ce que j'ai utilisé dans mon code:

flottant P1_MIN=4000.0, P1_MAX=7000.0; // 5.6K

flottant P2_MIN=8000.0, P2_MAX=12000.0; // 10K flottant P3_MIN=20000.0, P3_MAX=24000.0; // 22K flottant P4_MIN=36000.0, P4_MAX=42000.0; // 39K

La raison en est de tenir compte de la lecture analogique et des fluctuations de tension mineures, etc.

Donc, ce qui se passe, c'est que si la résistance détectée est comprise entre 4000 ohms et 7000 ohms, nous supposons que vous avez utilisé une résistance de 5,6 k et donc le code le verra comme Jack Plug 1. Si la résistance mesurée est comprise entre 8000 ohms et 12000 ohms, l'hypothèse est qu'il s'agit d'une résistance de 10k et qu'il s'agit de Jack Plug 2 et ainsi de suite.

Si vous avez besoin de faire du débogage (ne laissez pas de commentaire dans "production" car le débogage en série utilise une précieuse mémoire vive), décommentez simplement les lignes dont vous avez besoin en haut de Settings.h

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

Pour décommenter, supprimez simplement le // …. pour commenter la ligne, rajoutez le // au début de la ligne.

SERIAL_DEBUG permet le débogage série et l'utilisation de choses telles que (par exemple)

Serial.println(F("bonjour tout le monde"));

WAIT_FOR_SERIAL est une étape supplémentaire, ce qui signifie que tant que vous n'ouvrez pas Serial Monitor, le code ne continuera pas. Cela permet de s'assurer que vous ne manquez aucun message série important. - NE JAMAIS LAISSER CECI ACTIVÉ

Si vous laissez WAIT_FOR_SERIAL activé, vous ne pourrez pas utiliser votre porte-clés dans un environnement "réel" car il sera bloqué en attente du moniteur Arduino IDE Serial avant de pouvoir continuer dans la boucle principale de l'esquisse. Une fois que vous avez terminé votre débogage, assurez-vous de décommenter à nouveau cette ligne et de télécharger à nouveau votre croquis pour la production/l'achèvement.

Lors de l'utilisation de l'option SERIAL_DEBUG, mon code contient les éléments suivants:

#ifdef SERIAL_DEBUG

Serial.print(F("JACK ACTIF = ")); Serial.println(ACTIVE_JACK); int len = sizeof(SOCKET_1234_HAS_PLUGTYPE_X)/sizeof(SOCKET_1234_HAS_PLUGTYPE_X[0]); for (int i=0;i<len;i++) { Serial.print(F("SOCKET_1234_HAS_PLUGTYPE_X[")); Serial.print(i); Serial.print(F("] = ")); Serial.println(SOCKET_1234_HAS_PLUGTYPE_X); } Serial.println(); if (INSERTED[socket]) { Serial.print(F("Plug in socket ")); Serial.print(socket+1); Serial.print(F(" a une résistance de: ")); Serial.println(résistance); } #fin si

La dernière ligne Serial.print vous indiquera quelle est la résistance, en ohms, de la dernière prise insérée. Vous pouvez donc également utiliser ce croquis comme une sorte d'ohmmètre pour vérifier la résistance d'une prise jack.

Étape 6: Remarques

Je pense avoir tout couvert, mais s'il vous plaît, commentez et je ferai de mon mieux pour lire et répondre quand je pourrai:)

Désolé pour la vidéo un peu médiocre - je n'ai pas de trépied, de configuration d'enregistrement ou d'espace de travail approprié pour ainsi dire, donc cela a été filmé (mal) en tenant le téléphone dans une main et en essayant de le faire une démonstration avec l'autre.

Merci d'avoir lu.

Conseillé: