Fil rouge
Rendre sa maison intelligente... Suivre sa consommation électrique, ou une interface avec un réseau 833Mhz, asservissement prise de courant, Interface WEB de pilotage, Interface SMS de notification..Detection panne de courant…
Sommaire
- 1 Cours du mardi 04/11/2014:
- 2 Présentation avancés Arduino Sheild Réseau W5100 par Jean-François
- 3 Cours du mardi 02/12/2014
- 4 Cours du mardi 13/01/2015
- 5 Cours du mardi 27/01/2015:
- 6 Mardi 31 Mars 2015 - Présentation du projet domotique de Christian
- 7 Mardi 16 Juin 2015 - Présentation de la réalisation domotique de jean-Paul
Cours du mardi 04/11/2014:
Matériels
- 1 Arduino Méga 2560 Réf. :20-011-910
- 1 Shield ethernet W5100 Réf. :20-011-903
- 1 Capteur de température LM35DZ
- 1 Capteur de température DS18B20
- 1 Capteur de température sonde étanche Ds18B20
- 1 Module 8 relais 5v/220v 10A(mini) Réf. :20-018-102
Ressources
Présentation débutants Arduino capteurs et relais -1-
Voir le Quiz— –Et les réponses
- Ci-dessous un exemple de code pour Arduino Mega -
Relais et capteur de température
relais_celsius.ino
#Define RELAY_1 2
//Le compilateur remplacera toute mention de RELAY_1 avec la valeur 2 au moment de la compilation.
//Cette ligne n'utilise pas de mémoire programme
#Define RELAY_2 3
int analogPin = 0;
float temp = 0;
void setup()
{
Serial.begin(9600);
analogReference(INTERNAL1V1);
pinMode(RELAY_1, OUTPUT);
pinMode(RELAY_2, OUTPUT);
}
void loop()
{
temp = ((analogRead(analogPin)*1.1/1024)*100);
Serial.print("valeur entre 0 et 1023 = ");
Serial.println(analogRead(analogPin));/* représente la tension entre 0 et 5v en sortie du capteur de température */
Serial.print("Temperature : ");
Serial.print(temp); /* affiche la température positive */
Serial.println(" Degres celsius ");
Delay(1000);
AM_relais( RELAY_1, temp);
}
void AM_relais(int pin, float temper) {
if (temper <= 18){
digitalWrite(pin, LOW);
}
if ( temper >= 25) {
digitalWrite(pin, HIGH);
}
}
Présentation avancés Arduino Sheild Réseau W5100 par Jean-François
Présentation avancés Arduino Shield Réseau W5100 par Jean-François
Exemple webserver arduino
- code pour tester la fonction de serveur sur Arduino à prendre dans les exemples de son IDE :
Exemple –> Ethernet —> WebServer
si vous branchez votre carte ethernet arduino en direct sur votre PC , il vous faut passer votre adresse ip en fixe sur le PC et sur la carte ethernet arduino dans le même réseau exemple : 192.168.3.1 sur le pc et 192.168.3.2 sur la carte ethernet arduino
Le but de cet exemple c'est de voir les valeurs aléatoires des broches analogiques de A0 à A5 sur le client web en se connectant sur l'adresse 192.168.3.2
exemple_webserver.ino
/* Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009 by David A. Mellis modified 9 Apr 2012 by Tom Igoe */
#Include <SPI.h>
#Include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel <6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}
Test dhcp
- Code à prendre dans les exemples IDE arduino :
Exemple –> Ethernet —> DhcpAdressPrint
il faut brancher votre pc sur votre Box internet et mettre une adresse IP fixe dans votre carte ethernet arduino compatible avec le reseau
DhcpAdressPrint.ino
/* DHCP-based IP printer
This sketch uses the DHCP extensions to the Ethernet library.
It get an IP address via DHCP and print the address obtained.
It uses an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
created 12 April 2011 modified 9 Apr 2012 by Tom Igoe */
#Include <SPI.h>
#Include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
// this check is only needed on the Leonardo:
while (!Serial) {; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for (;;);
}
// print your local IP address:
Serial.print("My IP address: ");
for (byte thisByte = 0; thisByte <4; thisByte++) {
// print the value of each byte of the IP address:
Serial.print(Ethernet.localIP()[thisByte], DEC);
Serial.print(".");
}
Serial.println();
}
void loop() {
}
Cours du mardi 02/12/2014
Ressources
Présentation débutants Arduino Introduction reseau Arduino -2-
Test du shield
test_shield.ino
# Include // librairie SPI - obligatoire avec librairie Ethernet
# Include // librairie Ethernet
//--- l'adresse mac = identifiant unique du shield
// à fixer arbitrairement ou en utilisant l'adresse imprimée sur l'étiquette du shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x1A, 0x71 };
//----- l'adresse IP fixe à utiliser pour le shield Ethernet ---
IPAddress ipLocal(192,168,1,3); // l'adresse IP locale du shield Ethernet
void setup() { // debut de la fonction setup()
Serial.begin(115200); // Initialise la connexion Série ( ne pas oublier de la modifier dans l'IDE arduino )
//Ethernet.begin(mac); // forme pour attribution automatique DHCP - utilise plus de mémoire Flash (env + 6Ko)
Ethernet.begin(mac, ipLocal); // forme conseillée pour fixer IP fixe locale
//Ethernet.begin(mac, ipLocal, serverDNS, passerelle, masque); // forme Complète
delay(1000); // donne le temps à la carte Ethernet de s'initialiser
Serial.print("L'adresse IP du shield Ethernet est :" ); Serial.println(Ethernet.localIP()); } // fin de la fonction setup() void loop(){ // debut de la fonction loop() while(1); // stop loop } // fin de la fonction loop()
Présentation débutants Arduino Introduction Serveur_html Arduino -2-
intro_serveur_html.ino
// --- Inclusion des librairies ---
# Include // librairie SPI - obligatoire avec librairie Ethernet
# Include // librairie Ethernet
// --- Déclaration des variables globales ---
//--- l'adresse mac = identifiant unique du shield
// à fixer arbitrairement ou en utilisant l'adresse imprimée sur l'étiquette du shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x1A, 0x71 };
//----- l'adresse IP fixe à utiliser pour le shield Ethernet ---
IPAddress ipLocal(192,168,1,150); // l'adresse IP locale du shield Ethernet
// ATTENTION : il faut utiliser une adresse hors de la plage d'adresses du //routeur DHCP
// pour connaitre la plage d'adresse du routeur : s'y connecter depuis un// //navigateur à l'adresse xxx.xxx.xxx.1
// par exemple : sur livebox : plage adresses DHCP entre .10 et .50 => on peut
//utiliser .100 pour le shield ethernet
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
//--- création de l'objet serveur ----
EthernetServer serveurHTTP(80); // crée un objet serveur utilisant le port 80 //=port HTTP
String chaineRecue=""; // déclare un string vide global pour réception chaine //requete
int comptChar=0; // variable de comptage des caractères reçus
void setup()
{ // debut de la fonction setup()
// --- ici instructions à exécuter 1 seule fois au démarrage du programme ---
// ------- Initialisation fonctionnalités utilisées -------
Serial.begin(9600); // Initialise connexion Série
//---- initialise la connexion Ethernet avec l'adresse MAC du module Ethernet, //l'adresse IP Locale
//---- +/- l'adresse IP du serveurDNS , l'adresse IP de la passerelle internet et le
//masque du réseau local
//Ethernet.begin(mac); // forme pour attribution automatique DHCP - utilise plus
//de mémoire Flash (env + 6Ko)
Ethernet.begin(mac, ipLocal); // forme conseillée pour fixer IP fixe locale
//Ethernet.begin(mac, ipLocal, serverDNS, passerelle, masque);
// forme complète
delay(1000); // donne le temps à la carte Ethernet de s'initialiser
Serial.print("Shield Ethernet OK : L'adresse IP du shield Ethernet est :" ); Serial.println(Ethernet.localIP()); //---- initialise le serveur ---- serveurHTTP.begin(); Serial.println("Serveur Ethernet OK : Ecoute sur port 80 (http)"); } // fin de la fonction setup() void loop(){ // debut de la fonction loop() // crée un objet client basé sur le client connecté au serveur EthernetClient client = serveurHTTP.available(); if (client) { // si l'objet client n'est pas vide // le test est VRAI si le client existe // message d'accueil dans le Terminal Série
Serial.println ("--------------------------");
Serial.println ("Client present !");
Serial.println ("Voici la requete du client:");
////////////////// Réception de la chaine de la requete //////////////////////////
//-- initialisation des variables utilisées pour l'échange serveur/client
chaineRecue=""; // vide le String de reception
comptChar=0; // compteur de caractères en réception à 0
if (client.connected()) { // si le client est connecté
/////////////////// Réception de la chaine par le réseau ////////////////////////
while (client.available()) { // tant que des octets sont disponibles en lecture
// le test est vrai si il y a au moins 1 octet disponible
char c = client.read(); // l'octet suivant reçu du client est mis dans la variable c
comptChar=comptChar+1; // incrémente le compteur de caractère reçus Série reçue
Serial.print(c); // affiche le caractère reçu dans le Terminal
//--- on ne mémorise que les n premiers caractères de la requete
//--- afin de ne pas surcharger la RAM et car cela suffit pour l'analyse de la requete
if (comptChar<=100) chaineRecue=chaineRecue+c; // ajoute le caractère reçu au String
//pour les N premiers caractères
//else break;
// une fois le nombre de caractères dépassés sort du while
} // --- fin while client.available = fin "tant que octet en lecture"
Serial.println ("Reception requete terminee");
/////////////////// Affichage de la requete reçue //////////////////////
Serial.println(F("------------ Affichage de la requete recue ------------"));
// affiche le String de la requete
Serial.println (F("Chaine prise en compte pour analyse : "));
Serial.println(chaineRecue); // affiche le String de la requete pris en compte pour analyse
/////////////////// Analyse de la requete reçue //////////////////////
Serial.println(F("------------ Analyse de la requete recue ------------")); //analyse le String de
//la requete
//------ analyse si la chaine reçue est une requete GET --------
if (chaineRecue.startsWith("GET")) { // si la chaine recue commence par GET
Serial.println (F("Requete HTTP valide !"));
//-- envoi de la réponse HTTP ---
client.println("HTTP/1.1 200 OK"); // entete de la réponse : protocole HTTP 1.1 et
//exécution requete réussie
client.println("Content-Type: text/html"); // précise le type de contenu de la réponse qui //suit
client.println("Connnection: close"); // précise que la connexion se ferme après la
//réponse
client.println(); // ligne blanche
//--- la reponse à afficher dans le navigateur
client.println("Reception de la reponse du serveur http !"); // message texte qui
//va //s'afficher dans le navigateur client
//--- envoi en copie de la réponse http sur le port série
Serial.println("La reponse HTTP suivante est envoyee au client distant :");
Serial.println("HTTP/1.1 200 OK");
Serial.println("Content-Type: text/html");
Serial.println("Connnection: close");
Serial.println();
//------ début de la page HTML -------
client.println("<!DOCTYPE html>");
// code HTML pour police jaune sur fond bleu
//
client.print(""); // ">
client.println("
");
// affiche chaines caractères simples
client.print("Coucou !");
client.println("
"); // saut de ligne HTML
client.print("Tu vas bien ? ");
client.println("
"); // saut de ligne HTML
client.print("Arduino fait le serveur pour te servir !! ");
client.println("
"); // saut de ligne HTML
// code HTML pour inclure une image à partir lien web
//
client.println("
");//
client.print("[[Fichier:),client.print(]]"); // ">
client.println("
");//
//-------- fin de la page HTML -------
} // fin if GET
else { // si la chaine recue ne commence pas par GET
Serial.println (F("Requete HTTP non valide !"));
} // fin else
//------ fermeture de la connexion ------
// fermeture de la connexion avec le client après envoi réponse
delay(1); // laisse le temps au client de recevoir la réponse
client.stop();
Serial.println(F("------------ Fermeture de la connexion avec le client------------")); // affiche
//le String de la requete
Serial.println (F(""));
} // --- fin if client connected
} //---- fin if client ----
} // fin de la fonction loop()
Serveur web
- Un programme à tester de serveur web Arduino proposé par Fernand
//Ethernet Switch
//
//Intro:
//This will swich on and off outputs trough your mobile device.
//No images or links to images. CSS3 and HTML5 use.
//Though it work with other web browser, we suggest Safari for best experiance.
//
//Version: Web Server Ethernet Switching Version 3.05
//Author: Claudio Vella - Malta
//Initial code from: http://bildr.org/2011/06/arduino-ethernet-pin-control/
//Made lot of comments for beginners.
//ARDUINO 1.0+ ONLY
# Include
# Include
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
//IP manual settings
byte ip[] = { 192, 168, 0, 177 }; //Manual setup only
byte gateway[] = { 192, 168, 0, 254 }; //Manual setup only
byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only
// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//Ethernet Port
EthernetServer server = EthernetServer(80); //default html port 80
<br>
//The number of outputs going to be switched.
int outputQuantity = 8; //when added to outputLowest result should not exceed 10
<br>
//The lowest output pin we are starting from
int outputLowest = 2; //Should be between 2 to 9
////////////////////////////////////////////////////////////////////////
// Variable declaration
int outp = 0;
boolean printLastCommandOnce = false;
boolean printButtonMenuOnce = false;
boolean initialPrint = true;
String allOn = "";
String allOff = "";
boolean reading = false;
boolean readInput[10]; //Create a boolean array for the maximum ammount.
//Beginning of the program
void setup(){
Serial.begin(9600);
//Pins 10,11,12 & 13 are used by the ethernet shield
//Set pins as Outputs
for (int var = outputLowest; var < outputLowest + outputQuantity; var++) {
pinMode(var, OUTPUT);
}
digitalWrite(9, HIGH);//allume la sortie 9 au depart
//Setting up the IP address. Comment out the one you dont need.
//Ethernet.begin(mac); //for DHCP address. (Address will be printed to serial.)
Ethernet.begin(mac, ip, gateway, subnet); //for manual setup. (Address is the one configured above.)
server.begin();
Serial.println(Ethernet.localIP());
}
void loop(){
// listen for incoming clients, and process requests.
checkForClient();
}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected()) {
if (client.available()) {
if(!sentHeader){
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("");
// add page title
client.println("Telecommande Ethernet");
client.println("");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("");
// add other browser configuration
client.println("");
client.println("");
client.println("");
//
//-------- debut de la page HTML -------
client.println("<br>");// <br>
client.print("[[Fichier:),client.print(]]") ; // " >
client.println("
");//
//-------- fin de la page HTML -------
//
//-------- debut de la page HTML -------
// client.println("
");//
// client.print("[[Fichier:),client.print(]]") ; // " >
//client.println("
");//
//-------- fin de la page HTML -------
//inserting the styles data, usually found in CSS files.
client.println("");
client.println("");
<br>
//now printing the page itself
client.println("");
client.println("<div>");
client.println(" <div>");
client.println(" Telecommandes Ethernet");
client.println(" </div>");
client.println("<div>");
client.println(" Allumez ou Eteignez la sortie .");
client.println();
<br>
//This is for the arduino to construct the page on the fly.
sentHeader = true;
}
<br>
char c = client.read();
if(reading && c == ' '){
reading = false;
}
<br>
// Serial.print(c);
if(c == '?') {
reading = true; //found the ?, begin reading the info
}
<br>
if(reading){
if(c == 'H') {outp = 1;}
if(c == 'L') {outp = 0;}
Serial.print(c); //print the value of c to serial communication
//Serial.print(outp);
//Serial.print('\n');
<br>
switch (c) {
case '2':
//add code here to trigger on 2
triggerPin(2, client, outp);
break;
case '3':
//add code here to trigger on 3
triggerPin(3, client, outp);
break;
case '4':
//add code here to trigger on 4
triggerPin(4, client, outp);
break;
case '5':
//add code here to trigger on 5
triggerPin(5, client, outp);
//printHtml(client);
break;
case '6':
//add code here to trigger on 6
triggerPin(6, client, outp);
break;
case '7':
//add code here to trigger on 7
triggerPin(7, client, outp);
break;
case '8':
//add code here to trigger on 8
triggerPin(8, client, outp);
break;
case '9':
//add code here to trigger on 9
triggerPin(9, client, outp);
break;
}
}
if (c == '\n' && currentLineIsBlank){
printLastCommandOnce = true;
printButtonMenuOnce = true;
triggerPin(777, client, outp); //Call to read input and print menu. 777 is used not to update any outputs
break;
}
}
}
<br>
//Set Variables Before Exiting
printLastCommandOnce = false;
printButtonMenuOnce = false;
<br>
allOn = "";
allOff = "";
client.println("\n© Author - Claudio Vella <br> Malta - October - 2012");
client.println("</div>\n</div>\n\n");
<br>
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection:
}
}
void triggerPin(int pin, EthernetClient client, int outp){
//Switching on or off outputs, reads the outputs and prints the buttons
//Setting Outputs
if (pin != 777){
if(outp == 1) {
digitalWrite(pin, HIGH);
}
if(outp == 0){
digitalWrite(pin, LOW);
}
}
//Refresh the reading of outputs
readOutputStatuses();
<br>
<br>
//Prints the buttons
if (printButtonMenuOnce == true){
printHtmlButtons(client);
printButtonMenuOnce = false;
}
<br>
}
//print the html buttons to switch on/off channels
void printHtmlButtons(EthernetClient client){
//Start to create the html table
client.println("");
//client.println("
");
client.println("");
client.println("
{|
");
<br>
//Start printing button by button
for (int var = outputLowest; var < outputLowest + outputQuantity; var++) {
<br>
//set command for all on/off
allOn += "H";
allOn += var;
allOff += "L";
allOff += var;
<br>
<br>
//Print begining of row
client.print("
|-
\N");
<br>
//Prints the ON Buttons
client.print("
| \N");
<br>
//Prints the OFF Buttons
client.print("
| \N");
<br>
<br>
//Print first part of the Circles or the LEDs
if (readInput[var] == true){
client.print("
| <div class="green-circle">
</div>\N");
<br>
}else
{
client.print("
| <div class="black-circle">
</div>\N");
}
<br>
<br>
//Print end of row
client.print("\n");
}
<br>
//Prints the ON All Pins Button
client.print("
|-
\N
| \N");
<br>
//Prints the OFF All Pins Button
client.print("
| \N
| \N\n");
<br>
//Closing the table and form
client.println("
|}
");
Client.println("");
//client.println("
");
<br>
}
//Reading the Output Statuses
void readOutputStatuses(){
for (int var = outputLowest; var < outputLowest + outputQuantity; var++) {
readInput[var] = digitalRead(var);
//Serial.print(readInput[var]);
}
<br>
}
Cours du mardi 13/01/2015
Comment se connecter à distance à son arduino via sa box
1-Création d'un compte No-ip ( http://www.noip.com/ ) pour avoir un nom de domaine ( ex = http://funlabarduino@ddns.net )
qui reconnaissent son adresse IP public noter le login et mot de passe. Vérifier que l'adresse publique de la box et bien celle reconnue par No-IP
2- Dans la plage des adresses libres de la box , mettre une adresse disponible dans l'arduino ex : 192.168.1.215
3- En prenant l'exemple d'une live box play réserver l@ ip de l'arduino dans la plage des adresses en @Ip statique. Ex : 192,168,1,215 créer un zone DMZ avec cette @Ip 192,168,1,215 dans l'onglet DynDns , créer la ligne No-IP avec le nom de domaine demandé sur le compte No-IP et inserer le login mot de passe
4- lancer le programme dans l'arduino, connecter l'arduino sur le réseau.
5- A partir d'une autre connexion internet ( soit en 3G/4G soit sur autre box) dans le navigateur taper le nom de domaine renseigner dans No-IP (ex http://funlanarduino.ddns.net )
Tutoriel création NO-IP www.mon-ip.com
http://www.mon-ip.com/obtenir-une-adresse-ip-fixe.php
Cours du mardi 27/01/2015:
Présentation i2c
Une présentation faite par Herve : Présentation I2C par Herve-1-
Une doc technique sur l'I2C en Anglais : Datasheet i2c-2-
Une doc technique en français sur Wikipédia : Une_doc I2C sur Wikipédia en francais-3-
Mise en pratique : relier 2 Arduinos en I2C
Schéma:
le programme Maitre à télécharger dans l'arduino Maitre:
#include <Wire.h>;
void setup()
{
Wire.begin(); // Rejoindre le bus I2C (Pas besoin d adresse pour le maitre)
}
void loop()
{
//contenu du programme
Wire.beginTransmission(4); // Envoyer vers device #4
Wire.write(1); // Envoi un 1
Wire.endTransmission(); // Arreter la transmission
delay(1000); // Attendre 1s
Wire.beginTransmission(4); // Envoyer vers device #4
Wire.write(0); // Envoi un 0
Wire.endTransmission(); // Arreter la transmission
delay(2000); // Attendre 2s
}
le programme Esclave à télécharger dans l'arduino Esclave :
I2C_Esclave_LED_001.ino#include <Wire.h>;
#include <Wire.h>; // Librairie pour la communication I2C
const int L1 = 2; // broche 2 du micro-contrôleur se nomme maintenant : L1
void setup()
{
Wire.begin(4); // Rejoindre le bus à l'adresse #4
Wire.onReceive(receiveEvent); // Preparer une fonction spécifique a la reception de donnee
Serial.begin(9600); // Demarrer la liaison serie avec le PC
pinMode(L1, OUTPUT); // L1 est une broche de sortie
}
void loop()
{
delay(100);
}
// Fonction qui s execute si quelque chose est present sur l interface
void receiveEvent(int howMany)
{
int x = Wire.read(); // recevoir un chiffre
Serial.println(x); // afficher ce chiffre sur l'interface serie
if(x == 1)
{
digitalWrite(L1, HIGH); // allumer L1
}
if(x == 0)
{
digitalWrite(L1, LOW); // eteindre L1
}
}
Mardi 31 Mars 2015 - Présentation du projet domotique de Christian
Le diaporama
Le mardi 31/03/2015 Christian nous a présenté son projet domotique qu'il à assemblé avec un arduino , un raspberryPi et des récepteur 433,92 Mhz.
Le lien vers son site web
Les codes du projet
La suite
Christian nous propose de continuer par des exercices pratiques en nous expliquant pas à pas comment faire fonctionner son projet lors de soirées à venir.
les pistes :
- Charger un raspberryPi avec la distribution Rasbian
- Création du serveur web
- Comment faire dialoguer le raspberry et l'arduino
- Comment faire dialoguer l'arduino et les modules 433
Mardi 16 Juin 2015 - Présentation de la réalisation domotique de jean-Paul
Jean Paul nous à présenté son installation domotique qu'il à réalisé dans sa maison au tout début de sa construction à l'aide d'un Automate Schneider Premium , ensuite il nous a présenté sa solution via RaspberryPI pour surveiller sa consommation électrique.