====== Raspberry Pi ====== ===== install raspbian ===== https://www.raspberrypi.org/documentation/installation/installing-images/linux.md df -h sudo umount /dev/sdb1 sudo dd bs=4M if=2015-11-21-raspbian-jessie.img of=/dev/sdb sudo dd bs=4M if=/dev/sdb of=from-sd-card.img truncate --reference 2015-11-21-raspbian-jessie.img from-sd-card.img diff -s from-sd-card.img 2015-11-21-raspbian-jessie.img sync ===== initial setup ===== sudo raspi-config user: ''pi''\\ pass: ''raspberry'' ===== static ip ===== ''/etc/dhcpcd.conf'': interface eth0 static ip_address=192.168.2.210/24 static routers=192.168.2.1 static domain_name_servers=192.168.2.1 [[https://pi-hole.net/faq/how-do-i-set-a-static-ip-address-in-raspbian-jessie-using-etcdhcpcd-conf/|src]] ===== xserver start/stop ===== sudo startx sudo /etc/init.d/lightdm stop ===== keyboard ===== ''/etc/default/keyboard'': XKBLAYOUT="us" ===== temperature ===== #!/bin/bash cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp) cpuTemp1=$(($cpuTemp0/1000)) cpuTemp2=$(($cpuTemp0/100)) cpuTempM=$(($cpuTemp2 % $cpuTemp1)) echo CPU temp"="$cpuTemp1"."$cpuTempM"'C" echo GPU $(/opt/vc/bin/vcgencmd measure_temp) ===== wifi ===== sudo iwlist wlan0 scan|more ''sudo nano /etc/network/interfaces'' allow-hotplug wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp ''sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'' ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="YOURSSID" psk="YOURPASSWORD" } sudo ifdown wlan0 sudo ifup wlan0 ===== jdk ===== http://www.rpiblog.com/2014/03/installing-oracle-jdk-8-on-raspberry-pi.html http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html download ''jdk-8-linux-arm-vfp-hflt.tar.gz for Linux ARM v6/v7 Hard Float ABI'' sudo tar zxvf jdk-8-linux-arm-vfp-hflt.tar.gz -C /opt sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1 sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1 sudo update-alternatives --config javac sudo update-alternatives --config java java -version javac -version ===== rtc ds3231 ===== 1. Enable I2C: sudo raspi-config "Advanced Options" / "A6 I2C" 2. Sort out packages: sudo apt-get install python-smbus i2c-tools sudo apt-get purge fake-hwclock ntp sudo apt-get install ntpdate # TODO: not found sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 3. Check Pi starts I2C automatically in ''/etc/modules'': i2c-dev 4. Check user has group (change ''pi'' to required): sudo adduser pi i2c 5. Add at the end of ''/boot/config.txt'': dtoverlay=i2c-rtc,ds3231 6. Add the line in ''/etc/rc.local'' (above “exit 0”): /sbin/hwclock -s 7. Change in ''/etc/init.d/hwclock.sh'': HWCLOCKACCESS=no 8. reboot 9. Set date/time: sudo dpkg-reconfigure tzdata sudo date -s "2 SEPTEMBER 2016 10:00:00" sudo hwclock -w Done! 14. Other info commands: sudo i2cdetect -y 1 sudo dmesg | grep rtc sudo cat /proc/driver/rtc Compiled from: [[https://elementztechblog.wordpress.com/2015/08/08/real-time-clock-rtc-interfacing-with-raspberrypi/|src1]] [[https://trick77.com/adding-ds3231-real-time-clock-raspberry-pi-3/|src2]] ===== shutdown ===== {{:dev:pi:rpi_shutdown_scheme.png|}} ''/home/pi/softshut/softshut.py'': #!/usr/bin/python import time from subprocess import call import RPi.GPIO as gpio pinBt=19 pinAC=21 pinLed=23 dlyShutdownBt = 5 dlyShutdownAC = 10 dlyLedOk = 1 dlyLedFast = 0.1 def loop(): hasBt = False hasAC = False timeBt = 0 timeAC = 0 dlyLed = dlyLedOk terminated = False while gpio.input(pinBt)>0 or gpio.input(pinAC)>0: for i in range(0,3): gpio.output(pinLed, True) time.sleep(dlyLedFast) gpio.output(pinLed, False) time.sleep(dlyLedFast) time.sleep(dlyLedOk) while not terminated: if gpio.input(pinBt)==0: if timeBt > 0: print "Bt OK" timeBt = 0 else: if timeBt == 0: print "Bt failed" timeBt = time.time() else: if time.time() - timeBt > dlyShutdownBt: print "Bt shutdown" doShutdown() terminated = True if gpio.input(pinAC)==0: if timeAC > 0: print "AC OK" timeAC = 0 else: if timeAC == 0: print "AC failed" timeAC = time.time() else: if time.time() - timeAC > dlyShutdownAC: print "AC shutdown" doShutdown() terminated = True if (timeAC > 0 or timeBt > 0) and dlyLed == dlyLedOk: dlyLed = dlyLedFast elif timeAC == 0 and timeBt == 0 and dlyLed != dlyLedOk: dlyLed = dlyLedOk gpio.output(pinLed, True) time.sleep(dlyLed) gpio.output(pinLed, False) time.sleep(dlyLed) def eventButton(pin): print "Button shutdown" doShutdown() def doShutdown(): # call('halt', shell=False) print "SHUTDOWN!!!" gpio.setmode(gpio.BOARD) gpio.setup(pinBt, gpio.IN) gpio.setup(pinAC, gpio.IN) gpio.setwarnings(False) gpio.setup(pinLed, gpio.OUT) loop() gpio.cleanup() ''/etc/rc.local'': # add this line before "exit 0" python /home/pi/softshut/softshut.py &