Forum: Mikrocontroller und Digitale Elektronik Atmel Lightweight Mesh


von Florian L. (foggie200)


Lesenswert?

Hi,

keine Ahnung ob ich jetzt im richtigen Forum bin, ansonsten bitte wenn 
es geht verschieben. Danke liebe Moderatoren.

So nun zu meinem Problem. Ich habe zwei atmega128RFA1, die ich 
inzwischen Programmieren und bearbeiten kann. Dabei handelt es sich ja 
bekanntlich um Single-Chips-Solutions für IEEE 802.15.4. Nun habe ich 
mir in meiner Naivität  vorgestellt, dass ich mir die Lightweight Mesh 
Tutorials von Atmel runterlade, die Examples ansehe, die Doku lese und 
dann in der Lage bin diese beiden Chips miteinander kommunizieren zu 
lassen. Tja wie soll ich sagen, bin ich nicht. Die Examples sind auf 
Grund der Komplexität der Api für mich nur schwer nachzuvollziehen und 
die Dokus sind meines Erachtens ein Witz. Diese beschreiben auch nur die 
Funktionsnamen, aber nicht wirklich den sinnvollen Einsatz. Aber das ist 
jetzt eigentlich auch egal, warum ich mich nun hier an euch wende, ist 
ganz einfach. Hat schon jemand Erfahrung mit dem Lightweight Mesh 
gesammelt und kann mir vielleicht einen kleinen Tipp geben, wie da ein 
Programm aussehen sollte? Ich doktore momentan an dem Peer2Peer-Example 
rum. Meines Erachtens müsste ich das auf beide Chips drauf spielen, 
dabei den Parameter "APP_ADDR" pro Gerät um 1 verändern und dann müssten 
doch eigentlich die beiden Geräte sich pairen, oder? Wie sende ich dann 
etwas hin und her? Die Funktion fehlt mir irgendwie, bzw. wie ich die 
dann verwende. Das nächste was mir fehlt, ist wo kommen empfangene 
Pakete denn an?

Aber alles zu seiner Zeit. Bisher pairen sich die Chips nicht mal und 
ich habe nicht den leisesten Plan warum nicht, bzw. was ich noch tun 
muss, damit etwas passiert. Sollte mir also jemand helfen können, oder 
einen Link zu einer Quelle haben, die mir da helfen kann, dann wäre ich 
zutiefst dankbar.

Vielen Dank
Ganz viele Grüße
Florian

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

der Fehler liegt in deinem Code, und den kennst nur du und willst ihn 
nicht zeigen.

von Florian L. (foggie200)


Lesenswert?

Hi,

das Problem ist ja, dass ICH keinen Code habe. Ich nehme das Atmel 
Lightweight Mesh Tutorial "Peer2Peer". So wie es aus der Library von 
Atmel kommt. Das sind endlos viele Dateien und mega viel Script. Ich 
denke, dass es wenig Sinn macht den hier zu posten. Ich habe auch nicht 
gesagt, dass der nicht funktioniert, ich sagte ich kapiere den nicht und 
würde dafür etwas Anleitung benötigen. Wofür soll ich da jetzt Script 
posten? Derjenige, der mir helfen kann den Script zu kapieren, da er ihn 
selber schon mal benutzt hat, hat den theoretisch ja dann eh vorliegen

Aber danke für die Antwort

VG
Florian

von Andreas (Gast)


Lesenswert?

Hast Du ein eigenes Board entwickelt? Hast Du die Fuses richtig gesetzt
(so wie es im User guide beschrieben wird)?
Hast Du jedem Device eine eigene ID vergeben?

Der LWMS von Atmel ist super einfach, ich hab mir drei ATmega256RFR2 
Xplain pro boards geholt und das Mesh network wird mir schön ´über das 
WSNDemo am PC visuell angezeigt.

von Florian L. (foggie200)


Lesenswert?

Hi,

ich habe ein eigenes Board entwickelt. Inzwischen habe ich es 
hinbekommen. die größten Probleme hatte ich in dem korrekten einsetzen 
der Send-Adress-Parameter. Alle Demos die dabei waren konnte ich nur 
begrenzt benutzen, da ich ja wie gesagt ein eigenes Board habe. Aber 
jetzt läuft alles ganz gut. Vor allem hatte ich es eigentlich leicht, da 
ich nur 2 Nodes haben will. Quasi einen Sender und einen Empfänger 
(Fernsteuerungsmäßig).

Aber danke für deine konstruktive Antwort.

Viele Grüße
Florian

von Sebastian (Gast)


Lesenswert?

Hallo Florian,

ich arbeite mich derzeit auch in das Thema ein. Kannst du vielleicht 
noch ein zwei Sätze zu deiner Lösung sagen? Was waren das denn für 
Parameter die du setzen musstest?
Hast du weiterhin das Peer2peer template verwendet oder was eigenes 
programmiert.

Mit freundlichen Grüßen

Sebastian

von Florian L. (foggie200)


Lesenswert?

Hi,

ich habe das Template - Template verwendet und mal alles anhand des 
UserGuide Zeile für Zeile selber reingeschrieben.

Am meisten Probleme hatte ich damit die Adressierung passend zu machen. 
Es gibt da 5 wichtige Parameter (ich bin gerade in der Arbeit und habe 
daher den Code nicht da, ich versuche aber die richtigen Namen mich zu 
erinnern):

srcAddy
dstAddy

srcMac
DstMac

networkNumber (<- boah ich krieg den Namen gerade gar nicht mehr 
zusammen, aber das ist der Parameter, der quasi das Netzwerk einheitlich 
macht. Der war aber leicht zu finden)

In der config.h waren 4 der 5 Parameter enthalten. Der letzte wurde dann 
bei der Sende-Routine direkt angegeben. Ich habe den mal auch 
extrahiert.

Da ich kein Netzwerk, sondern nur 2 Nodes hatte, tat ich mich relativ 
leicht, da ich dann einfach so lange die src und dst Adresse ausprobiert 
habe bis es klappte. Also mit 1 und 2. Ich kann dir leider nur auswendig 
das Ergebnis nicht sagen, aber ich schaue heute Abend nach und poste es 
dann.

Effektiv war es eigentlich nicht schwer, wie gesagt, diese Parameter 
müssen halt stimmen. Ich habe mir das etwas vereinfacht, um zu sehen ob 
es stimmt. Ich habe eine LED an meinem Board angeschaltet, wenn ich 
versendet habe und wenn ein ACK zurückkam (kommt automatisch durch die 
API) habe ich die LED wieder ausgeschaltet. Sollte eine nicht 
erfolgreiche Rückmeldung kommen, lasse ich die LED blinken. So ging es 
relativ gut.

Ich melde mich heute Abend. Viel Erfolg schonmal

von Sebastian (Gast)


Lesenswert?

Hallo,

also ich habe es jetzt mit der peer2peer Vorlage gemacht. Als Hardware 
habe ich von Dresden Elektronik das deRFmega128 (22A00). Das ging auch 
erstmal sehr einfach. Man muss in der Vorlage nur die config.h anpassen 
und ggf. die HAL_UartInit(38400), falls man eine andere Baudrate möchte. 
Meine config.h sieht wie folgt aus:
1
#ifndef _CONFIG_H_
2
#define _CONFIG_H_
3
4
5
//---mydefines--------------------------------------------------------------
6
#define D0TOGGLE (PORTE ^= (1 << PE5))
7
#define D0ON (PORTE |= (1 << PE5))
8
#define D0OFF (PORTE &= ~(1 << PE5))
9
10
/*- Definitions ------------------------------------------------------------*/
11
#define APP_ADDR                  0x8000
12
#define APP_PANID                 0x4567
13
#define APP_ENDPOINT              1
14
#define APP_SECURITY_KEY          "TestSecurityKey0"
15
#define APP_FLUSH_TIMER_INTERVAL  20
16
17
#ifdef PHY_AT86RF212
18
  #define APP_CHANNEL             0x01
19
  #define APP_BAND                0x00
20
  #define APP_MODULATION          0x24
21
#else
22
  #define APP_CHANNEL             0x0f
23
#endif
24
25
#define HAL_UART_CHANNEL          1
26
#define HAL_UART_RX_FIFO_SIZE     200
27
#define HAL_UART_TX_FIFO_SIZE     200
28
29
#define SYS_SECURITY_MODE                   0
30
31
#define NWK_BUFFERS_AMOUNT                  3
32
#define NWK_DUPLICATE_REJECTION_TABLE_SIZE  10
33
#define NWK_DUPLICATE_REJECTION_TTL         3000 // ms
34
#define NWK_ROUTE_TABLE_SIZE                100
35
#define NWK_ROUTE_DEFAULT_SCORE             3
36
#define NWK_ACK_WAIT_TIME                   1000 // ms
37
38
#define NWK_ENABLE_ROUTING
39
//#define NWK_ENABLE_SECURITY
40
41
#endif // _CONFIG_H_
Das sind in allen Modulen nur die APP_ADDR. Ich habe jeweils 
verschiedene. Bin mir aber nicht sicher, ob das nötig ist. Alles andere 
passt schon.
Dann aufspielen und schon hat man eine WirelessUART mit dem Modul.
So jetzt versuche ich das nochmal mit dem template-Template.

Gruß Sebastian

von Andy (Gast)



Lesenswert?

Hi Zusammen,

kann mir jemand verraten, ob bei dem Atmel Mesh Netzwerk die 
"routing-nodes" keinerlei Daten senden können (zb Sensordaten), sondern 
ausschließlich auf "Durchzug" geschaltet sind? So verstehe ich Seite 4 
(unterer Absatz) und Seite 5 (Skizze)
Die Skizze erinnert mich an mehrere p2p-Verbindungen und jede Menge 
RangeExtender um die Reichweite zu bekommen. Aber bei Mesh Netzwerken 
kann doch JEDER Teilnehmer adressiert Daten verschicken und die 
Datenpakete sollten doch solange "geroutet" werden, bis die Daten beim 
adressierten Teilnehmer ankommen? Egal ob es ein Routing node oder ein 
non-Routing node ist?
Kann mir einer bestätigen, dass bei einem Atmel LWMesh JEDER Teilnehmer 
(routing und non-Routing) in der Lage ist Daten rauszuschicken?

Besten Dank und Gruß
Andy

von Andy (Gast)


Lesenswert?

Kann mir keiner weiterhelfen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.