IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Projet transmission sans fil - problème avec Attiny84


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonjour,
    je travaille sur un projet d’alarme d’évacuation à très basse consommation et d’un prix de revient peu élevé, dans lequel je fais intervenir des transmissions sans fil.
    Pour les transmissions radio, je souhaite utiliser le couple " microcontrôleur Attiny84-20PU et le module transducteur NRF24L01+ ".
    Environnement:
    l’installation comprend plusieurs coffrets disposés chacun au centre de leur zone à protéger.
    Chaque coffret est distant l’un de l’autre de 20 à 30 mètres suivant les obstacles pouvant influencer la qualité des transmissions.
    Chaque coffret de protection de zone renferme :
    - Un déclencheur d’évacuation manuel intégré ou déporté.
    - Une alarme d’évacuation type IV.
    - Un module émetteur - récepteur radio à 2,4 GHz toujours en veille, ultra basse consommation.
    Fonctionnement:
    S’il faut, pour une raison valable, faire évacuer les personnes d’une zone devenue dangereuse,
    repérer et actionner le déclencheur manuel le plus proche. Lorsque celui-ci est actionné, il alimente en tension une broche déterminée de l’attiny84, créant ainsi un changement d’état de celle-ci.
    Au réveil du watchdog de l’attiny84 (programmé toutes les 2 secondes), celui-ci détecte le changement d’état de la broche et lance la suite du programme :
    a) d’une part envoie un signal "plus" pendant 5 secondes sur la boucle de l’alarme d’évacuation provoquant ainsi sa mise en route.
    b) d’autre part, le programme positionne le module en mode émetteur pour qu'il envoie un signal radio pendant 20 secondes aux récepteurs des coffrets environnants, puis repasse le module en mode réception et se rendort.
    Le récepteur de la zone mitoyenne recevant le signal est réveillé à la fin du cycle du watchdog puis il exécute à son tour les mêmes opérations que celles effectuées par le coffret précédent et ainsi de suite jusqu’à ce que tous les coffrets installés soient en action.

    Maintenant que je vous ai décris mon projet, venons-en à ma demande d’aide.
    Elle porte principalement sur le programme de transmissions.
    Je souhaiterai déjà faire clignoter une LED à distance avec mon couple " µC Attiny84-20PU et le module transducteur NRF24L01+ ".
    Le récepteur étant sous tension:
    - quand j'alimente l'émetteur la led du récepteur clignote,
    - quand je coupe l'alimentation de l'émetteur, la led s'éteint.

    ============oooooOOOOOOOOOOOOOooooo============

    J'ai réalisé un émetteur avec un module NRF24L01+ et un Attiny 85 chargé avec le code correspondant décrit ci-dessous.
    Ensuite j'ai réalisé un récepteur toujours avec un module NRF24L01+ et un Attiny 85 (8 pins) également chargé avec le code correspondant décrit ci-dessous.
    L'ensemble fonctionne parfaitement bien.
    Pour mon projet final j'ai besoin de pins supplémentaires sur le récepteur, aussi je me suis retourné vers un Attiny84 (14 pins) ayant les mêmes caractéristiques que son petit frère l’Attiny85, mais disposant de 6 E/S supplémentaires.
    J'ai adapté le code en changeant les n° de pins radio en: CE_PIN 8, CSN_PIN 7 et LED sur broche 12.
    Malheureusement le récepteur équipé de l’Attiny84 ne semble pas fonctionner, la LED ne clignote pas.
    J’ai essayé de la brancher sur toutes les autres pins disponibles, mais rien ne se passe.
    Depuis 3 semaines je cherche pourquoi ce montage ne fonctionne pas, mais je ne parviens pas à trouver de solution.
    J'ai vu qu'il y avait eu des confusions et des problèmes d'affectation avec les pins MISO, MOSI et SCK, mais je pense que depuis, les librairies ont été mises à jour!!

    Si quelqu'un peut m'aider, car aujourd’hui je ne sais plus comment faire.
    merci par avance,
    michel

    POUR INFO ==> code de l'émetteur:

    ******************** EMETTEUR ATtiny85-20PU & NRF24L01+ ***********************
    .......................................** Configuration du matériel **
    .........................J'utilise une ARDUINO UNO configurée en programmateur.
    ................................ATtiny85 Pins avec CE_PIN 3 and CSN_PIN 4
    ..................Pour contrôle, j'ai ajouté une LED + résistance entre CE et moins.
    ................................................+-\/-+
    ............................. NC PB5 1|o |8 Vcc --- nRF24L01 VCC, pin2
    .......nRF24L01 CE, pin3 --- PB3 2| |7 PB2 --- nRF24L01 SCK, pin5
    ......nRF24L01 CSN, pin4 --- PB4 3| |6 PB1 --- nRF24L01 MOSI, pin7
    ....nRF24L01 GND, pin1 --- GND 4| |5 PB0 --- nRF24L01 MISO, pin6
    ................................................+----+

    Code de l’émetteur:

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     #include "RF24.h"     
      #define CE_PIN 3
      #define CSN_PIN 4
    //**************************** Configuration **********************************
      RF24 radio (CE_PIN , CSN_PIN );  
      const byte rxAddr[6] = "01924";
    //*****************************************************************************
     
    void setup(void) 
    {
      radio.begin();                       
      radio.setChannel(1);                 
      radio.setPALevel(RF24_PA_HIGH);        
      radio.setDataRate(RF24_250KBPS);     
      radio.setRetries(1,15);          
      radio.setCRCLength(RF24_CRC_8);  
      radio.openWritingPipe(rxAddr); 
      radio.stopListening();               
    }
     
    void loop(void)
    {
      delay(300);            
      radio.write("1", 1);  
    }
    /*=============================================================================


    /******************** RECEPTEUR ATtiny84-A-PU & NRF24L01+ *******************
    ** Configuration du matériel **
    Pour ATtiny84 PA2 avec CE_PIN3 et PA3 avec CSN_PIN4

    .......................................................+-\/-+
    ---------nRF24L01 VCC, pin2 --- VCC 1|o |14 GND --- nRF24L01 GND, pin1 -----[=R=]---+----
    ....................................PB0 (D00) 2 | |13 (D10)AREF |
    .....................................PB1 (D01) 3| |12 (D09)PA1 --- broche ATTINY n°12 ---- LED- -+
    .....................................PB3(Reset) 4| |11 (D08)PA2 --- nRF24L01 CE, pin3
    ..........................INT0 PB2 (D02) 5| |10 (D07)PA3 --- nRF24L01 CSN, pin4
    .....................................PA7 (D03) 6| |9 (D06)PA4 --- nRF24L01 SCK, pin5
    ..nRF24L01 MOSI, pin7 --- PA6 (D04) 7| |8 (D05)PA5 --- nRF24L01 MISO, pin6
    +----+

    Code du récepteur qui me pose un problème:

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     #include "RF24.h" 
      #define CE_PIN 8
      #define CSN_PIN 7
      int LED = 9;  // 3 pour ATtiny85           
      byte alarm;
      bool check=0;  
    /**************************** Configuration *******************************/
       RF24 radio(CE_PIN, CSN_PIN);  // CE_PIN = 3, CSN_PIN = 4 pour ATtiny85 
      const byte rxAddr[6] = "01924";
    /**************************************************************************/
     
    void setup(void) 
    {
      radio.begin();                        
      radio.setChannel(1);                 
      radio.setPALevel(RF24_PA_MIN);      
      radio.setDataRate(RF24_250KBPS);    
      radio.setRetries(1,15);               
      radio.setCRCLength(RF24_CRC_8);      
      radio.openWritingPipe(rxAddr);  
      radio.startListening();           
      delay(200);
    }
     
    void beep()
        {
          digitalWrite(LED, HIGH);
          delay(1000);
          digitalWrite(LED, LOW);
          delay(500);  
        }
     
    void loop(void)
    {
      if(radio.available() || check) 
      {
        radio.read(&alarm, 1); 
        beep();
        delay(200);
        check = 1;
      } 
      If(!radio.available() || check)
      {
        digitalWrite(LED, LOW);
      } 
    }

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Dans ton code du récepteur, je ne vois pas à quel moment tu mets la broches, où est reliée la LED, en sortie !?
    Je vois que tu fais des digitalWrite(LED, LOW); ou digitalWrite(LED, HIGH); mais tu n'aurai pas oublié dans la fonction setup :

    pinMode(LED, OUTPUT);

    ????

    En tout cas, si tu lis la datasheet de ton micro tu verra que par défaut toutes les broches sont en entrées afin de sécuriser le démarrage du micro.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84 (NON RESOLU)
    Bonjour à vous tous,

    J'ai fait quelques modifs sur le code, je vous le joins ci- dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     /************************** RECEPTEUR ATtiny84A-PU & NRF24L01+ ****************************
                                               
      #include "RF24.h"
      #include <nRF24L01.h>
     
      #define CE_PIN 8    // j'ai essayé CE="7" et CSN="8" mais ne fonctionne toujours pas 
      #define CSN_PIN 7    
      int LED = 9;  // (broche 12 à laquelle la Led est connectée)        //3 pour ATtiny85 .          
      byte alarm;
     // bool check=0;  // variable inutile dans ce cas.
    /************* Configuration *************/
       RF24 radio(CE_PIN, CSN_PIN);  // CE_PIN = 3, CSN_PIN = 4 pour ATtiny85 
      const byte rxAddr[6] = "01924"; 
    /*****************************************/
     
    void setup(void) 
    {
      digitalWrite(LED, OUTPUT);  
      radio.begin();                        
      radio.setChannel(1);                 
      radio.setPALevel(RF24_PA_MIN);      
      radio.setDataRate(RF24_250KBPS);    
    //  radio.setRetries(1,15);      // non indispensable         
      radio.setCRCLength(RF24_CRC_8);      
      radio.openReadingPipe(0,rxAddr);    //Ligne remplacée (pour lecture), j'avais mis: "radio.openWritingPipe(rxAddr);(écriture)" 
      radio.startListening();           
      delay(200);
    }
     
    void beep()
        {
          digitalWrite(LED, HIGH);
          delay(1000);
          digitalWrite(LED, LOW);
          delay(500);  
        }
     
    void loop(void)
    {
      if(radio.available())  // || check) 
      {
        radio.read(&alarm, 1); 
        beep();
        delay(200);
    //    check = 1;
      } 
    else  // ligne modifiée
      {
        digitalWrite(LED, LOW);
      }
    }
    Le programme fonctionne très bien avec l'Attiny85 en connectant la led en // avec CE (sur broche 3).
    Rappelons que le module RF24 comporte 7 broches à connecter à l'attiny (avec le + et le -.
    La broche 1 de l'attiny est réservée au RESET donc pas utilisable.
    Ce qui fait qu'aucune pin libre n'est disponible. C'est pour çà que je voudrai passer à l'Attiny84 (14 pins).

    J'ai bien vérifié les positions de MOSI, MISO et SCK pour chaque éléments:
    (ATTINY84 sur la plaque d'essai, sur la plaque de téléversement, sur l'ARDUINO UNO et le NRF24L01+)
    tout semble OK.

    La librairie SPI est incluse dans le hardware IDE ARDUINO 1.6.5 R5, d'ailleurs elle est bien appelée
    lors de la compression en hexa.

    Je cherche de plus de 3 semaines des programmes, des exemples, tant pour le 85 que pour le 84
    et même pour l'Arduino, mais il n'y a pas grand chose que je pourrai exploiter.
    C'est pour cela que je fais appel à vos connaissances et par la-même à votre aide.
    J'ai pas envie de programmer avec MIRF parce que j'ai déjà appris à programmer les PICs 10F 12F 16F de chez Microchip,
    là je viens d'assimiler la librairie RF24 que je ne maitrise pas vraiment alors s'il faut recommencer avec Mirf,
    je n'ai pas trop envie, mais bon....
    En plus quand je maitriserai l'allumage de la led, j'ai sous le coude les programmes pour endormir et réveiller tout ce petit monde
    ainsi que le moyen de gérer le changement d'état d'une pin pour déclencher mon alarme.

    J'ai vraiment besoin d'un coup de main de votre part pour débloquer la situation.
    Je vous remercie beaucoup par avance,
    michel.

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    J'avais rien compris à ton problème désolé !
    Donc ton soucis est de porter ton code d'un Attiny85 vers un Attiny 84

    Alors, je viens de regarder les datasheets des Attiny 85 et 84 et je n'ai pas vu de différence notable.

    *****************************************
    En revanche il y a une chose que je ne comprends pas dans le schéma initial qui fonctionne (avec le Attiny 85)
    Voilà ton schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                           +-----+
                      PB5 1|o    |8 Vcc    
    (nRF24L01 CE)     PB3 2|     |7 PB2    (nRF24L01 SCK)
    (nRF24L01 CSN)    PB4 3|     |6 PB1    (nRF24L01 MOSI)
                      GND 4|     |5 PB0    (nRF24L01 MISO)
                           +-----+
    Et ce que je ne comprends pas du tout c'est le début de ton programme (initial, toujours celui du Attiny 85)
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define CE_PIN 3
    #define CSN_PIN 4
    Les broches que tu déclares ne correspondent pas avec le schéma. Je m'attendais plutôt a voir ça :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define CE_PIN 2
    #define CSN_PIN 3

    A moins que tu aies une explication dont je n'ai pas connaissance ? Avec tout le respect que je te dois, j'ai l'impression que tu as confondu le nom de la broche, dans la datasheet, avec son numéro réel.
    Par exemple PB3 c'est la broche 2 et PB4 la broche 3.

    D'un point de vu hard ça peut très bien fonctionner malgré cette erreur. Puisque en absence de gestion réel de la broche 2 celle ci est en entrée (haute impédance) et comme elle est connecté à la broche CE (chip Enabled) elle peut très bien être vu comme active ! Et surtout si jamais les résistances de pull up sont activées dans le micro a un moment donnée.


    *******************************************
    Un autre point que ne semble pas bon sur le Attiny 84.
    Voilà ton schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			      +-----+
     		   	     1|o    |14  
     		   PB0 (D00) 2|     |13 (D10)AREF                               
    		   PB1 (D01) 3|     |12 (D09)PA1 
    		   PB3 (RST) 4|     |11 (D08)PA2    (nRF24L01 CE)
     		   PB2 (D02) 5|     |10 (D07)PA3    (nRF24L01 CSN)
    		   PA7 (D03) 6|     |9  (D06)PA4    (nRF24L01 SCK)
    (nRF24L01 MOSI)    PA6 (D04) 7|     |8  (D05)PA5    (nRF24L01 MISO)
    			      +-----+
    Il y a une inversion entre MOSI et MISO, car le MOSI du nRF24L01 doit entrée dans le MISO du Attiny84. C'est à dire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			      +-----+
     		   	     1|o    |14  
     		   PB0 (D00) 2|     |13 (D10)AREF                               
    		   PB1 (D01) 3|     |12 (D09)PA1 
    		   PB3 (RST) 4|     |11 (D08)PA2    (nRF24L01 CE)
     		   PB2 (D02) 5|     |10 (D07)PA3    (nRF24L01 CSN)
    		   PA7 (D03) 6|     |9  (D06)PA4    (nRF24L01 SCK)
    (nRF24L01 MISO)    PA6 (D04) 7|     |8  (D05)PA5    (nRF24L01 MOSI) 
    			      +-----+
    Ensuite pour le code, je vois aussi la même incohérence :
    Ton code :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     /************************** RECEPTEUR ATtiny84A-PU & NRF24L01+ ****************************
                                               
      #include "RF24.h"
      #include <nRF24L01.h>
     
      #define CE_PIN 8    // j'ai essayé CE="7" et CSN="8" mais ne fonctionne toujours pas 
      #define CSN_PIN 7

    Alors que normalement cela devrait être :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     /************************** RECEPTEUR ATtiny84A-PU & NRF24L01+ ****************************
                                               
      #include "RF24.h"
      #include <nRF24L01.h>
     
      #define CE_PIN 11    // pour coller au schéma 
      #define CSN_PIN 10

    A bientôt,
    Vincent
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define CE_PIN 3
    #define CSN_PIN 4
    Les broches que tu déclares ne correspondent pas avec le schéma. Je m'attendais plutôt a voir ça :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define CE_PIN 2
    #define CSN_PIN 3

    A moins que tu aies une explication dont je n'ai pas connaissance ? Avec tout le respect que je te dois, j'ai l'impression que tu as confondu le nom de la broche, dans la datasheet, avec son numéro réel.
    Par exemple PB3 c'est la broche 2 et PB4 la broche 3.
    Il doit certainement y avoir une explication puisqu'il affirme que c'est fonctionnel et pour que cela soit fonctionnel il faut remplir cette condition sur CSN

    Nom : spi command rf2401.png
Affichages : 921
Taille : 1,8 Ko

    D'après le define cela paraît compliqué puisque la pin 4 correspond a GND sur le ATtiny85.

    Ensuite j'ai regardé un peu le mode de fonctionnement de la broche CE et par exemple il faut une config particulière pour etre Tx mode (sur la partie émetteur), voir le fichier ci-dessous:

    Nom : Tx mode.png
Affichages : 962
Taille : 2,4 Ko

    Bref tout ça pour dire qu'après s'être assuré du bon routage pin/fonction comme le dit Vincent il faut que tu rentre ds les fonctions afin de voir ce qu'il ne va pas.
    Avec un oscillo tu devrais pouvoir récupérer des infos.

    Peux-tu me donner le détail de la fonction:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
     RF24 radio(CE_PIN, CSN_PIN);

    Merci.
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    C'est une excellente remarque Julien ! Je n'avais pas lu la doc aussi profondément.
    Maintenant regardons ce qui se passe en fonction du montage de Michel.

    Mon postulat sur l'Attiny 85 avec une erreur de Michel dans les define :
    - CSN est géré comme-ci c'était CE.
    - CE n'est pas du tout géré est il peut être a 1 puisque relié une entrée de l'Attiny85



    Si je reprends ta remarque sur la datasheet Julien.

    Nom : Capture du 2015-10-17 22:01:27.png
Affichages : 1142
Taille : 111,1 Ko

    Le cadre rouge montre dans quel état nous pourrions être avec mon postulat. CE toujours à 1 car relié sur une entrée.
    C'est un mode qui fonctionne parfaitement.

    Maintenant quid de CSN ? qui est géré comme CE d'après l'erreur des #define.
    Dans le cadre bleu il y a quelque chose d'intéressant : Le mode normal c'est à dire, on donne un impulsion sur CE en le mettant à 1, le temps de l'émission, puis on le repasse a 0 pour remettre le module en mode veille pour l'économie d'énergie.

    Et CSN dans tout ça ?

    Nom : Capture du 2015-10-17 22:18:38.png
Affichages : 934
Taille : 10,7 Ko

    CSN, comme tu le dis Julien, a besoin d'un front descendant, une transition de 1 vers 0. Ce qui peut correspondre à la fin de la transition de CE (la gestion de CE c'est 0, puis 1, puis 0)


    Je pense que dans l'erreur de Michel, tout peut fonctionner malgré l'inversion car la gestion de CE appliqué a CSN colle bien et si CE est en l'air il peut très bien être vu comme un 1 par le module radio.

    Michel si tu pouvais nous faire un retour et répondre sur les détails que demande Julien
    Vincent
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #7
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonjour,
    veuilez trouver le document Word en P.J.
    réponse pour radio-transmission.docx
    A bientôt
    michel

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Michel,
    Tu as essayé la modification que je suggère ? (L'inversion entre MOSI et MISO sur le schéma avec le Attiny 84 et dans les define, faire CE_PIN 11 et CSN_PIN 10)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  9. #9
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonsoir,

    OUI, j'ai essayé d'inverser les pins MOSI RF24 avec MISO µC et inversement pour l'autre, mais c'est pareil:
    la led ne s'allume pas.
    Au vu de mes constats avec les exemples WEB et de mon montage qui fonctionne, je reste dans cette configuration
    pour mon montage avec l'attiny84 (c'était bien vu) je pense que c'était une première erreur.

    par ailleurs:
    j'ai modifié mon code récepteur avec l'attiny85 (celui qui fonctionne) en mettant:
    1 #define CE_PIN 2 // correspondant au n° de la broche
    2 #define CSN_PIN 3 // idem
    le montage ne fonctionne plus.

    Donc je suis revenu à mon code initial avec:
    1 #define CE_PIN 3
    2 #define CSN_PIN 4 // numéros des pins digitales
    et il refonctionne normalement.
    Je n'ai donc toujours pas réglé le transfert de mon code: de Attiny85 vers Attiny84.
    A+
    michel

  10. #10
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Alors je me suis complètement trompé !!!
    Pour info, j'ai un Arduino UNO mais je le programme directement en C via AVR-GCC et Eclipse, je n'utilise pas l'IDE Arduino.

    Reprenons !
    La philosophie Arduino consiste, pour un pinmode(PIN, OUTPUT) ou RF24 radio(CE_PIN, CSN_PIN), à mettre en paramètre le numéro inscrit sur le connecteur du Arduino.
    Donc la bibliothèque Arduino est lié au hardware du connecteur... et cela dit en passant c'est sacrément bizarre car le jour ou tu changes de micro, comme tu l'as fait, ou que tu re-design une carte perso avec une connectique différente alors c'est une grosse partie de la bibliothèque d'Arduino qui ne va plus !

    Dans un fichier que j'ai trouvé sur le net il y a la relation entre le hard du connecteur et les broches du micro => voir le fichier pins_arduino.c

    Sur un Attiny 85
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // ATMEL ATTINY45 / ARDUINO
    //
    //                           +-\/-+
    //  Ain0       (D  5)  PB5  1|    |8   VCC
    //  Ain3       (D  3)  PB3  2|    |7   PB2  (D  2)  INT0  Ain1
    //  Ain2       (D  4)  PB4  3|    |6   PB1  (D  1)        pwm1
    //                     GND  4|    |5   PB0  (D  0)        pwm0
    //                           +----+
     
    // these arrays map port names (e.g. port B) to the
    // appropriate addresses for various functions (e.g. reading
    // and writing) tiny45 only port B


    Sur un Attiny 84
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // ATMEL ATTINY84 / ARDUINO
    //
    //                           +-\/-+
    //                     VCC  1|    |14  GND
    //             (D  0)  PB0  2|    |13  AREF (D 10)
    //             (D  1)  PB1  3|    |12  PA1  (D  9) 
    //                     PB3  4|    |11  PA2  (D  8) 
    //  PWM  INT0  (D  2)  PB2  5|    |10  PA3  (D  7) 
    //  PWM        (D  3)  PA7  6|    |9   PA4  (D  6) 
    //  PWM        (D  4)  PA6  7|    |8   PA5  (D  5)        PWM
    //                           +----+
     
    // these arrays map port names (e.g. port B) to the
    // appropriate addresses for various functions (e.g. reading
    // and writing)

    Maintenant je comprends ce que tu as fait et d'où viennent ces #define avec les valeurs que tu as donné et qui sont correctes !

    La question que je me pose c'est :
    Est ce que ton fichier pins_arduino.c ressemble a celui là ????? Car dans celui ci, ligne 163, ton micro Attiny 84 y est décrit pour que ça fonctionne bien.
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    /*
      pins_arduino.c - pin definitions for the Arduino board
      Part of Arduino / Wiring Lite
     
      Copyright (c) 2005 David A. Mellis
     
      This library is free software; you can redistribute it and/or
      modify it under the terms of the GNU Lesser General Public
      License as published by the Free Software Foundation; either
      version 2.1 of the License, or (at your option) any later version.
     
      This library is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      Lesser General Public License for more details.
     
      You should have received a copy of the GNU Lesser General
      Public License along with this library; if not, write to the
      Free Software Foundation, Inc., 59 Temple Place, Suite 330,
      Boston, MA  02111-1307  USA
     
      $Id: pins_arduino.c 565 2009-03-25 10:50:00Z dmellis $
     
      Modified 28-08-2009 for attiny84 R.Wiersma
      Modified 09-10-2009 for attiny45 A.Saporetti
      Modified for Atmel ATTiny2313 mcu by René Bohne
     
      Corrected 17-05-2010 for ATtiny84 B.Cook ...
     
        The default analog_reference leaves chip pin 13 (digital pin 10; PA0) 
        unconnected.  So the pin can be set to a non-floating state and so the 
        pin can be used as another digital pin, support for digital pin 10 was 
        added.
    */
     
    #include <avr/io.h>
    #include "pins_arduino.h"
    #include "wiring_private.h"
     
     
    #if defined( __AVR_ATtinyX313__ )
     
    // On the Arduino board, digital pins are also used
    // for the analog output (software PWM).  Analog input
    // pins are a separate set.
     
    // ATMEL ATTINY2313
    //
    //                   +-\/-+
    //      (D 17) PA2  1|    |29  VCC
    // RX   (D  0) PD0  2|    |19  PB7 (D  16)
    // TX   (D  1) PD1  3|    |18  PB6 (D  15)
    //      (D  2) PA1  4|    |17  PB5 (D  14)
    //      (D  3) PA0  5|    |16  PB4 (D  13)*
    // INT0 (D  4) PD2  6|    |15  PB3 (D  12)*
    // INT1 (D  5) PD3  7|    |14  PB2 (D  11)*
    //      (D  6) PD4  8|    |13  PB1 (D  10)
    //     *(D  7) PD5  9|    |12  PB0 (D  9)
    //             GND 10|    |11  PD6 (D  8)
    //                   +----+
    //
    // * indicates PWM port
     
    // these arrays map port names (e.g. port B) to the
    // appropriate addresses for various functions (e.g. reading
    // and writing)
    const uint8_t PROGMEM port_to_mode_PGM[] = 
    {
    	NOT_A_PORT,
    	&DDRA,
    	&DDRB,
    	NOT_A_PORT,
    	&DDRD,
    };
     
    const uint8_t PROGMEM port_to_output_PGM[] = 
    {
    	NOT_A_PORT,
    	&PORTA,
    	&PORTB,
    	NOT_A_PORT,
    	&PORTD,
    };
     
    const uint8_t PROGMEM port_to_input_PGM[] = 
    {
    	NOT_A_PORT,
    	&PINA,
    	&PINB,
    	NOT_A_PORT,
    	&PIND,
    };
     
    const uint8_t PROGMEM digital_pin_to_port_PGM[] = 
    {
    	PORT_D_ID, /* 0 */
    	PORT_D_ID,
    	PORT_A_ID,
    	PORT_A_ID,
    	PORT_D_ID,
    	PORT_D_ID,
    	PORT_D_ID,
    	PORT_D_ID,
    	PORT_D_ID, /* 8 */
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID, /* 14 */
    	PORT_B_ID,
    	PORT_B_ID,
      PORT_A_ID,
    };
     
    const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = 
    {
    	_BV(0), /* 0 */
    	_BV(1),
    	_BV(1),
    	_BV(0),
    	_BV(2),
    	_BV(3),
    	_BV(4),
    	_BV(5),
    	_BV(6), /* 8 */
    	_BV(0),
    	_BV(1),
    	_BV(2),
    	_BV(3),
    	_BV(4),
    	_BV(5), /* 14 */
    	_BV(6),
    	_BV(7),
      _BV(2),
    };
     
    const uint8_t PROGMEM digital_pin_to_timer_PGM[] = 
    {
    	NOT_ON_TIMER, 
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
      NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	TIMER0B,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	TIMER0A,
    	TIMER1A,
    	TIMER1B,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    };
     
    #endif
     
     
    #if defined( __AVR_ATtinyX4__ )
     
    // ATMEL ATTINY84 / ARDUINO
    //
    //                           +-\/-+
    //                     VCC  1|    |14  GND
    //             (D  0)  PB0  2|    |13  AREF (D 10)
    //             (D  1)  PB1  3|    |12  PA1  (D  9) 
    //                     PB3  4|    |11  PA2  (D  8) 
    //  PWM  INT0  (D  2)  PB2  5|    |10  PA3  (D  7) 
    //  PWM        (D  3)  PA7  6|    |9   PA4  (D  6) 
    //  PWM        (D  4)  PA6  7|    |8   PA5  (D  5)        PWM
    //                           +----+
     
    // these arrays map port names (e.g. port B) to the
    // appropriate addresses for various functions (e.g. reading
    // and writing)
    const uint8_t PROGMEM port_to_mode_PGM[] = 
    {
      NOT_A_PORT,
      &DDRA,
      &DDRB,
    };
     
    const uint8_t PROGMEM port_to_output_PGM[] = 
    {
      NOT_A_PORT,
      &PORTA,
      &PORTB,
    };
     
    const uint8_t PROGMEM port_to_input_PGM[] = 
    {
      NOT_A_PORT,
      &PINA,
      &PINB,
    };
     
    const uint8_t PROGMEM port_to_pcmask_PGM[] = 
    {
      NOT_A_PORT,
      &PCMSK0,
      &PCMSK1,
    };
     
    const uint8_t PROGMEM digital_pin_to_port_PGM[] = 
    {
      PORT_B_ID, /* 0 */
      PORT_B_ID,
      PORT_B_ID,
      PORT_A_ID,
      PORT_A_ID,
      PORT_A_ID,
      PORT_A_ID,
      PORT_A_ID,
      PORT_A_ID, /* 8 */
      PORT_A_ID,
      PORT_A_ID,
    };
     
    const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = 
    {
      _BV(0), /* 0, port B */
      _BV(1),
      _BV(2),
      _BV(7), /* 3 port B */
      _BV(6),
      _BV(5),
      _BV(4),
      _BV(3),
      _BV(2), 
      _BV(1),
      _BV(0),
    };
     
    const uint8_t PROGMEM digital_pin_to_timer_PGM[] = 
    {
      NOT_ON_TIMER,
      NOT_ON_TIMER,
      TIMER0A, /* OC0A */
      TIMER0B, /* OC0B */
      TIMER1A, /* OC1A */
      TIMER1B, /* OC1B */
      NOT_ON_TIMER,
      NOT_ON_TIMER,
      NOT_ON_TIMER, 
      NOT_ON_TIMER,
      NOT_ON_TIMER,
      NOT_ON_TIMER,
    };
     
    #endif
     
     
    #if defined( __AVR_ATtinyX5__ )
     
    // ATMEL ATTINY45 / ARDUINO
    //
    //                           +-\/-+
    //  Ain0       (D  5)  PB5  1|    |8   VCC
    //  Ain3       (D  3)  PB3  2|    |7   PB2  (D  2)  INT0  Ain1
    //  Ain2       (D  4)  PB4  3|    |6   PB1  (D  1)        pwm1
    //                     GND  4|    |5   PB0  (D  0)        pwm0
    //                           +----+
     
    // these arrays map port names (e.g. port B) to the
    // appropriate addresses for various functions (e.g. reading
    // and writing) tiny45 only port B 
    const uint8_t PROGMEM port_to_mode_PGM[] = 
    {
    	NOT_A_PORT,
    	&DDRB,
    };
     
    const uint8_t PROGMEM port_to_output_PGM[] = 
    {
    	NOT_A_PORT,
    	&PORTB,
    };
     
    const uint8_t PROGMEM port_to_input_PGM[] = 
    {
    	NOT_A_PIN,
    	&PINB,
    };
     
    const uint8_t PROGMEM digital_pin_to_port_PGM[] = 
    {
    	PORT_B_ID, /* 0 */
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID,
    	PORT_B_ID, 
    	PORT_B_ID, /* 5 */
     
    };
     
    const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = 
    {
    	_BV(0), /* 0, port B */
    	_BV(1),
    	_BV(2),
    	_BV(3), /* 3 port B */
    	_BV(4),
    	_BV(5),
     
    };
     
    const uint8_t PROGMEM digital_pin_to_timer_PGM[] = 
    {
    	TIMER0A, /* OC0A */
    	TIMER1A, /* OC1A? */
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    	NOT_ON_TIMER,
    };
     
    #endif
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  11. #11
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonsoir,
    je ne vous ai pas recontacté parce que j'ai eu un problème perso a régler.
    Bon!
    j'ai recherché le fichier, je l'ai trouvé dans le dossier "Tiny" et OUI c'est le même.
    J'ai ré-installé mon code et malheureusement c'est pareil... càd rien.
    Je pense que c'est vraiment un problème de brochage.
    J'ai trouvé çà dans la librairie RF24.
    DISPOSITIONS DES BROCHES.docx
    La pin D10 n'est pas au même endroit et décale du coup CSN et CE.
    A approfondir???
    A bientôt
    michel

  12. #12
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Franchement c'est le bazarre pas possible cette histoire !
    Je n'arrive pas à comprendre ce que prend en paramètre le constructeur RF24 radio (PIN_CE, PIN_CSN);

    Est ce que c'est le numéro inscrit sur le connecteur de Arduino ?
    Est ce que c'est le nom de la broche du micro ?
    Est ce que c'est la pin du micro ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  13. #13
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonjour,
    moi aussi j'ai du mal à comprendre, en fait les 3 broches qui posent problèmes sont CE, CSN et la Led.
    Je crois qu'on est pas les seuls:
    https://github.com/TCWORLD/ATTinyCore/issues/25
    Je n'arrive pas à comprendre qui a raison, même pour MOSI et MISO je ne suis plus sûr.
    Le problème n'est pourtant pas compliqué, je reviens au départ:
    avec un Attiny85 ou 84, je voudrais, alors que tout le monde dort, au réveille du watchdog, envoyer à partir d'une broche de l'attiny du "+3.7v" pendant 10 secondes sur une boucle d'alarme NF à "0" pour la lancer, passer le NRF24 en mode émission pour envoyer un signal de réveil aux autres émetteurs pendant 15 secondes, repasser en mode réception et endormir tout le monde sauf le watchdog qui se réveille toutes les 2 secondes.
    Tout est dit, mais je bloque.
    Je continue à chercher, mais on dit qu'il y en a plusss dans plusieurs têtes que dans une !!!.
    A bientôt
    michel

  14. #14
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Michel,
    Est ce que tu peux faire un test tout simple ?

    Ne connecte rien a ton Attiny84 (pas de module radio) et fait un programme test qui fait clignoter chaque pin (toutes les secondes par exemple).

    Ensuite à l'aide de ta LED et de ta résistance tu vérifies que le soft de test fonctionne et que la LED clignote bien sur chaque broche.

    Si déjà là ça ne fonctionne pas c'est pas la peine d'aller plus loin avec le module radio.

    Le but est simple :
    - voir si les pinmode (xxx, OUTPUT); suivi d'un digitalWrite(xxx, HIGH ou LOW) fonctionne correctement
    - quelle valeur de xxx vas tu devoir donner en paramètre pour arriver à faire clignoter la pin que tu souhaitais vraiment

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #15
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    OK, je fais çà demain matin!,
    Bonne nuit et à demain.
    michel

  16. #16
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonjour,

    j'ai réalisé mon prog de test et j'ai découvert que les numéros des pins ne correspondent pas aux numéros que j'avais indiqués,
    ils sont l'inverse c à d: 0 à la place de D10..etc..10 à la place de D0, (reset sur broche 4) voir le brochage avec le nouveau code ci-dessous.
    Chaque broche nouvellement renumérotée fonctionnent parfaitement, ce qui confirme que l'Attiny84 n'est pas endommagé.

    J'ai ré-écrit le code en intégrant le clignotement d'une led (LED1) sur la broche 10 pour m'indiquer le bon fonctionnement de la radio:
    a) Si l'émetteur-radio n'émet pas la LED1 clignote (c'est normal, pas de réception).
    b) Si l'émetteur-radio ai lancé et que c'est la LED1 qui clignote, c'est que la radio ne fonctionne pas, il n'y a pas de réception (en fonctionnement normal, la LED1 devrait s'arrêter et la LED2 devrait clignoter).

    Actuellement, après avoir tout branché et malgré les plusieurs inversions de MOSI et MISO, je suis toujours dans la situation "b".
    J'ai échangé le module RF24 du récepteur avec celui de l'Attiny85 qui continu de bien fonctionner et c'est toujours pareil.

    Je vous mets le nouveau code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    /************************** RECEPTEUR ATtiny84A-PU & NRF24L01+ ****************************
                                  ** Configuration du matériel **
               Pour ATtiny84 + Broches correspondants aux numéros des broches RF24L01+
                               
                                            +-\/-+
         -----nRF24L01  VCC, pin2 --- VCC  1|o   |14 GND --- nRF24L01  GND, pin1 ----------+----
         ---[=R=]---(LED1)---- PB0   (10)  2|    |13 (0)   AREF                            |
                               PB1    (9)  3|    |12 (1)   PA1 ------(LED2)---[=R=]--------+
                               PB3(Reset)  4|    |11 (2)   PA2 --- nRF24L01 CE,   pin3 ???
                       INT0    PB2    (8)  5|    |10 (3)   PA3 --- nRF24L01 CSN,  pin4 ???
                               PA7    (7)  6|    |9  (4)   PA4 --- nRF24L01 SCK,  pin5 ???
    nRF24L01 MISO, pin7 ???--- PA6    (6)  7|    |8  (5)   PA5 --- nRF24L01 MOSI, pin6 ???
                                            +----+
    */
    #include "RF24.h"
    #define CE_PIN 2
    #define CSN_PIN 3
    int LED1 = 10;
    int LED2 = 1;
    byte alarm;
    //************* Configuration *************
    RF24 radio(CE_PIN, CSN_PIN);
    const byte rxAddr[6] = "01924";
    //*****************************************
     
    void setup(void)
    {
      pinMode(LED1, OUTPUT);
      pinMode(LED2, OUTPUT);
      radio.begin();
      radio.setChannel(1);
      radio.setPALevel(RF24_PA_MIN);
      radio.setDataRate(RF24_250KBPS);
      radio.setCRCLength(RF24_CRC_8);
      radio.openReadingPipe(1, rxAddr); 
      radio.startListening();
      delay(200);
    }
     
    void beep()
    {
      digitalWrite(LED2, HIGH);
      delay(2000);
      digitalWrite(LED2, LOW);
      delay(1000);
    }
     
    void loop(void)
    {
      if (radio.available())  
      {
        radio.read(&alarm, 1);
        beep();
        delay(200);
      }
      while(!radio.available()) 
      {
       digitalWrite(LED1, HIGH);
       delay(500);   
       digitalWrite(LED1, LOW);   
       delay(500); 
      }
    }
    Je vais revoir la partie transmission en hard et en soft.
    Je reste persuadé que çà peut marcher.
    A+
    michel

  17. #17
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut Michel,
    Je vois que des problèmes ont été mis en évidences et c'est tant mieux. Je te laisse faire tes tests par contre :

    A quelle fréquence tourne ton Attiny84 ? D'après ton hard tu es configuré sur l'horloge interne du micro mais est ce que les micro émetteur et récepteur tournent à la même vitesse ?

    A moins que tu ne parviennes à faire tout fonctionner, tu n'as pas d'oscilloscope à tout hasard ? Au moins pour vérifier que le SPI est en vie.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  18. #18
    Candidat au Club
    Homme Profil pro
    recherche et développement alarmes
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : recherche et développement alarmes

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 3
    Points
    3
    Par défaut Projet transmission sans fil - problème avec Attiny84
    Bonjour Vincent,
    Je tourne sur les 3 montages (émetteur, récepteur Attiny85 et Attiny84) à 1MHz avec horloge interne).
    J'ai un oscillo, et j'ai aussi des Attiny84 neufs, des modules NRF24L01+ neufs.
    Cette après-midi, je vais rechercher des exemples sur le NET pour tenter de trouver le bon brochage de la radio et jeter un coup d’œil sur le SPI.
    A+
    michel

  19. #19
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Ok et voir si :
    - le CLK du SPI fonctionne
    - si ça bouge sur MOSI et MISO
    - voir si CE a bien une allure de carré
    - voir si CSN a aussi une allure carré

    Vu que il n'y a pas de correspondance entre le nom ou numéro de la broche de l'Attiny et le numéro passé en paramètre de la fonction pinmode ou digitalWrite, il y a de forte chance que le SPI ne fonctionne simplement pas. Par contre CE et CSN doivent avoir une bonne tête sur l'oscilloscope.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  20. #20
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Ci-joint ==> http://arduino-for-beginners.blogspo...-attiny84.html une personne qui fut confronté au même soucis que toi michel...

    Pour ma part je ne connais pas du tout le monde arduino mais bon le blog est assez explicite, ce que j'ai pu comprendre c'est qu'au depart il a fait des test clignotement de led avec l'attiny84 et le clignotement ne lui semblé pas assez rapide.
    Après une manip il a paramétré la frequence micro a 8Mhz sans quartz externe, c'est un premier point a voir.

    Ensuite il fait remarqué comme le long de ce post d'ailleurs qu'il y a incohérence totale entre pinout et les fonctions du µcontroleur (je ne suis pas rentré ds les détails).

    Le dernier paragraphe me semble intéressant puisque après avoir noté qu'il y avait un pb sur le protocole SPi il propose une solution en redéfinissant les pins:

    Define initial:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #if defined( __AVR_ATtiny84__ )
    const static uint8_t SS   = PA7;
    const static uint8_t MOSI = PA6;
    const static uint8_t MISO = PA5;
    const static uint8_t SCK  = PA4;
    #endif

    Define modifié:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #if defined( __AVR_ATtiny84__ )
    const static uint8_t SS   = 3;
    const static uint8_t USI_DO = 5; 
    const static uint8_t USI_DI = 4;
    const static uint8_t SCK  = 6;
    #endif

    A l'issue ça semble fonctionner.

    Pour finir il parle d'arduino tiny-core, je ne sais pas quelle est la différence avec l'harware que tu utilise (arduino-uno) encore une fois je suis totalement étrangé a l'environnement arduino (un peu moins chaque jour).

    A+
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2006, 13h18
  2. Problème avec un routeur sans fil
    Par nakman37 dans le forum Hardware
    Réponses: 3
    Dernier message: 12/02/2006, 20h56
  3. Réponses: 2
    Dernier message: 24/10/2005, 10h23
  4. Dhcpd sans fil ou avec ?
    Par jean christophe dans le forum Réseau
    Réponses: 5
    Dernier message: 23/01/2005, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo