Partage
  • Partager sur Facebook
  • Partager sur Twitter

code Raspberry pi compteurs entrées/sorties

    23 avril 2021 à 17:27:32

    Bonjour, je suis en première année d'iut réseaux et télécom.

    J'ai pour projet de réaliser un compteur de personnes entrées sorties à l'aide d'un Raspberry pi 3

    J'utilise pour cela deux laser IF pour savoir lorsqu'une personne franchit la porte et dans quel sens (entrée ou sortie).

    Il me faudrait donc un programme (python) qui permette de demande au Raspberry quand est-ce que le signal IF est coupé, ainsi que lequel est coupé en premier.

    Merci d'avance de votre aide je me tiens à disposition pour toutes questions.

    • Partager sur Facebook
    • Partager sur Twitter
      23 avril 2021 à 21:33:20

      liliandulau1 a écrit:

      Merci d'avance de votre aide je me tiens à disposition pour toutes questions.


      J'en ai une. Tu en es où?
      • Partager sur Facebook
      • Partager sur Twitter
        24 avril 2021 à 11:57:40

        Déja j'aurais aimé savoir si vous pensez qu'il est préférable d'utiliser du python ou du C ?

        J'ai ce code pour l'emission de la barriere IF : 

        #include <IRremote.h>
         
        IRsend irsend; // déclaration de l'objet émetteur (diode IR su pin D3 obligatoirement)
         
        void setup() {
          irsend.enableIROut(38); // crée une sortie modulée à 38KHz
        }
         
        void loop()
        {
          irsend.mark(0); // envoi du signal pour une durée illimitée
          delay(5);
        }

        Ainsi que cela pour le recepteur IR : 

        #include <SPI.h>
        #include "RF24.h"
         
        /* Configuration du Hardware : connectez nRF24L01 radio sur le bus SPI et sur les pins 7 & 8 */
        RF24 radio(7, 8);
         
        byte addresses[][6] = {"1Node", "2Node"};
         
         
        #define CAPTEURUN 2 // premier récepteur InfraRouge sur D2
        #define CAPTEURDEUX 3 // deuxième récepteur IR sur D3
         
        int inOut = 0;
        boolean attente = 0;
         
         
        void setup(){
          Serial.begin(115200);
          pinMode(CAPTEURUN, INPUT);
          pinMode(CAPTEURDEUX, INPUT);
           
          radio.begin();          //configuration des radios
          radio.setPALevel(RF24_PA_MIN);  //Puissance d'émmission (MIN, LOW, HIGH, MAX)
          radio.setDataRate(RF24_250KBPS);
          radio.openWritingPipe(addresses[0]);
          radio.openReadingPipe(1, addresses[1]);
          radio.stopListening();
          Serial.println("Barriere infrarouge, recepteur ");
         
         
        }
         
        void loop(){
          unsigned long attente_at = millis();
          while(mesureUn() && mesureDeux()){
            if(millis() - attente_at > 2000){
              testCom(2000);
            }
            attente = 0;
            mesureUn();
            mesureDeux();
            Serial.print(mesureUn());
            Serial.print("  ");
            Serial.println(mesureDeux());
          }
          testCom(3000);
          if(!mesureUn() && !attente){
            attente = 1;
            unsigned long cut_at = millis();
            boolean timeout = false;
            while(mesureDeux()){
              if (millis() - cut_at > 2000 ){
                timeout = true;
                break;
              }
            }
            if(timeout){
              inOut = 2;        
            }
            else inOut = 0;
            Serial.println(inOut);
          }
           
          if(!mesureDeux() && !attente){
            attente = 1;
            unsigned long cut_at = millis();
            boolean timeout = false;
            while(mesureUn()){
              if (millis() - cut_at > 2000 ){
                timeout = true;
                break;
              }
            }
            if(timeout){
              inOut = 2;        
            }
            else inOut = 1;
            Serial.println(inOut);
          }
          delay(500);
          if(inOut!=2){
            envoi();
          }
        }
         
        boolean mesureUn(){
          boolean mesure1 = digitalRead(CAPTEURUN); // première mesure
          delay(5);                               // délai
          boolean mesure2 = digitalRead(CAPTEURUN); // seconde mesure
          boolean etat = mesure1 * mesure2;       // comparaison
          return etat - 1;
        }
         
        boolean mesureDeux(){
          boolean mesure1 = digitalRead(CAPTEURDEUX); // première mesure
          delay(5);                               // délai
          boolean mesure2 = digitalRead(CAPTEURDEUX); // seconde mesure
          boolean etat = mesure1 * mesure2;       // comparaison
          return etat - 1;
        }
         
        void envoi(){ // envoie 1 si entrée, -1 si sortie du batiment par radio. Attente de 2 secondes avant nouvelle mesure.
          Serial.print("J envoie : ");
          Serial.println(inOut);
          Serial.print("   /   ");
          if (!radio.write( &inOut, sizeof(inOut) )) {
            Serial.println(F("echec de l envoi"));
          }
          else Serial.println("message envoye");
          inOut = 2;
        }
         
        void testCom(int test){   // envoie par radion les infos de communication : 2000 attente d'un mouvement / 3000 mouvement détecté
        radio.write( &test, sizeof(test));
        }




        • Partager sur Facebook
        • Partager sur Twitter
          24 avril 2021 à 13:16:03

          liliandulau1 a écrit:

          Déja j'aurais aimé savoir si vous pensez qu'il est préférable d'utiliser du python ou du C ?

          Ca dépend. Pour moi par exemple je le ferais en C (ou C++) car je ne connais pas trop python.

          Sinon, d'où sort ce code? Tu dis programmer une Raspberry Pi et tu me montres du code pour Arduino ou ESP.

          Tu dis utiliser des barrières laser alors que le code gère de l'IR.

          Il faut que tu écrives ton propre code. Pour cela, il te faudra une bibliothèque pour gérer les I/O. J'utilisais wiringpi, mais vu qu'elle est abandonnée, je préfère désormais pigpio, qui présente davantage de possibilité en passant. Gros avantage également, pas besoin d'être root pour pouvoir l'utiliser.

          • Partager sur Facebook
          • Partager sur Twitter

          code Raspberry pi compteurs entrées/sorties

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown