http://nibo-roboter.de/mediawiki/api.php?action=feedcontributions&user=Berry-O-Matic&feedformat=atomNibo Wiki - Benutzerbeiträge [de]2024-03-29T12:05:56ZBenutzerbeiträgeMediaWiki 1.29.2http://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1257NIBObee-Berry2016-04-21T19:38:15Z<p>Berry-O-Matic: /* Programmierumgebung gcc-avr */</p>
<hr />
<div>=Info=<br />
[[image:beeberry_full.jpg|500px|left|thumb|NIBObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle]]<br />
[[image:beeberry_side1.jpg|300px|thumb|Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden]]<br />
[[image:beeberry_side2.jpg|200px|thumb|Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst]]<br />
<br />
Mit dem Berry Modul kann ein [[NIBObee]] Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
<br />
<br />
<br />
<br />
{{clear}}<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
[[image:Battclips_error1.jpg|350px|left|nachgelötete Batterieclips]]<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NIBObee sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
{{clear}}<br />
<br />
<br />
=Vorbereiten des Raspberry für die Kommunikation mit dem NIBObee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
<br />
<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
21:26:22<br />
21:26:22<br />
<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NIBObee ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NIBObee haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NIBObee und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NIBObee. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NIBObee wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
<br />
<br />
==Backup==<br />
Bevor wir eigene Programme auf den NIBObee aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
<br />
<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NIBObee, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"-, "low"- und die E-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U efuse:r:"BACKUPFILENAME.efuse":b<br />
<br />
<br />
==Programmierumgebung gcc-avr==<br />
Bevor wir mit unserem ersten Programm loslegen können, benötigen wir den passenden C-Compiler für den AVR-Microcontroller.<br />
<br />
Diesen installieren wir mit:<br />
root@nibo:~# apt-get install gcc-avr avr-libc<br />
<br />
Alternativ kann auch die [[http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx original Atmel-Toolchain]] für 8-Bit-Prozessoren (der ATmega16A ist ein 8-Bit Microprozessor) verwenden. Z.B.:<br />
Atmel AVR 8-bit Toolchain 3.5.1 - Linux 64-bit<br />
<br />
Als Library habe ich die von [[http://stefanfrings.de/nibobee/index.html Stefan Frings]] dem Original vorgezogen.<br />
<br />
Testen ob alles soweit funktioniert, können wir mit dem Beispielcode, den Stefan mit seiner SFLIB beistellt.<br />
<br />
Einfach in dem Ordner in dem auch die Datei '''Makefile''' liegt, den Befehl<br />
make<br />
absetzen. Die Ausgabe sollte ähnlich der folgenden sein.<br />
[SFLIB_FOLDER]# make<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o prg_demo.o prg_demo.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o nibobee.o nibobee.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o fahren.o fahren.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o servo.o servo.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -Wl,-Map,nibobee.map -Wl,-u,vfprintf [SFLIB_FOLDER]# -lprintf_min -lm -o nibobee.elf prg_demo.o nibobee.o fahren.o servo.o <br />
[SFLIB_FOLDER]# avr-objcopy -j .text -j .data -O ihex nibobee.elf nibobee.hex<br />
[SFLIB_FOLDER]# avr-size nibobee.elf<br />
[SFLIB_FOLDER]# text data bss dec hex filename<br />
[SFLIB_FOLDER]# 7314 16 97 7427 1d03 nibobee.elf<br />
[SFLIB_FOLDER]#<br />
Kommt es zu einer Fehlerbeldung bitte zunächst prüfen, ob die nötige '''avr-libc''' installiert ist.<br />
<br />
Mit<br />
make program<br />
könnten wir das Programm in den Flash-Speicher unseres NiboBEEs übertragen lassen, wenn dieser per USB angebunden ist.<br />
<br />
Mit<br />
make clean<br />
können wir die kompilierten Programme wieder löschen.<br />
<br />
==Hello World==<br />
Für unser 1. eigenes Programm legen wir einen eigenen Ordner an und kopieren die folgenden Daten der SFLIB hinein:<br />
Makefile nibobee.c nibobee.h<br />
Unser erstes eigene Programm legen wir in der Datei '''test1.c''' ab:<br />
<br />
<br />
Nun müssen wir noch das Makefile dementsprechend anpassen:<br />
<br />
Zeile 12 bitte ändern zu:<br />
SRC = test1.c nibobee.c<br />
<br />
Damit werden wir '''make''' mitteilen, welche Dateien es kompilieren soll.<br />
<br />
Nun mit einem <br />
make<br />
testen, ob alles funktioniert. Anschließend kann das Programm mit<br />
make program<br />
auf den NiboBEE übertragen werden.<br />
<br />
<br />
---Work in progress---<br />
<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1256NIBObee-Berry2016-04-21T19:36:36Z<p>Berry-O-Matic: /* Hello World */</p>
<hr />
<div>=Info=<br />
[[image:beeberry_full.jpg|500px|left|thumb|NIBObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle]]<br />
[[image:beeberry_side1.jpg|300px|thumb|Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden]]<br />
[[image:beeberry_side2.jpg|200px|thumb|Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst]]<br />
<br />
Mit dem Berry Modul kann ein [[NIBObee]] Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
<br />
<br />
<br />
<br />
{{clear}}<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
[[image:Battclips_error1.jpg|350px|left|nachgelötete Batterieclips]]<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NIBObee sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
{{clear}}<br />
<br />
<br />
=Vorbereiten des Raspberry für die Kommunikation mit dem NIBObee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
<br />
<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
21:26:22<br />
21:26:22<br />
<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NIBObee ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NIBObee haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NIBObee und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NIBObee. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NIBObee wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
<br />
<br />
==Backup==<br />
Bevor wir eigene Programme auf den NIBObee aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
<br />
<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NIBObee, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"-, "low"- und die E-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U efuse:r:"BACKUPFILENAME.efuse":b<br />
<br />
<br />
==Programmierumgebung gcc-avr==<br />
Bevor wir mit unserem ersten Programm loslegen können, benötigen wir den passenden C-Compiler für den AVR-Microcontroller.<br />
<br />
Diesen installieren wir mit:<br />
root@nibo:~# apt-get install gcc-avr avr-libc<br />
<br />
Alternativ kann auch die [[http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx original Atmel-Toolchain]] für 8-Bit-Prozessoren (der ATmega16A ist ein 8-Bit Microprozessor) verwenden. Z.B.:<br />
Atmel AVR 8-bit Toolchain 3.5.1 - Linux 64-bit<br />
<br />
Als Library habe ich die von [[http://stefanfrings.de/nibobee/index.html Stefan Frings]] dem Original vorgezogen.<br />
<br />
Testen ob alles soweit funktioniert, können wir mit dem Beispielcode, den Stefan mit seiner SFLIB beistellt.<br />
<br />
Einfach in dem Ordner in dem auch die Datei '''Makefile''' liegt, den Befehl<br />
make<br />
absetzen. Die Ausgabe sollte ähnlich der folgenden sein.<br />
[SFLIB_FOLDER]# make<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o prg_demo.o prg_demo.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o nibobee.o nibobee.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o fahren.o fahren.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -c -o servo.o servo.c<br />
[SFLIB_FOLDER]# avr-gcc -std=c99 -Os -Wall -mmcu=atmega16 -DF_CPU=15000000 -DUSE_SERIAL=1 -DBAUD=19200 -DTERMINAL_MODE=1 -DSERIAL_ECHO=0 -Wl,-Map,nibobee.map -Wl,-u,vfprintf [SFLIB_FOLDER]# -lprintf_min -lm -o nibobee.elf prg_demo.o nibobee.o fahren.o servo.o <br />
[SFLIB_FOLDER]# avr-objcopy -j .text -j .data -O ihex nibobee.elf nibobee.hex<br />
[SFLIB_FOLDER]# avr-size nibobee.elf<br />
[SFLIB_FOLDER]# text data bss dec hex filename<br />
[SFLIB_FOLDER]# 7314 16 97 7427 1d03 nibobee.elf<br />
[SFLIB_FOLDER]#<br />
Kommt es zu einer Fehlerbeldung bitte zunächst prüfen, ob die nötige '''avr-libc''' installiert ist.<br />
<br />
Mit<br />
make program<br />
könnten wir das Programm in den Flash-Speicher unseres NiboBEEs übertragen lassen, wenn dieser per USB angebunden ist.<br />
<br />
Mit<br />
make clean<br />
können wir die kompilierten Programme wieder löschen.<br />
==Hello World==<br />
Für unser 1. eigenes Programm legen wir einen eigenen Ordner an und kopieren die folgenden Daten der SFLIB hinein:<br />
Makefile nibobee.c nibobee.h<br />
Unser erstes eigene Programm legen wir in der Datei '''test1.c''' ab:<br />
<br />
<br />
Nun müssen wir noch das Makefile dementsprechend anpassen:<br />
<br />
Zeile 12 bitte ändern zu:<br />
SRC = test1.c nibobee.c<br />
<br />
Damit werden wir '''make''' mitteilen, welche Dateien es kompilieren soll.<br />
<br />
Nun mit einem <br />
make<br />
testen, ob alles funktioniert. Anschließend kann das Programm mit<br />
make program<br />
auf den NiboBEE übertragen werden.<br />
<br />
<br />
---Work in progress---<br />
<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1255NIBObee-Berry2016-04-21T19:25:49Z<p>Berry-O-Matic: /* Test */</p>
<hr />
<div>=Info=<br />
[[image:beeberry_full.jpg|500px|left|thumb|NIBObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle]]<br />
[[image:beeberry_side1.jpg|300px|thumb|Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden]]<br />
[[image:beeberry_side2.jpg|200px|thumb|Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst]]<br />
<br />
Mit dem Berry Modul kann ein [[NIBObee]] Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
<br />
<br />
<br />
<br />
{{clear}}<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
[[image:Battclips_error1.jpg|350px|left|nachgelötete Batterieclips]]<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NIBObee sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
{{clear}}<br />
<br />
<br />
=Vorbereiten des Raspberry für die Kommunikation mit dem NIBObee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
<br />
<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
21:26:22<br />
21:26:22<br />
<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NIBObee ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NIBObee haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NIBObee und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NIBObee. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NIBObee wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
<br />
<br />
==Backup==<br />
Bevor wir eigene Programme auf den NIBObee aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
<br />
<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NIBObee, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"-, "low"- und die E-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U efuse:r:"BACKUPFILENAME.efuse":b<br />
<br />
<br />
==Hello World==<br />
Bevor wir mit unserem ersten Programm loslegen können, benötigen wir den passenden C-Compiler für den AVR-Microcontroller.<br />
<br />
Diesen installieren wir mit:<br />
root@nibo:~# apt-get install gcc-avr<br />
<br />
Alternativ kann auch die [[http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx original Atmel-Toolchain]] für 8-Bit-Prozessoren (der ATmega16A ist ein 8-Bit Microprozessor) verwenden. Z.B.:<br />
Atmel AVR 8-bit Toolchain 3.5.1 - Linux 64-bit<br />
<br />
<br />
Als Library habe Ich die von [[http://stefanfrings.de/nibobee/index.html Stefan Frings]] dem Original vorgezogen.<br />
<br />
---Work in progress---<br />
<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1254NIBObee-Berry2016-04-15T21:13:57Z<p>Berry-O-Matic: /* Hello World */</p>
<hr />
<div>=Info=<br />
[[image:beeberry_full.jpg|500px|left|thumb|NIBObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle]]<br />
[[image:beeberry_side1.jpg|300px|thumb|Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden]]<br />
[[image:beeberry_side2.jpg|200px|thumb|Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst]]<br />
<br />
Mit dem Berry Modul kann ein [[NIBObee]] Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
<br />
<br />
<br />
<br />
{{clear}}<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
[[image:Battclips_error1.jpg|350px|left|nachgelötete Batterieclips]]<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NIBObee sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
{{clear}}<br />
<br />
<br />
=Vorbereiten des Raspberry für die Kommunikation mit dem NIBObee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
<br />
<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NIBObee ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NIBObee haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NIBObee und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NIBObee. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NIBObee wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
<br />
<br />
==Backup==<br />
Bevor wir eigene Programme auf den NIBObee aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
<br />
<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NIBObee, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"-, "low"- und die E-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U efuse:r:"BACKUPFILENAME.efuse":b<br />
<br />
<br />
==Hello World==<br />
Bevor wir mit unserem ersten Programm loslegen können, benötigen wir den passenden C-Compiler für den AVR-Microcontroller.<br />
<br />
Diesen installieren wir mit:<br />
root@nibo:~# apt-get install gcc-avr<br />
<br />
Alternativ kann auch die [[http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx original Atmel-Toolchain]] für 8-Bit-Prozessoren (der ATmega16A ist ein 8-Bit Microprozessor) verwenden. Z.B.:<br />
Atmel AVR 8-bit Toolchain 3.5.1 - Linux 64-bit<br />
<br />
<br />
Als Library habe Ich die von [[http://stefanfrings.de/nibobee/index.html Stefan Frings]] dem Original vorgezogen.<br />
<br />
---Work in progress---<br />
<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1242NIBObee-Berry2016-04-11T20:08:30Z<p>Berry-O-Matic: /* Fuses */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"-, "low"- und die E-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U efuse:r:"BACKUPFILENAME.efuse":b<br />
<br />
==Hello World==<br />
---Work in progress---<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1241NIBObee-Berry2016-04-11T19:36:42Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Da die Taster das Signal auf GND legen, benötigen wir als "Gegenstück" (quasi im ungedrückten Zustand) ein High-Signal. Wir stellen daher den internen Pull-Up-Wiederstand für die Eingänge ein.<br />
gpio mode 3 up<br />
gpio mode 4 up<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 3 up<br />
gpio mode 4 in<br />
gpio mode 4 up<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 0 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 0 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1240NIBObee-Berry2016-04-11T18:51:55Z<p>Berry-O-Matic: /* Nutzen der Spannungsüberwachung */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---<br />
==Nutzen der Spannungsüberwachung==<br />
---Idee---<br />
<br />
Ein 1kHz-PWM-Signal mit 14% duty cycle erzeugt an GPIO18 (RP_PWM) ca. 0,6V. Diese Spannung vergleicht die Op-Amp-Schaltung mit einem 10tel der Batteriespannung. Sinkt die Spannung also unter 6V, reagiert unsere Schaltung mit einem auf HIGH gesetzten GPIO4.<br />
<br />
---Work in progress---<br />
<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1239NIBObee-Berry2016-04-10T17:52:37Z<p>Berry-O-Matic: /* Hello World */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---<br />
==Nutzen der Spannungsüberwachung==<br />
---Work in progress---<br />
==Linienverfolger mit Fotofunktion==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=Benutzer:Berry-O-Matic&diff=1238Benutzer:Berry-O-Matic2016-04-10T17:49:41Z<p>Berry-O-Matic: Die Seite wurde neu angelegt: „==Kontakt== Lars@L-TECreative.de“</p>
<hr />
<div>==Kontakt==<br />
Lars@L-TECreative.de</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1237NIBObee-Berry2016-04-10T17:47:53Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem lokalen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1236NIBObee-Berry2016-04-10T17:47:20Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet, z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier], hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1235NIBObee-Berry2016-04-10T17:45:59Z<p>Berry-O-Matic: /* Programmierbeispiele */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung, haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die USB-Verbindung steht, kann mit<br />
lsusb<br />
auf dem Raspberry festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee&diff=1234NIBObee2016-04-10T17:43:44Z<p>Berry-O-Matic: /* Erweiterungen/Zubehör */</p>
<hr />
<div>[[image:NIBObee.jpg|180px|left|NIBObee]]<br />
<br />
Der [[Roboterbausatz]] '''NIBObee''' ist ein speziell für Schüler entwickelter, in C, C++, Java und Assembler [[Programmierung (NIBObee)|programmierbarer]] autonomer Roboter. Der Roboter hat einen [[ATmega16]] als Hauptprozessor, zwei [[Fühler (NIBObee)|Fühler]] und drei [[Bodensensoren (NIBObee)|Boden-/Liniensensoren]] zur Wahrnehmung seiner Umgebung und einen integrierten USB-Programmer ([[ATtiny44]]), der zusätzlich als Ladegerät für die Akkus dient. Zwei Motoren dienen als [[NIBObee/Antrieb|Antrieb]], die [[Odometrie (NIBObee)|Odometriemessung]] erfolgt durch zwei Lichtschranken.<br />
<br />
{{clear}}<br />
<br />
==Informationen==<br />
[[image:1787_NIBObee.JPG|thumb|NIBObee]]<br />
[[image:NIBObee_RoboCup2011.JPG|thumb|NIBObee RoboCup2011]]<br />
[[image:NIBObee_schematic_overview.png|thumb|System-Architektur]]<br />
[[image:NIBObee_seitlich.jpg|thumb|NIBObee]]<br />
[[image:NIBObee_Platine.jpg|thumb|NIBObee]]<br />
[[image:NIBObee_Augen.JPG|thumb|NIBObee]]<br />
* [[NIBObee Library|C-Bibliothek]]<br />
* [[NIBObee/FAQ|'''FAQ''' (Häufig gestellte Fragen)]]<br />
* [[NIBObee/Ersatzteile|Ersatzteile]]<br />
* [[NanoVM|NanoVM]]<br />
<br />
<br />
==Erweiterungen/Zubehör==<br />
* [[Blue-Modul]]<br />
* [[NIBObee/Tuning-Kit|NIBObee-Tuning-Kit]]<br />
* [[BGX1|BGX1 Grafikdisplay und IO Erweiterung]]<br />
* [[NIBObee-Berry|NIBObee-Berry Add-On für Anbindung eines Raspberry Pi (Linux)]]<br />
<br />
==Weblinks==<br />
<br />
* [[nibobee_nicai_de:|nibobee.nicai-systems.de]] - Produktseite bei ''nicai-systems''<br />
* [[download_nicai_com:nibo/Doku_NIBObee_20141122.pdf|Doku_NIBObee_20141122.pdf]] - Die Bauanleitung des NIBObee Roboters<br />
* [[download_nicai_com:nibo/Tutorial_NIBObee_20141201.pdf|Tutorial_NIBObee_20141201.pdf]] - Programmiertutorial zur C-Programmierung des NIBObee Roboters<br />
* [[reichelt_article:91023|www.reichelt.de]] - NIBObee bei ''reichelt elektronik''<br />
<br />
* weitere [[Linksammlung|Links]] zum Thema<br />
<br />
[[Category:NIBObee]]</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1232NIBObee-Berry2016-04-10T17:42:31Z<p>Berry-O-Matic: hat „NIBObee/Berry“ nach „NIBObee-Berry“ verschoben</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee/Berry&diff=1233NIBObee/Berry2016-04-10T17:42:31Z<p>Berry-O-Matic: hat „NIBObee/Berry“ nach „NIBObee-Berry“ verschoben</p>
<hr />
<div>#WEITERLEITUNG [[NIBObee-Berry]]</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1231NIBObee-Berry2016-04-10T17:40:43Z<p>Berry-O-Matic: /* Hello World */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==<br />
---Work in progress---</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1230NIBObee-Berry2016-04-10T17:40:18Z<p>Berry-O-Matic: /* Backup */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"BACKUPFILENAME.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"BACKUPFILENAME.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"BACKUPFILENAME.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"BACKUPFILENAME.lfuse":b<br />
<br />
==Hello World==</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1229NIBObee-Berry2016-04-10T17:24:53Z<p>Berry-O-Matic: /* Backup */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"$1.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"$1.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"$1.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"$1.lfuse":b<br />
==Hello World==</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1228NIBObee-Berry2016-04-10T17:23:24Z<p>Berry-O-Matic: /* Backup */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
<br />
Dazu benötigen wir, ebenso wie für das Übertragen unseres eigenen C-Codes, das Tool<br />
avrdude<br />
<br />
Dies installieren wir mit:<br />
apt-get update<br />
apt-get install avrdude<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"$1.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"$1.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"$1.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"$1.lfuse":b</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1227NIBObee-Berry2016-04-10T17:20:28Z<p>Berry-O-Matic: /* Programmierbeispiele */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
Wenn wir schon einen Linux-Computer auf dem NiboBEE haben, wollen wir ihn natürlich auf möglichst umfassend nutzen.<br />
<br />
Die Kommunikation mit dem NiboBEE und dem Programmiercomputer erfolgt über die USB-Schnittstelle an der Frontseite des NiboBEE. Hier können wir natürlich auch eine Verbindung mit unserem Raspberry herstellen. <br />
<br />
Allerdings reagiert der Raspberry sehr empfindlich auf die Spannungsschwankungen, die beim Einstecken von USB-Geräten entstehen können. <br />
'''Am besten schaltet man daher beide Geräte, insbesondere aber den Raspberry, vor dem Zusammenstecken über USB aus.'''<br />
<br />
Steht die Verbindung haben wir die Möglichkeit, uns via WLAN und SSH auf den Raspberry zu schalten und dort direkt den verbundenen NiboBEE zu Programmieren.<br />
<br />
Ob die Verbindung steht, kann mit<br />
lsusb<br />
festgestellt werden.<br />
<br />
Der NiboBEE wird wie folgt angezeigt:<br />
Bus 001 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb<br />
==Backup==<br />
Bevor wir eigene Programme auf den NiboBEE aufspielen, sollten wir ggf. vorhandene Programme sichern.<br />
===EEPROM===<br />
Hier befindet sich das vorinstallierte Betriebssystem des NiboBEE, der alle wesentlichen Funktionen steuert und auch die serielle Kommunikation organisiert<br />
<br />
Mit diesem Befehl kann ein Backup erstellt werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U eeprom:r:"$1.eeprom":i<br />
<br />
===Flash===<br />
Hier befinden sich die von uns Anwendern übertragenen Programme.<br />
<br />
Die Sicherung erfolgt mit diesem Befehl:<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U flash:r:"$1.flash":i<br />
<br />
===Fuses===<br />
In den "Fuses" verwaltet der ATMEL-Prozessor diverse Einstellungen. Diese sollten wir im Normalfall nicht ändern. Aber ein Backup kann auch hier nicht schaden. Es gibt "high"- und "low"-Fuses, die getrennt verwaltet und auch gesichert werden.<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U hfuse:r:"$1.hfuse":b<br />
avrdude -v -F -c usbasp -P usb -p m1284p -B 0.5 -U lfuse:r:"$1.lfuse":b</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1226NIBObee-Berry2016-04-10T17:07:27Z<p>Berry-O-Matic: /* Vorbereiten des Bees für die Kommunikation mit dem Rasp */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
Damit der Bee von dem Rasp über die serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Der NiboBEE ist bereits dementsprechend vorbereitet.<br />
<br />
Dieser Befehlssatz nennt sich: [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1225NIBObee-Berry2016-04-10T17:06:23Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
===Test der Grundfunktion===<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Dieser Befehlssatz nennt sich [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1224NIBObee-Berry2016-04-10T17:05:35Z<p>Berry-O-Matic: /* Aufbau der seriellen Verbindung zum NIBObee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem '''Reboot''' sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
===Test===<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Dieser Befehlssatz nennt sich [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1223NIBObee-Berry2016-04-10T17:03:52Z<p>Berry-O-Matic: /* Aufbau der seriellen Verbindung zum NIBObee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
Nach einem Reboot sollte uns die Schnittstelle nun zur Verfügung stehen.<br />
<br />
Um mit dem NiboBEE zu "sprechen" benötigen wir ein Terminalprogramm.<br />
<br />
Viele stehen nach Belieben zur Verfügung. Für die Befehlszeile z.B.:<br />
* minicom<br />
* microcom<br />
* picocom<br />
<br />
Installation von z.B. microcom mit:<br />
apt-get update<br />
apt-get install microcom<br />
<br />
Nun können wir zum ersten Mal vom Raspberry aus mit den NiboBEE die Verbindung aufnehmen. Vorausgesetzt, alle Module sind betriebsbereit, miteinander verbunden und eingeschaltet.<br />
microcom -p /dev/ttyAMA0 -s 9600<br />
<br />
Wenn auf dem NiboBEE noch das bei der Auslieferung aufgespielte Testprogramm im Flash-Speicher ist, sendet er laufend auf der seriellen Schnittstelle Werte der optischen Sensoren. z.B.:<br />
1a:1f:1a<br />
Hält man nun den Finger rechts oder links unter den Sensor, ändern sich die Werte entsprechend.<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Dieser Befehlssatz nennt sich [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1222NIBObee-Berry2016-04-10T16:34:09Z<p>Berry-O-Matic: /* Aufbau der seriellen Verbindung zum NIBObee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Die serielle Schnittstelle wird vom Raspberry standardmäßig zur Bootprotokollierung verwendet.<br />
<br />
Diese Funktion müssen wir daher zunächst deaktivieren.<br />
<br />
In<br />
/boot/cdmline.txt<br />
muss diese Zeile angepasst werden:<br />
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
Der Parameter mit Verweis auf '''ttyAMA0''' muss entfernt werden.<br />
<br />
Ergebnis:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait<br />
<br />
In<br />
/etc/inittab<br />
müssen wir verhindern, dass eine Login-Konsole auf die serielle Schnittstelle gesetzt wird. Dazu muss der entsprechende Eintrag (in der Regel die letzte Zeile) mit einer '''#''' auskommentiert werden.<br />
<br />
Hier das Ergebnis:<br />
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100<br />
<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Dieser Befehlssatz nennt sich [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1221NIBObee-Berry2016-04-10T16:19:28Z<p>Berry-O-Matic: /* Vorbereiten des Bees für die Kommunikation mit dem Rasp */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
Dieser Befehlssatz nennt sich [[Nibo_Serial_Protocol|Nibo Serial Protocol]].<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=Nibo_Serial_Protocol&diff=1220Nibo Serial Protocol2016-04-10T16:19:11Z<p>Berry-O-Matic: </p>
<hr />
<div>Das Protokoll dient zur Datenübertragung zwischen einem Host-Gerät (Smartphone/PC) und einem NIBO 2 bzw. NIBObee Roboter.<br />
<br />
Mögliche Übertragungsmedien:<br />
* Bluetooth: NIBObee mit [[Blue-Modul]] in Verbindung mit einem Android Gerät (oder einer anderen Gegenstation)<br />
* Raspberry Pi: Übertragung mit dem [[NIBObee/Berry]]<br />
* [[XBee-Modul]] in Verbindung mit [[NXB2]] und [[UCOM-XBEE]]<br />
* 6 poliges Programmierkabel zwischen [[NIBO 2]] und [[UCOM-IR2-X]]<br />
Die Standarddatenrate beträgt 9600 Baud.<br />
<br />
==Grundlagen==<br />
Es werden reine Textdaten (ASCII) über eine serielle Verbindung übertragen. <br />
Die Datenübertragung ist in Transaktionen unterteilt.<br />
Eine einzelne Transaktion besteht immer aus eine Anfrage und einer Antwort.<br />
Die Anfrage ('''request''') kommt immer vom Host, die Antwort ('''reply''') vom Roboter.<br />
Jede Anfrage und jede Antwort bestehen aus einer Zeile, jede Zeile endet mit einem Zeilenumbruch.<br />
<br />
Die Transaktionen können in zwei veschiedenen Formaten erfolgen:<br />
* Terminalmode: Leicht zu lesendes Übertragungsformat, sehr gut geeignet zum experimentieren. <br />
* Hexmode: Effizentes Übertragungsformat<br />
Das Format gilt jeweils für eine Transaktion. Beginnt die Anfrage mit '''request''' wird der Terminalmodus verwendet,<br />
beim Hexmodus beginnt die Anfrage mit einem '''$'''-Zeichen.<br />
<br />
Für die Verwendung des Protokolls reicht es aus den Terminalmodus zu verstehen.<br />
Im Terminalmodus wird nur das dezimale Zahlenformat verwendet.<br />
<br />
==Befehlsübersicht==<br />
Eine Zeile mit der Zeichenkette '''help''' gibt eine Hilfe aus, welche die Kommandos und die Registerbelegung enthält:<br />
<br />
command short parameter function<br />
------- ----- --------- --------<br />
help show this help<br />
request {sequence} begin decimal request, sequence number is optional<br />
$ {sequence} begin hexadecimal request, sequence number is optional<br />
set ! {register},{value} set register with value<br />
get ? {register} get register data once<br />
report # {register} report register data always<br />
unreport ~ {register} don't report register data<br />
<br />
<br />
==Register== <br />
Die Daten sind in Registern organisiert. Das Register 0 enthält immer die BOT ID,, mit der der Robotertyp indentifiziert werden kann, das Register 1 die Terminal-Version.<br />
<br />
Register können entweder nur gelesen werden <code>[r ]</code> oder sie lassen sich sowohl lesen als auch schreiben <code>[rw]</code>.<br />
<br />
<br />
===Register NIBO 2===<br />
0: [r ] BOT ID = 0x4e32<br />
1: [r ] Version<br />
2: [r ] Supply Voltage [mV]<br />
3: [rw] red LEDs<br />
4: [rw] green LEDs<br />
5: [rw] PWM white LEDs<br />
6: [rw] Motor Mode <br />
7: [rw] Motor PWM L <br />
8: [rw] Motor PWM R <br />
9: [rw] Motor PID L <br />
10: [rw] Motor PID R <br />
11: [r ] Motor current L <br />
12: [r ] Motor current R <br />
13: [r ] Odometry L <br />
14: [r ] Odometry R <br />
15: [r ] Floor L<br />
16: [r ] Floor R<br />
17: [r ] Line L<br />
18: [r ] Line R<br />
19: [r ] Dist L<br />
20: [r ] Dist FL<br />
21: [r ] Dist F<br />
22: [r ] Dist FR<br />
23: [r ] Dist R<br />
<br />
===Register NIBObee===<br />
0: [r ] BOT ID = 0x4e62<br />
1: [r ] Version<br />
2: [r ] Supply Voltage [mV]<br />
3: [rw] LEDs<br />
4: [r ] Sense<br />
6: [rw] Motor Mode <br />
7: [rw] Motor PWM L <br />
8: [rw] Motor PWM R <br />
9: [rw] Motor PID L <br />
10: [rw] Motor PID R <br />
13: [r ] Odometry L <br />
14: [r ] Odometry R <br />
16: [r ] Line C<br />
17: [r ] Line L<br />
18: [r ] Line R<br />
<br />
==Kommandos== <br />
===Setzen eines Registers:===<br />
Beispiel: Die 4 niedrigsten Bits des LED Registers (Register 0) sollen gesetzt werden (Wert binär: 00001111, dezimal: 15 = 8+4+2+1)<br />
Anfrage:<br />
request set 0, 15<br />
<br />
Antwort:<br />
reply<br />
<br />
===Setzen mehrerer Register:===<br />
Beispiel: PID links (Register 3) auf 20 Ticks/sec, rechts (Register 4) auf 25 Ticks/sec und den Motor Mode (Register 5) auf 3 setzen<br />
Anfrage:<br />
request set 3, 20 set 4, 25 set 5, 3<br />
<br />
Antwort:<br />
reply<br />
<br />
===Einmalige Abfrage:===<br />
Beispiel: Liniensensoren (Register 8, 9 und 10) abfragen (Werte: Links=111, Mitte=104, Rechts=127)<br />
Anfrage:<br />
request get 8 get 9 get 10<br />
<br />
Antwort: <br />
reply set 8, 111 set 9, 104 set 10, 127<br />
<br />
===Regelmäßige Abfrage:===<br />
Die Werte, die zur regelmäßigen Übermittlung markiert sind, werden bei jeder Antwort mitgesendet.<br />
<br />
Beispiel: Odometrie links und rechts anfordern (Werte: Links=1514, Rechts=1520)<br />
Anfrage:<br />
request report 6 report 7<br />
<br />
Antwort:<br />
reply set 6, 1514 set 7, 1520<br />
<br />
Jede weitere Anfrage enthält die Werte:<br />
Anfrage:<br />
request<br />
<br />
Antwort: <br />
reply set 6, 1514 set 7, 1520<br />
<br />
===Sequenznummern===<br />
Jede Anfrage kann mit einer Sequenznummer versehen werden. Die Nummer wird bei der zugehörigen Antwort wiederholt.<br />
<br />
Beispiel: Alle LEDs (Register 0) sollen ausgeschaltet werden, Sequenznummer 33<br />
Anfrage:<br />
request 33 set 0, 0<br />
<br />
Antwort:<br />
reply 33<br />
<br />
===Hexmodus===<br />
Im Hexmodus werden die Daten effizienter übertragen. Im Prinzip entspricht die Übertragung dem Terminalmodus. Alle Schlüsselwörter werden durch ihre Kurzform ersetzt, aus '''request''' und '''reply''' wird ein einzelnes '''$'''-Zeichen, aus '''get''' ein '''?'''-Zeichen. Zusätzlich entfallen alle Leerzeichen. Die Zahlen werden im hexadezimalen Format übertragen, statt der Dezimalzahl 200 wird die hexadezimale Zahl c8 übertragen.<br />
<br />
Als Beispiel die regelmäßige Abfrage der Odometriewerte mit Sequenznummern:<br />
Terminalmode Hexmode<br />
============ =======<br />
request 9 report 6 report 7 --> $9#6#7<br />
reply 9 set 6, 1514 set 7, 1520 --> $9!6,5ea!7,5f0<br />
request 10 --> $a<br />
reply 10 set 6, 1514 set 7, 1520 --> $a!6,5ea!7,5f0<br />
request 11 --> $b<br />
reply 11 set 6, 1514 set 7, 1520 --> $b!6,5ea!7,5f0<br />
<br />
==Links==<br />
* [http://www.roboter.cc/index.php?option=com_nicaiwci&view=project&projectid=1100 NIBO2 - Terminal] Terminalfirmware für den NIBO 2<br />
* [http://www.roboter.cc/index.php?option=com_nicaiwci&view=project&projectid=1145 NIBObee - Terminal] Terminalfirmware für den NIBObee</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1219NIBObee-Berry2016-04-10T15:43:33Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten, dann wartet das Script auf das Drücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote LED.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
Mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1218NIBObee-Berry2016-04-10T15:42:27Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
# Einstellen der Ports als Ein- bzw. Ausgang<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
# Abwechselndes Blinken der beiden LEDs<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
# Endlosschleife für Hauptfunktion<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
# Taste 1 gedrückt<br />
then<br />
echo "Taster A"<br />
# LED 1 an<br />
gpio write 5 1<br />
else<br />
# LED 1 aus<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
# Taste 2 gedrückt<br />
then<br />
echo "Taster B"<br />
# LED 2 an<br />
gpio write 6 1<br />
else<br />
# LED 2 aus<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
# Programmende (wird nie erreicht, da Endlosschleife)<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1217NIBObee-Berry2016-04-10T15:39:15Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit einem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee/FAQ&diff=1216NIBObee/FAQ2016-04-10T15:38:30Z<p>Berry-O-Matic: /* keine Funktion nach dem Zusammenbau ohne erkennbare Lötfehler */</p>
<hr />
<div>----<br />
===keine Funktion nach dem Zusammenbau ohne erkennbare Lötfehler===<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind ggf. nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand. <br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|450px|nachgelötete Batterieclips]]<br />
<br />
===Fehler beim Linken===<br />
'''F:''' Beim Linken des Programms bekomme ich folgende '''Fehlermeldung''':<br />
C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_readPersistent':<br />
line.c:(.text.line_readPersistent+0x10): undefined reference to `__eerd_block'<br />
C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_writePersistent':<br />
line.c:(.text.line_writePersistent+0x10): undefined reference to `__eewr_block'<br />
<br />
'''A:''' Vermutlich verwenden Sie eine AVR Libc Version, die nicht zur [[NIBObee Library|NIBObeeLib]] Version passt. Für die nibobeelib-20091108 benötigen Sie WinAVR-20090313. <br />
Die '''aktuelle Version 1.2''' (nibobeelib-20100424) arbeitet mit '''WINAVR-20100110''' zusammen.<br />
----<br />
<br />
<br />
===Stromverbrauch===<br />
'''F:''' Wieviel '''Strom''' verbraucht der NIBObee?<br />
<br />
'''A:''' Der Ruhestrom des NIBObee liegt bei ca. 100 mA, die Motoren verbrauchen jeweils ca. 100 mA im Leerlauf und 200 mA bei Last (100%PWM)<br />
----<br />
<br />
<br />
===Quellcode für den ATtiny===<br />
'''F:''' Wo finde ich den Quellcode für den '''ATtiny'''?<br />
<br />
'''A:''' Der gesammte Quellcode ist im [http://sourceforge.net/scm/?type=svn&group_id=274060 SVN Repository bei Sourceforge] enthalten:<br />
----<br />
<br />
<br />
===Fehlermeldung nach Treiberinstallation unter Vista===<br />
'''F:''' Ich bekomme nach der Installation des Treibers unter '''Windows Vista''' folgende Fehlermeldung:<br />
Im Cache des Ressourcenladeprogramms ist kein MUI (Multilingual-User-Interface)-Eintrag geladen.<br />
<br />
'''A:''' Das hört sich nach einem Problem in der Benutzerkontensteuerung (UAC) von Windows Vista an - sie sollte abgeschaltet sein - prüfen Sie dort die Einstellungen.<br />
----<br />
<br />
<br />
===Keine Ladefunktion der Akkus möglich===<br />
'''F:''' Bei meinem NIBObee lassen sich die '''Akkus''' nicht laden!<br />
<br />
'''A:''' Zum Laden der Akkus müssen sich die drei Jumper in der '''vorderen Stellung''' befinden und der Roboter muss '''ausgeschaltet''' sein!<br />
----<br />
<br />
<br />
===Motorproblem===<br />
'''F:''' Bei meinem NIBObee dreht sich nur ein '''Motor''' / Bei meinem NIBObee dreht sich ein Motor nur in eine Richtung!<br />
<br />
'''A:''' Überprüfe einmal folgendes:<br />
# Sind alle Transistoren in der richtigen Orientierung eingelötet?<br />
# Wurde jeweils der korrekte Transistor-Typ (BC-337 bzw. BC-327) in die jeweilige Lötstelle eingelötet?<br />
# Sind bei den Lötstellen der Transistoren kalte Lötstellen zu finden? Evtl. nocheinmal vorsichtig nachlöten..<br />
# Stecken von dem 74HC139 alle Beinchen korrekt im Sockel?<br />
# Lötstellen des Sockels des 74HC139 prüfen und evtl. vorsichtig nachlöten..<br />
<br />
<br />
----<br />
<br />
<br />
===Probleme mit dem Blue-Modul===<br />
'''F:''' Meine Smartphone-App verbindet sich nicht mit dem NIBObee / Blue-Modul!<br />
<br />
'''A:''' Um die Bluetooth Verbindung mit dem NIBObee herzustellen geht man am besten folgendermaßen vor:<br />
# NIBObee Demo App beenden<br />
# Bluetooth am Handy deaktivieren<br />
# NIBObee ausschalten<br />
# NIBObee einschalten<br />
# Bluetooth am Handy aktivieren<br />
# NIBObee Demo App starten<br />
# Verbinden... <br />
<br />
<br />
===Windows 8 - Niborobolib kann nicht installiert werden===<br />
'''F:''' Unter Windows 8 bricht die Installation der Niborobolib mit der Meldung "Setup Wizard ended prematurely" ab!<br />
<br />
'''A:''' Zur Fehlervermeidung muss die Treibersignierung abgeschaltet werden:<br />
# Kommandozeile ("Ausführen") starten: Drücke "Windows-Taste" + "R"<br />
# Dann "shutdown.exe /r /o /f /t 00" eingeben (spezieller Reboot)<br />
# Im Menü auswählen "Problembehandlung" -> "Erweiterte Optionen" -> "Starteinstellungen" -> "Neustart"<br />
# Nach dem Bootvorgang im Menü Taste "7" (Treibersignierung ausschalten) drücken<br />
# Jetzt kann die Niborobolib problemlos installiert werden!<br />
# Die geänderten Systemeinstellungen werden nach einem Neustart von Windows wieder automatisch zurückgesetzt<br />
<br />
[[Category:NIBObee]]</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1215NIBObee-Berry2016-04-10T15:36:11Z<p>Berry-O-Matic: /* Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn sind vereinzelt Probleme bei den Batterieclips bekannt. Die verklemmten Bereiche an den Enden sind in manchen Fällen nicht stromführend verquetscht, so dass die Geräte nicht mit Strom versorgt werden.<br />
<br />
Dies lässt sich einfach nachmessen, in dem man die anliegenden Spannungen prüft.<br />
<br />
* beim NiboBEE sollte an X8 bei eingelegten Batterien ca. 5V anliegen. Auch im ausgeschalteten Zustand.<br />
* bei der Berry-Platine sollte an X10 zwischen 1 und 4 eine Spannung von ca. 8V anliegen. Auch im ausgeschalteten Zustand.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1214NIBObee-Berry2016-04-02T19:07:14Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden von unserem localen Rechner aus mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1213NIBObee-Berry2016-04-02T19:06:38Z<p>Berry-O-Matic: /* Installation WiringPi / GPIO */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# cd /opt<br />
root@nibo:/opt# git clone git://git.drogon.net/wiringPi<br />
root@nibo:/opt# cd WiringPi<br />
root@nibo:/opt/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1212NIBObee-Berry2016-04-02T19:04:10Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. <br />
<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1211NIBObee-Berry2016-04-02T19:02:00Z<p>Berry-O-Matic: /* Installation WiringPi / GPIO */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Wir werden im Folgenden mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build<br />
<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1210NIBObee-Berry2016-04-02T18:35:08Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass z.B. der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1209NIBObee-Berry2016-04-02T18:34:46Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
Mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und die unterschiedlichen Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
Dort erkennen wir auch, dass der physikalische Pin (''Physical'') 15 die WiringPi-(''wPi'')-Nummer 3 hat.<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1208NIBObee-Berry2016-04-02T18:33:07Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15 (wPi: 3)<br />
Taster B: Pin 16 (wPi: 4)<br />
LED grün: Pin 18 (wPi: 5)<br />
LED rot: Pin 22 (wPi: 6)<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1207NIBObee-Berry2016-04-02T18:32:11Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15<br />
Taster B: Pin 16<br />
LED grün: Pin 18<br />
LED rot: Pin 22<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
#!/bin/sh<br />
<br />
gpio mode 3 in<br />
gpio mode 4 in<br />
gpio mode 5 out<br />
gpio mode 6 out<br />
<br />
gpio write 5 0<br />
gpio write 6 0<br />
gpio write 5 1<br />
sleep 0.5<br />
gpio write 5 0<br />
sleep 0.5<br />
gpio write 6 1<br />
sleep 0.5<br />
gpio write 6 0<br />
<br />
while [ True ]<br />
do<br />
if [ $(gpio read 3) = 1 ]<br />
then<br />
echo "Taster A"<br />
gpio write 5 1<br />
else<br />
gpio write 5 0<br />
fi<br />
<br />
if [ $(gpio read 4) = 1 ]<br />
then<br />
echo "Taster B"<br />
gpio write 6 1<br />
else<br />
gpio write 6 0<br />
fi<br />
<br />
done<br />
<br />
exit 0<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Die LED sollten nacheinander kurz aufleuchten und dann wartet das Script auf das Trücken der Taster.<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1206NIBObee-Berry2016-04-02T18:02:53Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
<br />
Die folgenden Arbeiten führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Wir melden uns dann als ''pi'', dem Standardbenutzer, an und verwandeln uns dann mit ''sudo su'' zu root:<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
root@nibo:~# sudo su<br />
root@nibo:~#<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo:~# apt-get update<br />
root@nibo:~# apt-get install git-core<br />
root@nibo:~# git clone git://git.drogon.net/wiringPi<br />
root@nibo:~# cd WiringPi<br />
root@nibo:~/WiringPi# ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15<br />
Taster B: Pin 16<br />
LED grün: Pin 18<br />
LED rot: Pin 22<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1205NIBObee-Berry2016-04-02T17:59:23Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Installation WiringPi / GPIO==<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Damit wir einfach die Ein- und Ausgänge des Rapsberry ansprechen können, installieren wir ''WiringPi'', was nützliche Tools (''gpio'') und diverse Bibliotheken in C, C++, Python, Java und PHP mitbringt.<br />
root@nibo ~ $ apt-get update<br />
root@nibo ~ $ apt-get install git-core<br />
root@nibo ~ $ git clone git://git.drogon.net/wiringPi<br />
root@nibo ~ $ cd WiringPi<br />
root@nibo ~/WiringPi $ ./build <br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
Taster A: Pin 15<br />
Taster B: Pin 16<br />
LED grün: Pin 18<br />
LED rot: Pin 22<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
Wir legen das Skript in unserem neuen Ordner an:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1204NIBObee-Berry2016-04-02T17:51:54Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
<br />
Taster A: Pin 15<br />
Taster B: Pin 16<br />
LED grün: Pin 18<br />
LED rot: Pin 22<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
<br />
Das Script führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Grundsätzlich macht das auch Sinn, aber für das Erlenen und Aufbauen ist es hinderlich. Daher erlauben wir uns zunächst mal, uns als root via SSH mit Passwort anmelden zu dürfen. Grundsätzlich sollte für den root-Benutzer ein komplexes Passwort verwendet werden. Bitte nicht ''12345'', ''root'', ''password'' oder dergleichen.<br />
<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
In diesem Ordner werden wir unser Script anlegen:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1203NIBObee-Berry2016-04-02T17:51:23Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Die Verdrahtung der Platine ist wie folgt:<br />
<br />
Taster A: Pin 15<br />
Taster B: Pin 16<br />
LED grün: Pin 18<br />
LED rot: Pin 22<br />
<br />
mit <br />
root@nibo:~# gpio readall<br />
bekommen wir alle Ports, Ein- und Ausgänge, derzeitige Zustände und Namen angezeigt:<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| | | 3.3v | | | 1 || 2 | | | 5v | | |<br />
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |<br />
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |<br />
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |<br />
| | | 0v | | | 9 || 10 | 0 | ALT0 | RxD | 16 | 15 |<br />
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |<br />
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |<br />
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |<br />
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |<br />
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |<br />
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |<br />
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |<br />
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| 28 | 17 | GPIO.17 | IN | 0 | 51 || 52 | 0 | IN | GPIO.18 | 18 | 29 |<br />
| 30 | 19 | GPIO.19 | IN | 0 | 53 || 54 | 0 | IN | GPIO.20 | 20 | 31 |<br />
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+<br />
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |<br />
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+<br />
<br />
<br />
Das Script führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
user@localmachine:~# ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Grundsätzlich macht das auch Sinn, aber für das Erlenen und Aufbauen ist es hinderlich. Daher erlauben wir uns zunächst mal, uns als root via SSH mit Passwort anmelden zu dürfen. Grundsätzlich sollte für den root-Benutzer ein komplexes Passwort verwendet werden. Bitte nicht ''12345'', ''root'', ''password'' oder dergleichen.<br />
<br />
user@localmachine:~# ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
root@nibo:~# mkdir /opt/niboberry<br />
<br />
In diesem Ordner werden wir unser Script anlegen:<br />
root@nibo:~# cd /opt/niboberry<br />
root@nibo:~# nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
root@nibo:~# chmod +x test.sh<br />
root@nibo:~# ./test.sh<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1202NIBObee-Berry2016-04-02T17:43:24Z<p>Berry-O-Matic: /* Test der Grundfunktion */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgendem kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Das Script führen wir auf dem Raspberry aus, nachdem wir uns typischerweise mit einem SSH-Program (Linux: ssh, Windows: putty) nach der Grundeinrichtung mit dem Raspberry verbunden haben. Da wir den Raspberry mit Linux betreiben, macht es Sinn, sich grundsätzlich mit Linux zu beschäftigen.<br />
<br />
Deshalb werden wir im Folgenden auch mit Linux als unserem Hauptsystem arbeiten; die Beispiele sind dementsprechend aus Linux-Sicht.<br />
<br />
Damit wir vollen Zugriff auf alle Funktionen und Rechte haben, werden wir mit dem root-Benutzer arbeiten.<br />
<br />
Verbinden mit dem Raspberry:<br />
ssh root@[IP-ADRESSE-RASPBERRY]<br />
<br />
Sollte das Login trotz korrektem Passwort nicht möglich sein, ist vermutlich das Verbinden als root noch nicht gestattet. Grundsätzlich macht das auch Sinn, aber für das Erlenen und Aufbauen ist es hinderlich. Daher erlauben wir uns zunächst mal, uns als root via SSH mit Passwort anmelden zu dürfen. Grundsätzlich sollte für den root-Benutzer ein komplexes Passwort verwendet werden. Bitte nicht ''12345'', ''root'', ''password'' oder dergleichen.<br />
<br />
ssh pi@[IP-ADRESSE-RASPBERRY] (defaultpasswort: ''raspberry'')<br />
<br />
Wir werden der Ordnung halber gleich unter dem Ordner ''/opt'' einen eigenen Ordner für unsere Projekte anlegen:<br />
mkdir /opt/niboberry<br />
<br />
In diesem Ordner werden wir unser Script anlegen:<br />
cd /opt/niboberry<br />
nano test.sh<br />
<br />
Folgenden Code einfügen und mit '''[STRG-X]''' den Editor beenden und speichern:<br />
<br />
<br />
Dann die Datei ausführbar machen und starten:<br />
chmod +x test.sh<br />
./test.sh<br />
<br />
Bei Druck auf Taster A, sollte nun die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
<br />
Sollte das nicht funktionieren, je nach Problem die Platine und das Programm überprüfen.<br />
<br />
mit '''[STRG-C]''' beenden wir das Testprogramm.<br />
<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1201NIBObee-Berry2016-04-02T17:25:22Z<p>Berry-O-Matic: /* Vorbereiten des Bees für die Kommunikation mit dem Rasp */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgenden kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Bei Druck auf Taster A, sollte die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen und Daten senden kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1200NIBObee-Berry2016-04-02T17:24:52Z<p>Berry-O-Matic: /* Aufbau der seriellen Verbindung zum NIBObee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgenden kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Bei Druck auf Taster A, sollte die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins 8 (TX, senden) und 10 (RX, empfangen) für die serielle Kommunikation vorgesehen.<br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1199NIBObee-Berry2016-04-02T17:23:18Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
Der Raspberry wird typischerweise mit [https://www.raspberrypi.org/downloads/raspbian/ Raspberian] betrieben, einer speziell angepassten Debian-Version für den Raspberry.<br />
<br />
Die Grundinstallation des Raspberrys ist im Internet z.B. [https://www.raspberrypi.org/documentation/installation/installing-images/README.md hier] hinreichend beschrieben.<br />
<br />
Es empfiehlt sich, ein Edimax-Nano-USB-WLAN-Stick gleich von Anfang an mit zu integrieren. Die Treiber bringt Raspberian bereits mit.<br />
==Test der Grundfunktion==<br />
Mit folgenden kleinen Script testen wir die Grundfunktionen der Raspberry-Addon-Platine.<br />
<br />
Bei Druck auf Taster A, sollte die grüne LED leuchten. Bei Druck auf Taster B die rote.<br />
==Aufbau der seriellen Verbindung zum NIBObee==<br />
Auf der Raspberry-GPIO-Leiste sind die Pins <br />
<br />
Siehe [http://download.nicai-systems.com/nibo/nibobee_berry_schematic_1_04.pdf Schaltplan Berry-Erweiterung].<br />
<br />
<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1198NIBObee-Berry2016-04-02T17:14:14Z<p>Berry-O-Matic: </p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
'''''...work in progress...'''''<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matichttp://nibo-roboter.de/mediawiki/index.php?title=NIBObee-Berry&diff=1197NIBObee-Berry2016-04-02T17:13:54Z<p>Berry-O-Matic: /* Vorbereiten des Rasp für die Kommunikation mit dem Bee */</p>
<hr />
<div>=Info=<br />
Mit dem Berry Modul kann ein NIBObee Roboter mit einem Raspberry Pi verbunden werden. Dadurch wird der Anschluss von nahezu beliebiger Sensorik (SPI, I2C, USB ...) möglich und zudem kann über den Raspberry via WLAN-Zugriff auf einen somit mobilen NIBObee zugegriffen werden.<br />
<br />
Darüber hinaus stehen über den vollwertigen Linux-Computer, den der Raspberry darstellt, wesentlich komfortablere und zugleich komplexere Programmiermöglichkeiten zur Verfügung.<br />
<br />
Das Berry-Modul enthält zudem einen integrierten DC/DC Wandler für die Spannungsversorgung des RPi, der mit einem weiten Spannungsbreich von 6,5 - 30 Volt umgehen kann. Dadurch können z.B. auch LiPo-Akkus etc. verwendet werden.<br />
Über einen (leider nicht enthaltenen und nur optionalen) 2. DC/DC-Wandler kann aus dem Berry-Akku auch der NIBObee mit Strom versorgt werden.<br />
<br />
Der Rasperry Pi ist durch eine serielle Schnittstelle mit dem NIBObee verbunden.<br />
<br />
Der Mikrocontroller im NIBObee kann dabei aus "ausführendes" Organ verstanden werden, während der Raspberry die Befehle erteilt.<br />
<br />
Dadurch kann ggf. das neue eeprom-Flashen auf dem NIBObee bei Programmänderungen entfallen. Allerdings ist die Geschwindigkeit der Datenübertragung über die serielle Schnittstelle begrenzt, so dass die "reflexartigen" Funktionen ggf. besser "fest" im NIBObee-Controller verankert und die komplexen Funktionen im Raspberry umgesetzt werden sollten.<br />
<br />
So sieht der NIBOObee mit dem aufgesetzten Raspberry mit WLAN, Kamera und einer Powerbank als Stromquelle aus:<br />
<br />
[[Datei:beeberry_full.jpg|550px|NIBObee-Berry]]<br />
<br />
Über die Berry-Erweiterung stehen 2 zusätzliche Schalter und 2 LEDs zur Verfügung, die nach Belieben Verwendung finden werden:<br />
<br />
[[Datei:beeberry_side1.jpg|550px|NIBObee-Berry, Seitenansicht 1]]<br />
<br />
Insgesamt hat unser Mega-Käfer jetzt drei Ebenen: NIBObee, Berry-Erweiterung und der Raspberry selbst:<br />
<br />
[[Datei:beeberry_side2.jpg|550px|NIBObee-Berry, Seitenansicht 2]]<br />
<br />
=Fehlersuche, wenn es nach dem Zusammenbauen nicht klappt=<br />
Sowohl beim NIBObee, als auch beim Berry-AddOn waren die Batterieclips nicht gut verarbeitet. Die verklemmten Bereiche an den Enden waren nicht stromführend, so dass die Geräte nicht mit Strom versorgt wurden.<br />
<br />
Ein Nachlöten hilft hier leicht ab.<br />
<br />
'''Aber Vorsicht!''' Auf jeden Fall die Akkus vorher entfernen, sonst werden die Clips durch den Federdruck und die Hitze beim Löten schnell irreparabel beschädigt!<br />
<br />
[[Datei:Battclips_error1.jpg|550px|nachgelötete Batterieclips]]<br />
<br />
=Vorbereiten des Bees für die Kommunikation mit dem Rasp=<br />
'''''...work in progress...'''''<br />
<br />
Damit der Bee von dem Rasp über die Serielle Schnittstelle Befehle annehmen kann, müssen diese miteinander kommunizieren und über eine "abgestimmten" Befehlssatz verfügen.<br />
<br />
=Vorbereiten des Rasp für die Kommunikation mit dem Bee=<br />
'''''...work in progress...'''''<br />
<br />
=Programmierbeispiele=<br />
'''''...work in progress...'''''</div>Berry-O-Matic