Comptage d’entrée-sortie d’un bâtiment

Revision for “Comptage d’entrée-sortie d’un bâtiment” created on 11 octobre 2016 à 14 h 47 min

Titre
Comptage d'entrée-sortie d'un bâtiment
Contenu
<!DOCTYPE html> <html> Ici nous utiliserons une carte Arduino ainsi qu'un émetteur-récepteur ultrason pour compter les entrées et les sorties d'un bâtiment afin de connaitre le nombres de personnes à l’intérieur. <body> <h2>Utilisation du capteur de distance à ultrasons <strong>HC-SR04</strong></h2> <img src="http://makersk.cluster030.hosting.ovh.net/wp-content/uploads/2016/09/F90JYNWH7UR7RCS.MEDIUM1.jpg" alt="image du capteur à ultrasons HC-SR04"> Grâce à <a href="http://makersk.cluster030.hosting.ovh.net/wp-content/uploads/2016/09/HCSR041.pdf">ce document</a> nous savons comment le brancher et commander une mesure : <ul> <li>Alimentation du module en 5V sur la broche Vcc</li> <li>Envoi d'une impulsion de 5V de 10µs afin de demander un "mesure" sur la broche Trig</li> <li>Lecture d'un temps HAUT (5v) qui est proportionnel à la moyenne de 8 mesures sur la broche Echo</li> <li>Connectez bien sur à la masse la broche GND</li> </ul> Nous receverons donc en retour un signal HAUT proportionnel au temps qu'a mis le capteur à recevoir le signal qu'il à émis et qui lui est revenu en ricochant sur un obstacle. Afin de connaitre la durée de ce signal HAUT reçu par l'Arduino nous utiliserons la fonction <a href="https://www.arduino.cc/en/Reference/pulseIn">pulseIn</a>. Afin de savoir à quelle distance était cet ostacle il faut diviser le temps fournit par la fonction pulseIn() par 58. Voici donc le code de base pour tester le fonctionnement du capteur. [toggle title="cliquez pour derouler le code de base"] [code lang="arduino"] /* Télémètre ultrason HC-SR04 * Essais World of GZ - www.worldofgz.com */ #define TRIG 22 #define ECHO 23 //Variables utilisées long retourEcho; long distance; void setup () { //On définie les entrées/Sorties pinMode(TRIG, OUTPUT); digitalWrite(TRIG, LOW); pinMode(ECHO, INPUT); //Lancement de la liaison série Serial.begin(115200); Serial.println(&quot;Liaison série en ligne&quot;); } void loop() { //On lance notre impulsion de 10µs digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW); //Mesure de la longueur de la pulse retourEcho = pulseIn(ECHO, HIGH); //Calcul de la distance distance = retourEcho / 58; //Affichage de la distance dans le moniteur série Serial.print(&quot;Distance cm : &quot;); Serial.println(distance); delay(1000); } [/code] Attention, si vous utiliser ce code ainsi sur une Arduino Uno il ne fonctionnera pas ! Je vous laisse trouver pourquoi... [/toggle] <h2>Utilisation de l'émetteur-récepteur radio <strong>nRF24L01+</strong></h2> <img src="http://makersk.cluster030.hosting.ovh.net/wp-content/uploads/2016/09/519-VsWyIPL._SY300_1.jpg" alt="image de la radio nRF24L01+"> On va utiliser la bibliothèque NRF24 de TMRh20 disponible <a href="https://github.com/TMRh20/RF24.git">ici</a>. Le module nRF24L01+ utilise le protocole de communication SPI, il a donc un branchement particulier que la documentation de la bibliothèque décrit en bas de <a href="http://tmrh20.github.io/RF24/index.html">cette page</a>. Voici le schéma de branchement (les broches CS et CE du module peuvent être connectées ailleurs sur l'Arduino à condition de l'indiquer dans le code...) : <img src="http://makersk.cluster030.hosting.ovh.net/wp-content/uploads/2016/09/nrf24_Uno_bb.png" alt="Image de connexion du module nRF24L01+ à l'Arduino" /> Ce code permet simplement de voir si la communication entre deux Arduino fonctionne. En connectant le pin 4 au GND on informe l'Arduino qu'il s'agit du récepteur, sinon il s'agit de l’émetteur [toggle title="cliquez pour dérouler le code de communication entre deux Arduino"] [code lang="arduino"] /* Sene Code pour nRF24L01+ radios Connectez le pin 4 au gnd pour passer en recepteur, laisser libre pour etre en emetteur Sources : https://github.com/maniacbug/RF24.git &amp; https://github.com/TMRh20/RF24.git Mise à jour : Oct 2016 by Paolo */ #include &lt;SPI.h&gt; #include &quot;RF24.h&quot; /* Configuration du Hardware : connectez nRF24L01 radio sur le bus SPI et sur les pins 7 &amp; 8 */ RF24 radio(7, 8); /*********************************************************************************************/ byte addresses[][6] = {&quot;1Node&quot;, &quot;2Node&quot;, &quot;3Node&quot;, &quot;4Node&quot;, &quot;5Node&quot;, &quot;6Node&quot;, &quot;7Node&quot;}; char donnees; char anciennesDonnees; char c; bool allumage = 0; bool role = 0; const int pinLed = 2; const int pinRole = 4; void setup() { pinMode(pinRole, INPUT); pinMode(pinLed, OUTPUT); digitalWrite(pinRole, HIGH); digitalWrite(pinLed, allumage); if (digitalRead(pinRole)) { role = 0; } else { role = 1; } delay(20); Serial.begin(115200); if (role) Serial.println(&quot;radio reception&quot;); else Serial.println(&quot;radio emission&quot;); radio.begin(); radio.setPALevel(RF24_PA_HIGH); radio.setDataRate(RF24_250KBPS); if (role) { radio.openWritingPipe(addresses[0]); radio.openReadingPipe(1, addresses[1]); radio.openReadingPipe(2, addresses[2]); radio.openReadingPipe(3, addresses[3]); radio.openReadingPipe(4, addresses[4]); radio.openReadingPipe(5, addresses[5]); radio.openReadingPipe(6, addresses[6]); radio.startListening(); } else { radio.openWritingPipe(addresses[1]); radio.openReadingPipe(1, addresses[0]); radio.stopListening(); } } void loop() { if (role) { while (radio.available()) { anciennesDonnees = donnees; radio.read( &amp;donnees, sizeof(donnees) ); Serial.print(&quot;anciennes donnees : &quot;); Serial.print(anciennesDonnees); Serial.print(&quot; / donnees : &quot;); Serial.print(donnees); if (anciennesDonnees != donnees) { allumage = 1 - allumage; digitalWrite(pinLed, allumage); } Serial.print(&quot; / allumage : &quot;); Serial.println(allumage); } } else { while (Serial.available()) { char c = Serial.read(); Serial.read(); radio.stopListening(); Serial.print(F(&quot;J envoie : &quot;)); Serial.println(c); if (!radio.write( &amp;c, sizeof(c) )) { Serial.println(F(&quot;echec&quot;)); } else Serial.println(&quot;reussit&quot;); delay(1000); } } } [/code] [/toggle] </body>
Extrait


OldNewDate CreatedAuthorActions
11 octobre 2016 à 14 h 47 min Paolo
11 octobre 2016 à 14 h 44 min Paolo
11 octobre 2016 à 14 h 42 min [Sauvegarde automatique] Paolo
11 octobre 2016 à 14 h 39 min Paolo
11 octobre 2016 à 14 h 32 min Paolo
11 octobre 2016 à 14 h 31 min Paolo
11 octobre 2016 à 14 h 12 min Paolo
27 septembre 2016 à 12 h 06 min Paolo
27 septembre 2016 à 12 h 03 min Paolo
27 septembre 2016 à 11 h 59 min Paolo
27 septembre 2016 à 11 h 51 min Paolo
27 septembre 2016 à 11 h 51 min Paolo
27 septembre 2016 à 11 h 40 min Paolo
27 septembre 2016 à 11 h 24 min Paolo