SIGNALduino Compilieren: Unterschied zwischen den Versionen
MGu (Diskussion | Beiträge) K (MGu verschob die Seite SIGNALduino in die Arduino Entwicklungsumgebung einbinden nach SIGNALduino Compilieren: Nicht nur für Arduino IDE sondern auch mit Makefile. Hauptartikel enthält nicht zum Compilieren.) |
MGu (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 29: | Zeile 29: | ||
sudo apt-get libdevice-serialport-perl libyaml-perl | sudo apt-get libdevice-serialport-perl libyaml-perl | ||
</source> | </source> | ||
In den Paketen sind die Arduino Quellen und Arduino-Makefile enthalten. | |||
Bei wem das aber nicht klappt, der sollte wie hier beschrieben die neusten Versionen verwenden. | |||
* SIGNALDuino Quelltexte | * [https://github.com/RFD-FHEM/SIGNALDuino.git SIGNALDuino Quelltexte] | ||
<source lang=bash> | <source lang=bash> | ||
# Hier kann man natürlich jedes beliebige Verzeichnis nehmen. | # Hier kann man natürlich jedes beliebige Verzeichnis nehmen. | ||
Zeile 38: | Zeile 40: | ||
</source> | </source> | ||
* Die Arduino Quellen (optional | * Die [https://www.arduino.cc/en/Main/Software Arduino Quellen] (optional) | ||
<source lang=bash> | <source lang=bash> | ||
# siehe https://www.arduino.cc/en/Main/Software für neuste Version | # siehe https://www.arduino.cc/en/Main/Software für neuste Version | ||
Zeile 45: | Zeile 47: | ||
</source> | </source> | ||
* Die neuste Version Arduino-Makefile | * Die neuste Version Arduino-Makefile (optional) | ||
<source lang=bash> | <source lang=bash> | ||
# Neuste Version von github clonen | # Neuste Version von github clonen | ||
Zeile 60: | Zeile 62: | ||
AVR_TOOLS_DIR=/usr | AVR_TOOLS_DIR=/usr | ||
AVRDUDE_OPTS = -v | AVRDUDE_OPTS = -v | ||
# Ab Arduino 1.5 sollte man die Architektur angeben. | |||
ARCHITECTURE = avr | |||
BOARD_TAG = nano | BOARD_TAG = nano | ||
BOARD_SUB = atmega328 | BOARD_SUB = atmega328 | ||
USER_LIB_PATH += $(realpath ../src/_micro-api/libraries) | USER_LIB_PATH += $(realpath ../src/_micro-api/libraries) | ||
ARDUINO_LIBS += bitstore output signalDecoder SimpleFIFO TimerOne EEPROM | ARDUINO_LIBS += bitstore output signalDecoder SimpleFIFO TimerOne EEPROM | ||
# Device des Arduino nano | |||
MONITOR_PORT = /dev/ttyUSB0 | |||
# AVRDUDE = /usr/bin/avrdude | |||
AVRDUDE_CONF = /etc/avrdude.conf | |||
include $(ARDMK_DIR)/Arduino.mk | include $(ARDMK_DIR)/Arduino.mk | ||
</source> | |||
Wer die Arduino Quellen und Arduino-Makefile aus der Paketverwaltung verwenden möchte, kann folgendes ändern: | |||
<source lang=make> | |||
ARDUINO_DIR=/usr/share/arduino | |||
ARDMK_DIR=$(ARDUINO_DIR) | |||
</source> | </source> | ||
Mit stand vom 17.02.2018 müssen jetzt noch ein paar kleine Fehler beseitigt werden: | Mit stand vom 17.02.2018 müssen jetzt noch ein paar kleine Fehler beseitigt werden: | ||
* <code>RF_Receiver/RF_Receiver.ino</code> | Präprozessor-Direktiven werden nicht mit Semikolon abgeschlossen | ||
* in <code>RF_Receiver/RF_Receiver.ino</code> | |||
:* <code>#define CMP_NEWSD</code> statt <code>#define CMP_NEWSD;</code> | :* <code>#define CMP_NEWSD</code> statt <code>#define CMP_NEWSD;</code> | ||
* <code>src/_micro-api/libraries/output/src/output.h</code> | Linux unterscheidet Groß- und Kleinschreibung bei Dateien: | ||
* <code>src/_micro-api/libraries/signalDecoder/src/signalDecoder.h</code> | * in <code>src/_micro-api/libraries/output/src/output.h</code> | ||
* und in <code>src/_micro-api/libraries/signalDecoder/src/signalDecoder.h</code> | |||
:* <code> #include "Arduino.h"</code> statt <code> #include "arduino.h"</code> | :* <code> #include "Arduino.h"</code> statt <code> #include "arduino.h"</code> | ||
* in <code>src/_micro-api/libraries/signalDecoder</code> fehlt <code>library.properties</code> | Das Makefile ignoriert Bibliotheken ohne <code>library.properties</code> | ||
* in <code>src/_micro-api/libraries/signalDecoder</code> fehlt <code>library.properties</code>. | |||
<source lang=bash> | |||
cd src/_micro-api/libraries/signalDecoder | |||
cp ../bitstore/library.properties . | |||
sed -i 's/bitstore/signalDecoder/g' library.properties | |||
</source> | |||
Danach kann SIGNALDuino für den Arduino Nano übersetzt werden: | Danach kann SIGNALDuino für den Arduino Nano übersetzt werden: | ||
Zeile 82: | Zeile 100: | ||
cd RF_Receiver | cd RF_Receiver | ||
make | make | ||
# Auf den Arduino laden (flashen) | |||
make upload | |||
# Aufräumen mit | |||
make clean | make clean | ||
</source> | </source> |
Version vom 17. Februar 2018, 17:58 Uhr
SIGNALduino in die Arduino Entwicklungsumgebung einbinden
Zur Inbetriebnahme von SIGNALduino auf der Arduino IDE (getestet mit auf Arduino V1.6.7) müssen die Quelltexte von GitHub (Stand Feb. 2017) geladen werden.
Dort Clone or download
und danach Download ZIP
klicken und das ZIP-Archiv auspacken oder auf der Kommandozeile git clone https://github.com/RFD-FHEM/SIGNALDuino.git
ausführen.
Es werden folgende Dateien benötigt:
- Die Datei
RF_Receiver.ino
in einen OrdnerRF_Receiver
, am besten direkt insArduino
Verzeichnis der IDE kopieren. - Im
libraries
Ordner der Arduino IDE am besten einen Ordner mit NamenSIGNALduino
anlegen, dort müssen dann die Dateienbitstore
,output
,signalDecoder
,SimpleFIFO
undTimerOne
(jeweils.cpp
und.h
Datei) abgelegt werden. - Im diesem
SIGNALduino
Verzeichnis ist dann noch ein Unterverzeichnisconfig
anzulegen, dort muss die Dateiknown_16bit_timers.h
abgelegt werden.
Struktur der SIGNALduino libraries:
In Der Arduino Entwicklungsumgebung unter Werkzeuge
→ Board
"Arduino Nano" und unter Werkzeuge
→ Prozessor
"ATmega328" angeben. Nach Einstecken des SIGNALduinos in die USB Buchse noch den entsprechenden COM-Port
unter Werkzeuge
→ Port
angeben, danach sollte sich der Scetch RF_Receiver.ino
übersetzen und auf den SIGNALduino laden lassen.
SIGNALduino mit Makefile unter Linux
Wer lieber auf der Kommandozeile arbeitet kann SIGNALduino auch mit einem Makefile übersetzen und laden. Benötigt werden dazu:
- Der Cross-Compiler und alle Werkzeuge für Arduino bzw. AVR. Bei Ubuntu und Debian Systemen:
# Arduino pakete installieren:
sudo apt-get install arduino arduino-core arduino-mighty-1284p arduino-mk
# AVR
sudo apt-get install flashrom gcc-avr avrdude avr-libc binutils-avr
# Die Unterstützung der Braillezeile kann zu Konflikten um den seriellen Port führen
sudo apt-get remove brltty brltty-x11
# Arduino-Makefile verwendet YAML und serialport in Perl
sudo apt-get libdevice-serialport-perl libyaml-perl
In den Paketen sind die Arduino Quellen und Arduino-Makefile enthalten. Bei wem das aber nicht klappt, der sollte wie hier beschrieben die neusten Versionen verwenden.
# Hier kann man natürlich jedes beliebige Verzeichnis nehmen.
mkdir -p ~/src/arduino; cd ~/src/arduino
# SIGNALDuino von github clonen
git clone https://github.com/RFD-FHEM/SIGNALDuino.git
- Die Arduino Quellen (optional)
# siehe https://www.arduino.cc/en/Main/Software für neuste Version
wget https://downloads.arduino.cc/arduino-1.8.5-linux64.tar.xz
tar xvJf arduino-1.8.5-linux64.tar.xz
- Die neuste Version Arduino-Makefile (optional)
# Neuste Version von github clonen
git clone https://github.com/sudar/Arduino-Makefile.git
Jetzt muss in SIGNALDuino/RF_Receiver
noch ein Makefile
erstellt werden:
# Verzeichnis in dem die Arduino-Quellen liegen
ARDUINO_DIR=$(HOME)/src/arduino/arduino-1.8.5
# Verzeichnis mit dem Arduino-Makefile
ARDMK_DIR=$(HOME)/src/arduino/Arduino-Makefile
# Basisverzeichnis unter dem die AVR-Werkzeuge liegen
AVR_TOOLS_DIR=/usr
AVRDUDE_OPTS = -v
# Ab Arduino 1.5 sollte man die Architektur angeben.
ARCHITECTURE = avr
BOARD_TAG = nano
BOARD_SUB = atmega328
USER_LIB_PATH += $(realpath ../src/_micro-api/libraries)
ARDUINO_LIBS += bitstore output signalDecoder SimpleFIFO TimerOne EEPROM
# Device des Arduino nano
MONITOR_PORT = /dev/ttyUSB0
# AVRDUDE = /usr/bin/avrdude
AVRDUDE_CONF = /etc/avrdude.conf
include $(ARDMK_DIR)/Arduino.mk
Wer die Arduino Quellen und Arduino-Makefile aus der Paketverwaltung verwenden möchte, kann folgendes ändern:
ARDUINO_DIR=/usr/share/arduino
ARDMK_DIR=$(ARDUINO_DIR)
Mit stand vom 17.02.2018 müssen jetzt noch ein paar kleine Fehler beseitigt werden: Präprozessor-Direktiven werden nicht mit Semikolon abgeschlossen
- in
RF_Receiver/RF_Receiver.ino
#define CMP_NEWSD
statt#define CMP_NEWSD;
Linux unterscheidet Groß- und Kleinschreibung bei Dateien:
- in
src/_micro-api/libraries/output/src/output.h
- und in
src/_micro-api/libraries/signalDecoder/src/signalDecoder.h
#include "Arduino.h"
statt#include "arduino.h"
Das Makefile ignoriert Bibliotheken ohne library.properties
- in
src/_micro-api/libraries/signalDecoder
fehltlibrary.properties
.
cd src/_micro-api/libraries/signalDecoder
cp ../bitstore/library.properties .
sed -i 's/bitstore/signalDecoder/g' library.properties
Danach kann SIGNALDuino für den Arduino Nano übersetzt werden:
cd RF_Receiver
make
# Auf den Arduino laden (flashen)
make upload
# Aufräumen mit
make clean