Table des matières:
Vidéo: UChip - Serial Over IR ! : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
La communication sans fil est devenue une caractéristique clé de nos projets de nos jours et en parlant de sans fil, la première chose qui me vient à l'esprit est le Wi-Fi ou BT, mais la gestion des protocoles de communication Wi-Fi ou BT n'est pas une tâche facile et consomme beaucoup des ressources MCU, laissant peu d'espace pour coder mon application. Par conséquent, j'opte généralement pour un module Wi-Fi/BT externe connecté en série au microcontrôleur afin de répartir les rôles et d'obtenir une plus grande liberté.
Cependant, le Wi-Fi et le BT sont parfois « exagérés » pour certaines applications nécessitant un faible débit et une courte distance de communication. De plus, l'utilisation du Wi-Fi ou du BT implique la nécessité de connecter votre Smartphone ou appareil avec une authentification appropriée.
Imaginez que vous ayez simplement besoin d'allumer/éteindre une lumière extérieure, ou de changer l'intensité de la lampe, ou d'ouvrir un portail électrique. Cela vaudrait-il la peine d'utiliser le Wi-Fi ou le BT ?
Selon l'environnement et les applications, la communication sans fil sur la longueur d'onde IR (infrarouge) peut s'avérer utile. Un Serial over IR, implémenté avec peu de composants externes (3 composants discrets !), et uChip (une très petite carte compatible Arduino) peut être la solution que vous recherchiez !
Nomenclature (pour un appareil Tx-Rx):
1 x puce électronique
1 x LED IR: ayant le pic d'émission à 950nm
1 x TSOP-38238 (d'équivalent)
1 résistance de 1 KOhm
Matériel
1 x planche à pain/planche proto
1 x tube en plastique noir: diamètre intérieur de la même taille que la LED IR, le tube est nécessaire pour éviter la diaphonie avec le récepteur TSOP.
1 x papier d'aluminium (3 cm x 3 cm)
1 x bande
ASTUCE: vous pouvez créer un périphérique uniquement TX ou uniquement RX au cas où vous auriez besoin d'une communication unidirectionnelle en supprimant le matériel RX/TX inutile du circuit ou en activant/désactivant le code associé dans le croquis.
Étape 1: Câblage
Câblez les composants ensemble en fonction du schéma.
Quelques notes sur le schéma simple. Puisque le TSOP-38238 permet une alimentation de 2,5V à 5V et absorbe au maximum 0,45mA (vous trouvez la fiche technique ICI), j'alimenterai le récepteur à l'aide de deux broches, qui fourniront respectivement la masse et l'alimentation. Cela permet d'allumer/éteindre le récepteur à la demande et une configuration de câblage matériel très simple. De plus, si vous avez besoin d'une communication unidirectionnelle, vous pouvez choisir de créer un périphérique (Tx/Rx) uniquement en désactivant/activant simplement le TSOP-38238.
Comment fonctionne le circuit ?
C'est assez simple. La broche de sortie TSOP est tirée vers le bas lorsque le capteur détecte un train de 6 impulsions ou plus à 38 KHz, par contre elle est tirée vers le haut lorsqu'il n'y a pas un tel signal. Par conséquent, afin de transmettre les données série via IR, le circuit alimente l'anode LED avec un PWM 38KHz modulé avec le signal série TX qui abaisse la cathode LED.
Par conséquent, à un niveau haut du TX0 série, la LED n'est pas polarisée ou polarisée en sens inverse (pas d'impulsions) et la broche de sortie TSOP est tirée vers le haut. Transmettant un niveau bas sur la série, la LED est alimentée et génère des impulsions IR en fonction du signal PWM appliqué; par conséquent, la sortie TSOP est tirée vers le bas.
Étant donné que la transmission est directe (0->0 et 1->1), il n'y a pas besoin d'onduleurs ou d'autres logiques du côté du récepteur.
Je régule la puissance de sortie optique des LED en sélectionnant le rapport cyclique PWM en fonction de l'application. Plus le rapport cyclique est élevé, plus la puissance de sortie optique est élevée et donc, plus vous transmettrez votre message.
Gardez à l'esprit que nous avons encore besoin de générer des impulsions ! Ainsi, vous ne devriez pas dépasser 90 % du cycle de service, sinon le TSOP ne détectera pas le signal sous forme d'impulsions.
Avez-vous besoin de plus de puissance ?
Pour augmenter le courant, peut-on simplement diminuer la valeur de la résistance de 1kOhm ?
Peut-être, ne soyez pas trop exigeant ! Le courant maximum que vous obtenez d'une broche du MCU est limité à 7 mA lorsque la broche du port est plus forte que la normale (PINCFG. DRVSTR = 1 et VDD > 3 V) comme indiqué dans la fiche technique SAMD21.
Cependant, la configuration standard (qui est celle adoptée par les bibliothèques IDE Arduino par défaut) limite le courant à 2mA. Par conséquent, l'utilisation de 1kOhm donne déjà la limite de courant avec les paramètres par défaut !
L'augmentation du courant n'est pas seulement une question de composants électriques. Brièvement:
- Changez la résistance (dont la valeur minimale est limitée à environ 470Ohm -> VDD/470~7mA);
- Réglez le PORT->PINCFG->DRVSTR correspondant sur 1;
Je fournirai le code incluant cette fonctionnalité dans une future mise à jour.
Mais rappelez-vous, faire couler et drainer le courant des broches MCU proches de ses limites n'est pas une si bonne approche. En effet, cela diminue la durée de vie et la fiabilité du MCU. Par conséquent, je suggère de conserver la force d'entraînement normale pour une utilisation à long terme.
Étape 2: Programmation
Chargez le croquis "IRSerial.ino" dans uChip (ou la carte compatible Arduino que vous utilisez).
Au cas où vous auriez besoin de changer la broche générant le PWM, assurez-vous que vous utilisez une broche connectée à une minuterie TCC, car cette version du code ne fonctionne qu'avec les minuteries TCC (vérifiez la "variant.c" de votre carte pour cette information). J'ajouterai le code pour utiliser également les minuteries TC dans les futures mises à jour.
Le code est assez simple. Après avoir réglé le PIN_5 bas (fournit le TSOP GND) et le PIN_6 haut (alimentant le TSOP), le MCU démarre le PWM sur PIN_1, définissant la période de minuterie et la capture en fonction de la modulation de fréquence nécessaire (dans mon cas, c'est 38KHz) et du devoir cycle (12,5% par défaut). Ceci est fait en exploitant la fonction standard analogWrite() sur les broches PWM et en modifiant uniquement le registre PER_REG (registre de période) et le registre CC (comparaison de capture) (le code écrit est simplement un copier-coller de la bibliothèque wire_analog). Vous pouvez définir la fréquence nécessaire en fonction du changement du capteur TSOP PER_REG (qui est la limite supérieure réinitialisant le compteur de la minuterie), tout en définissant CC proportionnellement à la valeur de la période au pourcentage de cycle de service souhaité.
Ensuite, le code définit le port série en utilisant le débit en bauds correct qui est de 2400 bps. Pourquoi un débit en bauds si bas ?! La réponse se trouve dans la fiche technique TSOP que vous pouvez trouver ICI. Étant donné que le TSOP est doté de filtres à haute réjection de bruit pour éviter les commutations indésirables, il est nécessaire d'envoyer un train de plusieurs impulsions afin d'abaisser la broche de sortie du TSOP (le nombre d'impulsions dépend de la version du TSOP, 6 est la valeur typique). De même, la sortie TSOP est élevée après un laps de temps minimum équivalent à 10 impulsions ou plus. Par conséquent, afin de définir la sortie TSOP comme signal modulant TX0, il est nécessaire de définir le débit en bauds en tenant compte de l'équation suivante:
Baud série < PWM_fréquence/10
En utilisant 38KHz, cela se traduit par un débit en bauds inférieur à 3800bps, ce qui signifie que le débit en bauds « standard » le plus élevé autorisé est de 2400pbs, comme prévu précédemment.
Voulez-vous augmenter le débit en bauds ? Il y a deux options.
L'option la plus simple consiste à changer le TSOP en une version à fréquence plus élevée (comme le TSOP38256), ce qui vous permettrait de doubler le débit en bauds (4800bps)
Pas assez?! Ensuite, vous devez créer votre propre lien optique à l'aide d'une simple LED IR + photodiode et d'un circuit d'amplification. Cependant, cette solution nécessite beaucoup d'expertise en codage et en électronique pour éviter que le bruit n'affecte les données transmises et donc sa mise en œuvre n'est pas du tout facile ! Cependant, si vous vous sentez suffisamment en confiance, vous êtes plus que bienvenu pour essayer de créer votre propre système TSOP !:)
Enfin, j'ai configuré le port SerialUSB (2400bps) que j'utilise pour envoyer et recevoir des données sur le moniteur série.
La fonction loop() inclut le code nécessaire pour transmettre les données sur les deux séries et est copiée directement à partir de l'exemple d'esquisse SerialPassthrough en ne modifiant que les noms des séries.
Étape 3: Blindage de la LED IR
Si vous allumez les circuits ci-dessus après avoir chargé le code " IRSerial.ino ", vérifiez le moniteur série sur Arduino IDE et essayez d'envoyer une chaîne. Vous verrez probablement que uChip reçoit exactement ce qu'il transmet ! Il y a une diaphonie dans les circuits en raison de la communication optique entre la LED IR et le TSOP du même appareil !
Voici la partie difficile de ce projet, empêcher la diaphonie ! La boucle doit être rompue pour établir une communication série bidirectionnelle sur IR.
Comment rompre la boucle ?
Première option, vous réduisez le rapport cyclique PWM, diminuant ainsi la puissance optique de sortie de la LED. Cependant, cette approche réduit également la distance sur laquelle vous obtenez un canal IR série fiable. La deuxième option consiste à protéger la LED IR, créant ainsi un « faisceau » IR directionnel. C'est une question d'essais et d'erreurs; enfin, en utilisant un morceau de tuyau d'air pneumatique noir enveloppé dans du papier d'aluminium et du ruban adhésif (fournissant une isolation électrique), j'ai réussi à briser la diaphonie. Mettre la LED IR émettrice à l'intérieur du tube empêche la communication entre le TX et le RX du même appareil.
Regardez l'image pour voir ma solution, mais n'hésitez pas à essayer d'autres méthodes et/ou à suggérer la vôtre ! Il n'y a pas de solution absolue à ce problème (sauf si vous avez besoin d'un simple canal unidirectionnel) et vous devez probablement régler la disposition des circuits, le cycle d'utilisation PWM et le blindage IR en fonction de vos besoins.
Une fois que vous avez rompu la diaphonie, vous pouvez vérifier que votre appareil fonctionne toujours en créant une boucle sur l'appareil Tx-Rx exploitant la réflexion de la longueur d'onde IR sur les surfaces réfléchissantes IR.
Étape 4: Communiquez
C'est tout
Votre appareil série sur IR est prêt à communiquer, utilisez-le pour envoyer des données sur IR, allumez/éteignez tout ce que vous voulez ou vérifiez l'état d'un capteur que vous cachez secrètement !
La distance sur laquelle la communication est fiable ne l'est pas autant que pour un appareil WiFi ou BT. Cependant, il est directionnel (selon l'ouverture de la LED et le système de blindage IR mis en œuvre), ce qui peut être très utile dans certaines applications !
Bientôt, je mettrai en ligne une vidéo où vous pourrez voir quelques exemples des applications que j'ai faites. Prendre plaisir!
Conseillé:
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et d'autres SBC alimentés par ARMbasic : 3 étapes
Text to Speech Cliquez sur un UChip alimenté par ARMbasic et sur d'autres SBC alimentés par ARMbasic : Introduction : Bonne journée. Je m'appelle Tod. Je suis un professionnel de l'aérospatiale et de la défense qui est aussi un peu un geek dans l'âme.Inspiration: Originaire de l'ère des BBS commutés, des microcontrôleurs 8 bits, des ordinateurs personnels Kaypro/Commodore/Tandy/TI-994A, quand R
UChip - Simple croquis pour télécommander des moteurs et/ou des servos via une radio Tx-Rx à 2,4 GHz ! : 3 étapes
UChip - Simple Sketch pour télécommander des moteurs et/ou des servos via une radio Tx-Rx à 2,4 GHz ! : J'aime vraiment le monde RC. Utiliser un jouet télécommandé vous donne le sentiment de contrôler quelque chose d'extraordinaire, même s'il s'agit d'un petit bateau, d'une voiture ou d'un drone ! Cependant, il n'est pas facile de personnaliser vos jouets et de leur faire faire ce que vous voulez d'eux
UChip - Bateau RC sans bouteilles en plastique et lecteur de CD-ROM ! : 4 étapes
UChip - Bateau RC hors de bouteilles en plastique et lecteur de CD-ROM ! : Après avoir mis en œuvre le matériel et le logiciel pour connecter mon drone Radio aux moteurs/servos, l'étape suivante consistait à faire bon usage du travail acharné effectué et à construire mon propre RC jouet, qui est… un bateau ! Comme je ne suis pas ingénieur en mécanique, j'ai opté pour la facilité
Sabre laser UChip - "Que la force soit avec vous": 6 étapes
Sabre laser UChip - « Que la force soit avec vous » : avez-vous déjà rêvé d'être un Jedi ou un Sith de l'univers Star Wars, balançant un puissant sabre laser pour soutenir votre propre camp ? Quelle que soit la réponse, la voici : Comment fabriquer un sabre laser DIY avec µChipFirst, permettez-moi de préciser que j'ai l'intention de
UChip - Capteur sonar BEEP avec transmission de données Bluetooth : 4 étapes
UChip - Capteur sonar BEEP avec transmission de données Bluetooth : Récemment, j'ai développé un BEEP comme un sonar de voiture et un adaptateur série Bluetooth vers USB utilisant uChip. Chaque projet était assez intéressant en soi, mais… serait-il possible de les fusionner et de créer un capteur « BIP de transmission à distance BT comme une voiture » ?!?T