I.PRÉSENTATION
Est ce que vous savez qu'une bonne formation en genie electrique vous permet de develloper des logiciels et administrer les bases de donnees ? Et tout ceci contribue a faire evoluer la domotique;Imaginez vous entrain de demarrer un moteur elctrique, de lancer un tapis roulant,ou de faire un arret d'urgence juste avec clic derriere un pc via un logiciel. Ce n est plus une fiction et c est ce que nous allons tous faire ensemble dans les lignes suivantes.
Dans ce projet, nous allons realiser un systeme de commande des appareils electriques par pc ( a travers un ordinateur ayant un systeme d exploitation windows ) . Pour cela , il nous faudra:
Ce systeme pourra etre utilise pour:
II. MATERIEL UTILISE ET COUT

Cliquez sur les images pour avoir les prix a moindre cout dans notre boutique en ligne
III. LOGICIELS ET BIBLIOTHÈQUES UTILISÉES
1 . Logiciels
IV. FONCTIONNEMENT
1. Principe
Le principe est le suivant :
la carte arduino ( microcontrolleur ) est utilisée pour piloter le systeme ,il recoit les commandes du pc et les executent .Lorsque l on clique sur un boutton dans le logiciel,celui envoi un caractere via le port usb / serie
Par exemple si le logiciel envoi :

2. schémas
Les connexions de circuit de ce projet sont simples et illustrées dans l'image ci-dessous.
| carte arduino uno | Autres |
| 0 | // occupee par le cable usb RX |
| 1 | // occupee par le cable usb TX |
| 10 | led_vert |
| 9 | led_rouge |
| 8 | led_jaune |
| 7 | lampe test //relais 5v pour la lampe 220V |
3.Code source du logiciel
Ce logiciel est fonctionnel sur pc windows uniquement (fichier .exe compile pou windows 32 et 64 bits)
Pour utiliser le port serie du pc il faut telecharger le composant TComport ou NrComm
Le code source du logiciel ecrit en C++ via l'IDE C++ Builder est le suivant:

//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CPort"
#pragma link "CPortCtl"
#pragma link "Unit2.obj"
#pragma resource "*.dfm"
TForm1 *Form1;
int val1,val2,val3,val4,val5,val6,val7,val8=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ComPort1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ComPort1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
ComPort1->WriteStr('1');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
ComPort1->WriteStr('0');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
//ComPort1->Connected=CheckBox1->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
ComPort1->WriteStr('0');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
ComPort1->WriteStr('2');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
ComPort1->WriteStr('4');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
ComPort1->WriteStr('6');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
ComPort1->WriteStr('8');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn6Click(TObject *Sender)
{
ComPort1->WriteStr('a');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn7Click(TObject *Sender)
{
ComPort1->WriteStr('c');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{
ComPort1->WriteStr('e');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image9Click(TObject *Sender)
{
val1=val1+1;
if(ComPort1->Connected)
{
if(val1%2==1)
{ComPort1->WriteStr('0');
Image9->Picture->LoadFromFile("assets/on_switch.bmp" );
Image1->Picture->LoadFromFile("assets/lampe_ico_on.jpg" );}
else{ComPort1->WriteStr('1');
Image9->Picture->LoadFromFile("assets/off_switch.bmp" );
Image1->Picture->LoadFromFile("assets/lampe_ico.jpg" );}
}
//else {Image9->Enabled=false;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image10Click(TObject *Sender)
{
val2=val2+1;
if(ComPort1->Connected)
{
if(val2%2==1)
{ComPort1->WriteStr('2');
Image10->Picture->LoadFromFile("assets/on_switch.bmp" );
Image2->Picture->LoadFromFile("assets/lampe_ico_on.jpg" );}
else{ComPort1->WriteStr('3');
Image10->Picture->LoadFromFile("assets/off_switch.bmp" );
Image2->Picture->LoadFromFile("assets/lampe_ico.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image11Click(TObject *Sender)
{
//ComPort1->WriteStr('a');
val3=val3+1;
if(ComPort1->Connected)
{
if(val3%2==1)
{ComPort1->WriteStr('4');
Image11->Picture->Bitmap->LoadFromFile("assets/on_switch.bmp" );
Image3->Picture->LoadFromFile("assets/prises_on1.jpg" );}
else{ComPort1->WriteStr('5');
Image11->Picture->Bitmap->LoadFromFile("assets/off_switch.bmp" );
Image3->Picture->LoadFromFile("assets/prises_off1.jpg" );}
}
//else {Image11->Enabled=false;Image11->DragCursor=crNo;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image13Click(TObject *Sender)
{
//ComPort1->WriteStr('4');
val5=val5+1;
if(ComPort1->Connected)
{
if(val5%2==1)
{ComPort1->WriteStr('8');
Image13->Picture->LoadFromFile("assets/on_switch.bmp" );
Image5->Picture->LoadFromFile("assets/lampe_ico_on.jpg" );}
else{ComPort1->WriteStr('9');
Image13->Picture->LoadFromFile("assets/off_switch.bmp" );
Image5->Picture->LoadFromFile("assets/lampe_ico.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image14Click(TObject *Sender)
{
//ComPort1->WriteStr('6');
val6=val6+1;
if(ComPort1->Connected)
{
if(val6%2==1)
{ComPort1->WriteStr('a');
Image14->Picture->LoadFromFile("assets/on_switch.bmp" );
Image6->Picture->LoadFromFile("assets/lampe_ico_on.jpg" );}
else{ComPort1->WriteStr('b');
Image14->Picture->LoadFromFile("assets/off_switch.bmp" );
Image6->Picture->LoadFromFile("assets/lampe_ico.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image12Click(TObject *Sender)
{
//ComPort1->WriteStr('b');
val4=val4+1;
if(ComPort1->Connected)
{
if(val4%2==1)
{ComPort1->WriteStr('6');
Image12->Picture->LoadFromFile("assets/on_switch.bmp" );
Image4->Picture->LoadFromFile("assets/prises_on1.jpg" );}
else{ComPort1->WriteStr('7');
Image12->Picture->LoadFromFile("assets/off_switch.bmp" );
Image4->Picture->LoadFromFile("assets/prises_off1.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image15Click(TObject *Sender)
{
//ComPort1->WriteStr('c');
val7=val7+1;
if(ComPort1->Connected)
{
if(val7%2==1)
{ComPort1->WriteStr('c');
Image15->Picture->LoadFromFile("assets/on_switch.bmp" );
Image7->Picture->LoadFromFile("assets/prises_on1.jpg" );}
else{ComPort1->WriteStr('d');
Image15->Picture->LoadFromFile("assets/off_switch.bmp" );
Image7->Picture->LoadFromFile("assets/prises_off1.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image16Click(TObject *Sender)
{
//ComPort1->WriteStr('d');
val8=val8+1;
if(ComPort1->Connected)
{
if(val8%2==1)
{ComPort1->WriteStr('e');
Image16->Picture->LoadFromFile("assets/on_switch.bmp" );
Image8->Picture->LoadFromFile("assets/prises_on1.jpg" );}
else{ComPort1->WriteStr('f');
Image16->Picture->LoadFromFile("assets/off_switch.bmp" );
Image8->Picture->LoadFromFile("assets/prises_off1.jpg" );}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled=true;
Timer1->Tag++;
//Label3->Caption="label3"+Timer1->Tag;
//Label3->Caption=Timer1->Tag/2;
//Label4->Caption=val3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image9->Picture->LoadFromFile("assets/off_switch.bmp" );
Image10->Picture->LoadFromFile("assets/off_switch.bmp" );
Image11->Picture->LoadFromFile("assets/off_switch.bmp" );
Image12->Picture->LoadFromFile("assets/off_switch.bmp" );
Image13->Picture->LoadFromFile("assets/off_switch.bmp" );
Image14->Picture->LoadFromFile("assets/off_switch.bmp" );
Image15->Picture->LoadFromFile("assets/off_switch.bmp" );
Image16->Picture->LoadFromFile("assets/off_switch.bmp" );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Configuration1Click(TObject *Sender)
{
ComPort1->ShowSetupDialog();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Sortir1Click(TObject *Sender)
{
ComPort1->Connected=!ComPort1->Connected;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Devellopeur1Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Sortie1Click(TObject *Sender)
{
ComPort1->Close();
Application->Terminate();
}
//---------------------------------------------------------------------------
4.Schema


V. PROGRAMME
int App1=6;int App2=7;
int App3=8;int App4=9;
int App5=10;int App6=11;
int App7=12;int App8=13;
char State = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(App1, OUTPUT);pinMode(App2, OUTPUT);
pinMode(App3, OUTPUT);pinMode(App4, OUTPUT);
pinMode(App5, OUTPUT);pinMode(App6, OUTPUT);
pinMode(App7, OUTPUT);pinMode(App8, OUTPUT);
digitalWrite(App1,0);digitalWrite(App2,1);// correction d un relais avec broches inversees
digitalWrite(App3,0);digitalWrite(App4,0);
digitalWrite(App5,0);digitalWrite(App6,0);
digitalWrite(App7,0);digitalWrite(App8,0);
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()){
State = Serial.read();
if(State == '0') //Checks whether value of Incoming_value is equal to 1
{ digitalWrite(App1, 1); } //If value is 1 then LED turns ON
else if(State == '1') //Checks whether value of Incoming_value is equal to 0
{ digitalWrite(App1, 0); } //If value is 0 then LED turns OFF
if(State == '2')
{ digitalWrite(App2, 0); }
else if(State == '3')
{ digitalWrite(App2, 1); }
if(State == '4')
{ digitalWrite(App3, 1); }
else if(State == '5')
{ digitalWrite(App3, 0); }
if(State == '6')
{ digitalWrite(App4, 1); }
else if(State == '7')
{ digitalWrite(App4, 0); }
if(State == '8')
{ digitalWrite(App5, 1); }
else if(State == '9')
{ digitalWrite(App5, 0); }
if(State == 'a')
{ digitalWrite(App6, 1); }
else if(State == 'b')
{ digitalWrite(App6, 0); }
if(State == 'c')
{ digitalWrite(App7, 1); }
else if(State == 'd')
{ digitalWrite(App7, 0); }
if(State == 'e')
{ digitalWrite(App8, 1); }
else if(State == 'f')
{ digitalWrite(App8, 0); }
}
}
VI. LA CONCRÉTISATION
1.images de realisation




2.Videos de realisation