Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Problème avec connexion PIC et module bluetooth
Bonjour,
J'essaye de faire communiquer en uart mon pic et un module bluetooth RN-41 comme cela a été fait dans ce tutoriel du site:
viewtopic.php?f=15&t=191
Voici mon code:
main:
mes fonctions uart:
uart.h
Pour l'instant j'essaye simplement de changer le nom du module mais je n'y parviens pas :(
Je pense que je m'y prend mal lors de la communication avec le module mais je ne sais pas ce qu'il me manque, Quelqu'un aurait une idée d'ou le problème peut venir ?
Merci d'avance pour votre aide :)
J'essaye de faire communiquer en uart mon pic et un module bluetooth RN-41 comme cela a été fait dans ce tutoriel du site:
viewtopic.php?f=15&t=191
Voici mon code:
main:
Code : Tout sélectionner
#pragma config FOSC = INTIO67, BOREN = OFF, WDTEN = OFF, LVP = OFF
#include <p18f45k20.h>
#include "uart.h"
void main(void) {
OSCCON = 0b01011100;// 4Mhz à 4MHz
init_uart_blue();
init_bluetooth();
while(1);
return;
}
mes fonctions uart:
Code : Tout sélectionner
#include "uart.h"
void init_uart_blue()
{
TRISC6 = 0;
TRISC7 = 1;
BRGH = 0; /* low/high baud rate */
// On a du 4Mhz
SPBRG = 5; /* set the baud rate 9600 for 4 mhz clock */
SYNC = 0; /* asynchronous */
SPEN = 1; /* enable serial port pins */
CREN = 1; /* enable reception */
TX9 = 0; /* 8- or 9-bit transmission */
RX9 = 0; /* 8- or 9-bit reception */
TXEN = 1; /* enable the transmitter */
}
void send_uart(char data)
{
while (!TXIF);
TXREG = data;
}
void UART_envoi_chaine(char *mot)
{
int i;
int c = 0;
while(i != '\0')
{
send_uart(mot[i]);
i++;
}
}
void init_bluetooth(void)
{
int i =0;
char mode_conf[3] = "$$$";
char nom[7] = "SN,TEST";
UART_envoi_chaine(mode_conf);
while(i<99)
{
i++;
}
UART_envoi_chaine(nom);
}
uart.h
Code : Tout sélectionner
#ifndef UART_HEADER_TEMPLATE_H
#define UART_HEADER_TEMPLATE_H
#include <xc.h>
void init_uart_blue();
void send_uart(char data);
void UART_envoi_chaine(char *mot);
void init_bluetooth(void);
#endif
Pour l'instant j'essaye simplement de changer le nom du module mais je n'y parviens pas :(
Je pense que je m'y prend mal lors de la communication avec le module mais je ne sais pas ce qu'il me manque, Quelqu'un aurait une idée d'ou le problème peut venir ?
Merci d'avance pour votre aide :)
Problème avec connexion PIC et module bluetooth
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour et bienvenue Obelix ,
Pour ce genre de programme une cordon de liaison RS232 USB/TTL est fortement recommandé pour voir le dialogue entre les deux devices.
Il me semble que ta déclaration du mot de configuration n'est pas bonne "$$$" . Tu créer un tableau de 3 caractères avec dedans $$$ , donc tu n'as pas de place pour stocker le terminateur de string "\0".
Il faudrait je pense déclarer ainsi . char mode_conf[4] = "$$$\0";
ensuite tu dois attendre une réponse de la part du module Bluetooth !
Pour ce genre de programme une cordon de liaison RS232 USB/TTL est fortement recommandé pour voir le dialogue entre les deux devices.
Il me semble que ta déclaration du mot de configuration n'est pas bonne "$$$" . Tu créer un tableau de 3 caractères avec dedans $$$ , donc tu n'as pas de place pour stocker le terminateur de string "\0".
Il faudrait je pense déclarer ainsi . char mode_conf[4] = "$$$\0";
ensuite tu dois attendre une réponse de la part du module Bluetooth !
Problème avec connexion PIC et module bluetooth
Jérémy a écrit :Bonjour et bienvenue Obelix !
Merci :)
Oui j'ai commandé un cordon uart USB mais je ne l'aurais pas avant Lundi et j'aurai bien aimé réussir à dialoguer ce week end.
J'ai réjouté comme tu me l'as conseillé une place dans le tableau pour le caractère "\0" mais je ne sais pas par contre ce qu'est sensé renvoyer le module bluetooth une fois la commande effectuée, je n'ai pas réussit non plus à le trouvé dans la documentation.
Pour l'instant j'ai seulement modifier ma fonction d'envoi de cette manière:
Code : Tout sélectionner
void init_bluetooth(void)
{
int i =0;
char mode_conf[4] = "$$$\0";
char nom[7] = "SN,TEST";
UART_envoi_chaine(mode_conf);
while(i<200)
{
i++;
}
UART_envoi_chaine(nom);
}
Mais le nom n'a toujours pas changé :(
Problème avec connexion PIC et module bluetooth
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
je n'ai pas réussit non plus à le trouvé dans la documentation.
Sans la documentation pas besoin d'aller plus loin . Tu n'arriveras a rien !
Il faut savoir ce que dois renvoyé le module , et ce qu'il faut lui envoyé !
Ton lien de PIC n’est pas bon , il renvoie sur une université à Montpellier mais il faut être inscrit . Il te faut la DS de ton PIC , et celle du module BT sans ça tu avances a l'aveugle et surtout dans le mur
![colere :mur:](./images/smilies/icon_mur.gif)
![Très content :-D](./images/smilies/icon_e_biggrin.gif)
Autre trucs fait clignoter une led pour voir si la configuration de ton OSC est bonne, et cela permet de visualiser l'avancé dans le programme ! surtout avec des commandes bloquantes
ta boucle de temporisation est plutôt bizarre , pourquoi ne pas faire un delay ?
Tu n'as pas de librairie UART ? car la aussi il faut s'assurer que l'UART est bien configurer ( avec le cordon ce sera plus rapide.
Problème avec connexion PIC et module bluetooth
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir Obleix
Obelix = Asterix20 ?
tu devrais prendre AssuranceToutRix
ça craint moins pour le PIC ou les interfaces..
Essaie un dialogue avec terminal ...
pour bien saisir le fonctionnement du RN41 ( en lisant sa datasheet et appliquant strictement les commandes prevues
... quand c'est bon, tu peux passer sur ton PIC avec un taux de resussite surement plus grand.
Obelix = Asterix20 ?
tu devrais prendre AssuranceToutRix
ça craint moins pour le PIC ou les interfaces..
Essaie un dialogue avec terminal ...
pour bien saisir le fonctionnement du RN41 ( en lisant sa datasheet et appliquant strictement les commandes prevues
... quand c'est bon, tu peux passer sur ton PIC avec un taux de resussite surement plus grand.
Problème avec connexion PIC et module bluetooth
Bonjour,
Oui c'est bien moi Asterix20
Désolé pour leliens mort, voici la datasheet du pic: http://ww1.microchip.com/downloads/en/D ... 01303H.pdf et celle du module bluetooth: http://ww1.microchip.com/downloads/en/D ... -v1.0r.pdf
Les LED sont allumés à la fin du programme donc je ne pense pas que le pic soit bloqué.
Par contre j'ai suivi vos conseils et j'ai téléchargé une application Serial Monitor pour dialogué avec le module, au début la LED du module est allumée, puis lorsque j'envoi la commande $$$ alors elle clignote beaucoup plus vite et je reçois le message CMD, cependant, une fois cela fait, lorsque j'essaye de rentré des commandes comme SN ou R,1 alors rien ne se passe et aucune réponse du module :(
EDIT:Je viens aussi de me rendre compte que lorsque j'envoi $$$ avec mon PIC, les led du module bluetooth ne clignotent pas plus vite comme c'était le cas avec le logiciel, je ne sais pas si c'est lié mais le programme met énormément de temps pour envoyer les trois caractères (plusieurs minutes)
Oui c'est bien moi Asterix20
![Très content :-D](./images/smilies/icon_e_biggrin.gif)
Désolé pour leliens mort, voici la datasheet du pic: http://ww1.microchip.com/downloads/en/D ... 01303H.pdf et celle du module bluetooth: http://ww1.microchip.com/downloads/en/D ... -v1.0r.pdf
Les LED sont allumés à la fin du programme donc je ne pense pas que le pic soit bloqué.
Par contre j'ai suivi vos conseils et j'ai téléchargé une application Serial Monitor pour dialogué avec le module, au début la LED du module est allumée, puis lorsque j'envoi la commande $$$ alors elle clignote beaucoup plus vite et je reçois le message CMD, cependant, une fois cela fait, lorsque j'essaye de rentré des commandes comme SN ou R,1 alors rien ne se passe et aucune réponse du module :(
EDIT:Je viens aussi de me rendre compte que lorsque j'envoi $$$ avec mon PIC, les led du module bluetooth ne clignotent pas plus vite comme c'était le cas avec le logiciel, je ne sais pas si c'est lié mais le programme met énormément de temps pour envoyer les trois caractères (plusieurs minutes)
Problème avec connexion PIC et module bluetooth
Bonjour,
J'aurais encore une question: étant donné que je n'étais pas sur de mon uart, j'ai téléchargé des bibliothèques déjà prêtes sur internet, mais lorsque j'envoi la commande $$$\r\n alors je ne reçois pas CMD en réponse. A part la masse et le Vdd je n'ai connecté rien d'autre que le Rx et le Tx sur le module bluetooth, ne manquerait il pas quelque chose à brancher?
J'aurais encore une question: étant donné que je n'étais pas sur de mon uart, j'ai téléchargé des bibliothèques déjà prêtes sur internet, mais lorsque j'envoi la commande $$$\r\n alors je ne reçois pas CMD en réponse. A part la masse et le Vdd je n'ai connecté rien d'autre que le Rx et le Tx sur le module bluetooth, ne manquerait il pas quelque chose à brancher?
Problème avec connexion PIC et module bluetooth
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir
voici ma config RN41 en aveugle ..
c'est à dire , sans test de retour ...mais avec une bonne tempo entre commande et retour !
à noter l'envoi de la commande e, 3 x '$' et non "$$$"..
et la partie connection (avec test retour!)
J'utilise UART2 pour VOIR le dialogue entre PIC et RN41
ça aide BEAUCOUP !
en face du RN41 , j'ai un phone Android..
voici ma config RN41 en aveugle ..
c'est à dire , sans test de retour ...mais avec une bonne tempo entre commande et retour !
à noter l'envoi de la commande e, 3 x '$' et non "$$$"..
et la partie connection (avec test retour!)
J'utilise UART2 pour VOIR le dialogue entre PIC et RN41
ça aide BEAUCOUP !
en face du RN41 , j'ai un phone Android..
Code : Tout sélectionner
void BT_Configure_en_aveugle()
{
UART2_Write_Text("Configure RN41-EEEC"); // Name of device , last 4 digit adress added to the name
UART2_Write(13); // CR
UART1_Write('$'); UART1_Write('$');UART1_Write('$'); // Enter command mode
Delay_ms(1000);
UART1_Write_Text("S-,RN41"); // Name of device , last 4 digit adress added to the name
UART1_Write(13); // CR
Delay_ms(1000); ;
UART1_Write_Text("SO,18F_"); // Extended status string
UART1_Write(13); // CR
Delay_ms(1000);
//the device will initiate a connection to the pre-stored remote address immediately upon
//power up ,If disconnect occurs,the device will attempt to re-connect until successful.
UART1_Write_Text("SM,0"); // was 0 Set mode (0 = slave, 1 = master, 2 = trigger, 3 = auto, 4 = DTR, 5 = ANY)
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("SA,0"); // Authentication (1 to enable, 0 to disable)
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("SU,19.2"); // UART speed 19200 bauds
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("ST,255"); // ST,255 sets remote configuration to Allways
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("SP,1234"); // Security pin code (mikroe)
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("SR,D8952F3FF710"); // Store remote Archos43 address, 12 hex digits, (6 bytes)
UART1_Write(13); // CR
Delay_ms(1000);
UART1_Write_Text("R,1"); // Reset RN41 pour prendre en compte les modifs
UART1_Write(13); // CR
Delay_ms(1000);
}
void Connect_RN41()
{
// accede au mode commande
UART2_Write_Text("CONNECT TO aRCHOS D8952F3FF710"); // connect to Archos
UART2_Write(13); // CR
UART1_Write('$');
UART1_Write('$');
UART1_Write('$'); // Enter command mode
Delay_ms(1000); BT_Get_Response() ;
UART1_Write_Text("C,D8952F3FF710"); // connect to Archos
UART1_Write(13);
Delay_ms(1000); BT_Get_Response() ;
// wait for 18F_NEW_PAIRING
UART1_Write_Text("---"); // Security pin code (mikroe)
UART1_Write(13); // CR
Delay_ms(1000); BT_Get_Response() ;
}
void BT_Get_Response()
{
if (DataReady1==1)
{
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle);
UART2_Write(TAB);
UART2_Write_Text(buffer);
UART2_Write(CR);
buffer[0]=0;
DataReady1 = 0;
}
}
.. main program
PMD0.UART2MD=0; // USART2 enable
UART2_init(19200); // Initialize UART2 module
RCSTA2.CREN = 1;
IPR3.RC2IP=1; // high priority level
IPR3.RC2IP=1; // high priority level
PIE3.RC2IE = 0; //disable UART2 RX interrupt
DataReady2 = 0;
txt=TEXTE;
UART2_Write(CLS);
UART2_Write_Text ( "Bluetooth Click RN41-EEEC Configuration 26/04/2014 \r\n");
UART2_Write_Text("Init UART2 OK"); // Send message on connection
UART2_Write(13); // CR
DataReady1 = 0;
RC1IE_bit = 1; // Enable UART RX interrupt
PEIE_bit = 1; // Enable Peripheral interrupt
GIE_bit = 1;
BT_Configure_en_aveugle();
Connect_RN41();
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle);
UART2_Write_Text("Bluetooth Click Connected!"); // Send message on connection
UART2_Write(13); // CR
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités