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 ---
Commentez, partagez et proposez des Tutos en langage C !
Activer une led par bluetooth [HC-05]
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 544
Âge : 33
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#1 Message par venom » dim. 4 nov. 2018 00:49

Bonjour,

Voici un tutoriel qui vient de mon apprentissage personnel. Pour certain ce tutoriel peut paraitre simple, pour moi c’était une nouveauté dans la quel j'ai rencontrer des obstacles. Et j'avoue avoir pris du plaisir quand la led c'est allumée :-D

Je vous présente donc mon travail pour vous évitez les obstacles. :wink:

Il s'agit d'allumé ou éteindre une led par Bluetooth. 8-) Oui rien que ça :sifflotte: Grace a un module Bluetooth appeler HC-06 dans ce tuto.

Voici la liste des composants utilisé :
PIC 16f887
Module Bluetooth HC-06
une led rouge et sa résistance
un smartphone ou tablette
et c'est tout :-)


Dans ce tutoriel nous allons travailler principalement avec la fonction :
UART


Car l'avantage du HC-06 c'est qu'il communique avec le pic en UART. Donc si vous avez déjà utilisé cette fonction, ça simplifiera les choses.



Voici dans un premier temps le montage sur breadbord :
schema montage.png

On ne peut plus simple. :wink:

Voici maintenant le code :

Code : Tout sélectionner

////////////////////////////////////////
// name : active led par bluetooth    //
// create : venom                     //
// pic : 16f887 8MHz                  //
// module BT : HC-05                  //
// CONFIG1 : $2007 : 0x20D5           //
// CONFIG2 : $2008 : 0x0700           //
////////////////////////////////////////


// declarations
unsigned char *txt;                              // créer un pointeur txt
char uart_reception;                             // nom pour la récéption UART
sbit led at RA0_bit;                             // renomme la patte RA0 du microcontorleur par : "led"



// procedure pour enregistrer le texte en ram. Paulfjujo
void UART1_Write_CText(const char *txt){
   while (*txt)
     {
     UART1_Write(*txt++);
     }
}

// procedure pour faire une fin de ligne et un saut de ligne. Paulfjujo
void CRLF1(void){
UART1_Write(13);
UART1_Write(10);
}




///////////////////////////////////////////////////////////////////////////////////////////////////
// MAIN ///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
void main() {
////// reglage de l'oscillateur interne
    OSCCON = 0b01110000;                         // configuration OSC interne 8mhz
                                                 // 0b01110000 oscillateur 8 Mhz
                                                 // 0b01101000 oscillateur 4 Mhz
                                                 // 0b01011000 oscillateur 2 Mhz
                                                 // 0b01001000 oscillateur 1 Mhz
                                                 // 0b00111000 oscillateur 500 Khz
                                                 // 0b00101000 oscillateur 250 Khz
                                                 // 0b00011000 oscillateur 125 Khz
                                                 // 0b00001000 oscillateur 31 kHz

    while(OSCCON.HTS==0);                        // boucle en attendant de voir le flag à 1


/////// configurations des entrees, sorties etc...
    ANSEL  = 0;                                  // Configure AN pins as digital I/O
    ANSELH = 0;
    C1ON_bit = 0;                                // Disable comparators
    C2ON_bit = 0;                                // Disable comparators

    TRISA = 0x0000000;                           // configure PORTA en sortie
    PORTA = 0x0000000;                           // port A en sortie. Entrée = 1, sortie = 0

    Delay_ms(100);                               // attend 100 milisecondes


// initialisation de la connexion UART
    UART1_Init(9600);                            // initialise l'UART a 9600 bauds
    Delay_ms(100);                               // Attendre 100 milisecondes que l'UART se stabilise





///////////////////////////////////////////////////////////////////////////////////////////////////
// boucle infini //////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
    while (1) {
    
     if 
(UART1_Data_Ready() == 1)                // verifie si des données sont reçues en UART
     {
      uart_reception = UART1_Read();             // lit la donnée reçue et l'attribu a "uart_reception"

       if (uart_reception == 0x31)               // si uart_reception égale 1 soit 0x31 en hexadecimal
       {
        led = 1;                                 //on allume la led
       }

       if (uart_reception == 0x30)               // si uart_reception égale 0 soit 0x30 en hexadecimal
       {
        led = 0;                                 //on eteint la led
       }
     }
     Delay_ms(100);                              // attend 100 milisecondes
    }                                            // recommence en haut de la boucle

}


Je l'ai commenté au mieux ligne par ligne pour bien comprendre. j’espère

Je vais quand même vous résumez le code :

Dans la boucle infini, j’attends simplement qu'une information arrive sur l'UART du pic via le HC-06.
Si cette information arrive, je regarde de quel information il s'agit.
Si c'est un 1 ou un 0
Si c'est un 1 on allume la led
Si c'est un 0 on éteint la led

Ces paramètre de 1 et 0 sont configurer dans une application Android qui se nome : Bluetooth Electronics

Je ne vais pas expliqué le fonctionnement de cette application, c'est pas le but du tuto. Éventuellement si il y a de la demande je ferais un tutoriel sur l'application. Bien qu'elle est facile d'utilisation.

Sur mon smartphone j'affiche simplement un bouton ON/OFF qui envoie en UART 1 ou 0 selon la position du bouton.



Et pour clôturer ce tutoriel, voici une vidéo de mon montage. 8-)
https://youtu.be/vTbhLDmB5L0

Désolé pour la qualité de la vidéo et de la présentation (c'est ma première vidéo ou je parle) :oops: :-D

Voilà ma petite contribution pour le forum FantasPic. :wink:
A bientôt pour une nouvelle contribution.






@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par venom le dim. 17 mars 2019 22:25, modifié 1 fois.
En fait tout est une question de BIT ? :-D

Activer une led par bluetooth [HC-06]
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 732
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#2 Message par F6FCO » ven. 15 févr. 2019 21:05

Excellent çà !!
Je viens rarement du coté du C et j'avais zappé ce sujet, tu vas m'obliger à changer mon vieux portable 2G pour un smartphone.
Une porte nand prend 2 bits en entrée... la cochonne !!! 8-)

Activer une led par bluetooth [HC-06]
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 544
Âge : 33
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#3 Message par venom » ven. 15 févr. 2019 22:59

F6FCO a écrit :Excellent çà !!
Je viens rarement du coté du C et j'avais zappé ce sujet, tu vas m'obliger à changer mon vieux portable 2G pour un smartphone.


Oops!!! :sifflotte: Pas forcement, tu peux aussi communiquer avec une clef Bluetooth ou une tablette :-D Mais j'avoue que mon tuto n’était pas dans le but de te faire changer de téléphone :wink:






@++
En fait tout est une question de BIT ? :-D

Activer une led par bluetooth [HC-06]
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1050
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » sam. 16 févr. 2019 11:52

Bonjour à tous,

J'ai aussi vu ce sujet, j'ai téléchargé l'appli, maintenant, faut que tu m'expliques comment tu as fait le bouton sur le téléphone.

Merci d'avance.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Activer une led par bluetooth [HC-06]
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1271
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » sam. 16 févr. 2019 19:18

bonsoir à tous,

dans le meme directoy que l'appli bluelectronics
ou dans un endroit connu/ facilement reperable sur le phone ou tablette
plcaer le fichier Keuwl_Panel_On_Off.kwl

lancer Blueelectonics application
choisir un panel quelconque ou vide
importer le fichier Keuwl_Panel_On_Off.kwl
et voila...

keuwlsoft.zip

BlueElectronics_Import_Panel.png

BlueElectronics_ImportPanel_On_Off_Led.png

BlueElec_Apres_Import_Panel.png



le plus facile etant de le creer en mettant un bouton dans un panel vide ...
c'est meme déroutant de voir comme c'est facile .. par rapport à ecrire la meme fonctionalité (meme programme) en java !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aides toi, le ciel ou Fantastpic t'aideras

Activer une led par bluetooth [HC-06]
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 544
Âge : 33
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#6 Message par venom » dim. 17 févr. 2019 14:18

Bonjour à tous,

Il est vrai que c'est déroutant tellement c'est facile avec l'application. :wink: C'est sur que coder l'interface pour Android + le code pour le pic ca ferai un sacré travail :shock:

Si tu veux Gérard, a l'occasion je te ferais un tuto même si en jouant avec l'application 15min tu va vite comprendre le truc :wink: Mais là je pars pour 4 jours.

La chose aussi a savoir c'est qu'une fois ton interface créer, tu dois connecter l'application a ton module HC pour pouvoir utiliser ton interface. Car tant que tu n'ai pas relier a un module, tu peux juste faire de la création d'interface.






@++
En fait tout est une question de BIT ? :-D

Activer une led par bluetooth [HC-06]
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1050
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#7 Message par Gérard » dim. 17 févr. 2019 17:36

Bonjour à tous,

Paul : la fenêtre "Import panel" est vide. Comment faire pour avoir tout ce menu déroulant?
Venom : j'ai crée une appli avec 1 BP off/on, c'est déjà un début. Maintenant faut que je le connecte au HC06
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Activer une led par bluetooth [HC-06]
pspic
Amateur
Amateur
Messages : 131
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#8 Message par pspic » dim. 17 févr. 2019 18:58

Bonjour à tous,
Merci à Venon de nous avoir mis l'eau à la bouche, j'ai commandé un HC6 pour m'amuser !
Pour Gérard , ouvre l'appli, sélectionne un panel vide, Edit pour ouvrir la liste et faire glisser un composant sur le panel.
Bluetooth_Electronics_User_Guide_Edit.pdf
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Activer une led par bluetooth [HC-06]
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 544
Âge : 33
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#9 Message par venom » dim. 17 févr. 2019 19:49

@pspic
Pas de quoi :razz:

Oui, tout se fait en glisser déposer. Et pour éditer un bouton par exemple, tu sélectionne ton bouton et tu appuie sur le bouton "édit" en bas a droite pour par exemple dire a l'application quoi envoyé quand le bouton est sur ON ou OFF






@++
En fait tout est une question de BIT ? :-D

Activer une led par bluetooth [HC-06]
pspic
Amateur
Amateur
Messages : 131
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#10 Message par pspic » lun. 18 févr. 2019 19:59

Bonjour à tous,
Voici une version en MikroBasic:
Test HC06 avec PIC 18F2420 sur Easy Pic en MikroBasic.
Branchement:
HC6 VCC sur VCC Easy Pic
HC6 GND sur GND Easy Pic
HC6 RX sur RC6 Easy Pic
HC6 TX sur RC7 Easy Pic

Code : Tout sélectionner

program MyProject
'Test HC06 + Bluetoth Elecronics
'Le Smartphone envoi "M" = Led RA0 = 1
'Le Smartphone envoi "A" = Led RA0 = 0
dim rec as char  'Char reçu par l'UART
main:
UART1_Init(9600) '9600 bauds
Delay_ms(100)
TRISA = 0        'Port A en sortie
PORTA = 0
while true       'Boucle sans fin
   if (UART1_Data_Ready() = 1)  then
   rec = UART1_Read() 'Char reçu du
   if rec = "M" then setbit(PORTA,0) end if   'Led RA0 = 1
   if rec = "A" then clearbit(PORTA,0) end if 'Led RA0 = 0
   end if
delay_ms(100)
wend

ScrShoot1.JPG
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités