- Composants requis
- Logiciel utilisé
- Module émetteur et récepteur RF 433 MHz
- Schéma
- Création du projet pour Atmega 8 à l'aide de CodeVision
- CODE et explication
- Téléchargez le code sur Atmega8
Rendre nos projets sans fil le rend toujours cool et étend également la portée dans laquelle il peut être contrôlé. De l'utilisation d'une LED IR normale pour le contrôle sans fil à courte distance à un ESP8266 pour le contrôle HTTP mondial, il existe de nombreuses façons de contrôler quelque chose sans fil. Dans ce projet, nous apprenons à construire des projets sans fil à l'aide d'un module RF 433 MHz et d'un microcontrôleur AVR.
Dans ce projet, nous faisons les choses suivantes: -
- Nous utilisons Atmega8 pour l'émetteur RF et Atmega8 pour la section Récepteur RF.
- Nous connectons une LED et un bouton poussoir avec des microcontrôleurs Atmega8.
- Du côté de l'émetteur, nous interagissons le bouton-poussoir avec Atmega et transmettons les données. Du côté du récepteur, nous recevrons les données sans fil et afficherons la sortie sur LED.
- Nous utilisons un codeur et un décodeur IC pour transmettre des données à 4 bits.
- La fréquence de réception est de 433 MHz en utilisant le module RF TX-RX bon marché disponible sur le marché.
Composants requis
- Microcontrôleur Atmega8 AVR (2)
- Programmeur USBASP
- Câble FRC 10 broches
- Planche à pain (2)
- LED (2)
- Bouton poussoir (1)
- Paire HT12D et HT12E
- Module RF RX-TX
- Résistances (10k, 47k, 1M)
- Fils de cavalier
- Alimentation 5V
Logiciel utilisé
Nous utilisons le logiciel CodeVisionAVR pour écrire notre code et le logiciel SinaProg pour télécharger notre code sur Atmega8 à l'aide du programmeur USBASP.
Vous pouvez télécharger ces logiciels à partir des liens indiqués:
CodeVisionAVR :
SinaProg:
Avant d'entrer dans les schémas et les codes, comprenons le fonctionnement du module RF avec les circuits intégrés encodeur-décodeur.
Module émetteur et récepteur RF 433 MHz
Ce sont les modules émetteurs et récepteurs que nous utilisons dans le projet. C'est le module le moins cher disponible pour 433 MHz. Ces modules acceptent les données série sur un seul canal.
Si nous voyons les spécifications des modules, l'émetteur est conçu pour un fonctionnement de 3,5 à 12 V en tant que tension d'entrée et la distance de transmission est de 20 à 200 mètres. Il transmet en protocole AM (Audio Modulation) à une fréquence de 433 MHz. Nous pouvons transférer des données à une vitesse de 4 Ko / S avec une puissance de 10 mW.
Dans l'image supérieure, nous pouvons voir le brochage du module émetteur. De gauche à droite, les broches sont VCC, DATA et GND. Nous pouvons également ajouter l'antenne et la souder sur le point indiqué dans l'image ci-dessus.
Pour la spécification du récepteur, le récepteur a une valeur nominale de 5V cc et un courant de repos 4MA en entrée. La fréquence de réception est de 433,92 MHz avec une sensibilité de -105 dB.
Dans l'image ci-dessus, nous pouvons voir le brochage du module récepteur. Les quatre broches sont de gauche à droite, VCC, DATA, DATA et GND. Ces deux broches du milieu sont connectées en interne. Nous pouvons utiliser n'importe lequel ou les deux. Mais c'est une bonne pratique d'utiliser les deux pour réduire le couplage de bruit.
De plus, une chose n'est pas mentionnée dans la fiche technique, l' inductance variable ou POT au milieu du module est utilisée pour l' étalonnage de fréquence. Si nous ne pouvons pas recevoir les données transmises, il est possible que les fréquences d'émission et de réception ne correspondent pas. Il s'agit d'un circuit RF et nous devons régler l'émetteur au point de fréquence transmis parfait. En outre, comme l'émetteur, ce module dispose également d'un port d'antenne; nous pouvons souder le fil sous forme enroulée pour une réception plus longue.
La portée de transmission dépend de la tension fournie à l'émetteur et de la longueur des antennes des deux côtés. Pour ce projet spécifique, nous n'avons pas utilisé d'antenne externe et utilisé 5V côté émetteur. Nous avons vérifié à 5 mètres de distance et cela a parfaitement fonctionné.
En savoir plus sur la paire RF dans le circuit émetteur et récepteur RF. Vous pouvez en savoir plus sur le fonctionnement de RF en vérifiant les projets suivants qui utilisent la paire RF:
- Robot contrôlé par RF
- Circuit convertisseur IR vers RF
- LED télécommandées RF à l'aide de Raspberry Pi
- Appareils ménagers contrôlés par RF
Schéma
Schéma de circuit côté émetteur RF
- Broche D7 de l'atmega8 -> Pin13 HT12E
- Broche D6 de l'atmega8 -> Pin12 HT12E
- Broche D5 de l'atmega8 -> Pin11 HT12E
- Broche D4 de l'atmega8 -> Pin10 HT12E
- Bouton poussoir vers la broche B0 d'Atmega.
- Résistance 1M-ohm entre les broches 15 et 16 du HT12E.
- Broche 17 de HT12E à la broche de données du module émetteur RF.
- Broche 18 de HT12E à 5V.
- GND broche 1-9 et broche 14 de HT12E et broche 8 d'Atmega.
Schéma de circuit côté récepteur RF
- Broche D7 de l'atmega8 -> Pin13 HT12D
- Broche D6 de l'atmega8 -> Pin12 HT12D
- Broche D5 de l'atmega8 -> Pin11 HT12D
- Broche D4 de l'atmega8 -> Pin10 HT12d
- LED à la broche B0 d'Atmega.
- Broche 14 de HT12D à la broche de données du module récepteur RF.
- Résistance 47Kohm entre les broches 15 et 16 du HT12D.
- GND broche 1-9 de HT12D et broche 8 d'Atmega.
- LED à la broche 17 du HT12D.
- 5V à la broche 7 d'Atmega et à la broche 18 de HT12D.
Création du projet pour Atmega 8 à l'aide de CodeVision
Après avoir installé ces logiciels, suivez les étapes ci-dessous pour créer un projet et écrire du code:
Étape 1. Ouvrez CodeVision Cliquez sur Fichier -> Nouveau -> Projet . La boîte de dialogue de confirmation apparaîtra. Cliquez sur Oui
Étape 2. CodeWizard s'ouvre. Cliquez sur la première option, à savoir AT90 , et cliquez sur OK.
Étape 3. Choisissez votre puce de microcontrôleur, ici nous prendrons Atmega8 comme indiqué.
Étape 4: - Cliquez sur Ports. Dans la partie émetteur, le bouton poussoir est notre entrée et 4 lignes de données sont sorties. Nous devons donc initialiser 4 broches d'Atmega en sortie. Cliquez sur le port D. Faites en sorte que les bits 7, 6, 5 et 4 soient sortis en cliquant dessus.
Étape 5: - Cliquez sur Programme -> Générer, enregistrer et quitter . Maintenant, plus de la moitié de notre travail est terminé
Étape 6: - Créez un nouveau dossier sur le bureau pour que nos fichiers restent dans le dossier, sinon ils seront dispersés sur toute la fenêtre du bureau. Nommez votre dossier comme vous le souhaitez et je suggère d'utiliser le même nom pour enregistrer les fichiers du programme.
Nous aurons trois boîtes de dialogue l'une après l'autre pour enregistrer les fichiers. Faites de même avec les deux autres boîtes de dialogue qui apparaîtront après avoir enregistré la première.
Maintenant, votre espace de travail ressemble à ceci.
La majeure partie de notre travail est réalisée à l'aide de l'assistant. Maintenant, nous devons écrire seulement quelques lignes de code pour la partie émetteur et récepteur et c'est tout…
Suivez les mêmes étapes pour créer des fichiers pour la partie Receiver. Dans la partie récepteur, seule Led est notre sortie, alors faites sortir le bit du port B0.
CODE et explication
Nous écrirons du code pour basculer la LED sans fil à l'aide de RF. Le code complet pour l'Atmega côté émetteur et récepteur est donné à la fin de cet article.
Code Atmega8 pour émetteur RF:
Incluez d' abord le fichier d'en-tête delay.h pour utiliser le délai dans notre code.
#comprendre
Maintenant, venez aux dernières lignes de code où vous trouverez en boucle. Notre code principal sera dans cette boucle.
Dans la boucle While , nous enverrons 0x10 octet à PORTD lorsque le bouton est enfoncé et, nous enverrons 0x20 lorsque le bouton n'est pas enfoncé. Vous pouvez utiliser n'importe quelle valeur pour envoyer.
while (1) { if (PINB.0 == 1) { PORTD = 0x10; } si (PINB.0 == 0) { PORTD = 0x20; } } }
Code Atmega pour récepteur RF
Déclarez d'abord les variables au-dessus de la fonction principale void pour stocker le caractère entrant du module RF.
#comprendre
Maintenant, venir à la en boucle. Dans cette boucle, stockez les octets entrants dans un octet de variable char et vérifiez si l'octet entrant est le même que celui que nous écrivons dans notre partie émetteur. Si les octets sont identiques, mettez PortB.0 haut et ne prenez PAS de PORTB.0 pour faire basculer la LED.
while (1) { byte = PIND; si (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; delay_ms (1000); }}}
Construisez le projet
Notre code est terminé. Maintenant, nous devons construire notre projet . Cliquez sur l'icône Construire le projet comme indiqué.
Après la construction du projet, un fichier HEX est généré dans le dossier Debug-> Exe qui se trouve dans le dossier que vous avez créé précédemment pour enregistrer votre projet. Nous utiliserons ce fichier HEX pour télécharger dans Atmega8 à l'aide du logiciel Sinaprog.
Téléchargez le code sur Atmega8
Connectez vos circuits selon le schéma donné pour programmer Atmega8. Branchez un côté du câble FRC au programmeur USBASP et l'autre côté se connectera aux broches SPI du microcontrôleur comme décrit ci-dessous:
- Pin1 du connecteur femelle FRC -> Pin 17, MOSI d'Atmega8
- Broche 2 connectée à Vcc de l'atmega8, c'est-à-dire la broche 7
- Broche 5 connectée à la réinitialisation de l'atmega8, c'est-à-dire la broche 1
- Broche 7 connectée au SCK de l'atmega8, c'est-à-dire la broche 19
- Broche 9 connectée au MISO de l'atmega8, c'est-à-dire la broche 18
- Pin 8 connecté à GND de atmega8 ie Pin 8
Connectez les composants restants sur la carte d'expérimentation selon le schéma de circuit et ouvrez le Sinaprog.
Nous téléchargerons le fichier Hex généré ci-dessus à l'aide du Sinaprog, alors ouvrez-le et choisissez Atmega8 dans le menu déroulant Appareil. Sélectionnez le fichier HEX dans le dossier Debug-> Exe comme indiqué.
Maintenant, cliquez sur Programme.
Vous avez terminé et votre microcontrôleur est programmé. Suivez les mêmes étapes pour programmer un autre Atmega côté récepteur.
Le code complet et la vidéo de démonstration sont donnés ci-dessous.