Danke für Deine Hilfe. Ich schaue es mir morgen in Ruhe an. Vielleicht komme ich ja hinter meinen Fehler.
Andreas
Danke für Deine Hilfe. Ich schaue es mir morgen in Ruhe an. Vielleicht komme ich ja hinter meinen Fehler.
Andreas
Entwicklung: Temperatur Funk Sensor? Schau mal ob du hier fündig wirst!
Hi,
ich will auch demnächst ein paar Sachen mit Funk verbinden und hab noch ein paar Ungereimtheiten, die geklärt werden wollen.
1) Was mich grad ein wenig verwirrt hat: Die Gerber Files gibt es nur für die TX3, also würde ich mir die für den TX4 selbst bauen. Bei der Forensuche nach den passenden Gerber Files hab ich noch ein paar verwirrende Beiträge gelesen bezüglich Booster im TX4. Brauche ich den Booster, oder läuft das auch ohne?
2) Außerdem habe ich irgendwo gelesen, dass der TX auch der bessere Empfänger ist. Muss man dann noch was an der Firmware anpassen? Wird das arg kompliziert?
3) Wie läuft das mit den ACK's? Können mit den aktuellen Sketches die Sender auch schon die ACK's empfangen?
Viele Grüße
Der Ansatz zur Schonung der SD-Card ist an sich ganz richtig. :thumbs1: Hat aber im Fall der .db.sensors den Effekt, dass nach einem Neustart des Pi alle Daten weg sind. :s
Habe mir überlegt, ob ich über crontab alle 8 Stunden die .db.sensors wegkopiere und add.php entsprechend anpasse, damit nach einem Neustart diese Sicherung zurückkopiert wird. Und auch eine spezielle Routine für den Shutdown/Reboot wäre dann angesagt.
Aktuell habe ich die Datenbank aber auf der SD-Karte laufen. Aber mit 10 Sensoren die (noch) alle 5 Minuten "feuern", kommen am Tag stark 2.500 Schreibvorgänge raus.
Frage: Hat jemand konkrete Erfahrungen oder Informationen, wie viele Schreibvorgänge eine SD-Card so "aushält"?
QuoteBrauche ich den Booster, oder läuft das auch ohne?
Läuft auch ohne. Ob der Booster wirklich was bringt, weiß ich noch nicht. Tests sind aber in Planung.
QuoteAußerdem habe ich irgendwo gelesen, dass der TX auch der bessere Empfänger ist
Das ist richtig. In der Praxis leide ich allerdings unter starken Interferenzen, die zum Teil vom Raspberry kommen, so dass ich nicht die volle Empfindlichkeit ausnutzen kann. Aber ich bin dran!
QuoteMuss man dann noch was an der Firmware anpassen?
Nein. Ich habe ganz einfach den RX sketch auf den TX4 geflasht - geht.
QuoteWird das arg kompliziert?
nicht wirklich. Man braucht nur die +3V3, GND und serial RX richtig mit dem Raspberry Pi verbinden.
Die serial RX Leitung ist PA7 am ATtiny (Pin 6, zugänglich auf SV1, Pin 2).
Quote
Aktuell habe ich die Datenbank aber auf der SD-Karte laufen. Aber mit 10 Sensoren die (noch) alle 5 Minuten "feuern", kommen am Tag stark 2.500 Schreibvorgänge raus.
Frage: Hat jemand konkrete Erfahrungen oder Informationen, wie viele Schreibvorgänge eine SD-Card so "aushält"?
Also bei mir gibt es mit 3 Sensoren die jede Minute "feuern", seit über einem Jahr, keinerlei Probleme.
Es werden Täglich etliche png-Bilder per gnuplot erstellt und alles auf die SD-Karte geschrieben.
Meine Erfahrung:
Hallo,
wo finde ich denn die TinyTx3 und TinyRx3 .brd und .sch?
ich finde nur die für Tx4/Rx4.
Gruss
Peter
wo finde ich denn die TinyTx3 und TinyRx3 .brd und .sch?
Ich bin offenbar auch zu blind, um die Themen-Suche hier zu finden, aber direkt bei Nathan Chantrell unter dem Link Eagle files sind sie jedenfalls.
Hat zufällig schon einer den Sketch umgebaut für den RFM69CW mit DHT22 und Attiny 84? Wenn einer den Sketch Posten könnte das wäre echt super. Bekomme meinen nicht ganz umgebaut.
Danke
Gruß
Timo
QuoteHat zufällig schon einer den Sketch umgebaut für den RFM69CW mit DHT22 und Attiny 84?
vielleicht hilft der [url=https://lowpowerlab.com/forum/index.php/topic,209.msg1081.html#msg1081]Link[/url] weiter?
QuoteBekomme meinen nicht ganz umgebaut
Woran liegts?
Ich habe von hier eine Anleitung für das ganz mit dem RFM12B. Also dachte ich mir schreibe ich alles was rfm12b ist in rfm69 um. Doch leider bekomme ich noch einige Fehler weil wohl auch nicht alle befehle gleich sind?
Vorneweg ich möchte nicht rfm12b und rfm69cw zusammen benutzen sondern das ganze NUR mit dem RFM69CW realisieren.
Der Code mit dem RFM12B:
// RFM12B Sender for DHT22 Sensor
//
// Basiert zum Teil auf der Arbeit von Nathan Chantrell
//
// modified by meigrafd @ 16.12.2013
//------------------------------------------------------------------------------
#include <RFM12B.h>
#include <avr/sleep.h>
#include <DHT22.h> // https://github.com/nathanchantrell/Arduino-DHT22
//------------------------------------------------------------------------------
// You will need to initialize the radio by telling it what ID it has and what network it's on
// The NodeID takes values from 1-127, 0 is reserved for sending broadcast messages (send to all nodes)
// The Network ID takes values from 0-255
// By default the SPI-SS line used is D10 on Atmega328. You can change it by calling .SetCS(pin) where pin can be {8,9,10}
#define NODEID 20 //network ID used for this unit
#define NETWORKID 210 //the network ID we are on
#define GATEWAYID 22 //the node ID we're sending to
#define ACK_TIME 2000 // # of ms to wait for an ack
#define SENDDELAY 300000 // wait this many ms between sending packets. 300000ms = 5min
#define requestACK false // request ACK? (true/false)
//------------------------------------------------------------------------------
// PIN-Konfiguration
//------------------------------------------------------------------------------
// SENSOR pins
#define DHT22_PIN 10 // DHT sensor is connected on D10 (ATtiny pin 13)
#define DHT22_POWER 9 // DHT Power pin is connected on D9 (ATtiny pin 12)
// LED pin
#define LEDpin 8 // D8, PA2 - set to 0 to disable LED
//------------------------------------------------------------------------------
/*
+-\/-+
VCC 1| |14 GND
(D0) PB0 2| |13 AREF (D10)
(D1) PB1 3| |12 PA1 (D9)
RESET 4| |11 PA2 (D8)
INT0 PWM (D2) PB2 5| |10 PA3 (D7)
PWM (D3) PA7 6| |9 PA4 (D6)
PWM (D4) PA6 7| |8 PA5 (D5) PWM
+----+
*/
//encryption is OPTIONAL
//to enable encryption you will need to:
// - provide a 16-byte encryption KEY (same on all nodes that talk encrypted)
// - to call .Encrypt(KEY) to start encrypting
// - to stop encrypting call .Encrypt(NULL)
//#define KEY "ABCDABCDABCDABCD"
// Need an instance of the Radio Module
RFM12B radio;
// Setup the DHT
DHT22 myDHT22(DHT22_PIN);
// Variablen für Temperatur/Luftfeuchtigkeit
long temp; long humi;
// Temperatur-String zum Versand per 433 Mhz
char msg[26];
//##############################################################################
static void activityLed (byte state, byte time = 0) {
if (LEDpin) {
pinMode(LEDpin, OUTPUT);
if (time == 0) {
digitalWrite(LEDpin, state);
} else {
digitalWrite(LEDpin, state);
delay(time);
digitalWrite(LEDpin, !state);
}
}
}
// blink led
static void blink (byte pin, byte n = 3) {
if (LEDpin) {
pinMode(pin, OUTPUT);
for (byte i = 0; i < 2 * n; ++i) {
delay(100);
digitalWrite(pin, !digitalRead(pin));
}
}
}
// sec since start
static unsigned long now() {
// FIXME 49-day overflow
return millis() / 1000;
}
//--------------------------------------------------------------------------------------------------
// Read current supply voltage (in mV)
//--------------------------------------------------------------------------------------------------
long readVcc() {
bitClear(PRR, PRADC);
ADCSRA |= bit(ADEN); // Enable the ADC
long result;
// Read 1.1V reference against Vcc
#if defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0); // For ATtiny84
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); // For ATmega328
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate Vcc in mV
ADCSRA &= ~ bit(ADEN);
bitSet(PRR, PRADC); // Disable the ADC to save power
return result;
}
// init Setup
void setup() {
pinMode(DHT22_POWER, OUTPUT); // set power pin for Sensor to output
radio.Initialize(NODEID, RF12_433MHZ, NETWORKID);
#ifdef KEY
radio.Encrypt((byte*)KEY); //comment this out to disable encryption
#endif
// configure RFM12B
radio.Control(0xC040); // Adjust low battery voltage to 2.2V
radio.Sleep(); //sleep right away to save power
PRR = bit(PRTIM1); // only keep timer 0 going
analogReference(INTERNAL); // Set the aref to the internal 1.1V reference
ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
activityLed(1,1000); // LED on for 1000ms
}
// Loop
void loop() {
activityLed(1); // LED on
pinMode(DHT22_POWER, OUTPUT); // set power pin for Sensor to output
digitalWrite(DHT22_POWER, HIGH); // turn Sensor on
DHT22_ERROR_t errorCode;
delay(2500); // Kurzer Delay zur Initialisierung (DHT22 benoetigt mindestens 2 Sekunden fuer Aufwaermphase nach dem Power-On)
errorCode = myDHT22.readData(); // read data from sensor
activityLed(0); // LED off
if (errorCode == DHT_ERROR_NONE) { // data is good
int temp = (myDHT22.getTemperatureC()*100); // Get temperature reading and convert to integer, reversed at receiving end
int humi = (myDHT22.getHumidity()*100); // Get humidity reading and convert to integer, reversed at receiving end
int vcc = readVcc(); // Get supply voltage
// msg-Variable mit Daten zum Versand fuellen, die spaeter an das WebScript uebergeben werden
//snprintf(msg, 26, "v=%d&t=%d&h=%d", vcc,temp,humi);
strcpy(msg,"v=");
itoa(vcc,&msg[strlen(msg)],10);
strcat(msg,"&t=");
itoa(temp,&msg[strlen(msg)],10);
strcat(msg,"&h=");
itoa(humi,&msg[strlen(msg)],10);
radio.Wakeup();
radio.Send(GATEWAYID, (uint8_t *)msg, strlen(msg), requestACK);
radio.SendWait(2); //wait for RF to finish sending (2=standby mode)
radio.Sleep();
if (LEDpin) {
blink(LEDpin, 2); // blink LED
}
}
digitalWrite(DHT22_POWER, LOW); // turn Sensor off to save power
pinMode(DHT22_POWER, INPUT); // set power pin for Sensor to input before sleeping, saves power
delay(SENDDELAY);
}
Display More
hier das ganze Umgebaut mit den ganzen Fehlern:
// RFM12B Sender for DHT22 Sensor
//
// Basiert zum Teil auf der Arbeit von Nathan Chantrell
//
// modified by meigrafd @ 16.12.2013
//------------------------------------------------------------------------------
#include <SPI.h>
#include <RFM69.h>
#include <avr/sleep.h>
#include <DHT22.h> // https://github.com/nathanchantrell/Arduino-DHT22
//------------------------------------------------------------------------------
// You will need to initialize the radio by telling it what ID it has and what network it's on
// The NodeID takes values from 1-127, 0 is reserved for sending broadcast messages (send to all nodes)
// The Network ID takes values from 0-255
// By default the SPI-SS line used is D10 on Atmega328. You can change it by calling .SetCS(pin) where pin can be {8,9,10}
#define NODEID 20 //network ID used for this unit
#define NETWORKID 210 //the network ID we are on
#define GATEWAYID 22 //the node ID we're sending to
#define ACK_TIME 2000 // # of ms to wait for an ack
#define SENDDELAY 300000 // wait this many ms between sending packets. 300000ms = 5min
#define requestACK false // request ACK? (true/false)
//------------------------------------------------------------------------------
// PIN-Konfiguration
//------------------------------------------------------------------------------
// SENSOR pins
#define DHT22_PIN 10 // DHT sensor is connected on D10 (ATtiny pin 13)
#define DHT22_POWER 9 // DHT Power pin is connected on D9 (ATtiny pin 12)
// LED pin
#define LEDpin 8 // D8, PA2 - set to 0 to disable LED
//------------------------------------------------------------------------------
/*
+-\/-+
VCC 1| |14 GND
(D0) PB0 2| |13 AREF (D10)
(D1) PB1 3| |12 PA1 (D9)
RESET 4| |11 PA2 (D8)
INT0 PWM (D2) PB2 5| |10 PA3 (D7)
PWM (D3) PA7 6| |9 PA4 (D6)
PWM (D4) PA6 7| |8 PA5 (D5) PWM
+----+
*/
//encryption is OPTIONAL
//to enable encryption you will need to:
// - provide a 16-byte encryption KEY (same on all nodes that talk encrypted)
// - to call .Encrypt(KEY) to start encrypting
// - to stop encrypting call .Encrypt(NULL)
#define KEY "Haussteuerungkey"
// Need an instance of the Radio Module
RFM69 radio;
// Setup the DHT
DHT22 myDHT22(DHT22_PIN);
// Variablen für Temperatur/Luftfeuchtigkeit
long temp; long humi;
// Temperatur-String zum Versand per 433 Mhz
char msg[26];
//##############################################################################
static void activityLed (byte state, byte time = 0) {
if (LEDpin) {
pinMode(LEDpin, OUTPUT);
if (time == 0) {
digitalWrite(LEDpin, state);
} else {
digitalWrite(LEDpin, state);
delay(time);
digitalWrite(LEDpin, !state);
}
}
}
// blink led
static void blink (byte pin, byte n = 3) {
if (LEDpin) {
pinMode(pin, OUTPUT);
for (byte i = 0; i < 2 * n; ++i) {
delay(100);
digitalWrite(pin, !digitalRead(pin));
}
}
}
// sec since start
static unsigned long now() {
// FIXME 49-day overflow
return millis() / 1000;
}
//--------------------------------------------------------------------------------------------------
// Read current supply voltage (in mV)
//--------------------------------------------------------------------------------------------------
long readVcc() {
bitClear(PRR, PRADC);
ADCSRA |= bit(ADEN); // Enable the ADC
long result;
// Read 1.1V reference against Vcc
#if defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0); // For ATtiny84
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); // For ATmega328
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate Vcc in mV
ADCSRA &= ~ bit(ADEN);
bitSet(PRR, PRADC); // Disable the ADC to save power
return result;
}
// init Setup
void setup() {
pinMode(DHT22_POWER, OUTPUT); // set power pin for Sensor to output
radio.initialize(NODEID, RF69_868MHZ, NETWORKID);
#ifdef KEY
radio.encrypt(KEY); //comment this out to disable encryption
#endif
// configure RFM12B
radio.control(0xC040); // Adjust low battery voltage to 2.2V
radio.sleep(); //sleep right away to save power
PRR = bit(PRTIM1); // only keep timer 0 going
analogReference(INTERNAL); // Set the aref to the internal 1.1V reference
ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
activityLed(1,1000); // LED on for 1000ms
}
// Loop
void loop() {
activityLed(1); // LED on
pinMode(DHT22_POWER, OUTPUT); // set power pin for Sensor to output
digitalWrite(DHT22_POWER, HIGH); // turn Sensor on
DHT22_ERROR_t errorCode;
delay(2500); // Kurzer Delay zur Initialisierung (DHT22 benoetigt mindestens 2 Sekunden fuer Aufwaermphase nach dem Power-On)
errorCode = myDHT22.readData(); // read data from sensor
activityLed(0); // LED off
if (errorCode == DHT_ERROR_NONE) { // data is good
int temp = (myDHT22.getTemperatureC()*100); // Get temperature reading and convert to integer, reversed at receiving end
int humi = (myDHT22.getHumidity()*100); // Get humidity reading and convert to integer, reversed at receiving end
int vcc = readVcc(); // Get supply voltage
// msg-Variable mit Daten zum Versand fuellen, die spaeter an das WebScript uebergeben werden
snprintf(msg, 26, "v=%d&t=%d&h=%d", vcc,temp,humi);
strcpy(msg,"v=");
itoa(vcc,&msg[strlen(msg)],10);
strcat(msg,"&t=");
itoa(temp,&msg[strlen(msg)],10);
strcat(msg,"&h=");
itoa(humi,&msg[strlen(msg)],10);
radio.wakeup();
radio.send(GATEWAYID, (uint8_t *)msg, strlen(msg), requestACK);
radio.SendWait(2); //wait for RF to finish sending (2=standby mode)
radio.sleep();
if (LEDpin) {
blink(LEDpin, 2); // blink LED
}
}
digitalWrite(DHT22_POWER, LOW); // turn Sensor off to save power
pinMode(DHT22_POWER, INPUT); // set power pin for Sensor to input before sleeping, saves power
delay(SENDDELAY);
}
Display More
Hier die Fehler die ich bekomme:
/usr/share/arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny84 -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -D__PROG_TYPES_COMPAT__ -I/root/sketchbook/hardware/tiny/cores/tiny -I/usr/share/arduino/libraries/SPI -I/root/sketchbook/libraries/RFM69 -I/root/sketchbook/libraries/DHT22 /tmp/build3231891707075759553.tmp/Send.cpp -o /tmp/build3231891707075759553.tmp/Send.cpp.o
In file included from /root/sketchbook/hardware/tiny/cores/tiny/Stream.h:24:0,
from /root/sketchbook/hardware/tiny/cores/tiny/TinyDebugSerial.h:31,
from /root/sketchbook/hardware/tiny/cores/tiny/WProgram.h:18,
from /root/sketchbook/hardware/tiny/cores/tiny/Arduino.h:4,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from Send.ino:7:
/root/sketchbook/hardware/tiny/cores/tiny/Print.h:37:0: warning: "BIN" redefined [enabled by default]
#define BIN 2
^
In file included from /usr/lib/avr/include/avr/iotn84.h:38:0,
from /usr/lib/avr/include/avr/io.h:434,
from /usr/lib/avr/include/avr/interrupt.h:38,
from /root/sketchbook/hardware/tiny/cores/tiny/WProgram.h:8,
from /root/sketchbook/hardware/tiny/cores/tiny/Arduino.h:4,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from Send.ino:7:
/usr/lib/avr/include/avr/iotnx4.h:71:0: note: this is the location of the previous definition
#define BIN 7
^
In file included from Send.ino:7:0:
/usr/share/arduino/libraries/SPI/SPI.h: In static member function ‘static byte SPIClass::transfer(byte)’:
/usr/share/arduino/libraries/SPI/SPI.h:56:3: error: ‘SPDR’ was not declared in this scope
SPDR = _data;
^
/usr/share/arduino/libraries/SPI/SPI.h:57:12: error: ‘SPSR’ was not declared in this scope
while (!(SPSR & _BV(SPIF)))
^
In file included from /usr/lib/avr/include/avr/io.h:99:0,
from /usr/lib/avr/include/avr/interrupt.h:38,
from /root/sketchbook/hardware/tiny/cores/tiny/WProgram.h:8,
from /root/sketchbook/hardware/tiny/cores/tiny/Arduino.h:4,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from Send.ino:7:
/usr/share/arduino/libraries/SPI/SPI.h:57:23: error: ‘SPIF’ was not declared in this scope
while (!(SPSR & _BV(SPIF)))
^
In file included from Send.ino:7:0:
/usr/share/arduino/libraries/SPI/SPI.h: In static member function ‘static void SPIClass::attachInterrupt()’:
/usr/share/arduino/libraries/SPI/SPI.h:63:3: error: ‘SPCR’ was not declared in this scope
SPCR |= _BV(SPIE);
^
In file included from /usr/lib/avr/include/avr/io.h:99:0,
from /usr/lib/avr/include/avr/interrupt.h:38,
from /root/sketchbook/hardware/tiny/cores/tiny/WProgram.h:8,
from /root/sketchbook/hardware/tiny/cores/tiny/Arduino.h:4,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from Send.ino:7:
/usr/share/arduino/libraries/SPI/SPI.h:63:15: error: ‘SPIE’ was not declared in this scope
SPCR |= _BV(SPIE);
^
In file included from Send.ino:7:0:
/usr/share/arduino/libraries/SPI/SPI.h: In static member function ‘static void SPIClass::detachInterrupt()’:
/usr/share/arduino/libraries/SPI/SPI.h:67:3: error: ‘SPCR’ was not declared in this scope
SPCR &= ~_BV(SPIE);
^
In file included from /usr/lib/avr/include/avr/io.h:99:0,
from /usr/lib/avr/include/avr/interrupt.h:38,
from /root/sketchbook/hardware/tiny/cores/tiny/WProgram.h:8,
from /root/sketchbook/hardware/tiny/cores/tiny/Arduino.h:4,
from /usr/share/arduino/libraries/SPI/SPI.h:15,
from Send.ino:7:
/usr/share/arduino/libraries/SPI/SPI.h:67:16: error: ‘SPIE’ was not declared in this scope
SPCR &= ~_BV(SPIE);
^
In file included from Send.ino:8:0:
/root/sketchbook/libraries/RFM69/RFM69.h: At global scope:
/root/sketchbook/libraries/RFM69/RFM69.h:36:33: error: ‘SS’ was not declared in this scope
#define RF69_SPI_CS SS // SS is the SPI slave select pin, for instance D10 on ATmega328
^
/root/sketchbook/libraries/RFM69/RFM69.h:90:34: note: in expansion of macro ‘RF69_SPI_CS’
RFM69(uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t interruptPin=RF69_IRQ_PIN, bool isRFM69HW=false, uint8_t interruptNum=RF69_IRQ_NUM) {
^
Send.ino:51:7: error: call to ‘RFM69::RFM69(uint8_t, uint8_t, bool, uint8_t)’ uses the default argument for parameter 1, which is not yet defined
Send.ino: In function ‘void setup()’:
Send.ino:125:9: error: ‘class RFM69’ has no member named ‘control’
Send.ino:130:21: warning: large integer implicitly truncated to unsigned type [-Woverflow]
Send.ino: In function ‘void loop()’:
Send.ino:157:11: error: ‘class RFM69’ has no member named ‘wakeup’
Send.ino:159:11: error: ‘class RFM69’ has no member named ‘SendWait’
Send.ino: At global scope:
Send.ino:88:22: warning: ‘long unsigned int now()’ defined but not used [-Wunused-function]
Display More
Mit diesem RFM69_f funktioniert's bei mir nach einigen Anpassungen (bitte selber an die passenden Stellen verteilen):
#define USE_RFM69
#ifndef USE_RFM69
#include <RFM12B.h>
#else
#include <RFM69registers.h> // for the constants in setRFM12compatibility()
#include <RFM69_f.h> // https://github.com/flabbergast/RFM69/tree/attiny
// #include <RFM69_ATC.h> // https://github.com/LowPowerLab/RFM69
// #define ENABLE_ATC //comment out this line to disable AUTO TRANSMISSION CONTROL
// #define RF_TX_POWER 17 // 0-31, the Tx power is -18+value (max 13) dB
#endif
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_RFM69
#ifdef ENABLE_ATC
RFM69_ATC radio;
#else
RFM69 radio;
#endif
#else
RFM12B radio;
#endif
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_RFM69
void setRFM12compatibility() {
// Wenn die Sender 0x7F als AIRKBPS benutzen:
// radio.writeReg(REG_BITRATEMSB, RF_BITRATEMSB_CUSTOM);
// radio.writeReg(REG_BITRATELSB, RF_BITRATELSB_CUSTOM);
// https://github.com/LowPowerLab/RFM12B/pull/11
// The frequency for the RF12 transceiver is set by ::RF12_initialise -
// the 5th argument is airKBPS. A value of 8 corresponds to 38323 Hz.
radio.writeReg(REG_BITRATEMSB, RF_BITRATEMSB_38323);
radio.writeReg(REG_BITRATELSB, RF_BITRATELSB_38323);
}
#endif
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_RFM69
radio.initialize(RF69_433MHZ, NODEID, NETWORKID);
#ifdef ENABLE_ATC
//Auto Transmission Control - dials down transmit power to save battery (-100 is the noise floor, -90 is still pretty good)
//For indoor nodes that are pretty static and at pretty stable temperatures (like a MotionMote) -90dBm is quite safe
//For more variable nodes that can expect to move or experience larger temp drifts a lower margin like -70 to -80 would probably be better
//Always test your ATC mote in the edge cases in your own environment to ensure ATC will perform as you expect
radio.enableAutoPower(-90);
#else
// adjust the TX output to save power
// radio.setPowerLevel(RF_TX_POWER);
#endif
setRFM12compatibility();
#else
radio.Initialize(NODEID, RF12_433MHZ, NETWORKID, 0, AIRKBPS, RF12_2v75);
#ifdef KEY
radio.Encrypt((byte*)KEY); //comment this out to disable encryption
#endif
#endif
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_RFM69
radio.sleep(); //sleep right away to save power
#else
radio.Sleep(); //sleep right away to save power
#endif
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_RFM69
// wakeup braucht's wohl nicht
radio.sendWithRetry(GATEWAYID, msg, strlen(msg));
#else
radio.Wakeup();
radio.Send(GATEWAYID, (uint8_t *)msg, strlen(msg), requestACK);
radio.SendWait(2); // wait for RF to finish sending (2=standby mode)
#endif
Display More
Das setRFM12compatibility() stellt die Frequenz so ein, dass sie zu diesem RFM12B von aanon4 mit RF69_COMPAT passt. Wenn Du nur lauter RFM69 hast, brauchst Du das nicht (schadet aber auch nicht).
Bei mir hat nur der Empfänger einen RFM69CW, alle Sender sind RFM12B mit RF69_COMPAT. Ich habe nur jetzt testweise einen ATtiny84, einen RFM69CW und einen DHT22 auf einem Breadboard zusammengestöpselt.
Nachteile vom RFM69CW:
Vorteile vom RFM69CW:
Ich habe von hier eine Anleitung für das ganz mit dem RFM12B. Also dachte ich mir schreibe ich alles was rfm12b ist in rfm69 um.// Basiert zum Teil auf der Arbeit von Nathan Chantrell
//
// modified by meigrafd @ 16.12.2013
//------------------------------------------------------------------------------
Hallo,
die von Dir genannte Sketch-Quelle ist eher ein "reproduzierender Künstler". Wie man aus den Sketch sieht, stammt er nämlich genau von hier. Auch wurde hier das Thema RFM69 schon diskutiert. Nimm Dir einfach mal ne Stunde Zeit und blättere die 100 Seiten durch. Du wirst sehr viel für Dein Projekt erfahren und es vor allem dann auch super verstanden haben.
Tecki-KA
Display More
Hallo Luetzel,
der Sensor ist einfach nicht betauungsresistent und somit im Aussenbereich ungeeignet, das ergaben jedenfalls meine Recherchen.
Ich habe meinen Aussensensor jetzt durch einen SHT21 mit Filterkappe ersetzt -
http://emsystech.de/produkte/feuchtigkeitssensor-sht21 - der funktioniert prima, zeigt allerdings bei voller Feuchte manchmal Werte über 100% - das steht auch im Datenblatt und muss ggf softwaremässig begrenzt werden.
Der SHT21 wird normalerweise per i2c angesprochen, ist allerdings abwärtskompatibel zum SHT11 bzw SHT15 - in dem Modus bekam ich dann ein lauffähiges Sketch hin.
(Es gibt übrigens noch mehrere Typen aus der SHT-Reihe, u.a. auch mit Heizung!)
Tach'chen,
auch wenn Deine Antwort nun schon etwas länger zurück liegt: Ich wollte über Weihnachten das "SHT21 Projekt" in Angriff nehmen und meinen DHT22 ersetzten.
Hast Du den SHT21 an den TinyTX4 angeschlossen, und wenn ja, wie hast Du das "Problem" mit dem i2c gelöst?
Die dafür notwendigen Pins werden wie weiter oben im Thread beschrieben ja nicht herausgeführt, bzw. bereits vom RFM12B verwendet.
Grüsse,
/luetzel
Hallo,
nachdem ich einen Sender aufgebaut und programmiert habe, habe ich beim Programmieren des Empfängers RX4 leider eine Fehlermeldung, die ich nicht korrigieren kann.
Umgebung: Arduino Uno mit Arduino 1.6.5
Empfänger TinyRX4
Es kommt beim Kompilieren immer die Fehlermeldung:
Arduino: 1.6.5 (Windows 7), Platine: "ATtiny84 @ 8 MHz"
Die Fremdhersteller-platform.txt definiert keinen compiler.path. Bitte melden Sie dies an den Fremdhersteller.
Build-Optionen wurden verändert, alles wird neu gebaut
Verwende die Bibliothek RFM12B im Ordner: C:\Sketches\libraries\RFM12B (legacy)
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10605 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Sketches\hardware\tiny\avr\cores\tiny -IC:\Sketches\hardware\tiny\avr\variants\tiny8 -IC:\Sketches\libraries\RFM12B C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp -o C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp.o
Receive_PI.ino:11:28: fatal error: SoftwareSerial.h: No such file or directory
compilation terminated.
Fehler beim Kompilieren.
Display More
Die Verzeichnisse habe ich kontrolliert und existieren. Ein ähnliches Problem ist bei https://nathan.chantrell.net/tinytx-wireless-sensor/ mit einem Beitrag vom Dezember 2013 ebenfalls beschrieben. Hier im Beitrag auf der Seite 87 gibt es ebenso einen Beitrag und Lösungsansatz, den ich leider nicht umsetzen kann. Bei der Auswahl eines anderen Boards (Arduino Uno) kommt es nicht zu der oben genannten Fehlermeldung.
Welche Möglichkeit habe ich, den Code Receive_PI.iso korrekt zu kompiilieren?
Ich wäre für eine Hilfestellung dankbar.
Andreas
Display More
Hallo,nachdem ich einen Sender aufgebaut und programmiert habe, habe ich beim Programmieren des Empfängers RX4 leider eine Fehlermeldung, die ich nicht korrigieren kann.
Umgebung: Arduino Uno mit Arduino 1.6.5
Empfänger TinyRX4Es kommt beim Kompilieren immer die Fehlermeldung:
Code Display MoreArduino: 1.6.5 (Windows 7), Platine: "ATtiny84 @ 8 MHz" Die Fremdhersteller-platform.txt definiert keinen compiler.path. Bitte melden Sie dies an den Fremdhersteller. Build-Optionen wurden verändert, alles wird neu gebaut Verwende die Bibliothek RFM12B im Ordner: C:\Sketches\libraries\RFM12B (legacy) C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10605 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Sketches\hardware\tiny\avr\cores\tiny -IC:\Sketches\hardware\tiny\avr\variants\tiny8 -IC:\Sketches\libraries\RFM12B C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp -o C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp.o Receive_PI.ino:11:28: fatal error: SoftwareSerial.h: No such file or directory compilation terminated. Fehler beim Kompilieren.Die Verzeichnisse habe ich kontrolliert und existieren. Ein ähnliches Problem ist bei https://nathan.chantrell.net/tinytx-wireless-sensor/ mit einem Beitrag vom Dezember 2013 ebenfalls beschrieben. Hier im Beitrag auf der Seite 87 gibt es ebenso einen Beitrag und Lösungsansatz, den ich leider nicht umsetzen kann. Bei der Auswahl eines anderen Boards (Arduino Uno) kommt es nicht zu der oben genannten Fehlermeldung.
Welche Möglichkeit habe ich, den Code Receive_PI.iso korrekt zu kompiilieren?
Ich wäre für eine Hilfestellung dankbar.
Andreas
Hallo Andreas,
SoftwareSerial.h ist Bestandteil der TinyCore files und die scheinen bei Dir zu fehlen oder sind nicht korrekt installiert.Vielleicht verwendest Du eine Version, die noch nicht mit dem Board Manager der IDE ab 1.6.5 zusammenspielt.
Schau mal nach ob in "hardware > tiny > avr > libraries" die Datei SoftwareSerial.h existiert. Wenn nicht, dann würde ich noch mal versuchen manuell oder mit dem Boards-Manager die CoreFiles
zu installieren.
Die von "FemtoCow" sollten funktionieren. Siehe hier: https://github.com/arduino/Arduin…ds-support-urls
Schöne Weihnachten,
/luetzel
Hallo Luetzel,
vielen Dank für Deinen Hinweis.
Durch das Einfügen der beiden Dateien Softwareserial.cpp und Softwareserial.h in den Pfad ...Sketches/hardware/tiny/avr/cores/tiny hat sich die Fehlermeldung
Arduino: 1.6.5 (Windows 7), Platine: "ATtiny84 @ 8 MHz"
Die Fremdhersteller-platform.txt definiert keinen compiler.path. Bitte melden Sie dies an den Fremdhersteller.
Build-Optionen wurden verändert, alles wird neu gebaut
Verwende die Bibliothek RFM12B im Ordner: C:\Sketches\libraries\RFM12B (legacy)
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10605 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Sketches\hardware\tiny\avr\cores\tiny -IC:\Sketches\hardware\tiny\avr\variants\tiny8 -IC:\Sketches\libraries\RFM12B C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp -o C:\Users\Admin\AppData\Local\Temp\build6949902550379734414.tmp\Receive_PI.cpp.o
Receive_PI.ino:11:28: fatal error: SoftwareSerial.h: No such file or directory
compilation terminated.
Fehler beim Kompilieren.
Display More
in die neue Fehlermeldung geändert.
Arduino: 1.6.5 (Windows 7), Platine: "ATtiny84 @ 8 MHz"
Die Fremdhersteller-platform.txt definiert keinen compiler.path. Bitte melden Sie dies an den Fremdhersteller.
Verwende die Bibliothek RFM12B im Ordner: C:\Sketches\libraries\RFM12B (legacy)
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny84 -DF_CPU=8000000L -DARDUINO=10605 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Sketches\hardware\tiny\avr\cores\tiny -IC:\Sketches\hardware\tiny\avr\variants\tiny8 -IC:\Sketches\libraries\RFM12B C:\Users\Admin\AppData\Local\Temp\build1000515142219231132.tmp\Receive_PI.cpp -o C:\Users\Admin\AppData\Local\Temp\build1000515142219231132.tmp\Receive_PI.cpp.o
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:14:5: error: stray '\302' in program
<title>Arduino/SoftwareSerial.h at master · arduino/Arduino · GitHub</title>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:14:5: error: stray '\267' in program
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:14:5: error: stray '\302' in program
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:14:5: error: stray '\267' in program
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:99:7: error: missing terminating ' character
<!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/arduino/Arduino/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/arduino/Arduino/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
^
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:252:46: error: invalid suffix "b902821f86dbd6e5c66c96a3ba4a45" on integer constant
<!-- blob contrib key: blob_contributors:v21:16b902821f86dbd6e5c66c96a3ba4a45 -->
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:300:21: error: too many decimal points in number
ide-1.0.x
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:310:21: error: too many decimal points in number
ide-1.5.x
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:384:31: error: invalid digit "9" in octal constant
title="0019">0019</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:393:31: error: invalid digit "8" in octal constant
title="0018">0018</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:474:31: error: invalid digit "9" in octal constant
title="0009">0009</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:483:31: error: invalid digit "8" in octal constant
title="0008">0008</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:546:32: error: too many decimal points in number
title="1.6.7">1.6.7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:555:32: error: too many decimal points in number
title="1.6.6">1.6.6</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:564:32: error: too many decimal points in number
title="1.6.5">1.6.5</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:573:35: error: too many decimal points in number
title="1.6.5-r5">1.6.5-r5</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:582:35: error: too many decimal points in number
title="1.6.5-r4">1.6.5-r4</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:591:35: error: too many decimal points in number
title="1.6.5-r3">1.6.5-r3</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:600:35: error: too many decimal points in number
title="1.6.5-r2">1.6.5-r2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:609:32: error: too many decimal points in number
title="1.6.4">1.6.4</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:618:32: error: too many decimal points in number
title="1.6.3">1.6.3</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:627:32: error: too many decimal points in number
title="1.6.2">1.6.2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:636:32: error: too many decimal points in number
title="1.6.1">1.6.1</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:645:32: error: too many decimal points in number
title="1.6.0">1.6.0</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:654:35: error: too many decimal points in number
title="1.6.0rc3">1.6.0rc3</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:663:35: error: too many decimal points in number
title="1.6.0rc2">1.6.0rc2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:672:48: error: too many decimal points in number
title="1.6.0rc2-macosx-java7">1.6.0rc2-macosx-java7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:681:35: error: too many decimal points in number
title="1.6.0rc1">1.6.0rc1</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:690:48: error: too many decimal points in number
title="1.6.0rc1-macosx-java7">1.6.0rc1-macosx-java7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:699:32: error: too many decimal points in number
title="1.5.8">1.5.8</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:708:45: error: too many decimal points in number
title="1.5.8-macosx-java7">1.5.8-macosx-java7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:717:32: error: too many decimal points in number
title="1.5.7">1.5.7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:726:45: error: too many decimal points in number
title="1.5.7-macosx-java7">1.5.7-macosx-java7</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:735:32: error: too many decimal points in number
title="1.5.6">1.5.6</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:744:35: error: too many decimal points in number
title="1.5.6-r2">1.5.6-r2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:753:32: error: too many decimal points in number
title="1.5.5">1.5.5</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:762:35: error: too many decimal points in number
title="1.5.5-r2">1.5.5-r2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:771:32: error: too many decimal points in number
title="1.5.4">1.5.4</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:780:35: error: too many decimal points in number
title="1.5.4-r2">1.5.4-r2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:789:32: error: too many decimal points in number
title="1.5.3">1.5.3</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:798:32: error: too many decimal points in number
title="1.5.2">1.5.2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:807:32: error: too many decimal points in number
title="1.5.1">1.5.1</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:825:32: error: too many decimal points in number
title="1.0.6">1.0.6</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:834:32: error: too many decimal points in number
title="1.0.5">1.0.5</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:843:35: error: too many decimal points in number
title="1.0.5-r2">1.0.5-r2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:852:32: error: too many decimal points in number
title="1.0.4">1.0.4</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:861:32: error: too many decimal points in number
title="1.0.3">1.0.3</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:870:32: error: too many decimal points in number
title="1.0.2">1.0.2</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:879:32: error: too many decimal points in number
title="1.0.1">1.0.1</a>
^
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:951:11: error: missing terminating " character
<a href="/arduino/Arduino/commit/7380750a693557f56911dd873c4c7dbde0070b00" class="message" data-pjax="true" title="Remove tx_pin_write from SoftwareSerial.h
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:953:1: error: stray '\342' in program
It’s not implemented anywhere and unused.">Remove tx_pin_write from SoftwareSerial.h</a>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:953:1: error: stray '\200' in program
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:953:1: error: stray '\231' in program
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:953:1: error: missing terminating " character
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1167:70: error: stray '#' in program
<td id="LC32" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">ifndef</span> SoftwareSerial_h</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1171:70: error: stray '#' in program
<td id="LC33" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">SoftwareSerial_h</span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1180:70: error: stray '#' in program
<td id="LC35" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>inttypes.h<span class="pl-pds">></span></span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1184:70: error: stray '#' in program
<td id="LC36" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>Stream.h<span class="pl-pds">></span></span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1210:70: error: stray '#' in program
<td id="LC42" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">_SS_MAX_RX_BUFF</span> <span class="pl-c1">64</span> <span class="pl-c">// RX buffer size</span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1214:70: error: stray '#' in program
<td id="LC43" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">ifndef</span> GCC_VERSION</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1218:70: error: stray '#' in program
<td id="LC44" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">GCC_VERSION</span> (__GNUC__ * <span class="pl-c1">10000</span> + __GNUC_MINOR__ * <span class="pl-c1">100</span> + __GNUC_PATCHLEVEL__)</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1222:70: error: stray '#' in program
<td id="LC45" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1501:71: error: stray '#' in program
<td id="LC112" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> int</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1505:71: error: stray '#' in program
<td id="LC113" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> char</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1509:71: error: stray '#' in program
<td id="LC114" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> long</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1513:71: error: stray '#' in program
<td id="LC115" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> byte</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1517:71: error: stray '#' in program
<td id="LC116" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> float</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1521:71: error: stray '#' in program
<td id="LC117" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> abs</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1525:71: error: stray '#' in program
<td id="LC118" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">undef</span> round</td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1534:71: error: stray '#' in program
<td id="LC120" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1544:3: error: missing terminating ' character
<!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
^
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:5:1: error: expected unqualified-id before '<' token
<!DOCTYPE html>
^
In file included from Receive_PI.ino:11:0:
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1180:149: error: expected unqualified-id before '<' token
<td id="LC35" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>inttypes.h<span class="pl-pds">></span></span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1180:191: error: expected unqualified-id before '<' token
<td id="LC35" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>inttypes.h<span class="pl-pds">></span></span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1184:149: error: expected unqualified-id before '<' token
<td id="LC36" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>Stream.h<span class="pl-pds">></span></span></td>
^
C:\Sketches\hardware\tiny\avr\cores\tiny/SoftwareSerial.h:1184:189: error: expected unqualified-id before '<' token
<td id="LC36" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>Stream.h<span class="pl-pds">></span></span></td>
^
Fehler beim Kompilieren.
Display More
Programmieren möchte ich den Empfänger mit dem Code "Receiver.iso"
Ich bin gerade etwas am Grübeln, warum es offensichtlich Anderen gelungen ist, die Platinen (Tiny bereits aufgelötet) zu programmieren und bei mir so viele Fehler auftauchen. Ich versuche, mich möglichst an die Anleitung aus den beiden Seiten [Messen, Steuern, Regeln] Batteriebetriebene Funk Sensoren zu halten. Gibt es denn eventuell eine detaillierte Anleitung? Ich habe zwar schon viele Seiten aus dem Entwicklungsthreat gelesen, mit 100 Seiten ist dieser aber nicht mehr ganz kompakt und nach 10 Seiten hat man wieder vieles aus der Fülle der Informationen vermischt.
Vielen Dank für Eure Antworten.
Andreas
Was macht denn der HTML Code in der Fehlermeldung? :s So wie das für mich aussieht hast du die fraglichen SoftwareSerial Dateien falsch gezogen.
Wie von luetzel beschrieben musst du den Boards-Manager von Arduino-IDE 1.6 verwenden um dann https://dl.dropboxusercontent.com/u/2807353/femt…tiny_index.json zu installieren.
Was macht denn der HTML Code in der Fehlermeldung? :s So wie das für mich aussieht hast du die fraglichen SoftwareSerial Dateien falsch gezogen.
Wie von luetzel beschrieben musst du den Boards-Manager von Arduino-IDE 1.6 verwenden um dann https://dl.dropboxusercontent.com/u/2807353/femt…tiny_index.json zu installieren.
Hallo,
vielen Dank erstmal für Eure Hilfestellungen.
Ich konnte die vielen Fehlermeldungen beim Kopilieren und auf den Tiny schreiben beseitigen. Die Fehlerursache lag einzig bei den Einstellungen in Arduino.
Vielleicht hilft es dem Einen oder Anderen, der vor ähnlichen Herausforderungen steht?
Meine Einstellungen:
Arduino 1.6.5
Boardmanager: ATtiny Microcontrollers
Platine: ATtiny
Prozessor: ATtiny84
Clock: 8 MHZ (internal)
Bibliotheken: siehe Anhang 1-3
Boardmanager „https://raw.githubusercontent.com/damellis/attin…tiny_index.json“
Nun zum zweiten Teil des Beitrages....
Ich habe die "Einrichtung auf dem RaspberryPI" befolgt und u.a. jpgraph in der beschriebenen Version installiert.
Wähle ich auf dem Laptop die 192.168.178.32/Sensor/ an, bekomme ich im Firefox nur einen weißen Billdschirm. Die IP ist korrekt, da RPI Monitor funktioniert. Die Verzeichnisse auf dem Raspi unter /var/www/Sensor habe ich beigefügt.
Meine Frage: wird die Seite IP/Sensor/ auch angezeigt, wenn keine Daten empfangen wurden?
Vielen Dank
Andreas
Die Dateien in /var/www/ haben nichts mit Arduino-IDE zu tun. Nicht mal Ansatzweise ![]()
In /var/www/ ( bzw seit Raspbian Jessie /var/www/html/ ) liegen erst mal nur ganz normale Webseiten-Dateien.
Wenn noch keine Datensätze in der Datenbank vorhanden sind (oder allgemein die Datenbank Datei noch nicht existiert) wird ausschließlich folgendes angezeigt:
Wenn aber selbst das bei Dir nicht angezeigt wird, liegt das Problem wo anders:
- Liegen die Dateien im DocumentRoot deines Webservers? -> Mit apache2 prüft man das in der "default" Konfigurationsdatei: /etc/apache2/sites-available/default
- Wem gehören die Dateien? Der Webserver läuft über den Benutzer "www-data", welcher auch die Datei- und Verzeichnis-Rechte haben muss.
- Tritt evtl. ein anderer Fehler auf? Apache2 protokolliert Fehler in die Datei /var/log/apache2/error.log
TIPP1: In /var/www/ ( bzw seit Raspbian Jessie /var/www/html/ ) liegen erst mal nur ganz normale Webseiten-Dateien.
TIPP2: Liegen die Dateien im DocumentRoot deines Webservers? -> Mit apache2 prüft man das in der "default" Konfigurationsdatei: /etc/apache2/sites-available/default
TIPP3: Wem gehören die Dateien? Der Webserver läuft über den Benutzer "www-data", welcher auch die Datei- und Verzeichnis-Rechte haben muss.
TIPP4: Tritt evtl. ein anderer Fehler auf? Apache2 protokolliert Fehler in die Datei /var/log/apache2/error.log
Hallo meigrafd,
kannst Du Deine o.g. Tipps bitte auch in
Batteriebetriebene Funk Sensoren
einbauen? Ich bin bekanntlich Anfang 11/2015 in die "Jessie-Falle" getappt und hätte mit Deinen 4 Tipps viel Zeit gespart.
Allerdings habe ich bei der Fehlersuche und mit dem Hinweis aus Deiner PN auch viel über die Struktur von Raspbian und Apache gelernt... :thumbs1: :thumbs1:
Don’t have an account yet? Register yourself now and be a part of our community!