Raspberry und LIME-Mikrocontrollerboard

Verbinde LIME 2 via UART mit der MySQL-Datenbank des Raspberry Pi. Dazu benötigst du ein LIME-Mikrocontrollerboard, einen Raspberry Pi, auf dem LIME-Mikrocontrollerboard ein C-Programm und auf dem Raspberry Pi ein Python-Programm sowie die MySQL-Datenbank.

Python auf dem Raspberry Pi

1 Erstelle eine Python-Datei

Baue mit Putty eine Verbindung zum Raspberry Pi auf und erstelle ein Python-Programm
~ $sudo nano serial_test.py Folgenden Text in den Editor kopieren und mit Strg + O speichern:
Zeichenkette die mit \n oder mit byte Nr 13 (Enter) gesendet werden muss Timeout 2 Sec
#!/usr/bin/python
#-*- coding: utf-8 -*-
#UTF8 Kodierung aktivieren

import serial #Paket "Serial" importieren

#print(""" Der Controller hat 2 Sekunden Zeit um eine Ganze Zeichenkette
#zu senden 9600 Baud danach wird erneut abgefragt, der Wert kann
#bei Timeout erhöht werden. !!!! Wichtig die Zeichenkette muss mit
#'backslash n' im String abgeschlossen werden!!!!
#Weiter mit Enter!!""")
#leer=""
#raw_input(leer)

#Definition der Variablen
line=""         #Konfiguration als String
zeichen=""      #Konfiguration als String
wert=0          #wert als character

#Konfiguration der serirellen Schnittstelle
ser=serial.Serial()#Serial Laden
ser.baudrate = 9600
ser.timeout =2
ser.echo=0

#Auswahl der UART-Pins
ser.port = "/dev/ttyUSB0"
#ser.port = "/dev/ttyAMA0"

#Abrfrage der Konfiguration
print ser
ser.open()
print ser

while(1):
    #lesen: Zeichenkette die mit \n oder mit byte Nr 13 (Enter) gesendet werden muss Timeout 2 Sec
    line=ser.readline()
    if line=="":
        print("Nichts Angekommen")
    else:
        print("gelesen: "+line)

    #write
    s =   "%d " % (wert)
    ser.write(s)      #send back the received data
    print("gesendet: "+s)
    wert=wert+1
    if wert>=255:
        wert=0

ser.close()

Den Editor mit Strg + X verlassen.

2 Ausführen des Python-Programms

Verbinde den Raspberry Pi mit den dem Masse-Anschluss und den beiden UART-Pins GPIO14 sowie GPIO15 mit dem LIME-Mikrocontrollerboard. Dann gibt folgenden Befehl in der Putty-Console ein:
~ $ sudo python serial_test.py

C-Programm für das LIME-Mikrocontrollerboard

3 UART-Bibliotheken

Lade die UART-Bibliotheken für Dein Lime Mikrocontroller­board herunter.

4 C-Programm

Schreibe ein C-Programm für den Mikro­controller und übertrage Messwerte über die serielle Schnittstelle.

Erweitern des Python-Programms mit Datenbankzugriff

5 MySQL Benutzer, Datenbank und Tabelle anlegen

1 Benutzer und gleichnamige Datenbank mit phpmyadmin anlegen:
Benutzer
Benutzer hinzufügen
Benutzername eingeben: lime
Passwort: lime
anklicken: Erstelle eine Datenbank mit gleichem Namen und gewähre alle Rechte.
OK bestätigen

2 Tabelle anlegen
Datenbank lime auf der linken Seite anklicken
Erzeuge Tabelle:
Name: limedata
Anzahl der Spalten: 2
Felder bennenen und Datentyp angeben:
Laufende Nummer: nummer, Datentyp: SERIAL, Häckchen bei A_I
//automatische Nummernvergabe gesendete Werte: werte, Datentyp: TEXT, Länge: 30

3 Python-MySQL-Bibliothek auf Raspberry Pi installieren
sudo apt-get install python-mysqldb


6 Python-Programm erweitern

nano serial_test.py Erweitere das Python-Programm serial_test.py indem du folgenden Text in den Editor kopieren und mit Strg + O speichern:
import MySQLdb as mdb #einbinden der mysql-Bibliothek

#Verbindung zur Datenbank herstellen
#neue Variable mit Angabe von Ort, Benutzername, Passwort, Datenbankname)
con = mdb.connect('localhost','lime','lime','lime')
Den Editor mit Strg + X verlassen.
innerhalb der while(1)-Schleife:
    #lesen: Zeichenkette die mit \n oder mit byte Nr 13 (Enter) gesendet werden$
    line=ser.readline()
    if line=="":
        print("Nichts Angekommen")
    else:
        print("gelesen: "+line)
        #Datenbankeintrag:
        with con:
            cur = con.cursor();
            cur.execute("insert into limedata(werte) values('"+line+"')")

Den Editor mit Strg + X verlassen.
Test des Datenbankeintrags:
~ $ python serial_test.py
Nach einigen Werten mit Strg + C Programm abrechen und unter phpmyadmin Datenbankeintrag kontrollieren.

7 Neustart

~ $sudo reboot
© mylime.info