attiny84 RFM12

Hallo zusammen,
ich suche jetzt seit 3 Stunden planlos herum und komme zu keiner Lösung.
Ich möchte gerne mit einem attiny84 über einen rfm12b mittels JeeLib.h ein Datenpaket empfangen, auswerten, eine LED ein- oder ausschalten und ein ACK zurücksenden.
Habe mit einem Nano-Clone keine Probleme gehabt, aber der tiny84 stellt mich vor echte Probleme. Ich bekomme folgende Fehlermeldung beim kompilieren:

In file included from C:\Users\*****\Documents\Arduino\libraries\jeelib-master/JeeLib.h:17:0,

                 from C:\Users\*****\Desktop\CowMarker_Client\CowMarker_Client_V1\CowMarker_Client_V1.ino:3:

C:\Users\*****\Documents\Arduino\libraries\jeelib-master/Ports.h:730:49: error: 'Serial' was not declared in this scope

     InputParser (byte size, Commands*, Stream& =Serial);

                                                 ^

C:\Users\*****\Documents\Arduino\libraries\jeelib-master/Ports.h:731:60: error: 'Serial' was not declared in this scope

     InputParser (byte* buf, byte size, Commands*, Stream& =Serial);

SoftwareSerial habe ich probiert, ändert nichts.

Ich habe mittlerweile sogar schon ein "laufendes Beispiel" für eine DHT22 runtergeladen, aber das kommt zur gleichen Fehlermeldung.

Kann mir hier jemand helfen?

Gruß
Matze

PS.: Ich benötige keine Serielle ausgabe an der Seite, die dürfte also rausfliegen...

Matahari:
PS.: Ich benötige keine Serielle ausgabe an der Seite, die dürfte also rausfliegen...

Die meckert er aber an.
Zeige doch deinen Sketch, damit wir das prüfen können.

Er macht es schon mit minimalem Code...

#include <JeeLib.h>

const long collarID=514;

void setup() {
  // node 10, group 212, 433 MHz
  rf12_initialize(10, RF12_433MHZ, 212);
}

void loop() {
  if (rf12_recvDone()){    
    if (rf12_crc == 0) {
      byte n = rf12_len;

      if (n>0){
         if(long(rf12_data[0]) + (long(rf12_data[1])*(256)) == collarID){
            rf12_sendStart(RF12_ACK_REPLY, 0, 0);

               /*  
                     LED´s schalten
              */ 
 }}}}}

Dann sieh dir die Jeelib mal an, die ist vermutlich der Übeltäter und nicht für den ATtiny geeignet.

Sieh dir mal die Beispiele in der Library an.
So wie ich es sehe, musst du im Sketch bekannt geben, dass du einen ATtiny verwendest.

Dafür sind die Beispiele da.

Ich finde nichts, aber es gibt fertige Projekte...

:frowning:

Ich finde kein Beispiel in der Lib, was bei mir funktioniert.

Kann irgendjemand etwas konkretes dazu sagen, wo ich etwas eintragen muss?

Danke
Matze

Matahari:
Ich finde kein Beispiel in der Lib, was bei mir funktioniert.

Schön, aber das ist die selbe Beschreibung wie "Es geht nicht" und sagt soviel wie NICHTS.

Warum postest du nicht mal, welche Library du verwendest ?

Ich benutze die JeeLib (GitHub - jeelabs/jeelib: JeeLib for Arduino IDE: Ports, RF12, and RF69 drivers from JeeLabs) und die aktuelle Arduino-Version (1.8.5)

Matahari:
Ich benutze die JeeLib (GitHub - jeelabs/jeelib: JeeLib for Arduino IDE: Ports, RF12, and RF69 drivers from JeeLabs) und die aktuelle Arduino-Version (1.8.5)

Und genau in der findet du die RF12demo.ino, da sind entsprechende Einstellungen vorhanden.

Richtig, in dem Beispiel sieht etwas so aus, als wäre es dafür gedacht. Aber wie gesagt - keines der Beispiele aus der Lib, das beinhaltet auch dieses, läuft durch.
Ich bekomme bei jedem den Hinweis auf den fehlenden seriellen Anschluss.

Hat jemand ein ähnliches System am laufen und kann mir sagen mit welchen Versionen es bei ihm klappt?

Gruß
Matze

Matahari:
....
Ich bekomme bei jedem den Hinweis auf den fehlenden seriellen Anschluss.
.....

Dann beschreibe doch mal, was genau du vorhast und warum mit der Jeelib ?

Ok.
Ich möchte von einer zentralen Stelle ein Signal an n einzeln adressierbare Endgeräte (batteriebetrieben) senden die dann, entsprechend des jeweiligen Signals, einen Ausgang High oder Low schalten.

Die sendende Seite ist im Moment, und wohl auch final weil es egal ist, ein Arduino Nano der Seriell ein Signal bekommt. Meine Testclients sind im Moment auch Nanos, allerdings muss für den batteriebetrieb etwas sparsameres her.

Basis -> 24bit Paket, 16 Adresse & 8 Aktion -> Client prüft Adresse -> zutreffend -> Ausgang schalten -> ACK -> Basis

Das ganze läuft jeweils pro Client, es wird solange gesendet bis der ACK kommt.

jeelib - es war die erste die da war und sie lief auf anhieb mit dem Nano. Im Grunde ist es mir egal, ich wollte das Rad aber nicht neu erfinden.

Ok, verstehe das jetzt.
Du bist also nicht auf die Library festgelegt.
Wie ist es mit den Funkmodulen ?
Hast du schon mal andere getestet ?

Ich hatte anfangs rfm01 und 02, aber ohne ack machte es wenig sinn. Grundsätzlich bin ich nicht festgelegt, ich habe jetzt allerdings erstmal 10 davon bestellt und die Konditionen bei großen Stückzahlen im Direktvertrieb sind sehr gut.
Festgelegt bin ich also nur bedingt...
Mit dem Nano laufen sie halt wie verrückt.

Dann solltest du es mit einer anderen Library testen.
z.B. diese hier.

Hallo,
ich habe mich jetzt mit der Lib beschäftigt und nach einigem hin und her läuft es auf meinen Nanos. Ich kann das Sketch auch auf den Tiny brennen, allerdings finde ich keine Infos darüber welche Pins am Tiny von deiner Lib verwendet werden.
Ich habe in der .h eine passende Zeile gefunden

#define RFM_IRQ 2
#define SS_DDR DDRB
#define SS_PORT PORTB
#define SS_BIT 1
#define SPI_SS 1 // PB1, pin 3
#define SPI_MISO 4 // PA6, pin 7
#define SPI_MOSI 5 // PA5, pin 8
#define SPI_SCK 6 // PA4, pin 9

erkenne die Logik da aber nicht. Ich müsste jetzt meine Testplatine neu aufbauen, die habe ich nach dem Schema von Sensornetzwerk mit RFM12B | Qnerd Blog aufgebaut.

Ich sehe den Zusammenhang zwischen dem Wert und dem Pin nicht. Warum 6 an Pin 9...

Hiiilfeeee :frowning:

Matahari:
.....
Ich sehe den Zusammenhang zwischen dem Wert und dem Pin nicht. Warum 6 an Pin 9...

Wenn du dich mit elektronischen Bauteilen wie Controllern beschäftigst, dann ist es Pflicht auch Datenblätter zu lesen und auch Pinouts anzusehen. Da erkennst du was es mit den Bezeichnungen auf sich hat.
Pinouts