Spegelfilm

Idag kom spegelfilmen (tänk typ solskyddsfilm till bil) som ska sitta på en glasskiva framför bildskärmen. Jag köpte den från MDP Supplies som har både bra priser och snabba leveranser, rekommenderas! Pillet med koden går vidare, än så länge är det en klocka, väderprognos, dagens citat och nyheterna från SVT. Jag ska bara få till visningen av en GMail-kalender också så är den delen klar.

DSC_0178

Share

Magic Mirror

Alla verkar bygga sig en magisk spegel och jag vill inte vara sämre. En gammal skärm har jag redan, Raspberry Pi är lätt att skaffa och resten får ge sig efter vägen. Jag baserar mitt bygge på originalet, Michael Teeuw, men modifierar förstås det hela en del. I det här projektet är det javascript och css som gäller och då är vi långt utanför min komfortzon så det lär bli mycket Googleprogrammering. Jag har i alla fall satt upp en liten testbänk och börjat pilla i koden:

DSC_0177

Share

Håhå jaja…

När alla sladdar var på plats och strömmen påslagen tände sig alla dioder snyggt och prydligt. Synd att de inte släckte sig lika villigt. Efter lite funderande och googlande på komponenter visade det sig att de Solid State-reläer som sitter på reläkorten är för AC och bryter på nollgenomgång. Det blir svårt med lysdioder som trivs bättre med DC… Nya reläkort, denna gång med mekaniska reläer, är på väg från England. Det är som vanligt Micke som gärna är med på kort.

DSC_0173

Share

Lysande!

Idag kom lysdioderna från min morbror som driver Oceanakvarium och bland annat säljer material för hemmabyggare. Det är bra tryck i lysdioder på 2W, jag var förstås tvungen att löda ihop några och prova…

DSC_0168

Share

Det är python…

Idag blev det en tur till Clas för att köpa lite fästliga saker som lim, buntband och tejp. Det kom även ett kuvert från Electro:kit med bland annat de motstånd som behövs i serie med lysdioderna. De drar ungefär 700mA över 3V så sex stycken dioder i serie med ett motstånd på ett ohm blir ganska lagom till mitt nätagg på 19V.

DSC_0167

Det blev även en del programmerat i helgen så nu har jag en liten slinga som sköter ljuset. Den börjar med att tända månljuset vid sex på morgonen och går vid tio över till en soluppgång då ljuset stegas upp under en timma. Under dagen går det slumpmässiga ”molnskuggor” över karet då ett antal dioder släcks i en vandrande sekvens. Vid nio på kvällen börjar solnedgången som håller på en timma innan månljuset åter tar över fram till ett på natten. Det ska byggas ut med olika tider olika veckodagar och lite annat pill men är en bra början. Jag hittade dessutom en bra beskrivning på hur man kör python-skript som tjänster så att det startar automatiskt. Slutligen la jag in en rad i /etc/rsyslog.d/aquacontrol.conf (ja, jo, jag har döpt snurran till aquacontrol. Stäm mig) för att få loggningen till en egen fil:

if $programname == 'aquacontrol.py' then /var/log/aquacontrol.log

Och själva skriptet, skrivet i python, kommer här:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import datetime
import syslog
from random import randint

syslog.syslog('Aquacontrol started')

# Definiera tider
moon_on = datetime.datetime(2015, 1, 1, 6, 0)
moon_off = datetime.datetime(2015, 1, 1, 1, 0)
sunrise_on = datetime.datetime(2015, 1, 1, 10, 0)
sunset_on = datetime.datetime(2015, 1, 1, 21, 0)

# definiera variabler
sun = [2,3,4,5,6,7,8,9,10]
moon = 11

# Initiera GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
for x in range (0, 9):
	GPIO.setup(sun[x], GPIO.OUT)
GPIO.setup(moon, GPIO.OUT)
syslog.syslog('GPIO initialized')

# Subrutiner
def sunrise(interval):
	syslog.syslog('Sunrise started')
	for x in range (0, 9):
		GPIO.output(sun[x], 1)
		if x == 1: GPIO.output(moon, 0)
		time.sleep(interval)
	syslog.syslog('Sunrise ended')
def sunset(interval):
	syslog.syslog('Sunset started')
	for x in range (8, -1, -1):
		GPIO.output(sun[x], 0)
		if x == 1: GPIO.output(moon, 1)
		time.sleep(interval)
	syslog.syslog('Sunset ended')
def shadow(runtime):
	syslog.syslog('Shadow started')
	for x in range (0, 11):
		if x < 9: GPIO.output(sun[x], 0)
		if x > 1: GPIO.output(sun[x - 2], 1)
		time.sleep(runtime / 11)
	syslog.syslog('Shadow ended')

# Initiera state (night, moon, day, moon)
now = datetime.datetime.now()
sunset(0)
GPIO.output(moon, 0)
state = 0
if now.time() > moon_on.time(): state = 1
if now.time() > sunrise_on.time(): state = 2
if now.time() > sunset_on.time(): state = 3
if now.time() > moon_off.time() and now.time() < moon_on.time(): state = 0
if state == 1 or state == 3:
	GPIO.output(moon, 1)
elif state == 2:
	sunrise(0)
syslog.syslog('Initial state is %d' % state)

# Huvudloop
while True:
	now = datetime.datetime.now()
	if state == 0:
		# Night mode, wait for morning moon
		if now.time() > moon_on.time():
			state = 1
			syslog.syslog('Entering state 1')
			GPIO.output(moon, 1)
	elif state == 1:
		# Morning moon, wait for sunrise
		if now.time() > sunrise_on.time():
			state = 2
			syslog.syslog('Entering state 2')
			sunrise(450)
	elif state == 2:
		# Daytime, random shadows, wait for sunset
		if randint(1, 60) == 1:
			shadow(60)
		if now.time() > sunset_on.time():
			state = 3
			syslog.syslog('Entering state 3')
			sunset(450)
	elif state == 3:
		# evening moon, wait for night
		if now.time() > moon_off.time() and now.time() < moon_on.time():
			state = 0
			syslog.syslog('Entering state 0')
			GPIO.output(moon, 0)
	time.sleep(60)
Share

Provar lite…

Lysdioderna och motstånden är på väg så snart har jag alla delar hemma. Dags att börja testa lite! Jag har installerat WebIOPi på min Pi och kopplat ihop det hela. Tänk att det kan vara så kul att tända och släcka lysdioder genom att klicka på en webbsida! För att WebIOPi ska hantera alla pinnar på en B+ behövs det en liten patch. Den är visserligen för 0.7.0 men verkar fungera bra även på 0.7.1 som är aktuell version. Nu är det dags att börja programmera lite, python var ett tag sedan man höll på med senast…

DSC_0166

Share

Känner du Kjell?

Kjell och Clas är två bra kompisar, idag hälsade jag på Kjell och ordnade lite mer till rampbygget. Förutom sladd att koppla ihop allt med blev det även en liten strömregulator. Jag kommer att driva belysningen med ett gammalt nätagg till en bärbar Dell-dator. Det lämnar 19V vilket blir bra till lysdioderna men Raspberry Pi och reläkortet trivs bättre med 5V. Det fixar en liten LM2596, färdigbyggd för en femtiolapp hos Kjell & Co.

DSC_0165

Share

Reläer

Idag kom det ett paket från Tyskland med ett par åttakanalers reläkort, Ebay är bra att ha! De ska styras från en Raspberry Pi, mest för att jag hade en sådan liggande. Jag vet att tio kanaler går åt till ljuset, klurar på vad jag ska ha de sista sex till…

DSC_0156

Share