Magick Mirror

Här kommer en guide för att skapa en Magick mirror

Nr 1 – Ramen

Köp en tavelram och använd transparent reflekterande folie.
Använd MYCKET vatten när du applicerar filmen.

Nr 2 – Skärmen

Koppla in en skärm som passar bakom tavelramen.
Jag köpte en Adafruit 5″ HDMI-skärm.

Den tar drivspänning via USB från raspberry pi, men eftersom jag har kopplat in en Wifi modul så var jag tvungen att sänka ljuset på skärmen genom att bryta en koppling (se bild) annars orkade inte USB laddaren för raspberry PI enheten driva båda.

För den här skärmen så är det viktigt att skärminställningarna är korrekt.
öppna upp en terminal och skriv in följande: sudo nano /boot/config.txt
Ändra följande i text filen:

# uncomment if you get no picture on HDMI for a default ”safe” mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16 

# uncomment to force a console size. By default it will be display’s size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720 

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (here we are forcing 800×480!)
hdmi_group=2
hdmi_mode=87
hdmi_cvt=800 480 60 6 0 0 0

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4 

# uncomment for composite PAL
#sdtv_mode=2 

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800 

# for more options see http://elinux.org/RPi_config.txt

Nr 3 – Vad som ska visas

Sätt upp miljön som ska visas. Kom ihåg, för bäst resultat ha en mörk bakgrund.
Jag valde att installera apache2:
sudo apt-get install apache2
jag editerade sedan standardsidan:
sudo nano /var/www/html/index.html
och skrev in följande HTML:

<!DOCTYPE html>
<meta http-equiv=”refresh” content=”60″>
<html>
<head>
<title>Page Title</title>
</head>
<body bgcolor=”#000000″>
<a href=”https://www.accuweather.com/sv/se/stockholm/314929/weather-forecast/314929″ class=”aw-widget-legal”>
<!–
By accessing and/or using this code snippet, you agree to AccuWeather’s terms and conditions (in English) which can be found at https://www.$
–>
</a><div id=”awcc1489784214200″ class=”aw-widget-current” data-locationkey=”314929″ data-unit=”c” data-language=”sv” data-useip=”false” dat$
<a href=”https://www.accuweather.com/en/hu/budapest/187423/weather-forecast/187423″ class=”aw-widget-legal”>
<!–
By accessing and/or using this code snippet, you agree to AccuWeather’s terms and conditions (in English) which can be found at https://www.$
–>
</a><div id=”awcc1489785729544″ class=”aw-widget-current” data-locationkey=”187423″ data-unit=”c” data-language=”sv” data-useip=”false” dat$
</body>
</html>

Jag använde två widgets från accuweather, en för stockholm och en för budapest.
Apachen startar automatiskt men nu måste allt annat startas automatiskt och visas snyggt.

Nr 4 – Rensa skrivbordet

För att få bort alla menyer och ikoner installera ”unclutter”
sudo apt-get install unclutter

För att rensa bort det sista som uncluter inte kan ta bort gör följande:

Editera följande fil:
sudo nano /home/pi/.config/lxpanel/LXDE-pi/panels/panel
Högst upp i filen i den ”General” sektionen hittar du följande:

autohide=0
heightwhenhidden=2

Byt ut det till:

autohide=1
heightwhenhidden=0

Nr 5 – Starta per automatik

För att starta allt per automatik (inklusive unclutter) editera följande fil:
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

@lxpanel –profile LXDE-pi
@pcmanfm –desktop –profile LXDE-pi
#@xscreensaver -no-splash
@point-rpi
@unclutter -idle 0.1 -root
@chromium-browser –incognito –kiosk http://localhost/
@unclutter -display :0 -noevents -grab

Förklarning:

#@xscreensaver -no-splash – Stänger av skärmsläckaren
@chromium-browser –incognito –kiosk http://localhost/ – laddar chromium och laddar hemsidan
@unclutter -display :0 -noevents -grab – Rensar skärmen

Nu är det klart MEN jag ville ha mer funktionalitet med en rörelsesensor så skärmen bara aktiveras när någon står framför den.

Inte det snyggaste, men det fungerar 🙂
Nr 6 – Kopla in rörelsedetektorn

Jag köpte en Luxorparts Rörelsedetektor från kjell och company. Kopla in den i Raspbery PI kortet på följande sätt.

Rött är 5V för drivspänning
Brunt är signalspänning
Svart är jord

Dra ner båda potentiometrarna till minimum, detta kan du tweeka senare.
Vänster – Fördröjning (hur länge den skickar ut en signal vid rörelse)
Höger – Känslighet

Nr 7 – Koda funktionaliteten

Instalera x11-xserver-utils på din raspberry
sudo apt-get install x11-xserver-utils

Skapa en fil med namnet pir11.py i PI hemakatalogen (alltså där mapparna ”Desktop, Dokuments, Music” mm ligger)
sudo nano pir11.py

Och skriv in följande kod i filen:

import RPi.GPIO as GPIO
import os, subprocess, time

os.environ[’DISPLAY’] = ”:0”
displayison = False
maxidle = 2*60 # seconds
lastsignaled = 0

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.IN) #Read output from PIR motion sensor
while True:
 i=GPIO.input(11)
 now = time.time()
 if i==1: #When output from motion sensor is HIGH
  print (”Movement”),i
  if not displayison:
   subprocess.call(’xset dpms force on’, shell=True)
   displayison = True
 else: #When output from motion sensor is LOW
  print (”No intruders”),i
  if now-lastsignaled > maxidle:
   if displayison:
   subprocess.call(’xset dpms force off’, shell=True)
   displayison = False
time.sleep(1)

Kontrollera mellanslagen! (Indenteringen). Python använder dessa för att lista ut hur if-satserna ser ut.

Nu kan du testa att sensorn fungerar genom att köra filen genom att skriva:
python pir11.py

Om du bara får Movement 1 testa att dra ner fördröjningen.

Nu måste bara python scriptet köras per automatik vid uppstart

Ändra följande fil:
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

och lägg till längst ner:
@sudo python /home/pi/pir11.py

Nu är det bara att starta om och allt ska fungera!