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);
  } 
}