vendredi 21 août 2015

Check and Control Security,Temperature,Gas,Ligntness using Arduino Uno and C Sharp PC Application !!

Check and Control Security,Temperature,Gas,Ligntness  using Arduino Uno and C Sharp Application !!

Comme il est inclus au titre, Aujourd'hui on va essayer de construire un System intelligent capable de manipuler votre maison.
Le système est composé d'une partie électronique composée d'une carte électronique Arduino reliée avec des autres composants (des capteurs et des actionneurs) . Une autre partie graphique représentée par une application crée en C Sharp capable de commander des taches et afficher des valeurs et des états.

Alors commençons par la première partie:
On aura besoin de :
Carte Arduino Uno
Capteur Gaz/fumée MQ-5
Capteur PIR
Capteur température LM35
Capteur de lumière LM393
Un ventilateur
Un buzzer
Une lampe électrique

Parlons un peu de capteur tout d'abord:

LM35 

C'est capteur analogique de température de caractéristiques suivantes :
Ce courbe fonctionne linéairement comme ça :







Le plage de tension de sortie de ce capteur est comme si dessous:


L'Arduino va lire la valeur de sortie analogiquement de capteur dans le plage analogique connu             [0-1023] donc elle va associée a chaque voltage une valeur qu'on va la convertir après pour savoir afficher la valeur réelle de température

Si 1023 === 5V alors La valeur réelle de température est:




(5.0 * 1000 / 1023) / 10 = 0.48828125    

5V c'est la valeur maximale qui associe la 1023

1000:  c'est la conversion de V en mV  

10 c'est une constante qui associe 10mV représentante 1 degré Celcius
Comme ça on pourra admettre que on pourra utiliser au programmation directement la constante 0.48828125   
LM393

C'est un module pret pour l'utilisation avec Arduino qui a deux sorties une analogique et une numérique et un potentiomètre pour régler la seuil. Ce dernier inclus un capteur de lumière LDR 
voila une photo de LDR


Voila une photo de Module LM393 

   

MQ-5



C'est un Capteur de Gaz essentiellement voila sa photo :

Il est très simple 3 pattes une on la relie a l'alimentation l'autre au GND et la dernière c'est la sortie

Calcul de pourcentage de Gaz :
si 1023 vaut 100 alors  La pourcentage de sortie vaut (Vout*100)/1023
Capteur PIR (REVB)



 




Simulation



Programmation Arduino 

//Lets electron,ic by Aymen Lachkhem
//let's electronic 
int temperature = A0;
int Light = A1;
int Gas = A2;
int mouv = A3;
int Lampe = 10;
int vent = 11;
int alarme = 12;
int fire_alarm = 13;
char aymen ;
void setup()
{
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop()
{
  
  if (Serial.available() > 0) {
   aymen = Serial.read();
  if (aymen == '1')
{
 float temp = analogRead(temperature);
  temp = temp * 0.48828125;
  Serial.print("Temperature = ");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();
  }
  
  else if (aymen == '2')
  {    Serial.println("Wait Please");

    digitalWrite(11,HIGH);
  delay(1000);
      digitalWrite(11,LOW);
  }
  
  else if (aymen == '3')
  {
    float lightpp = analogRead(A1);
  float lightp = lightpp / 10;
Serial.print("    Ligntness = ");
Serial.print(lightp);
Serial.print("%");
Serial.println();
  }
  else if (aymen == '4')
  {    Serial.println(" Light + +");

    digitalWrite(10,HIGH);
  }
  else if (aymen == '5')
  {    Serial.println(" Light - -");

    digitalWrite(10,LOW);
  }  
   else if (aymen == '6')
  {
    float gaspp = analogRead(A2);
  float gasp = gaspp / 10;
Serial.print("    Gas/Smoke = ");
Serial.print(gasp);
Serial.print("%");
Serial.println();
  }
  
  
  
   else if (aymen == '7')
  {    Serial.println(" Fire Alarm is ON");

    digitalWrite(13,HIGH);
  }  
  
  
   else if (aymen == '8')
  {    Serial.println(" Fire Alarm is OFF");

    digitalWrite(13,LOW);
  }  
  
   else if (aymen == 'A')
  {    Serial.println("  Alarm is ON");

    digitalWrite(12,HIGH);
  }  
   else if (aymen == 'B')
  {    Serial.println("  Alarm is OFF");

    digitalWrite(12,LOW);
  }  
    else if (aymen == '9')
  {
    float movpp = analogRead(A3);
  float movp = movpp / 10;
Serial.print(" Security in  ");
Serial.print(movp);
Serial.print("%");
Serial.println();
  }}
delay(100);
  } 

Passons au deuxième partie maintenant (application C Sharp)
Notre objectif c'est d'avoir ça  







La partie design de l'application elle est comme ça se voit rien de spéciale que des boutons,des images,des Labels et des text box.


Le programme de l'application est comme ça :

Programmation C Sharp

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        SerialPort connexion = new SerialPort("COM2", 9600);
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = true;
            groupBox1.Enabled = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            groupBox1.Enabled = false;
           
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void button8_Click(object sender, EventArgs e)
        {
            textBox1.Clear();

            connexion.Open();
            connexion.Write("1");
            string retour = connexion.ReadLine();
            textBox1.Text += retour + "\n";
            connexion.Close();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Clear();

            connexion.Open();
            connexion.Write("2");
            string retour = connexion.ReadLine();
            textBox1.Text += retour + "\n";
            connexion.Close();
        }

        private void button13_Click(object sender, EventArgs e)
        {
            textBox3.Clear();

            connexion.Open();
            connexion.Write("7");
            string retour = connexion.ReadLine();
            textBox3.Text += retour + "\n";
            connexion.Close();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox2.Clear();

            connexion.Open();
            connexion.Write("4");
            string retour = connexion.ReadLine();
            textBox2.Text += retour + "\n";
            connexion.Close();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            textBox2.Clear();

            connexion.Open();
            connexion.Write("5");
            string retour = connexion.ReadLine();
            textBox2.Text += retour + "\n";
            connexion.Close();
        }

        private void button9_Click(object sender, EventArgs e)
        {
            textBox2.Clear();

            connexion.Open();
            connexion.Write("3");
            string retour = connexion.ReadLine();
            textBox2.Text += retour + "\n";
            connexion.Close();
        }

        private void button10_Click(object sender, EventArgs e)
        {
            textBox3.Clear();

            connexion.Open();
            connexion.Write("6");
            string retour = connexion.ReadLine();
            textBox3.Text += retour + "\n";
            connexion.Close();
        }

        private void button11_Click(object sender, EventArgs e)
        {
            textBox4.Clear();

            connexion.Open();
            connexion.Write("9");
            string retour = connexion.ReadLine();
            textBox4.Text += retour + "\n";
            connexion.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            textBox4.Clear();

            connexion.Open();
            connexion.Write("A");
            string retour = connexion.ReadLine();
            textBox4.Text += retour + "\n";
            connexion.Close();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            textBox4.Clear();

            connexion.Open();
            connexion.Write("B");
            string retour = connexion.ReadLine();
            textBox4.Text += retour + "\n";
            connexion.Close();
        }

        private void button12_Click(object sender, EventArgs e)
        {
            textBox3.Clear();

            connexion.Open();
            connexion.Write("8");
            string retour = connexion.ReadLine();
            textBox3.Text += retour + "\n";
            connexion.Close();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
J'ai vous mis cette vidéo qui vous montre comment on la fait l'application pas à pas.
PS: oublier pas d'ajouter le port série et le régler.



Pour tester l'application sur Proteus ISIScomme toujours on va utiliser Serial Virtual Port pour ajouter un couple de port série  et voila c'est tout


Vidéo Démonstrative


Vous Pouvez télécharger le projet complet et modifiable ici et oublier pas d'installer l'application avant de l'utiliser.



 Télécharger le projet complet ici :   LACHKHEM
  

mardi 18 août 2015

Control Arduino/Pic/... With Your Own Serial Communication Read/Write C sharp Application !!

Control Arduino/Pic/... With Your Own Serial Communication Read/Write C sharp Application  !!

Cette article comme il est inclus au titre il va nous aidez a bien comprendre de quoi il s'agit lorsque on entend Serial Communication, Va nous aidez a découvrir le C Sharp  (C#).
 
   Alors aujourd'hui on va construire une application en se basant sur le logiciel Microsoft Visual Studio 
C# (C Sharp).
Cette application sera utilisable presque dans tout les projet qui assure une interface de communication série et surtout pour tester la communication.
 








Tout d'abord c'est quoi C Sharp ? 

Le C#  est un langage de programmation orienté objet , créé par la société Microsoft, et notamment un de ses employés, Anders Hejlsberg, le créateur du langage Delphi.
Il a été créé afin que la plate-forme Microsoft .NET soit dotée d'un langage permettant d'utiliser toutes ses capacités. Il est très proche du Java dont il reprend la syntaxe générale ainsi que les concepts (la syntaxe reste cependant relativement semblable à celle de langages tels que le C++ et le C). Un ajout notable au C# est la possibilité de surcharge des opérateurs, inspirée du C++. Toutefois, l'implémentation de la redéfinition est plus proche de celle du Pascal Objet.

Alors,Parlons un peu de l'application qu'on va réaliser. c'est tout simplement un interface graphique qui va relier l'ordinateur avec le microcontrôleur via un câble série.   

L'application comme j'ai déja dis dans les deux tutoriels précédents elle inclus deux grandes parties une appelé Design et l'autre code


Design 






Code 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace Serial_Communication_By_Aymen_Lachkhem
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            getAvailablePorts();
        }
        void getAvailablePorts()
        {
            string[] Ports = SerialPort.GetPortNames();
            comboBox1.Items.AddRange(Ports);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                if (comboBox1.Text == "" || comboBox2.Text == "")
                {
                    comboBox2.Text = "Please select port setting ? ";
                }
                else
                {

                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                    serialPort1.Open();
                    progressBar1.Value = 100;
                    button1.Enabled = true;
                    button2.Enabled = true;
                    textBox1.Enabled = true;
                    button3.Enabled = false;
                    button4.Enabled = true;
                }
            }
            catch (UnauthorizedAccessException)
            {
                textBox2.Text = "Unauthorized Access";
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            progressBar1.Value = 0;
            button1.Enabled = false;
            button2.Enabled = false;
            button4.Enabled = false;
            button3.Enabled = true;
            textBox1.Enabled = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.WriteLine(textBox1.Text);
            textBox1.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                textBox2.Text = serialPort1.ReadLine();
            }
            catch(TimeoutException)
                {
                    textBox2.Text="time out exeption";
                }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }
    }
}



J'ai vous mis ce vidéo qui va vous expliquer comment j'ai la réaliser cette application 





Apres avoir créer votre propre application le reste sera facile, il suffit de relier votre ordinateur avec la carte électronique dédiée un simple câble RS est capable d'assurer cette mission.

Tant que on va tester cette application sur PROTEUS il faut pas oublier d'ajouter un couple de Port Virtuelle en utilisant Serial Port Virtual comme il est indiquée dans les deux tutoriels précédents.

Simulation

  
  

Programme




Comme ça se voit ici rien est spécial, si on envoi un A la LED va s'allumer et si on va envoyer B cette dernière va s’éteindre.

Une video démonstrative pour bien comprendre le fonctionnement 

  



Exactement La même simulation sera passée avec une Arduino:
Rélier sa cable usb vers l'ordinateur est se communiquer avec l'application voila le programme a televerser dans l'Arduino.  







Et Voila, C'est tout, Vous Pouvez me contacter pour avoir une copie complète de ce tutoriel.


lundi 3 août 2015

ELECTRONIC SOFTWARE FREE DOWNLOAD !!!

ELECTRONIC SOFTWARE DOWNLOAD !!!





 Télécharger PROTEUS ISIS ARES 8.1  ici :   LIEN 1
 Télécharger LIBRARY FORPROTEUS ISIS ARES 8.1  ici :   LIEN 2

 Télécharger ALTIUM DESIGNR FOR PCB  ici :   LIEN 3

 Télécharger LIBRARY FOR ALTUIM DESIGNER   ici :   LIEN 4

 Télécharger EAGLE  ici :   LIEN 5

 Télécharger FRITZING Designer for pcd  ici :   LIEN 6

 Télécharger EDISON Designer for pcd  ici :   LIEN 7

 Télécharger LABVIEW   ici :   LIEN 8

 Télécharger PIC C COMPILER  ici :   LIEN 9

 Télécharger MIKRO C COMPILER  ici :   LIEN 10