Posts in Elektronik

Projekt Inselanlage

Seit geraumer Zeit denke ich über eine sogenannte Inselanlage nach.

Was ist eine Solar-Inselanlage?

Eine „normale“ Solaranlage ist ja bekannt. Es kommt eine Firma und pflastert euch das Dach zu mit Solarzellen. Diese gewonnene Energie wird u.a. in das öffentliche Stromnetz eingespeist. Bei einer Inselanlage sieht das leicht anders aus. Zwar habt ihr auch eine gewisse Anzahl von Solarzellen auf dem Dach, jedoch wird nichts ins öffentliche Stromnetz eingespeist. Ebenso ist diese Anlage komplette getrennt vom normalen Stromnetz.

Man kann sich das so vorstellen: Ihr habt eine Gartenlaube im Garten stehen. Bisher lief dahin ein Kabel aus dem Haus, damit dort auch Strom vorhanden ist. Mit eine Inselanlage sind auf dem Dach ein paar Solarzellen installiert und in der Laube die passende Technik inkl. Batterien. Schon benötigt ihr im Normalfall keinen Strom mehr aus dem Hausnetz ziehen. OK, ganz so einfach ist es dann doch nicht, aber ich werde hier in den nächsten Beiträgen den Aufbau darstellen.

Vielleicht hat die/der eine oder andere dann auch Lust bekommen so etwas selber aufzubauen.

Sobald alle Teile da sind, geht es los.. Bis dahin werde ich die hier vorliegenden Solarzellen einem Test unterziehen :-D…

Bis bald dann..

 

Es ist viel passiert…

Umbau und familiäre Dinge lassen mich meinem Hobby nicht so nachkommen wie ich gern möchte. Das ist leider so und ich habe Prioritäten gesetzt.
Jetzt, dank der Unterstützung meiner Frau, habe ich im Haus ein eigenes „Bastelzimmer“. Also einen Raum, den ich ganz nach meinen Wünschen eingerichtet habe. Noch ist längst nicht alles fertig, aber die ersten Testdrucke mit dem 3D Drucker sind bereits fertig. (Zu sehen im Instagram Account).
Ebenso kann ich bald mit dem Projekt Haustür weiter machen. Dazu brauche ich allerdings noch etwas mehr Freizeit. Wie war das? Selbst und ständig;-)

Also hier erst mal ein kleiner Einblick während der Einrichtung…

Bald geht es weiter hier

Nachdem ich nun doch mehrfach angeschrieben wurde, melde ich mich hier einfach mal :-D. In letzter Zeit hatte ich sehr viele familiäre Dinge zu regeln, daher konnte ich nicht so meinem Hobby nachgehen wie ich wollte.

Aber es ist abzusehen, das es bald weiter geht. Dann werde ich den weiteren Aufbau und vor allem Einbau der RFID Türsteuerung weiter dokumentieren. Bis dahin hoffe ich könnt ihr noch etwas warten.

Ich freue mich weiter über Rückmeldungen oder Kommentare hier.

Rainer 😀

RFID – Türöffner mit dem Raspberry Pi Teil 2

Tja, nun habe ich es tatsächlich hinbekommen. Die Schaltung inkl. Programmierung läuft. Nachdem ich lange nach Lösungen gesucht hatte, musste ich mir aus drei Lösungsansätzen aus dem www etwas eigenes zusammenschrauben. Die Nacht wurde immer länger und ich wollte schon fast aufgeben, irgendwie gelang es mir dann noch noch mich zu konzentrieren. Das Ergebniss ist unter dem Beitrag als Video zu sehen. Die Steuerung ist mit Python und einer MySQL-Datenbank erstellt. Als nächster Schritt folgt die Weboberfläche zum Verwalten für Zutrittsberechtigte. Danach Finetuning, falls das System mal abschmiert. Ich schaue bereits nach passenden Türöffnern, die ich dann in den Haustürrahmen einsetzen kann.

Zur groben Erklärung des Programmablaufs auf dem PI:

Als erstes ein sauberes Wheezy aufsetzen. Ich habe mich dafür entschieden, da im Jessy sehr viele Änderungen vorgenommen wurden. U.a wurde die Inittab „entsorgt“. Wenn man aber mal im Netz nach einer Lösung sucht, so ist alles auf Wheezy-Basis. Ach so, mit Wheezy meinte ich das Image auf dem Raspberry Pi.

Nachdem ich also nun das Image aufgespielt hatte, musste ich diverse Einstellungen machen. Dabei war u.a. die Installation folgender Dinge:

Apache Server, MySQL und phpmyadmin. Dann hier und da noch ein wenig am System geschraubt und schon konnte es losgehen mit den Softwarespielereien;-).

Es gibt derzeit für mein System nun drei wesentliche Programmteile. Die functions.py übernimmt dabei die Hauptfunktion.

Als erstes ist da die „add.py“. Das kleine Script hat den Sinn die Chips in die Datenbank als Nutzer zu hinterlegen.

#!/usr/bin/python
# coding=utf-8
# Datei add.py
import RPi.GPIO as GPIO
from functions import *
db = DB()
print "Neuer Zugangsberechtigter\n"
print "Transponder einlesen...\n"
id = read_rfid()
name = raw_input("Name eingeben: ")
try:
db.add_user(id,name)
print "Neuer Datensatz angelegt"
except:
print "Fehler beim Schreiben"
db.close_db() 

 

Es folgte dann das Python-Script welches auch gestartet werden muss. Die „main.py“. Sicherlich sind die Scripte nichtganz fehlerfrei, aber ich lerne noch :-).

<div>#!/usr/bin/python
# coding=utf-8
# Datei main.py
import RPi.GPIO as GPIO
from functions import *
import time,sys
db = DB()
time_open = 5
try:
while True:
lcd ("Klingeln oder","Chip einscannen")
id = read_rfid()
check =  db.mysql_read(id)
if check[1] != 0:
lcd ("Guten Tag",check[1])
sleep(1)
lcd ("Tuer offen", "fuer "+str(time_open)+" Sek")
db.update_timestamp(id)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.OUT)
GPIO.output(27, True)
time.sleep(time_open)
GPIO.output(27, False)
lcd ("Tuer wieder", "verriegelt")
sleep(1)</div>
<div></div>
<div>        else:
lcd("Chip nicht","erlaubt!")
continue

except KeyboardInterrupt:
db.close_db()
GPIO.cleanup()
sys.exit()</div>
Als letztes fehlt nun noch die „functions.py“. Dort habe ich nun alle funktionen eingesetzt. Dazu zählen u.a die LCD-Anzeige und die Datenbankabfrage.
<div>#!/usr/bin/python
# coding=utf-8
# Datei functions.py
import sys
import time
import serial
import MySQLdb
import RPi.GPIO as GPIO
from time import sleep
GPIO.setwarnings(False)</div>
<div></div>
<div># Auslesen der RFID-Transponder
def read_rfid():
ser = serial.Serial("/dev/ttyAMA0")
ser.baudrate = 9600
daten = ser.read(14)
ser.close()
daten = daten.replace("\x02", "" )
daten = daten.replace("\x03", "" )
return daten
class DB():
def __init__(self):
db = MySQLdb.connect(host="127.0.0.1", user="xxxxx", passwd="xxxxxxx", db="rfid")
db.autocommit(True)
self.cur = db.cursor()
def close_db( self ):
self.cur.close()
def add_user(self,rfid_id, name):
add=self.cur.execute("INSERT INTO user (rfid, name) " + "VALUES (%s,%s)", (rfid_id, name))
def mysql_read(self, rfid_id):
a= self.cur.execute("SELECT id, name, timestamp, rfid " + "FROM user WHERE rfid = %s" ,rfid_id)
id = 0
name = 0
timestamp = 0
rfid = 0
for row in self.cur.fetchall():
id = int(row[0])
name = str(row[1])
timestamp = str(row[2])
rfid = str(row[3])
return id, name, timestamp,rfid
def update_timestamp(self, rfid_id):
a= self.cur.execute("UPDATE user SET timestamp = NOW() " +  "WHERE rfid = %s" ,rfid_id)</div>
<div></div>
<div># startlcd</div>
<div></div>
<div>LCD_RS = 7
LCD_E  = 8
LCD_D4 = 25
LCD_D5 = 24
LCD_D6 = 23
LCD_D7 = 18</div>
<div></div>
<div>
LCD_WIDTH = 16
LCD_CHR = True
LCD_CMD = False</div>
<div></div>
<div>LCD_LINE_1 = 0x80 # address for the 1st line
LCD_LINE_2 = 0xC0 # address for the 2nd line</div>
<div></div>
<div>textl1= ""
textl2= ""</div>
<div></div>
<div>
E_PULSE = 0.00005
E_DELAY = 0.00005</div>
<div></div>
<div>def lcd(textl1, textl2):</div>
<div></div>
<div>
GPIO.setmode(GPIO.BCM)
GPIO.setup(LCD_E, GPIO.OUT)
GPIO.setup(LCD_RS, GPIO.OUT)
GPIO.setup(LCD_D4, GPIO.OUT)
GPIO.setup(LCD_D5, GPIO.OUT)
GPIO.setup(LCD_D6, GPIO.OUT)
GPIO.setup(LCD_D7, GPIO.OUT)</div>
<div></div>
<div>
lcd_init()</div>
<div></div>
<div>
lcd_byte(LCD_LINE_1, LCD_CMD)
lcd_string(str(textl1))
lcd_byte(LCD_LINE_2, LCD_CMD)
lcd_string(str(textl2))</div>
<div></div>
<div>  time.sleep(0.5)
GPIO.cleanup()</div>
<div></div>
<div>def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD)
lcd_byte(0x32,LCD_CMD)
lcd_byte(0x28,LCD_CMD)
lcd_byte(0x0C,LCD_CMD)
lcd_byte(0x06,LCD_CMD)
lcd_byte(0x01,LCD_CMD)</div>
<div></div>
<div>def lcd_string(message):</div>
<div></div>
<div>
message = message.ljust(LCD_WIDTH," ")</div>
<div></div>
<div>  for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)</div>
<div></div>
<div>def lcd_byte(bits, mode):</div>
<div></div>
<div>
GPIO.output(LCD_RS, mode)</div>
<div></div>
<div>
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&amp;0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&amp;0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&amp;0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&amp;0x80==0x80:
GPIO.output(LCD_D7, True)</div>
<div></div>
<div>
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)</div>
<div></div>
<div>
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&amp;0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&amp;0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&amp;0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&amp;0x08==0x08:
GPIO.output(LCD_D7, True)</div>
<div></div>
<div>
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)</div>
<div></div>
<div>if __name__ == '__main__':</div>
<div></div>
<div> lcd()</div>
Auf die einzelnen Programmteile und die genaue Verdrahtung werde ich aber noch eingehen. Dazu möchte ich das ganze aber noch etwas verfeinern.
Jetzt erst mal das Ergebniss im Video:

 

 

Türöffner mit RFID und Raspberry Pi Teil1

Mein neues, eigentlich altes Projekt steht nun so langsam an! Seit Jahren stehe ich immer wieder mit einer schweren Kiste in der Hand vor der Tür und muss den Schlüssel ins Schlüsselloch fummeln. Das kann ganz schön nerven, also kam die Idee mir bei Amazon so ein RFID Set zu kaufen. Irgendwie ist das aber nicht so das was ich suche, denn die Steuereinheit sitzt dann draußen. Auch wenn sie vor Wind und Wetter geschützt ist, so haben diese „einfachen“ Sets doch einen entscheidenden Nachteil.

Man könnte die Steuereinheit ganz leicht manipulieren um das Türschloß zu öffnen. Ok, manche haben einen Sabotagekontakt. Doch das setzt dann weitere externe Technik voraus. Nun habe ich hier und da schon von der Möglichkeit gelesen, mittels einem Raspberry Pi und den passenden Modulen selber solch eine Steuerung zu bauen. Seit heute habe ich fast alle Teile zusammen, mir fehlt dann nur noch der Türsummer, aber den kann ich ja noch schnell im nächsten Baumarkt besorgen.

WP_20160217_11_31_43_Pro

Nach recht lange Wartezeit – Dafür aber echt günstig –  kam heute aus China die RFID Einheit per Post.

 

 

 

Jetzt werde ich mich also die Tage hinsetzen und das ganze mal testweise schalten und ausprobieren. Zum testen benötige ich folgende Dinge:

Sobald das alles funktioniert folgt Teil 2 meines Projektes RFID Türöffner, dann auch mit ausführlicher Anleitung und Schaltplan. Auch werde ich dann Fotos vom Aufbau posten.

Das 2×16 LCD Display

In diesem ersten kleinen Beitrag möchte ich das LCD Dislplay dazu bewegen etwas anzuzeigen, Dazu habe ich alles folgendermaßen verdrahtet:

Nachdem ich dann den Pi mit seinen Programmen gestartet hatte, konnte ich das Display in Betrieb nehmen.

Ich werde mich die Tage hinsetzen und einen genauen Ablauf inkl. Schaltplan usw. Posten.

Erster grafischer Verdrahtungsversuch :-).