Rpi – Cheap Power Meter

First of all you need some parts

1.  A Raspberry Pi with an SD-card and power adaptor,  which can be purchased from Farnell (Delivery 1-2 days). Optional: You can also buy a WiFi dongle and a shell with it.

A slice of Pi 🙂 (version B)

2.  If you don’t want to solder directly on the Raspberry Pi’s GPIO interface, I would recommend buying some Female-to-Female Jumper Wires.

Lesbian Jumper Wires

3.  10k Resistor

Let’s get connected

Connect a jumper wire from the 3.3 VDC power (P1, see below) on the Raspberry Pi and the other end to the resistor.

  1. Connect a jumper wire to the other leg on the resistor and to the plus (+) side of the S0 connector.
  2. Connect a jumper wire from the same (+ side) of the S0 connector to the GPIO (P18) on the Raspberry Pi.
  3. Connect a jumper wire from the minus (-) side of the S0 connector to the Ground (P6) on the Raspberry Pi.

The GPIO interface for pin placement on the Raspberry Pi (eg P1)

Before you power on the Raspberry Pi, check everything is connected in the right way, otherwise you might damage your Pi.

4.  Connect the Raspberry Pi to your local network with a wireless USB dongle or simply with a network cable.

That was the hardware part, now it’s time for a cuppa!

The software!

1.  Download latest Rasbian Lite image from here.

1.1 Copy the image to a SD card.

1.2 Make an empty file with no extension called ssh, put in the root folder of your sd card, this will enable SSH from first boot.

2.  When the operating system is installed into the SD-card, put it in the Raspberry Pi.
SSH into the Pi, using the IP (get the IP from your router). Default username/password is “pi/raspberry”

Run

sudo raspi-config

to change timezone, locale, password and expand the filesystem.

Then log in to your Raspberry Pi through SSH and install the required modules and applications:

sudo apt-get update 
sudo apt-get install python-dev
sudo apt-get install python-setuptools
sudo easy_install rpi.gpio
sudo apt-get install mysql-server
sudo apt-get install python-mysqldb
sudo apt-get install phpmyadmin
sudo apt-get install apache2

When installing mysql-server, you are asked to type a password, make sure it’s long and mixed. Write it down, as you’ll need it when installing phpmyadmin!

When installing phpmyadmin, you are asked to type the password you chose when installing mysql-server, next you are prompted to  type a new password for root user to use when logging into phpmyadmin.

3.  Then download and install the CheapPowerMeter application

wget https://www.rakett.dk/wp-content/uploads/2016/12/cpm.zip
unzip cpm.zip
sudo cp cpm/html/* /var/www/html -R
sudo rm /var/www/html/index.html

 

4.  Now you have to set up the database
Open a web-browser and go to your Raspberry Pi’s phpmyadmin interface (http://<the ip address>/phpmyadmin)

5.  Run the following SQL sentences to add a database, table and a user.

Remember to change “yourpasswordhere” to your own password.

CREATE DATABASE measurepower;
CREATE USER 'measurepower'@'localhost' IDENTIFIED BY 'yourpasswordhere';
GRANT ALL ON measurepower.* TO 'measurepower'@'%';

Logoff and logon again with username “measurepower” and your new password and do:

CREATE TABLE IF NOT EXISTS `watthours` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`lightvalue` int(11) NOT NULL,
`unixtime` int(30) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

6.  We now have to change the passwords in the application so it fits the ones you’ve just made. Run this in your console:

sudo nano /home/pi/cpm/readlight

Then find this line and change the password.
con = mdb.connect(‘localhost’, ‘measurepower’, ‘yourpasswordhere’, ‘measurepower’);
Next, run this in your console:

$ sudo nano /var/www/index.php

Then find this line and change the password:
$link = mysql_connect(‘localhost’, ‘measurepower’, ‘yourpasswordhere’);
7.  The last thing to do is to ensure that the logging application starts when the Raspberry Pi starts:
Run this in your console:

$ sudo nano /etc/rc.local

Then add this line as the 2nd last line:

/home/pi/cpm/./readlight &

so the line will end with exit 0

Your are done!

Go to http://<the ip address> to see the result!

If the logger saves too many or too few watt hours, you might try to adjust the light-value:

sudo nano /home/pi/cpm/readlight

Look for this line: if result>=1500:
You can read the light-value by running:

/home/pi/cpm/./debug

Credits goes to Søren @ http://www.hyggeit.dk/2013/04/super-cheap-web-enabled-power.html for the original idea.

Future ideas

  • Cleanup PHP
  • Make PHP more efficient/less power consuming.
  • Use a more lightweight web-server.
  • Move more load to user via jQuery etc.
  • API to have live view and sending data to external services.
  • Any ideas? Post them in the comments! Thanks 🙂

Mini OS til Raspberry Pi

Skal du bruge din Raspberry Pi til et dedikeret projekt, såsom 5V relæ styring via web, er et styresystem (OS), spækket med funktioner og ekstra software ikke nødvendigt. Heldigvis har andre tænkt tanken før, og lavet Minibian. Det kommer med kun de mest nødvendige funktioner, så din Raspberry Pi ikke “belastes” mere end højest nødvendigt, det efterlader flere krafter til dit projekt.

Værd at nævne om Minibian

  • Bruger kun 29MB RAM
  • Opstart på 14 sek. (RPI 2B)
  • Fylder kun 451 MB
  • Kan være på et 1GB SD-kort
  • Root aktiveret
  • Ingen GUI (grafisk brugerflade)

Download Minibian her.

Arduino trådløs(315/433MHz) hack

Okay, indrømmet! Denne guide er primært rettet mod børn og barnligesjæle.. Men der ligger mere bag, end at irritere naboen, det er blot en bonus, læs min ansvarsfraskrivelse*!

Lad os starte med den useriøse brug af denne lille “gadget”, at få naboens trådløse ringeklokke til at ringe i tide og utide. Du skal bruge:

En Arduino
En 315MHz sender og modtager*
3x ledninger (jumpere)
USB kabel (Arduino -> PC)
Arduino programmerings software (arduino.cc)

315MHz sender og modtager* Det kan være at enheden du forsøger at kommunikere med, benytter en anden frekvens, eksempel vis 433MHz, her må du prøve dig frem!

arduino315sm

Sender og modtager (den store med 4 ben er modtager).

Forbind modtager og sender

Tilslut de 2 komponenter til Arduino’en sådan:

illu-arduino-UNO

Download “RCSwitch” og pak ud i Arduino biblioteket (Dokumenter -> Arduino -> Libraries).

Modtag signalet

Tilslut Adruino’en til din PC og start Arduino’s programmerings software. Upload denne kode til Arduino’en:

/*
  315/433MHz modtager output til Serial Monitor
  Lavet af Kasper Simonsen 2015
  https://www.rakett.dk - GDS Automation
*/

#include  

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Modtager "data" pin til inerrupt 0 (pin #2 på Arduino'en).
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Ukendt kodning");
    } else {
      Serial.print("Decimal kode: ");
      Serial.println( mySwitch.getReceivedValue() );
      Serial.print("Bit lændge: ");
      Serial.println( mySwitch.getReceivedBitlength() );
      Serial.print("Puls længde: ");
      Serial.println( mySwitch.getReceivedDelay() );
      Serial.println(" ---------- ");
    }

    mySwitch.resetAvailable();
  }
}

arduinoRC2

Nu har du uploadet til Arduino’en og åbnet “Serial Monitor” (Tools -> Serial Monitor).

Tryk nu på den enhed der normalt sender signalet, ringeklokken, eller en anden trådløs enhed der benytter samme frekvens som din modtager på Arduino’en. Hvis det hele virker burde du se noget lignende:

arduinoRC3

Du skal bruge alle 3 stykker data til at sende det modtagne signal fra Arduino’en. Kopier og gem det et sted (gerne Notepad). Puls længden er ikke så følsom som de andre data, den bør ligge indenfor ± 2. Som du ser i eksemplet herover, springer den fra 169 til 170. Prøver du flere gange kan den springe endnu mere.

Send signalet

Nu bliver det sjovt, vi skal nemlig replikere signalet vi modtog og sende det fra Arduino’en! Den efterfølgende kode skal redigeres lidt for at passe til det signal du modtog, da det temmelig sikkert ikke ligner mit (Nej du skal ikke rende rundt og sende dette signal, det er tilhørende min egen ringeklokke!):

/*
  315/433MHz sender 
  Lavet af Kasper Simonsen 2015
  https://www.rakett.dk - GDS Automation
  
*/
#include 
RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600); 
  mySwitch.enableTransmit(10); // Sender "data" pin til Arduino pin #10
  mySwitch.setPulseLength(170); // Sæt til modtaget puls længde
}

void loop() {
  mySwitch.send(13873989, 24); // Sæt til modtaget decimal kode og bit længde
  delay(5000);  
}

I næste guide, vil jeg tilføje 2 knapper/switche og et batteri, så vi kan få vores “trådløse hacker” bærbar og gøre det endnu mere sjovt/brugbart!

Download sender program (.ino)
Download modtager program (.ino)

Ansvarsfraskrivelse*

Du skal selvfølgelig ikke lade din Arduino stå tændt med “send naboens ringeklokke kode” i al evighed, jeg påtager mig intet ansvar for barnlig og uforsvarlig brug af denne guide. Det er helt op til dig hvordan du (mis)bruger eksemplet, jeg elsker en god spøg, men den skal altså ikke vare 5 timer i træk, midt om natten.

Raspberry Pi spillemaskine

Timevis af nostalgi og underholdning for børn og barnlige sjæle i alle aldre! Det er blot en af de mange ting du kan få med RetroPie. Det er lige så nemt at installere på din Raspberry Pi, som ethvert andet system, så selve installationen på SD-kortet vil jeg ikke fortælle nærmere om her, men læs denne artikel hvis du er i tvivl.

Har du en ældre Raspberry Pi; download ReproPie her.

Har du en nyere Raspberry Pi 2; download RetroPie her.

Installer spil på maskinen

Når Raspberry’en er startet op med RetroPie og tilsluttet netværket, kan du overføre spil til den via en Windows maskine. Åben et vindue og indtast \\RETROPIE i adressen. Spillene skal ind i deres respektive “spillemaskine mappe”, åben mappen roms og overfør til den mappe som spillet tilhører.

Du kan også overføre via FTP, download og installer WinSCP, indtast RETROPIE i hostname, pi i User name og raspberry i Password.

Du kan også lave en tom mappe på en USB-stick med navnet “retropie” og indsætte i din Raspberry, mens den er startet op. Vent i 1-2 minutter og sæt den tilbage i computeren. Nu har Raspberry’en oprettet en ny mappestruktur, hvori du ligger dine spil.

Her er en liste af de spillemaskiner du kan emulere direkte fra din Raspberry Pi:

[table id=3 /]

Pro tip

Du kan opsætte WiFi direkte fra brugerfladen.

Jeg havde problemer med at overføre fra Windows, den nemmeste metode er via en USB-stick.

Klik her, for en liste over kompatible spil (engelsk)

Lad nu være med at smide piratkopier over på din spillemaskine, især Nintendo slår hårdt ned på piratkopier af deres gamle klassikere.

I de næste guides viser jeg hvordan du forbinder en PS3 controller og forbinder til WiFi direkte fra RetroPie.

Opsætning af XBian

Det kræver ikke timers roden rundt med XBian, for at lære det meste selv. Men her vil jeg alligevel vise hvordan de mest anvendte indstillinger foretages.

Dansk sprog

Når du starter XBian op for første gang, er sproget engelsk, heldigvis er det hurtigt at lære XBian dansk.

Du finder indstillingerne her: System -> Settings -> Appearance -> International -> Language -> Danish.

Tilføj kilder (film/video)

Fra startbilledet vælger du: Videoer -> Filer. Der kommer nu et nyt vindue, hvor du vælger Gennemse.

Afspil fra AirPlay

Fra startbilledet vælger du: System -> Indstillinger -> Tjenester -> AirPlay. Nu kan alle dine Apple enheder spille direkte til XBian, som enhver anden AirPlay reciver.

Raspberry Pi medie center

Har du, som mange andre, digitaliseret din film-, musik- og billedsamling? Ja? Så kan du nærmest ikke klare dig igennem livet uden et medie center! Men et færdigt-klar til brug medie center er forholdsvist dyrt, og det er bare sjovere at “bygge” sit eget. Heldigvis er det ret let at gøre med en Raspberry Pi og ca. en halv times “arbejde”.

Guiden tager udgangspunkt i at du;
– Har en Raspberry Pi med dertilhørende strømforsyning.
– Har et HDMI kabel i overskud.
– Har et SD kort, minimum 2GB.
Trådløs eller kablet forbindelse til Raspberry’en.
– Ved lidt om hvordan man klargører et SD kort til Raspberry’en.
Jeg vil anbefale den nyere version, Raspberry Pi 2, da den har flere kræfter til at trække video/film. XBian virker dog også fint på versionen med 512mb RAM.

Når det kommer til valg af system, har jeg en klar favorit, baseret på erfaring mellem 3 forskellige. Om du skal vælge det samme som jeg bruger, er helt op til dig, og du kan følge guiden uanset hvilket du vælger. Jeg vil ikke komme ind på fordele/ulemper ved de forskellige i denne guide.

Det første der skal ske, er at få downloadet en kopi af XBian (Kodi tilpasset Raspberry Pi).

Via Windows og OS X

Når du har downloadet XBian, skal du pakke “installeren” ud og åbne den.

1) Vælg om du vil installere til en “gammel” eller nyere version 2 Raspberry Pi.

2) Vælg “XBian Latest pi” og 3) drevet der tilhører dit SD kort. Du har sat det i computeren, ikke? Klik på Install og afvent med en kop kaffe/te eller andre lækkerier.

Når installeren er færdig, sætter du SD kortet i Raspberry’en, forbinder den til skærmen/TV’et med HDMI kablet og tænder for strømmen.

Vil du vide mere?

Læs mere her, om hvordan du sætter XBian op.

Andre systemer

Som nævnt tidligere, er der flere forskellige systemer du kan benytte til dit multimediecenter, af de mere populære kan nævnes;
OSMC
OpenELEC

Forbind en Raspberry Pi til WiFi

At tilslutte en Raspberry Pi til WiFi netværket/internettet kan være svært, med mindre du har installeret et GUI (Grafisk bruger interface), eller blot indsætter et netværks-kabel i RJ45 porten på Raspberry’en og din router.

Har du ikke nogen af de muligheder kan det også klares via kommandoer, lidt mere besværligt, men muligt.
Tilslut et netværkskabel fra Raspberry’en til din router, og forbind via SSH. Eller indtast kommandoerne direkte med tilsluttet tastatur.

Start med at åbne “interfaces” via nano:

sudo nano /etc/network/interfaces

Sørg for at filen ser sådan her ud:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Gem ved at trykke CTRL og O (Ikke nul), afslut med CTRL og X.
Bemærk den sidste linje “/etc/wpa_supplicant/wpa_supplicant.conf”, det er her vi indtaster informationerne om det trådløse netværk, vi ønsker at forbinde til. Åben filen i nano:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Du kopierer og indsætter nu følgende:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="NAVNET PÅ DIT NETVÆRK"
        psk="KODEN TIL DIT NETVÆRK"
        key_mgmt=WPA-PSK
}

Bemærk hvordan filen er formateret, der må IKKE være mellemrum mellem “ssid”, “psk” og “key_mgmt”, og det efterfølgende. Linjen nederst (key_mgmt=WPA-PSK) henviser til et privat netværk med WPA kryptering, både version 1 og 2. Her skal du oftest ikke ændre noget, med mindre du er i en virksomhed eller på et skole netværk.

Ændre de 2 linjer “ssid” og “psk”, så de passer til dit netværk. Gem ved at trykke CTRL og O (stadig ikke nul), afslut med CTRL og X.

Du mangler nu bare at genstarte Raspberry’en, med denne kommando:

sudo reboot

Alternativt kan du nøjes med at genindlæse netværet med følgende kommando. Du mister dog forbindelsen, hvis du er forbundet fra fjern computer.

sudo service networking reload

Når raspberry’en er startet op igen, kan du teste din super-duper-trådløse forbindelse, ved at åbne browseren… Eller med denne kommando:

ifconfig

Du burde se noget ligende dette:

wlan0 Link encap:Ethernet HWaddr 80:1f:02:aa:12:58
      inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:154 errors:0 dropped:173 overruns:0 frame:0
      TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:32399 (31.6 KiB) TX bytes:13036 (12.7 KiB)

Log ind på Raspberry Pi via SSH

Mange ændringer og opsætninger kræver at du logger ind på din Raspberry Pi, enten direkte med tilsluttet mus/tastatur eller via SSH, for at komme ind i Pi’ens kommando vindue. Men hvad er det sjove i at have en mini-computer, når man skal finde og tilslutte tastaturet hver gang der skal rettes eller tilføjes lidt?

SSH giver dig et kommandovindue fra en fjern PC, Æble-computer og endda Android baseret telefoner.

Guiden tager udgangspunkt i;

1) At du allerede har en fungerende Raspberry Pi.
2) Raspberry’en er på samme netværk som den enhed du vil tilslutte fra.
3) Kender IP-adressen på din Raspberry Pi.
4) Kender brugernavn og kodeord til din Raspberry Pi.

Fra Windows

Download et lille værktøj, kaldet PuTTY.

1) Indtast IP-adressen på din Raspberry Pi.
2) Klik på “Open”.

Fra Android

Juice SSH
ConnectBot

Find IP-adressen på din Raspberry Pi

Hvis du har installeret et GUI, er det intet problem at klikke på det lille netværks ikon og se al information om din forbindelse, men har du ikke, er her et par måder du kan finde IP-adressen til din Raspberry Pi på.

Har du installeret Raspbian, eller andet Linux lignende system kan du forsøge dig med disse kommandoer:

ifconfig

Så får du et svar noget lignende det på billedet her under.

Det første interface “eth0” er forbindelsen via kablet netværk, som det ses her er min Pi ikke forbundet på denne måde, da jeg ingen “inet addr” har fået tildelt fra routeren.
Det næste interface er loopback, komplet ubrugeligt i dette tilfælde.
Den sidste linje er interessant her, det er min wifi forbindelse “wlan0”. Her ses det at jeg har fået tildelt IP-adresse 10.0.0.15.

En anden mulighed du har, hvis ikke “ifconfig” virker, er:

ip addr show

Så ser svaret ca. sådan her ud:

Her vises stort set det samme som ved sidste kommando. Blot rækkefølgen er ændret, pånær min wifi forbindelse, der stadig er nederst. Det er sjovt nok stadig samme IP-adresse.

Standard koder til Raspberry Pi

Der er omtrent lige så mange forskellige systemer til en Raspberry Pi, som der er dage i et år. Så opgaven med at samle dem alle synes en smule uoverskueligt, dog har jeg forsøgt at samle de mest anvendte.

Mangler der nogen, er du mere end velkommen til at nævne dem i kommentarerne, og jeg skal tilføje dem hurtigst muligt.

[table id=1 /]