Archive for the ‘Elektronik’ Category

Fjärrstyrning via mail

thumbEn av de saker man kan göra med sin Raspberry Pi är att styra saker. Det kan man göra på många olika sätt. Via webbservrar, IR, RF och annat. Om man inte har så bråttom så kan man även använda mail för att styra saker.

Jag har gjort ett litet exempel i Python på hur det skulle kunna fungera.

Läs mer här.

Ny kamera provas.

picam

Jag håller just nu på att prova ut en ny kamera till min ”väderkamera”. Den här gången så är det en PiCamera med en Raspberry Pi som får agera webbkamera. Den är riktad nästan exakt mot söder.

Tyvärr så hände något med kameran idag så att bilden blev helt grön, jag vet inte om det blev för varmt i lådan där kamera och Pi satt monterad eller om det var för att kameran fått alldeles för starkt ljus på sensorn. Just nu fungerar den iaf.

Den är bara igång mellan 07.00 och 19.00 och det sköts automatiskt. Anledningen till detta är dels att på natten så syns ändå inget väder men främst att eftersom kameran står på insidan av mitt köksfönster så blir det gärna en massa reflexer i glaset som man helst vill undvika.

Programmet för att kontrollera det hela är ganska enkelt och kan ses härunder eller laddas hem här.

 

#! /usr/bin/python
# -*- coding: utf-8 -*-
 
# webcam.py - Göran Gustafsson 2015 http://gorgusgfx.se
#
# Program som hanterar bildtagning, skalning och uppladdning av bilder
# till en server. Programmet är tänkt att köras en gång per minut
# via cron.
#
 
import os
import time
import Image
import ImageOps
import paramiko
 
 
# Funktionen som laddar upp small.jpg och big.jpg till webbservern
 
def upload():
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('ssh.address.com', username="username", password="password")
    sftp = ssh.open_sftp()
    localpath = '/home/pi/webcam/big.jpg'
    remotepath = 'wp-content/cam/big.jpg'
    sftp.put(localpath, remotepath)
    localpath = '/home/pi/webcam/small.jpg'
    remotepath = 'wp-content/cam/small.jpg'
    sftp.put(localpath, remotepath)
    sftp.close()
    ssh.close()
    return 0
 
 
# Här kollar vi om vi ligger inom tidsfönstret och beroende på om vi gör
# det eller inte så tas antingen en ny bild av kameran eller så laddas 
# offline-bilden upp.
 
localtime = time.localtime(time.time())
tm = "{0:0>2}".format(localtime.tm_hour)
if (int(tm)>6 and int(tm)<20):
    # Först tar vi bort flaggfilen om den finns och sen tas själva bilden
    # med maxupplösning. Därefter laddas bilden in, skalas om och sparas 
    # två gånger innan de bägge bilderna laddas upp till servern.
 
    if  os.path.exists('/home/pi/webcam/flag.txt'): os.remove('/home/pi/webcam/flag.txt')
    command = "raspistill -w 2592 -h 1944 -rot 270 -o /home/pi/webcam/bild.jpg"
    os.system(command)
    im = Image.open("/home/pi/webcam/bild.jpg")
    img = ImageOps.fit(im,(640,480))
    img.save("/home/pi/webcam/big.jpg",quality=60,optimize=True,progressive=True)
    img = ImageOps.fit(im,(178,134),Image.ANTIALIAS)
    img.save("/home/pi/webcam/small.jpg",quality=75,optimize=True,progressive=True)
    upload()
else:
    # Om flaggfilen inte finns så kopiera offline-bilden till big.jpg 
    # och small.jpg och ladda upp dem till servern. Skapa sen flaggfilen 
    # för att tala om att vi gjort detta. Då slipper vi slösa bandbredd 
    # på att ladda upp samma 2 bilder gång på gång på gång...
 
    if not os.path.exists('/home/pi/webcam/flag.txt'):
        im = Image.open("/home/pi/webcam/offline.jpg")
        im.save("/home/pi/webcam/small.jpg",quality=90,optimize=True,progressive=True)
        im.save("/home/pi/webcam/big.jpg")
        upload()
        fd=open("/home/pi/webcam/flag.txt",'w')
        fd.close()

 

Morse-kodare

På den gamla goda C64-tiden, i slutet av 80-talet, så gjorde jag ett program för att enkelt kunna ”sända” morsekod. Detta gjordes genom att i högtalaren spela upp morsekoden samtidigt som reläet till bandpelaren var tänkt att kopplas istället för en telegrafinyckel. Eftersom jag var mer intresserad av programmeringsbiten än av radiobiten så provades det aldrig ”skarpt”, men jag lyssnade långa stunder på hur programmet arbetade.

För några år sedan gjorde jag en liknande sak till Arduino och nu har jag äntligen lagt upp det här på hemsidan.

Klicka här för att läsa mer.

Kameramultiplexer till Raspberry Pi

Multiplexer-kort

Multiplexer-kort

Hur bra en Raspberry Pi än är så finns det tillfällen när man vill ha möjligheten att ansluta mer än en kamera, t.ex. om man vill bygga en bokskanner, en panoramakamera eller om man har kameror med olika objektiv som man vill kunna växla mellan.

Hittills har det inte funnits något sådant men nu har ett företag tagit fram en multiplexer som gör det möjligt att använda upp till 4 kameror per kort. Det går sedan att använda 4 kort så att man totalt kan använda 16 kameror till samma Raspberry Pi.

Det är ett företag som heter IVMech som tillverkar dessa kort. I dagsläget så kostar de drygt $80 men med lite tur och en eventuellt ökad efterfrågan så kanske priset sjunker.

Multiplexern kan inte bara växla kamera för stillbilder utan den klarar även att växla video bra och snabbt, perfekt för t.ex. en robot med flera kameror med olika objektiv.

Självklart så blir det en liten fördröjning på kortet mellan in- och utgång men jag tycker inte att en halv nanosekund är mycket att bråka om. Det kommer i praktiken inte att spela någon som helst roll. Att växla mellan de olika kamerorna tar betydligt längre tid, ca 50 nanosekunder. Inte heller det är något att klaga på.

Härunder är en video som visar exempel på att växla mellan olika kameror.

 


 

 

Temperaturprojektet.

AM2301

AM2301

Nu har jag fixat så att aktuell temperatur inte bara laddas upp till hemsidan utan också läggs in i en MySQL-databas lokalt på Rapberryn.  Just nu så låter jag den biten vara för att få lite data att arbeta med. Eftersom det sparas ett värde varje minut så blir det 1440 avläsningar per dygn.

Under tiden tänkte jag bygga ut med lite mer hårdvara och tänkte börja med en luftfuktighetsmätare. I det här fallet blir det en AM2301-sensor. Eftersom den kan mäta både fuktighet och temperatur så kanske den även får ta över temperaturmätningen. Den klarar av att mäta relativ fuktighet mellan 0% – 99,9% med en noggrannhet på +-3%. Temperaturen den kan mäta ligger mellan -40 – +80 grader Celsius med 0,5 graders noggrannhet. Senare ska även en sensor för att mäta lufttrycket kopplas in.

 

Experimentet inne i nästa fas.

Nu har mitt lilla temperaturexperiment gått vidare från experiment till beta-test. I högerspalten visas nu den aktuella temperaturen på min balkong samt när den senast uppdaterades. Eftersom sensorn hänger fritt så hamnar den ibland i direkt solljus och temperaturen blir ju därefter.

En mycket kort beskrivning av hur det fungerar: sensorn är kopplad till en Arduino som fungerar som en webbserver. En Raspberry Pi kör sedan ett program i Python en gång per minut som via mitt nätverk hämtar aktuell temperatur, skapar .jpg-bilden och laddar upp den till min WordPress-sajt. Så fort någon uppdaterar eller växlar sida så visas den senast uppladdade bilden.

Kvar att göra:

  • Fixa automatisk uppdatering så man slipper göra det själv.
  • Lägga till fler sensorer.
  • Ta aktuella väderbilder som också laddas upp.
  • Lägga avläsningarna i en databas för statistik.

Det kommer nog att ta ett tag innan ovanstående implementeras men det är ju bra att ha något att göra…

Översätt sidan
EnglishFrenchGermanItalianPortugueseRussianSpanish
Live data
Besökskarta
Login-box
  • Login
    Login

Ditt IP-nummer:
54.146.135.173