Domotica & Raspberry - Agrarix.netpub.agrarix.net/Raspberry_Pi/RPIE-03-RPI_Domotica.pdf ·...
Transcript of Domotica & Raspberry - Agrarix.netpub.agrarix.net/Raspberry_Pi/RPIE-03-RPI_Domotica.pdf ·...
Domotica met een Raspberry PI
Herfst 2013 Jeroen Bruins Slot 1
Agenda
Introductie en waarom De eerste stappen
Fouten Wat voor software Arduino – Jeenode
Raspberry Velleman k8055
Demo’s Domotica oplossing thuis
Toekomst, Boeken , Handige links
Herfst 2013 Jeroen Bruins Slot 2
Herfst 2013 Jeroen Bruins Slot 3
Wie ben ik ?
● Jeroen Bruins Slot,55 jaar, ik werk bij Oracle als Sales Consultant, daarvoor bij Sun MicroSystems en Wang Labs.
● Eerste Unix/Linux ervaringen met SCO Xenix, Red Hat, Solaris, Debian, Ubuntu, FreeBSD.
● Hobby domotica (Samentrekking van de woorden domus (huis) en elektronica.)
Herfst 2013 Jeroen Bruins Slot 4
Hoe het allemaal begon
● Assen
● Verwarming in de winter
● Open-Source > OpenSolaris
● Sun Spots
● Doelstelling: ervaring opdoen met Java
Herfst 2013 Jeroen Bruins Slot 5
Herfst 2013 Jeroen Bruins Slot 6
Mhz, Memory, CPU,s
Atmega328 32kb flash 20Mhz 8bit 1k eeprom 2k sram
Raspberry PI 700 mhz 32Bit 256 /512 mb ram
T5 3.6 GHz 128 cores 1024 cpu/threads 64 bit 4TB ram
Herfst 2013 Jeroen Bruins Slot 7
Low Power Low Cost Computing
Herfst 2013 Jeroen Bruins Slot 8
Wat ging er direct fout
● Gebruik maken van nightly OpenSolaris development builds
● Starten met Java, Python en C
● Ik ben slecht in programmeren
● Starten met veel te dure componenten (Sun Spots)
Herfst 2013 Jeroen Bruins Slot 9
Tweede Fase
● Poging met Cobalt Cube 2,3 en een 4
– (Linux 2.0 -2.2, Mips processor)
● Laptop met Debian en K8055 Velleman
– Kabels door het hele huis
Herfst 2013 Jeroen Bruins Slot 10
Toch weer Solaris
● Geen nightly builds maar stabielere versies van Solaris 11/12
● Gebruik het ook als OS op mijn laptop /dual boot
● Hulp van Solaris developpers (drivers, python, Java)
● Os onafhankelijk programmeren
– Gestopt met C, te complex (na een paar maanden heb ik geen idee meer waarom ik iets heb gedaan)
– Keuze voor PHP en evt. shell scripts
Herfst 2013 Jeroen Bruins Slot 11
Waarom PHP
● PHP is open-source en draait op elk platform
● PHP is erg makkelijk te leren.
● PHP is snel.
● PHP heeft een goede documentatie en er zijn veel tutorials te vinden op het web.
● Zowel voor de client als de server side. (in Html, maar ook via de command line)
● Geeft meteen aan waar de fout zit tijdens runnen
Herfst 2013 Jeroen Bruins Slot 12
Eerste echte stappen
● Aansturing van relais om de verwarming te overbruggen.
● Gas en Elektra meter uitlezen.
● Alarm systeem
Herfst 2013 Jeroen Bruins Slot 13
Herfst 2013 Jeroen Bruins Slot 14
Wat hebben we hier staan?
Herfst 2013 Jeroen Bruins Slot 15
JeeNode LCD (USB)
Velleman K8055 (USB) +LDR
JeeNode LCD
JeeNode Temperatuur sensor
Laptop
Router (DHCP) JeeNode aan GPIO
Bluetooth
868Mhz
Telefoon
Linux Board? Welke Linux?
● Openwrt?
● Debian
● Centos
● Ubuntu
● Of toch FreeBSD
● Freenas
● Android ?
● Solaris
Herfst 2013 Jeroen Bruins Slot 16
Raspberry PI
● Low power Linux
● Migratie eenvoudig “c” opnieuw compileren, rrd export-import, de rest is (bijna)hetzelfde
● Veel problemen met de Power adapter (steeds corrupted filesystems)
● Nadeel geen analoge input
Herfst 2013 Jeroen Bruins Slot 17
GPIO - LED
# echo "17" >/sys/class/gpio/export // stuur alle pinnen afzonderlijk aan
# echo "out" >/sys/class/gpio/gpio17/direction // maak output pin
# echo "1" >/sys/class/gpio/gpio17/value; # LED aan
# echo "0" >/sys/class/gpio/gpio17/value; # LED uit
Herfst 2013 Jeroen Bruins Slot 18
Demo
• Blinking Led op GPIO
• ./gpio.sh
Herfst 2013 Jeroen Bruins Slot 19
Herfst 2013 Jeroen Bruins Slot 20
Raspberry – K8055
● K8055-detach //http://libk8055.sourceforge.net/
– // Disconnecting all Velleman K8055 boards from their current driver
● CUEIB // http://linuxk8055.free.fr/
Programma om de K8055 uit te lezen , verder aangepast (meerdere kaarten en fout controle)
Herfst 2013 Jeroen Bruins Slot 21
Gasmeter
Herfst 2013 Jeroen Bruins Slot 22
Demo
● CUEIB ./cueib.sh
● LDR
● Led op Raspberry = Led op K8055 (5)
● “Houston we have a problem” K8055 (4)
● Index.php
● Gasmeter sensor
Herfst 2013 Jeroen Bruins Slot 23
Herfst 2013 Jeroen Bruins Slot 24
Software
● Van MySQL naar RRDtool
● Statische Plaatjes
● (Straks in een demo ook javascript)
● Netbeans als programmeer omgeving
● Dropbox om alle software in sync te houden.
● Rsync alle data naar externe locatie
Herfst 2013 Jeroen Bruins Slot 25
Waarom RRD Tool?
● RRDtool (acronym for round-robin database tool) aims to handle time-series data like network bandwidth, temperatures, CPU load, etc. The data are stored in a round-robin database (circular buffer), thus the system storage footprint remains constant over time.
● It also includes tools to extract RRD data in a graphical format, for which it was originally intended.
Herfst 2013 Jeroen Bruins Slot 26
Wat grafieken
Herfst 2013 Jeroen Bruins Slot 27
Arduino - JeeNodes
● Atmel met 868Mhz RFM12b zend/ontvanger
● ATMEGA328P
● Programeren in C++
● Low Cost
– Open Hardware
– Open Software
● Shields om sensors aan te sluiten
Herfst 2013 Jeroen Bruins Slot 28
GPIO – Arduino - Serial
● Jeenode rechtstreeks op GPIO pins
– sudo usermod -a -G tty pi // maak user pi onderdeel van group tty
– edit the file /etc/inittab // zorg dat er geen getty proces loopt.
– (T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 naar #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100)
– Edit /boot/cmdline.txt //geen console output naar dit device
– (remove console=ttyAMA0,115200 kgdboc=ttyAMA0,115200)
● Na reboot net als de LED demo een reset sturen om de JeeNode te starten (rc.local)
Herfst 2013 Jeroen Bruins Slot 29
Demo
Wireless Ping
Wireless Temperatuur Sensor
JeeNode Projecten
● Display met tmp, verjaardag en cpuload
● Bewegings sensor
● Kaku verlichting sturen
● Luchtdruk /Relatieve vochtigheid
● Mechanische Ventilatie
● Tuin Sproeier
● Koelkast / Vriezer
● Opentherm CV Ketel
Herfst 2013 Jeroen Bruins Slot 31
Herfst 2013 Jeroen Bruins Slot 32
Opentherm
Herfst 2013 Jeroen Bruins Slot 33
Wikipedia: OpenTherm (short: OT) is a standard communications protocol used in
central heating systems between a central heating boiler and a thermostat or controller. It
is a point to point protocol where one device (thermostat) is the master and the other the
slave (boiler).
Opentherm
• Of toch niet zo open?
Herfst 2013 Jeroen Bruins Slot 34
Output Devices
● Android telefoon
● Tablet in de huiskamer
● Speaker in de meterkast
● Website
● Leds ipv Sirene en Flitser buiten (voor test doeleinden)
● SMS
Herfst 2013 Jeroen Bruins Slot 35
Mechanische ventilatie
Herfst 2013 Jeroen Bruins Slot 36
Logica
Probeer altijd eerst een duidelijk schema te maken wat je wilt gaan doen.
Bijv Mechanische ventilatie, stand 1 2 of 3 afhankelijk van (beweging, temperatuur, vochtigheidsgraad bad-woonkamer, staat het gasfornuis aan, geeft de ketel heet water, is het na 12 uur ‘s nachts. etc
Herfst 2013 Jeroen Bruins Slot 37
Herfst 2013 Jeroen Bruins Slot 38
Fouten
● Licht om 24:00 standaard uit
● 868Mhz problemen zijn lastig te debuggen
● Male-Male, Female-Female of Male-Female communication
– Send once, who cares (kaku protocol)
– Send over and over (Opentherm)
– Send with Ack’s (Roomnode bewegings sensor)
Herfst 2013 Jeroen Bruins Slot 39
Demo Domotica Systeem Thuis
● Nu Solaris 11 op Intel boardje (D2500HN mini-itx)
– 2 * K8055 + 2 *K2633 (relais) en 2 * K8067 Temp sensor
– Jeelink (centrale ontvanger)
– Arduino Nodo (KaKu send)
– Arduino 433/868 receiver (KaKu + OOK)
Herfst 2013 Jeroen Bruins Slot 40
DEMO
Systeem thuis
14-10-13 NLLGG Jeroen Bruins Slot 42
Roadmap Korte Termijn
● Tipping-Bucket regen meter
● IR leds om TV besturing te monitoren / over te nemen
● Bluetooth koppeling (is de auto/telefoon thuis?)
● Javascript (zoom) van RRD files
● Git gebruiken als source code beheertool
Herfst 2013 NLLGG Jeroen Bruins Slot 43
Roadmap Lange Termijn
● Camera voor de Gas – Electrameter (OCR meterstand)
● DukePad: met een Rasperry Pi
– https://wiki.openjdk.java.net/display/OpenJFX/DukePad
– JavaFX ipv X11
● Android versie
Herfst 2013 Jeroen Bruins Slot 44
De Meest Gebruikte Tools
Herfst 2013 NLLGG Jeroen Bruins Slot 45
Documentatie
Herfst 2013 Jeroen Bruins Slot 46
Wat Kost Dat Ongeveer?
● K8055 Euro 30
● Arduino Euro 25
● RaspberryPI Euro 35
● Jeenode Euro 15
● Jeenode USB Euro 30
● RBBB Euro 15
● USB-BUB Euro 15
Herfst 2013 Jeroen Bruins Slot 47
Links ● http://www.bwired.nl/
● Jeelabs.org
● Elektor
– Part #1: From ingredient to dish, and no oven required
– Part #2: No harm in having a few extra kitchen appliances ready
– Part #3: Let’s get Serial
– Part #4: Set the Table for Raspberry (S)PI
– Part #5: I²C: I Square Seeds (for baking)
– Part #6: A Distinguished Chef enters the kitchen
– Part #7: PWMin’ is a piece of cake
● http://www.themagpi.com/
● http://www.ladyada.net/learn/arduino/
● Http://embedded-projects.net
Herfst 2013 Jeroen Bruins Slot 48
14-10-13 NLLGG Jeroen Bruins Slot 49
Bedankt!
Heb je nog vragen: mail naar
Alle software inclusief presentatie zijn beschikbaar:
Herfst 2013 NLLGG 50 Jeroen Bruins Slot
Hello NLLGG
LiquidCrystalI2C lcd (myI2C); #define screen_width 16 #define screen_height 2 void setup() { lcd.begin(screen_width, screen_height); lcd.print("Hello, NLLGG!"); } void loop() { lcd.setCursor(0, 1); lcd.print("Up time:"); lcd.print(millis()/1000); lcd.print('s'); delay(500); lcd.backlight(); }
CUEIB
void print_help() { printf("Usage: 0.5 \n"); printf("--device -d <device number> Select the device\n"); printf("--counter -c (:Counter:reset) Get counter/Reset counter\n"); printf("--digital-input -di (:bit:Decimal) Get the digital input\n"); printf("--digital-output –do (:bit) <value> Set the digital output\n"); printf("--analog-input -ai (:device) Get the analog output of device 1 or 2\n"); printf("--analog-output -ao (:device) <value> Set the analog output of device 1 or 2\n"); printf("--help This help message\n");
Arduino-Serial
void usage(void) { printf("Usage: arduino-serial -p <serialport> [OPTIONS]\n" "\n" "Options:\n" " -h, --help Print this help message\n" " -p, --port=serialport Serial port Arduino is on\n" " -b, --baud=baudrate Baudrate (bps) of Arduino\n" " -s, --send=data Send data to Arduino\n" " -r, --receive Receive data from Arduino & print it out\n" " -n --num=num Send a number as a single byte\n" " -d --delay=millis Delay for specified milliseconds\n" "\n"