Je crée un capteur sans fil à l'aide d'un Attiny85. Je veux envoyer les données à un arduino uno, j'ai donc acheté le kit de liaison rf 315mhz chez spark fun. Étant donné que l'Attiny85 n'a pas de TX, j'ai décidé d'utiliser la bibliothèque de Manchester, mais elle ne se compilera pas sur l'Attiny85.
J'ai suivi les étapes de ce blog: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192
Voici le code que j'utilise:
#include <WProgram.h> //otherwise it says it can't find Arduino.h
#include <Manchester.h> //include the library to comunicate
#define TxPin 2 //the pin that is used to send data
int sensorPin = 4;
int ledPin = 3;
int count = 50;
void setup(){
pinMode (ledPin, OUTPUT);
man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
man.setupTransmit(TxPin, MAN_1200); //set transimt pin
}
void loop(){
if (count == 50){
digitalWrite (ledPin, HIGH);
count = 0;
}
int data = analogRead(sensorPin);
man.transmit(data); //transmits and reads the data
delay (100);
count ++;
}
Voici le message d'erreur:
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp: In function 'void MANRX_SetupReceive(uint8_t)':
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'TCCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'WGM21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'TCCR2B' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'CS21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:369: error: 'OCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'TIMSK2' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'OCIE2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:380: error: 'TCNT2' was not declared in this scope
Réponses:
il manque une option requise à attiny pour permettre à la bibliothèque de Manchester de fonctionner correctement sur les périphériques ATtinyX5, en particulier la définition du
__AVR_ATtinyX5__
moment où un périphérique est sélectionné. En fait, il manque pas mal de choses.Le package que j'utilise pour le support ATtinyX5 est arduino-tiny . J'ai vérifié qu'il définit correctement ce symbole. Je vous recommande de vider votre package de support actuel et d'installer plutôt arduino-tiny.
la source
Ayant moi-même lutté contre cela, je peux confirmer que la solution de Joel fonctionne.
Il y a beaucoup de publications qui suggèrent que vous ne pouvez pas faire fonctionner Manchester avec Arduino1.0x et que vous avez besoin de 0020. Mais vous pouvez.
La clé est d'utiliser l'arduino-minuscule à partir du lien ci-dessus, de placer le minuscule dossier que vous obtenez à partir de là / hardware et de le renommer en attiny et "prospectives boards" en boards.
Je me rends compte que cela n'en dit pas plus que Joel ne l'a déjà fait, mais il y a tellement d'informations contradictoires et contradictoires autour de moi que je pensais que cela valait la peine d'être ajouté à mon expérience
la source
Vous avez le même problème en utilisant cette bibliothèque avec un bijou 8 MHz, mais vous avez réussi à le résoudre en ajoutant
#define __AVR_ATtinyX5__
au fichier hardware / attiny / variants / tiny8 / pins_arduino.h. J'utilise le package de support Adafruit pour ATtiny. Peut-être un peu un hack, mais je peux toujours construire pour l'UNO, en sélectionnant la carte dans Arduino IDE 1.0.5.la source