皆さん、
私の友人と私は現在、実現したい小さなプロジェクトに取り組んでいます。これまで、ガレージ内の車の存在を認識する小さなセンサーを構築し、Arduino Nano と一緒に超音波センサーを実行しました。次に、センサーは整数 (1 = 車、0 = 車なし) を Xbee 経由で、リビング ルームで Python を実行している RaspberryPi に送信します。
また、次のコードを使用して、行または 0 または 1 を指定して、画面上にデータを表示できるようにしました。
import serial
while True:
ser = serial.Serial(“/dev/ttyAMA0”, 9600, timeout=1)
response = ser.read()
print response
Python と SQLite3 のコードを少し調べた結果、車がいつガレージに到着して出発したかを確認できれば、非常に優れていると判断しました。そのため、いくつかの調査を行ったところ、MySQL または SQLite データベースを使用することでこれを実現できることがわかりました。
少し試して、多くのチュートリアルを見たところ、テーブルを作成してデータを挿入できるようになりました。残念ながら、このデータはこれまで手動で記述されており、関数によってテーブルに動的に挿入されていません。
データベースに関するコードは次のようになります。
import sqlite3
import time
import datetime
import serial
def Main():
try:
con = sqlite3.connect(‘test.db’)
cur = con.curson()
cur.execute(‘CREATE TABLE Cars(Id INT, Time TEXT, Status INT)’)
cur.execute(“INSERT INTO Cars VALUES(1, datettime(), 1)”)
cur.execute(“INSERT INTO Cars VALUES(2, datettime(), Reading())”)
con.commit()
cur.execute(“SELECT * FROM Cars”)
data = cur.fetchall()
for row in data
print row
except sqlite3.Error, e:
if con:
con.rollback()
print “There’s a problem with your SQLite”
finally:
if con:
con.close()
def Reading():
ser = serial.Serial(“/dev/ttyAMA0”, 9600, timeout=1)
response = ser.read()
return response
if __name__ == ‘__main__’:
Main()
要するに、テーブルのすべての行には、個々の Id、現在の時刻、およびガレージのセンサーの前に車があるかどうかに応じて 1 または 0 が表示されるはずです。このコードを実行しようとすると、常に「SQL に問題があります」というメッセージが表示されます。
おそらく、これまでのどこが間違っていたのか、関数 Reading() の値をテーブルに実装する方法を知っている人がいるでしょう。そうでない場合でも、データを視覚化する方法について別のアイデアがあるかもしれません。