Übersetzungen dieser Seite:

Erste Schritte mit Contiki-Programmierung

Wer die ersten Schritte mit dem Merkurboard erfolgreich geschafft hat möchte anschließend vielleicht etwas neues implementieren.

Aufgabenstellung

  1. Einen Ausgang (am Beispiel einer einfachen LED) über CoAP ein-/ausschalten
  2. Einen PWM-Ausgang steuern
  3. Einen Eingang (am Beispiel eines Schalters) ein CoAP Paket an eine einkompilierte Resource verschicken lassen
  4. Das Ziel und die Parameter des Datagramms sollen über eine CoAP Resource konfigurierbar werden
  5. Einen contiki CoAP-Server am PC kompilieren und ein Skript durch eine CoAP-Resource starten

Aufbau

Es wird vorrausgesetzt, dass die in Erste Schritte mit dem Merkurboard aufgeführte Software installiert ist.

Merkurboard Pinbelegung

Material:

  • 1x Merkurboard
  • 1x USB/Serial Wandler FTDI 3,3V
  • Steckbrett, Vorwiderstand für LED und ein paar Drähte
  • Linux PC
  • LED, Messgerät, Buzzer oder sonstige Elektronikbauteile, die geeignet sind festzustellen ob ein Ausgang aktiv ist
  • Schalter, Drahtbrücke, …

Anlegen einer neuen Resource

Wie Du eine neue CoAP-Ressource anlegen kannst, wird hier beschrieben:

GPIO Pin togglen

Wir schließen an Port PE4(im oberen Bild wo der hellgrüne Draht angeschlossen ist) unsere LED+Vorwiderstand (oder was auch immer). Anschließend binden wir die avr io lib im er-example-server.c ein und togglen(xor) das zuständige Register in unserem test_handler.

Infos zu Bitmanipulationen

Hinweis: avr/io.h wird mit der avr libc installiert, mal reinschauen schadet nicht. Das für das Merkur-Board interssante headerfile ist avr/iom128rfa1.h

#include <avr/io.h>

// ...

// toggle port DDE4
// set DDE4 bit by bitshifting
// use xor to toggle
DDRE ^= (1<<DDE4);

Wenn alles erfolgreich kompiliert und neugeflasht ist genügt ein post auf die Resource und der Pin wird ein/ausgeschaltet.

coap-client -m Post coap://[2001:0db8:2eff:ff00:332e]:5683/actuators/test

CoAP-Server am PC

Vorbereitung

Um zB über einen Schalter einen Befehl an einen PC zu schicken benötigen wir einen CoAP-Server der Resourcen bereitstellt. Um schnell zu einem Ergebnis zu kommen eignet sich txThings ein auf twisted basierendes Pythonprogramm für CoAP. Um es zu starten muss twisted in einer aktuellen Version installiert sein. In der aktuellen Version horcht server.py von txThings nur auf IPv4, was für unsere Zwecke aber nicht brauchbar ist. Abhilfe schafft man indem man die vorletzte Zeile anpasst:

reactor.listenUDP(coap.COAP_PORT, coap.Coap(endpoint), '::')

Nun kann server.py direkt gestartet werden.

Mit ipconfig bzw. ip addr können wir unsere IP-Addressen anzeigen lassen. Wenn der PC im selben Netz hängt wie der Edge-Router sollte neben der lokalen fe80:: Addresse eine zweite IPv6 Addresse auftauchen (beginnend mit unseren Präfix zB. abbb::) Diese können wir gleich mit Copper testen.

.

Merkur-Board

TODO Fixe Resource ändern in er-example-server.c

Server

TODO Resourcen anlegen, Code ausführen (server.py von txThings ist recht simple und selbsterklärend)


de/ideen/firststepscontikicoding.txt · Zuletzt geändert: 2016/04/21 06:58 von pezi