Commande de dispositifs electriques  par

Commande de dispositifs electriques par ordinateur via port usb , port serie

Publish by : arielk The : 16/02/2021 at 08h 28min 40s
0

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:

  1. une carte arduino uno;
  2. des leds et resistances pour simuler les appareils electriques non disponibles;
  3. une plaque a essai ;
  4. les jumpers arduino pour le montage electronique;
  5. un relais pour permettre le pilotage des appareils sous 220v;
  6. une ampoule electrique et une douille;

Ce systeme pourra etre  utilise pour:

  • le controle d un appareil electrique a ditance via bluetooth;
  • le controle des moteurs et tapis roulants dans des entreprises industrielles modernisees ;
  • le verrouillage de la salle des machines dans une entreprise;

II. MATERIEL UTILISE ET COUT 

Cliquez sur les images pour avoir les prix  a moindre cout dans notre boutique en ligne

liste du materiel avec cout

Matériel

Image

prix

 carte arduino uno

8000

 Plaque à essai

1500

 Leds

100
 cavaliers arduino 500
resistances de 330 ohms 100
relais 1200
Lampe a incandescence 300
Douille electrique 250
TOTAL   15450 FCFA
TOTAL  - plaque   10450 FCFA

 

III. LOGICIELS ET BIBLIOTHÈQUES UTILISÉES

1 . Logiciels

  • IDE Arduino
  • IDE C++ BUILDER 6
  • Composant COMPORT ou NRCOMM  ( pour la communication serie )
  • OPTIONEL(  power iso )

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  :

  • le catactere 'a' au microcontrolleur,l appareil no 6  se met en marche
  • le caractere 'f' au microcontrolleur,l appareil no 8  se met en  arret

ommande de dispostifs electriques par pc via cable usb

2. schémas

Les connexions de circuit de ce  projet sont simples et illustrées dans l'image ci-dessous.

connexion arduino uno et module a7 AI Thinker
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:

devellopement de l application

//---------------------------------------------------------------------------

#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 

 

schema

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