RocNetNode Build aus den Quellen

Build

Zuerst lesen: RasPi Dev (en)
:!: Nicht libi2c-dev installieren; Es wird den Installations-Prozess abbrechen und die benötigten C-Headers und Bibliotheken sind schon im RaspBian-Image enthalten.
Der Rocrail-Server wird auch im RocNetNode mitgebuildet:

make server
sudo make install

Das “Binary” wird in Rocrail/unxbin geschrieben.
Die rocnetnode.ini kann von Rocrail/rocnetnode/package/rocnetnode.ini kopiert werden.

Installieren

cd rocnetnode
sudo make install

Das Kopiert folgende Dateien nach /opt/rocnet:

  • rocnetnode
  • rocnetnode.ini
  • rocnetnode.sh


Starten

  1. Die rocnetnode.ini und die dcc232-Bibliothek müssen sich im Arbeitsverzeichnis befinden.
  2. Um auf /dev/mem und /dev/i2c-x zugreifen zu können, muss das Programm mit sudo gestartet werden:
20130825.214751.623 r9999I main     raspi    0068 setup RasPi I/O 0x00000001
20130825.214751.624 r9999E main     raspi    0072 can't open /dev/mem

Sudo-Starten im unxbin-Verzeichnis:

sudo ./rocnetnode


rocnetnode.ini

Siehe: Port-Zuordnung

<rnnode>
  <rocnet id="4711" addr="224.0.0.1" port="4321">
    <rocnetnodeoptions iotype="0" sack="true"/>
    <portsetup port="1" type="1" delay="200"/>
    <portsetup port="2" type="1" delay="200"/>
    <portsetup port="3" type="1" delay="200"/>
    <portsetup port="4" type="1" delay="200"/>
    <portsetup port="5" type="1" delay="200"/>
    <portsetup port="6" type="1" delay="200"/>
    <portsetup port="7" type="1" delay="200"/>
    <portsetup port="8" type="1" delay="200"/>
    <portsetup port="9" type="0" delay="0"/>
    <portsetup port="10" type="0" delay="0"/>
    <portsetup port="11" type="0" delay="0"/>
    <portsetup port="12" type="0" delay="0"/>
    <portsetup port="13" type="1"/>
    <portsetup port="14" type="1"/>
    <portsetup port="15" type="1"/>
    <portsetup port="16" type="1"/>
  </rocnet>
  <trace rfile="rocnetnode" protpath="" debug="false" info="false" calc="true" byte="false"/>  
  <digint lib="dcc232" iid="dcc-1" device="/dev/ttyUSB0"/>
  </rnnode>

rocnet

Attribute Beschreibung Bereich Voreinstellung
id RocNet-kennung 0-65535 0
addr Multicast-Adresse * 224.0.0.1
port Multicast-Port 0-65535 4321


Rocnet-Optionen (rocnetnodeoptions)

Attribute Beschreibung Bereich Voreinstellung
iotype I/O type 0=i2c-1, 1=i2c-0 0
sack Rückmelder-Bestätigung true/false false
rfid Aktiviert ID-12-Lesen true/false false

Für Raspberry Pi Rev. 1 I2C-0 als Gerät verwenden.

Port-Einstellung (portsetup)

Attribute Beschreibung Bereich Voreinstellung Bemerkung
port logische Port-Nummer zur Verwendung in der Rocrail-Adressierung 1-128 1
type I/O-Typ 0=Ausgang, 1=Eingang 0
delay Verzögertes AUS der Eingäne für Belegtmelder1), oder Ausgangs-Pulszeit. 0-255 0 10ms Einheiten, 0=nicht verwendet
state Sichert Ausgangs-Status 0=off, 1=on 0 Gesichert beim Abschalt-Befehl (Power Off).


DCC232-Gerät

Mit der internen RS232 kann kein brauchbares DCC-Signal generiert werden.
Der beste Weg ist es, einen FDTI USB-RS232-Konverter an den USB-Anschluss anzuschliessen.

Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC 
crw-rw---T 1 root dialout 188, 0 Jan  1  1970 /dev/ttyUSB0


Herunterfahren

Terminal

Wenn das Programm im Konsolen-Modus läuft kann es mit CTRL+C angehalten werden.
In allen andern Fällen muss kill verwendet werden.

I2C-Vorbereitungen

Aktivieren

I2C kann nur mit dem sudo-Befehl aktiviert werden.

Entfernen der Module aus der /etc/modprobe.d/raspi-blacklist.conf durch auskommentieren (# am Anfang folgender Zeilen einfügen):

# blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

Diese dann in /etc/modules hinzufügen:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
i2c-bcm2708
i2c-dev

Links & Dokumentation

Raspberry Pi und der serielle Port

Standardmäßig ist der serielle Port des Raspberry Pi zur Verwendung als Konsolen-Eingang/Ausgang konfiguriert. Während es zweckmäßig ist wenn eine Anmeldung über den seriellen Port gewünscht ist, bedeutet es doch, dass der seriellen Port nicht für eigene Programme verwendbar ist. Um in der Lage zu sein, den seriellen Port zur Verbindung und Kommunikation mit anderen Geräten (z.B. Arduino) zu verwenden, muss die Anmeldung des seriellen Konsolen-Ports deaktiviert werden.

Unnötig zu sagen, dass es notwendig wäre, sich auf andere Art am Raspberry Pi anzumelden und so wird vorgeschlagen, das über das Netzwerk mit einer SSH-Verbindung zu tun.

Deaktivieren der Anmeldung am seriellen Port

Um den seriellen Port für eigene Verwendung zu aktivieren, muss die Anmeldung am Port deaktiviert werden. Es gibt zwei Dateien, die dafür editiert werden müssen.

Die erste und wichtigste Datei ist /etc/inittab

Sie enthält den Befehl zur Aktivierung des Anmelde-Prompts und das muss deaktiviert werden. Die Datei wird mit einem Editor geöffnet und das Ende der Datei aufgesucht. Dort ist eine Zeile ähnlich der folgenden zu finden:

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Durch Einfügen eines #-Zeichens am Anfang der Zeile wird der Befehl deaktiviert.

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Die Datei abspeichern.

Deaktivieren der Bootup-Info

Wenn der Raspberry Pi bootet werden alle Bootup-Information ian den seriellen Port gesendet. Das Deaktivieren dieser Bootup-Information ist optional und wenn es gewünscht ist, kann man sie aktiviert lassen, weil es hilfreich sein kann, zu sehen was beim Bootup geschieht. Wenn ein Gerät beim Bootup angeschlossen ist (z.B. Arduino), empfängt es diese Informationen über den seriellen Port und es liegt beim Anwender, zu entscheiden, ob das ein Problem ist oder nicht.

Es kann durch Editieren der Datei /boot/cmdline.txt deaktiviert werden.

Der Inhalt der Datei sieht aus wie dies:

dwc_otg.lpm_enable=0 
console=ttyAMA0,115200 
kgdboc=ttyAMA0,115200 
console=tty1 
root=/dev/mmcblk0p2 
rootfstype=ext4 
elevator=deadline 
rootwait

Alle Referenzen zu ttyAMA0 entfernen, welches der Name des seriellen Ports ist.

Die Datei sieht dann aus wie dies:

dwc_otg.lpm_enable=0 
console=tty1 
root=/dev/mmcblk0p2 
rootfstype=ext4 
elevator=deadline 
rootwait

Neustart

Um die Änderungen wirksam zu machen, muss der Raspberry Pi neu gestartet werden:

sudo shutdown -r now
1) Minimale Pulse-Länge 100ms.

Personal Tools