J'ai actuellement un problème de fonctionnement de mon système RF433 via un Attiny 85.
Le code ci-dessous fonctionne parfaitement via un "Nano". Or le même code (avec adaptation des pins) sur mon Attiny 85 ne fonctionne pas. Je ne comprends pas d'où cela peut venir.
Pour faire simple je ne reçois aucune donnée RF433 (la LED n'est jamais allumée).
Si quelqu'un a une idée, je le remercie d'avance de me la partager.
#include <Arduino.h>
#include <RCSwitch.h>
#include <Tempo.h>
// DECLARATION DES PINS
const int PIN_LED_RECEPTION = 7; // Nano Pin D7 || Attiny Pin 0
const int PIN_LED_FORAGE = 4;
const int PIN_LED_ALARME = 8; // Nano Pin D8 || Attiny Pin 1
const int PIN_BUZZER = 3;
// DECLARATION DES OBJETS
RCSwitch mySwitch = RCSwitch();
Tempo MyTempo_RF433_Disponible;
void ReceptionDonneeRF433();
void setup() {
// Déclaration des Pins
pinMode(PIN_LED_FORAGE, OUTPUT);
pinMode(PIN_LED_ALARME, OUTPUT);
pinMode(PIN_LED_RECEPTION, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
// Initialise les Temporisations
MyTempo_RF433_Disponible.Start(2, MyTempo_RF433_Disponible.Seconde);
Serial.begin(9600);
// On initialise les sortie à zéro
digitalWrite(PIN_LED_RECEPTION, LOW);
digitalWrite(PIN_LED_FORAGE,LOW);
digitalWrite(PIN_LED_ALARME,LOW);
digitalWrite(PIN_BUZZER,LOW);
// Active la Reception sur "INT0"
mySwitch.enableReceive(0);
}
void loop() {
ReceptionDonneeRF433();
}
void ReceptionDonneeRF433() {
if (mySwitch.available())
{
digitalWrite(PIN_LED_RECEPTION, HIGH);
Serial.print("Disponible : ");
Serial.println(mySwitch.getReceivedBitlength());
mySwitch.resetAvailable();
MyTempo_RF433_Disponible.Stop();
MyTempo_RF433_Disponible.Start();
delay(500);
}
else
{
if ( MyTempo_RF433_Disponible.IsEnd() )
{
digitalWrite(PIN_LED_RECEPTION, LOW);
Serial.print("Rien : ");
Serial.println(mySwitch.getReceivedBitlength());
delay(250);
}
}
}
D'autre part, il me semble que la bibliothèque RCSwitch n’est pas compatible nativement avec l’ATtiny85 (pas d'interruptions externes matérielles (INT0 , INT1 ) et les mêmes timers du microcontrôleur) . Utilisez vous une version adaptée ?
Via Arduino ISP et j'utilise platformio. (Le Serial est utilisé avec le Nano pour les test en plus de la Led)
Le pire c'est qu'initialement le code fonctionnait sous Attiny lors des test avant fabrication du PCB. Mais depuis que j'ai reçu et soudé les composants sur le PCB rien ne fonctionne.
J'ai testé en filiaire et rien ne fonctionne également. Mais avec le nano sa fonctionne
Bon je viens d'essayer de tranférer le programme via l'IDE Arduino et cela ne fonctionne toujours pas.
J'en déduis que la librairie RCSwitch ne fonctionne pas sur Attiny85. Je reste toutefois débitatif vue que le système à bien fonctionner il y a quelques semaines.
Je suis totalement coincé. Peut-être dois-je refaire mes PCB avec un Atmega.
Je sais pas quoi faire.
Le code cité précédemment est tiré de la bibliothèque est semble désactiver la réception sur Attiny85 d'après leur commentaire. Si c'est le cas, je ne vois pas comment cela a pu fonctionner.
Franchement je ne sais plus quoi penser. D'après des sources sur le Net certains affirment que la reception fonctionne avec RCSwitch tant dis que d'autres disent que cela ne fonctionne pas.
Quoiqu'il en soit je ne sais pas quoi faire. Quel librairie correcte dois-je utiliser pour un attiny85 ?
Je ne sais pas - je ne l’ai jamais essayé mais j’ai posé la question à chatGPT qui dit
il existe une version compatible de RCSwitch pour ATtiny85, mais avec quelques limitations. La bibliothèque officielle RCSwitch n’est pas directement compatible car elle utilise des interruptions et des timers spécifiques aux AVR comme l’ATmega328P. Cependant, plusieurs forks et adaptations fonctionnent sur ATtiny85, notamment via la TinyCore et en utilisant pin change interrupt plutôt qu’INT0.
Merci pour ton retour,
Toutefois étant débutant je suis un peu perdu sur "le fork".
Aurais-tu plus d'explication à me fournir ? ou bien une version de RCSwitch prete à l'emploi pour Attiny.