- Module émetteur et récepteur RF 433 MHz:
- Besoin d'encodeur et de décodeurs:
- Composants requis:
- Schéma:
- Explication du code:
Bonjour à tous, Aujourd'hui dans ce projet, nous allons interfacer le module récepteur et émetteur RF avec le microcontrôleur PIC et communiquer sans fil entre deux microcontrôleurs pic différents.
Dans ce projet, nous ferons les choses suivantes: -
- Nous utiliserons PIC16F877A pour l'émetteur et PIC18F4520 pour la section Récepteur.
- Nous allons interfacer le clavier et l'écran LCD avec le microcontrôleur PIC.
- Du côté de l'émetteur, nous allons interfacer le clavier avec PIC et transmettre les données. Du côté du récepteur, nous recevrons les données sans fil et montrerons quelle touche est enfoncée sur l'écran LCD.
- Nous utiliserons un encodeur et un décodeur IC pour transmettre des données 4 bits.
- La fréquence de réception sera de 433 Mhz en utilisant le module RF TX-RX bon marché disponible sur le marché.
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. Consultez également ci-dessous deux articles pour apprendre à interfacer l'écran LCD et le clavier avec le microcontrôleur PIC:
- Interfaçage LCD avec microcontrôleur PIC utilisant MPLABX et XC8
- Interfaçage du clavier matriciel 4x4 avec le microcontrôleur PIC
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é.
Les modules RF sont très utiles pour les communications sans fil longue portée. Un circuit émetteur et récepteur RF de base est illustré ici. Nous avons réalisé de nombreux projets en utilisant le module RF:
- Appareils ménagers contrôlés par RF
- Voiture jouet contrôlée par Bluetooth utilisant Arduino
- LED télécommandées RF à l'aide de Raspberry Pi
Besoin d'encodeur et de décodeurs:
Ce capteur RF présente quelques inconvénients: -
- Communication à sens unique.
- Un seul canal
- Interférence très sonore.
En raison de cet inconvénient, nous avons utilisé des circuits intégrés d' encodeur et de décodeur, HT12D et HT12E. D signifie décodeur qui sera utilisé côté récepteur et E signifie codeur qui sera utilisé côté émetteur. Ces circuits intégrés fournissent 4 canaux. En raison également du codage et du décodage, le niveau de bruit est très faible.
Dans l'image ci-dessus, celui de gauche est HT12D le décodeur et celui de droite est HT12E, celui du codeur. Les deux circuits intégrés sont identiques. A0 à A7 est utilisé pour un codage spécial. Nous pouvons utiliser des broches de microcontrôleur pour contrôler ces broches et définir les configurations. Les mêmes configurations doivent être adaptées de l'autre côté. Si les deux configurations sont exactes et concordantes, nous pouvons recevoir des données. Ces 8 broches peuvent être connectées à Gnd ou VCC ou laissées ouvertes. Quelles que soient les configurations que nous faisons dans le codeur, nous devons faire correspondre la connexion sur le décodeur. Dans ce projet, nous laisserons ces 8 broches ouvertes pour l'encodeur et le décodeur. Les broches 9 et 18 sont respectivement VSS et VDD. Nous pouvons utiliser la broche VT dansHT12D à des fins de notification. Pour ce projet, nous ne l'avons pas utilisé. La broche TE sert à activer ou désactiver la transmission.
La partie importante est la broche OSC où nous devons connecter des résistances est de fournir une oscillation au codeur et au décodeur. Le décodeur nécessite une oscillation plus élevée que le décodeur. En règle générale, la valeur de la résistance du codeur sera 1Meg et la valeur du décodeur est 33k. Nous utiliserons ces résistances pour notre projet.
La broche DOUT est la broche de données de l'émetteur RF sur HT12E et la broche DIN dans le HT12D est utilisée pour connecter la broche de données du module RF.
Dans HT12E, AD8 à AD11 est une entrée à quatre canaux qui est convertie et transmise en série via le module RF et la chose inverse exacte se produit dans HT12D, les données série reçues et décodées, et nous obtenons une sortie parallèle de 4 bits sur les 4 broches D8 à D11.
Composants requis:
- 2 - Planche à pain
- 1 - Écran LCD 16x2
- 1 - Clavier
- Paire HT12D et HT12E
- Module RF RX-TX
- 1- 10K préréglé
- 2 - Résistance 4,7k
- 1- Résistance 1M
- 1- résistance 33k
- 2 condensateurs céramiques 33pF
- 1 - cristal 20Mhz
- Bergsticks
- Peu de fils monobrins.
- MCU PIC16F877A
- MCU PIC18F4520
- Un tournevis pour contrôler le potentiomètre de fréquence, doit être isolé du corps humain.
Schéma:
Schéma de circuit côté émetteur (PIC16F877A):
Nous avons utilisé PIC16F877A à des fins de transmission. Le clavier Hex connecté aux bornes de la PORTB et les 4 canaux connectés à travers les 4 derniers bits du PORTD. En savoir plus sur la connexion du clavier Matrix 4x4 ici.
Broche comme suit-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
Schéma de circuit côté récepteur (PIC18F4520):
Dans l'image ci-dessus, le circuit du récepteur est montré. L' écran LCD est connecté via PORTB. Nous avons utilisé l'oscillateur interne de PIC18F4520 pour ce projet. Les 4 canaux sont connectés de la même manière que nous l'avons fait auparavant dans le circuit de l'émetteur. En savoir plus sur la connexion d'un écran LCD 16x2 avec un microcontrôleur PIC ici.
C'est le côté émetteur -
Et côté récepteur dans une maquette séparée -
Explication du code:
Il y a deux parties du code, l'une pour l'émetteur et l'autre pour le récepteur. Vous pouvez télécharger le code complet ici.
Code PIC16F877A pour émetteur RF:
Comme toujours, nous devons d'abord définir les bits de configuration dans le microcontrôleur pic, définir certaines macros, y compris les bibliothèques et la fréquence du cristal. Le port AD8-AD11 du codeur ic est défini comme RF_TX à PORTD. Vous pouvez vérifier le code pour tous ceux dans le code complet donné à la fin.
Nous avons utilisé deux fonctions, void system_init (void) et void encode_rf_sender (char data).
Le system_init est utilisé pour l'initialisation des broches et les initialisations du clavier. L'initialisation du clavier est appelée à partir de la bibliothèque de clavier.
Le port du clavier est également défini dans le keypad.h. Nous avons fait le PORTD comme sortie en utilisant TRISD = 0x00, et avons fait le port RF_TX comme 0x00 comme état par défaut.
void system_init (void) { TRISD = 0x00; RF_TX = 0x00; clavier_initialisation (); }
Dans l' encode_rf_sender, nous avons changé l'état des 4 broches en fonction du bouton enfoncé. Nous avons créé 16 différentes valeurs hexagonales ou PORTD états en fonction ( 4x4) 16 autre bouton enfoncé.void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (données == '2') RF_TX = 0x20; si (données == '3') …………... …. ….
Dans la fonction principale , nous recevons d'abord les données sur les touches du clavier à l'aide de la fonction switch_press_scan () et stockons les données dans la variable clé. Après cela, nous avons encodé les données en utilisant la fonction encode_rf_sender () et en changeant l' état de PORTD.
Code PIC18F4520 pour récepteur RF:
Comme toujours, nous définissons d'abord les bits de configuration dans PIC18f4520. C'est un peu différent de PIC16F877A, vous pouvez vérifier le code dans le fichier zip joint.
Nous avons inclus le fichier d'en-tête LCD. Définition de la connexion du port D8-D11 du Decoder IC sur PORTD en utilisant la ligne #define RF_RX PORTD, la connexion est la même que celle utilisée dans la section Encoder. La déclaration du port LCD se fait également dans le fichier lcd.c.
#comprendre
Comme indiqué précédemment, nous utilisons un oscillateur interne pour le 18F4520, nous avons utilisé la fonction system _ init où nous avons configuré le registre OSCON du 18F4520 pour régler l' oscillateur interne sur 8 MHz. Nous définissons également le bit TRIS pour les broches LCD et les broches du décodeur. Comme HT - 12D fournit une sortie aux ports D8-D11, nous devons configurer le PORTD comme entrée pour recevoir la sortie.
void system_init (void) { OSCCON = 0b01111110; // 8Mhz`` intosc // OSCTUNE = 0b01001111; // Activation PLL, Prescaler Max 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // 4 derniers bits comme bit d'entrée. }
Nous avons configuré le registre OSCON à 8 MHz, également fait du port B comme sortie et du port D comme entrée.
La fonction ci-dessous est effectuée en utilisant la logique inverse exacte utilisée dans la section précédente de l'émetteur. Ici, nous obtenons la même valeur hexadécimale du port D et par cette valeur hexadécimale, nous identifions quel commutateur a été enfoncé dans la section émetteur. Nous pouvons identifier chaque pression de touche et soumettre le caractère correspondant à l'écran LCD.
void rf_analysis (unsigned char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Le lcd_data est appelé à partir du fichier lcd.c.
Dans la fonction principale , nous initialisons d'abord le système et l'écran LCD. Nous avons pris une variable octet, et stocké la valeur hexadécimale reçu du port D. Ensuite, par la fonction rf_analysis, nous pouvons imprimer le caractère sur l'écran LCD.
void main (void) { octet de caractère non signé = 0; system_init (); lcd_init (); while (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); byte = RF_RX; rf_analysis (octet); lcd_com (0xC0); } retour; }
Avant de l'exécuter, nous avons réglé le circuit. Nous avons d'abord appuyé sur le bouton « D » du clavier. Ainsi, le 0xF0 est transmis en continu par l'émetteur RF. Nous avons ensuite réglé le circuit du récepteur jusqu'à ce que l'écran LCD affiche le caractère « D ». Parfois, le module est correctement réglé par le fabricant, parfois non. Si tout est correctement connecté et que la valeur du bouton n'est pas activée sur l'écran LCD, il est possible que le récepteur RF ne soit pas réglé. Nous avons utilisé le tournevis isolé pour réduire les mauvaises possibilités de réglage en raison de l'inductance de notre corps.
C'est ainsi que vous pouvez interfacer le module RF avec le microcontrôleur PIC et communiquer sans fil entre deux microcontrôleurs PIC à l'aide du capteur RF.
Vous pouvez télécharger le code complet pour l'émetteur et le récepteur à partir d'ici, consultez également la vidéo de démonstration ci-dessous.