RaspberryPi: Unterschied zwischen den Versionen
Aus www.electronic-man.randschtoischlotzer.de
Eman (Diskussion | Beiträge) (→Einrichten) |
Eman (Diskussion | Beiträge) (→Einrichten) |
||
Zeile 422: | Zeile 422: | ||
* optional - Wenn man später mit Python arbeiten will (falls nicht vorhanden): | * optional - Wenn man später mit Python arbeiten will (falls nicht vorhanden): | ||
sudo apt-get install python-dev | sudo apt-get install python-dev | ||
− | sudo apt- | + | sudo apt-get install python-rpi.gpio |
* Dateien: | * Dateien: | ||
Zeile 474: | Zeile 474: | ||
*Raspberry neu booten | *Raspberry neu booten | ||
sudo reboot | sudo reboot | ||
+ | |||
+ | === bash-Scripte === | ||
+ | |||
+ | * /home/pi/lightbarrier_ini.sh: | ||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # export GPIO pin 24 and set to input with pull-up | ||
+ | echo "24" > /sys/class/gpio/export | ||
+ | echo "in" > /sys/class/gpio/gpio24/direction | ||
+ | echo "high" > /sys/class/gpio/gpio24/direction | ||
+ | </pre> | ||
+ | * /home/pi/lightbarrier.sh: | ||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # export GPIO pin 24 and set to input with pull-up => done by seperate script "lightbarrier_ini.sh" because shauld be done only once | ||
+ | #echo "24" > /sys/class/gpio/export | ||
+ | #echo "in" > /sys/class/gpio/gpio24/direction | ||
+ | #echo "high" > /sys/class/gpio/gpio24/direction | ||
+ | |||
+ | # monitor GPIO pin 24 (wiringPi pin 1) for light-barrier signal | ||
+ | |||
+ | # wait for pin to go low | ||
+ | while [ true ] | ||
+ | do | ||
+ | if [ "$(cat /sys/class/gpio/gpio24/value)" == '0' ] | ||
+ | then | ||
+ | echo "playing mp3 ..." | ||
+ | #exit 0 | ||
+ | mpg123 /home/pi/hwk.mp3 | ||
+ | fi | ||
+ | sleep .1 | ||
+ | done | ||
+ | </pre> |
Version vom 6. März 2015, 16:52 Uhr
Inhaltsverzeichnis
- 1 Updates & Upgrades
- 2 AVM FRITZ!WLAN USB Stick installieren/einrichten
- 3 Realtek RTL8188CUS Mini-USB Stick installieren/einrichten
- 4 TFTP-Server installieren
- 5 FTP-Server installieren:
- 6 Python -Setuptools installieren:
- 7 PIP installieren:
- 8 Feedparser installieren:
- 9 Cron-Logging einstellen
- 10 Uhrzeit per NTPDATE synchronisieren
- 11 Cron - Einstellungen aus Datei "Einstellungen_crontab.txt" importieren:
- 12 Fernseher über HDMI-CEC steuern
- 12.1 cec-client installieren
- 12.2 Test
- 12.3 Fernseher per CEC-Client einschalten
- 12.4 Fernseher per CEC-Client ausschalten
- 12.5 Power-Status per CEC-Client auslesen
- 12.6 Fernseher per CEC-Client auf HDMI1 umschalten
- 12.7 Fernseher per CEC-Client auf HDMI4 umschalten
- 12.8 Fernseher wieder auf TV umschalten
- 12.9 Sprache des Fernsehers rausfinden
- 12.10 Befehle von "cec-client" anzeigen
- 12.11 CEC-Codes herausfinden
- 12.12 alle HDMI-CEC Geräte anzeigen
- 13 Projekt: Raspberry spielt mit IR-Lichtschranke als Sensor ein MP3-Datei ab
Updates & Upgrades
sudo apt-get update
sudo apt-get upgrade
AVM FRITZ!WLAN USB Stick installieren/einrichten
- Konrolle ob Hardearetyp "zutrifft":
lsusb
eingeben.
- Die Ausgabe sollte so aussehen:
ID 057c:8401 AVM GmbH Fritz!WLAN N [Atheros AR9001U]
- Freie Firmware intallieren:
sudo apt-get install firmware-linux-free
- WLAN-Key einstellen/angeben
sudo pico /etc/wpa_supplicant/wpa_supplicant.conf
- Inhalt der Datei anpassen + speichern. Z. B.:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={ ssid="yyy" scan_ssid=1 proto=RSN group=CCMP pairwise=CCMP key_mgmt=WPA-PSK psk="xxxxxxxxxxxxxxxx" }
- In der Zeile ssid="yyy" den Netznamen (SSID) eintragen.
- In der Zeile psk="xxxxxxxxxxxxxxxx" den WLAN-Schlüssel eintragen.
- Test ob WLAN/WiFi-Netze gefunden werden:
sudo ifdown wlan0 sudo ifup wlan0 sudo iwlist wlan0 scan
oder
sudo iwlist wlan0 scan |grep "ESSID\|Quality"
Realtek RTL8188CUS Mini-USB Stick installieren/einrichten
- Konrolle ob Hardwaretyp "zutrifft":
lsusb
eingeben.
- Die Ausgabe sollte so aussehen:
0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
ifconfig
eingeben.
- Die Ausgabe sollte so ähnlich aussehen:
wlan0 Link encap:Ethernet Hardware Adresse 00:13:ef:90:4b:2a UP BROADCAST MULTICAST MTU:1500 Metrik:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
- nach verfügbaren Netzwerken scannen:
sudo iwlist wlan0 scan
- Die Ausgabe sollte so ähnlich aussehen:
wlan0 Scan completed : Cell 01 - Address: 24:65:11:86:E7:53 ESSID:"xxx" Protocol:IEEE 802.11bgn Mode:Master Frequency:2.412 GHz (Channel 1) Encryption key:on Bit Rates:300 Mb/s Extra:rsn_ie=3014010xxxxxx040100000fac040100000xxc020000 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : CCMP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK IE: Unknown: DD6F0050F204104A0001101044000102103B00010310470010E5F1E6174F806C1C241124651186E74F1021000341564D1023000446426F78102400043030303010420004303030301054 000800060050F20400011011000446426F78100800022788103C0001031049000600372A000120 Quality=81/100 Signal level=63/100
- WLAN-Key einstellen/angeben
sudo pico /etc/wpa_supplicant/wpa_supplicant.conf
- Inhalt der Datei anpassen + speichern. Z. B.:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={ ssid="yyy" key_mgmt=WPA-PSK psk="xxxxxxxxxxxxxxxx" }
- In der Zeile ssid="yyy" den Netznamen (SSID) eintragen.
- In der Zeile psk="xxxxxxxxxxxxxxxx" den WLAN-Schlüssel eintragen.
- Neu starten
sudo reboot
- Test ob IP-Adresse bezohen wurde:
sudo ifconfig wlan0
- Ausgabe sollte so Änlich aussehen:
wlan0 Link encap:Ethernet Hardware Adresse 00:13:ef:xx:xx:xx inet Adresse:192.168.xxx.xxx Bcast:192.168.xxx.xxx Maske:255.xxx.xxx.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:45 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:15320 (14.9 KiB) TX bytes:1398 (1.3 KiB)
TFTP-Server installieren
- Server installieren:
sudo apt-get install tftpd-hpa
- Einstelllungen anpassen:
sudo nano /etc/default/tftpd-hpa
Inhalt der Datei wie folgt ändern:
TFTP_USERNAME=”tftp” TFTP_DIRECTORY=”/srv/tftp” TFTP_ADDRESS=”0.0.0.0:69″ TFTP_OPTIONS=”–secure -4”
- Server neu starten:
sudo service tftpd-hpa restart
FTP-Server installieren:
sudo apt-get install vsftpd
- FTP-Server konfigurieren:
sudo nano /etc/vsftpd.conf
- Folgende Änderungen (Auskommentieren) machen:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES local_umask=022
- Neuen Nutzer hinzufügen
sudo useradd -m -s /sbin/false -g users ftpuser
- Kennwort setzen
sudo passwd ftpuser
- Sicherheitseinstellungen vornehmen:
sudo nano /etc/pam.d/vsftpd
- PAM konfigurieren (Auskommentieren)
#auth required pam_shells.so
- Server neu starten:
sudo service vsftpd restart
- Berechtigungen setzen:
sudo chmod a-w /home/ftpuser
Python -Setuptools installieren:
sudo apt-get install python-setuptools
PIP installieren:
sudo apt-get install python-pip
Feedparser installieren:
sudo pip install feedparser
Cron-Logging einstellen
sudo pico /etc/rsyslog.conf
- Auskommentieren (Rubrik:
############### #### RULES #### ###############)
# cron.* /var/log/cron.log
zu:
cron.* /var/log/cron.log
- Cron neu starten:
sudo /etc/init.d/rsyslog restart
Uhrzeit per NTPDATE synchronisieren
sudo apt-get purge ntp
sudo dpkg-reconfigure tzdata
sudo apt-get install ntpdate
Cron - Einstellungen aus Datei "Einstellungen_crontab.txt" importieren:
sudo crontab ./Einstellungen_crontab.txt
Fernseher über HDMI-CEC steuern
cec-client installieren
sudo apt-get install autoconf build-essential git liblockdev1-dev libtool libudev-dev pkg-config git clone git://github.com/Pulse-Eight/libcec.git cd libcec/ ./bootstrap ./configure --with-rpi-include-path=/opt/vc/include --with-rpi-lib-path=/opt/vc/lib --enable-rpi
make sudo make install sudo ldconfig
Test
cec-client -l
Fernseher per CEC-Client einschalten
echo "on 0" | sudo cec-client -s -d 1
Fernseher per CEC-Client ausschalten
echo "standby 0" | sudo cec-client -s -d 1
Power-Status per CEC-Client auslesen
echo "pow 0" | sudo cec-client -s -d 1
Fernseher per CEC-Client auf HDMI1 umschalten
echo "tx 4F 82 10 00" | cec-client -s
Fernseher per CEC-Client auf HDMI4 umschalten
echo "tx 4F 82 40 00" | cec-client -s
Fernseher wieder auf TV umschalten
echo "txn 40 9D 00 00" | cec-client -s
Sprache des Fernsehers rausfinden
echo 'lang 0' | cec-client -t p -p 1 -d 1 -s | tail -n1 | grep 'language' | awk '{print $3}'
Befehle von "cec-client" anzeigen
echo h | cec-client -s -d 1
Ausgabe:
opening a connection to the CEC adapter... ================================================================================ Available commands: [tx] {bytes} transfer bytes over the CEC line. [txn] {bytes} transfer bytes but don't wait for transmission ACK. [on] {address} power on the device with the given logical address. [standby] {address} put the device with the given address in standby mode. [la] {logical address} change the logical address of the CEC adapter. [p] {device} {port} change the HDMI port number of the CEC adapter. [pa] {physical address} change the physical address of the CEC adapter. [as] make the CEC adapter the active source. [is] mark the CEC adapter as inactive source. [osd] {addr} {string} set OSD message on the specified device. [ver] {addr} get the CEC version of the specified device. [ven] {addr} get the vendor ID of the specified device. [lang] {addr} get the menu language of the specified device. [pow] {addr} get the power status of the specified device. [name] {addr} get the OSD name of the specified device. [poll] {addr} poll the specified device. [lad] lists active devices on the bus [ad] {addr} checks whether the specified device is active. [at] {type} checks whether the specified device type is active. [sp] {addr} makes the specified physical address active. [spl] {addr} makes the specified logical address active. [volup] send a volume up command to the amp if present [voldown] send a volume down command to the amp if present [mute] send a mute/unmute command to the amp if present [self] show the list of addresses controlled by libCEC [scan] scan the CEC bus and display device info [mon] {1|0} enable or disable CEC bus monitoring. [log] {1 - 31} change the log level. see cectypes.h for values. [ping] send a ping command to the CEC adapter. [bl] to let the adapter enter the bootloader, to upgrade the flash rom. [r] reconnect to the CEC adapter. [h] or [help] show this help. [q] or [quit] to quit the CEC test client and switch off all connected CEC devices. ================================================================================
CEC-Codes herausfinden
alle HDMI-CEC Geräte anzeigen
echo scan | cec-client -s -d 1
Projekt: Raspberry spielt mit IR-Lichtschranke als Sensor ein MP3-Datei ab
Materialien:
Hardware:
- IR-Lichtschranke aus Ausbildung zum Kommunkationselektroniker bei der DBP/Deutschen Telekom Modul 2.11.06 bestehend aus:
- Sender
- Empfänger mit Relais
- 2 SteckerNetzteile mit möglichst guter Gleichrichtung. Eingang: 230V ~ Ausgang: 12V min. 200mA
- RaspberryPi Model B
- 1 SteckerNetzteil mit MiniUSB-Anschluss zum Betrieb des RaspberryPi (z. B. Ansmann Micro USB Charger 1A). Eingang: 230V ~ Ausgang: 5V max. 1A
- 16 GB SD-Karte
- "Aktive" Lautsprecherboxen (am besten mit Lautstärkeregler) für PC mit 3,5mm Klinkenstecker-Anschluss oder passendem Adapter.
Software:
Hardware Installation:
- Die zwei Relaiskontakte für dem Schliesser der Lichtschranke (3-poliger Schraubverbinder am DIL-Relais auf der Platine) mit 2 Drähten:
- 1x an PIN (Ground)
- 1x an PIN (GPIO24)
- des GPIO-Steckers des RaspberryPi anschliessen:
Software Installation:
- NOOBS installieren wie hier beschrieben
- SD-Karte in RaspberryPi stecken
- Strom anschliessen und booten
- in der grafischen Oberfläche "Deutsch + Deutsche Tastatur" einstellen
- Raspbian auswählen und installieren lassen
- Neu starten
- raspi-config ausführen - Punkte:
configure_keyboard - Set keyboard layout change_pass - Change password for 'pi' user change_locale - Set locale
Anmerkung: Am besten alle 3 deutschen 'locales' auswählen + die mit UTF-8 als aktuelle setzen.
change_timezone - Set timezone
durcharbeiten.
Einrichten
- Raspbian auf den "neusten Stand" bringen:
sudo apt-get update sudo apt-get upgrade
- MP3-Software installieren (alternativ geht auch
aplay
, dann eben mit.wav
-files (sollte vorinstalliert sein):
sudo apt-get install mpg321
- ALSA-Sound-Werkzeuge (falls nicht vorhanden):
sudo apt-get install alsa-utils
- optional - Wenn man später mit Python arbeiten will (falls nicht vorhanden):
sudo apt-get install python-dev sudo apt-get install python-rpi.gpio
- Dateien:
lightbarrier.sh lightbarrier_ini.sh hwk.mp3
Nach Verzeichnis /home/pi
kopieren. Z. B. über FTP-Zugriff oder vom Raspberry aus über sudo wget --ftp-user=Benutzer --ftp-password=Kennwort ftp://ftp.server.net/hwk.mp3
- Rechte der Dateien z. B. mit
sudo chmod 755 *
auf ausführbar setzen.
- Datei
/etc/rc.local
editieren:
sudo nano /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sudo /home/pi/lightbarrier_ini.sh sudo /home/pi/lightbarrier.sh # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi exit 0
- Audio Ausgang auf 3,5mm Klinke (grüne Buchse) einstellen
sudo amixer cset numid=3 1
- Kontrolle:
sudo amixer cget numid=3 1
sollte so ausehen:
numid=3,iface=MIXER,name='PCM Playback Route' ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0 : values=1
- Lautstärke auf Maximum setzen:
amixer sset 'PCM' 100%
- Raspberry neu booten
sudo reboot
bash-Scripte
- /home/pi/lightbarrier_ini.sh:
#!/bin/bash # export GPIO pin 24 and set to input with pull-up echo "24" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio24/direction echo "high" > /sys/class/gpio/gpio24/direction
- /home/pi/lightbarrier.sh:
#!/bin/bash # export GPIO pin 24 and set to input with pull-up => done by seperate script "lightbarrier_ini.sh" because shauld be done only once #echo "24" > /sys/class/gpio/export #echo "in" > /sys/class/gpio/gpio24/direction #echo "high" > /sys/class/gpio/gpio24/direction # monitor GPIO pin 24 (wiringPi pin 1) for light-barrier signal # wait for pin to go low while [ true ] do if [ "$(cat /sys/class/gpio/gpio24/value)" == '0' ] then echo "playing mp3 ..." #exit 0 mpg123 /home/pi/hwk.mp3 fi sleep .1 done