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
Je vous présente donc mon travail pour vous évitez les obstacles.
Il s'agit d'allumé ou éteindre une led par Bluetooth. Oui rien que ça Grace a un module Bluetooth appeler HC-06
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 :
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 :
On ne peut plus simple.
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.
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)
Voilà ma petite contribution pour le forum FantasPic.
A bientôt pour une nouvelle contribution.
@++