Rasberry PI B

Die Integration schreitet voran, ein typisches Beispiel ist der Einplatinen Computer Raspberry PI.    

Da dieser auf der Basis von Linux betrieben werden kann, sollte er den mini-web Server auf Basis eines Atmega644 ablösen. Der Vorteil des raspberry ist ganz einfach: Hast du ein Problem, Suchmaschine im web anwerfen und man findet  eine Lösung oder einfach nur eine Idee.

Meine Aufgabenstellung war die Übernahme der Messwerte wie im Atmega644 und der Zugriff auf diese Werte über den Browser am heimischen PC. 

Meine Lösung: Die Messwerte werden in shared memory Bereichen gespeichert. Der Zugriff auf diese Bereiche erfolgt über CGI-Programme.
Als Betriebsystem für den Raspberry habe ich Debian GNU/Linux (raspbain) installiert. Auf dem PC zur Dateiübertragung Filezilla und PuTTY als
Terminal Programm. Zusätzlich installieren muss man apache, vsfptd und ssh einrichten.
Ein paar Grundkenntnisse linux können nicht schaden sowie eine Handvoll Kommandos für das Dateihandling.       

Die shared memory Bereiche haben noch einen weiteren Vorteil: Bei einem Programmende bleiben sie erhalten, nur bei einem boot des Systems müssen sie neu angelegt werden. Für diesen Zweck werden die shared memory Bereiche alle 2 Stunden auf der SD Karte gesichert, das sind an einem Tag 12 Schreibvorgänge für je 4 Dateien, eine mit 768Byte, 4kB, 8kB und 32kByte. Das sollte die SD Karte für einige Zeit aushalten.

Die Messdaten werden wie bei dem Atmega644 über ein serielles Interface eingelessen, dazu wird ein seriell to USB Adapter benutzt, über
eine kleine Interface Platine werden die Daten auf die RS232 Pegel umgesetzt. Die Einstellung der seriellen Schnittstelle ..., aber es gibt einfache Befehle an das System die diese Aufgabe erfüllen.

Die Erfassung wurde in c geschrieben, ebenso die beiden cgi-Programme. Als Webserver wurde apache installert, die CGi Programme müssen dann in das entspechenden Verzeichnis kopiert werden mit z.B.  sudo cp myinterw.cgi /usr/lib/cgi-bin/myinterw.cgi
Die  Übersetzung eines Programms ist denkbar einfach z.B. gcc myinterw.c -o myinterw.cgi

Wenn man auf seinem PC PuTTY Installiert, kann man diese Arbeit am PC erledigen und der raspberry ist dann kein Kabelrechner mehr, nur noch das Patchkabel zum Netztwerk und ein USB Kabel für das serielle Interface sind außer der Stromversorgung angeschlossen.

Zum Zweck der Manipulation der Messwerte habe ich mir noch ein web-interface ausgedacht, das über einen 5. shared memory Bereich mit dem Erfassungs Programm kommuniziert. So können dann zb. die Regenmengen für einen Tag geändert werden (wenn es sein muss).

Eine kleines shell script, das über die cron-tab regelmäßig alle 15 Minuten aufgerufen wird, sorgt dafür das die Messroutine neu gestartet wird, sollte sie aus irgend einem Grund nicht mehr aktiv sein.

Die html-Seiten eigentlich alle in den beiden cgi-Programmen versteckt. In dem Verzeichniss /var/www ist nur eine index.html Seite sowie  2 Bildchen, 4 java-script Dateien und eine css Datei.

Im Gegensatz zum mini-web auf der Atmega644 Basis hat sich der raspberry noch nie verschluckt. Manchmal kam beim Atmega644 nur Unsinn im Browser an.

Umsetzung der Messdaten auf RS232 Pegel (Platine und Schaltung).
Verzeichnis /var/www als 7z
C-source der Programme

shell-script testrxd.sh für den cron-job   

#!/bin/bash
#
# Wenn rxdgmess nicht aktiv, dann starten
#
if ps -e | grep 'rxdgmess' > /dev/null
   then
#   echo "rxdgmess aktiv"
   exit 0
fi
/home/pi/gmess/rxdgmess & 

Die crontab kann mit dem command sudo  crontab -e erweitert werden. Mit diesem command wird der editor nano aufgerufen und die
crontab ( das ist eine Textdatei) mit der Zeile

0-59/15 * * * * /home/pi/testrxd.sh

erweitert. Die entsprechenden Unix Berechtigungen nicht vergessen!!
 
   
   

   
                     

Update: 14.2.2014             Reinhard Alfons Lidzba 2014       Kontakt