Estou criando um sensor sem fio usando um Attiny85. Quero enviar os dados para um arduino uno, então comprei o kit de link de 315 mhz rf da spark fun. Como o Attiny85 não possui um TX, decidi usar a biblioteca de Manchester, mas ele não será compilado no Attiny85.
Segui as etapas deste blog: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192
Aqui está o código que estou usando:
#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 ++;
}
Aqui está a mensagem de erro:
/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
Respostas:
attiny está faltando uma opção necessária para permitir que a biblioteca de Manchester funcione corretamente em dispositivos ATtinyX5, especificamente a definição de
__AVR_ATtinyX5__
quando um dispositivo é selecionado. De fato, faltam algumas coisas.O pacote que eu uso para o suporte do ATtinyX5 é minúsculo para o arduino . Eu verifiquei que ele define esse símbolo corretamente. Eu recomendo que você despeje seu pacote de suporte atual e instale o arduino-tiny.
fonte
Tendo lutado contra isso sozinho, posso confirmar que a solução de Joel funciona.
Existem várias postagens sugerindo que você não pode fazer com que o Manchester trabalhe com o Arduino1.0x e você precisa do 0020. Mas você pode.
A chave é usar o arduino-tiny no link acima, colocar a pequena pasta que você obtém de lá no / hardware e renomeá-la para attiny e “prospective boards” para as placas.
Percebo que isso não diz mais do que Joel já disse, mas há tantas informações conflitantes e contraditórias que achei que valeria a pena acrescentar na minha experiência.
fonte
Obtive o mesmo problema ao usar esta biblioteca com um Trinket de 8 MHz, mas conseguiu resolvê-lo adicionando
#define __AVR_ATtinyX5__
ao arquivo hardware / attiny / variantes / tiny8 / pins_arduino.h. Estou usando o pacote de suporte Adafruit para o ATtiny. Talvez um pouco de hack, mas ainda posso criar para o UNO, selecionando a placa no Arduino IDE 1.0.5.fonte