私は、Arduino UNOにLibeliumシールドを接続して、水のphレベル、温度、...などを測定する多くのセンサーを接続したところです。センサーデータをどのようにデータベース(MySQL)にアップロードするか、どうしてもわかりませんでした。データベース接続のためのコードはありますが、センサーデータをデータベースにアップロードする方法(クエリ)がまだわかりませんでした。
Arduinoにセンサーデータを認識させ、データベースにアップロードしたり、XBee経由で他のArduinoやRaspberry piに送信したりするにはどうすればいいのかが一番の問題点です。
データベース接続のためのコード
void sendData(){
Serial.println("Connecting...");
if (my_conn.mysql_connect(server_addr, 3306, user, password)){
delay(500);
Serial.println("Starting SQL!");
Serial.println(INSERT_SQL);
my_conn.cmd_query(INSERT_SQL);
Serial.println("Query Success!");
my_conn.disconnect();
Serial.println("\n");
}
else {
Serial.println("Connection failed!");
}
}
まず、MySQLデータベースにテーブルを作成する必要があります。
CREATE TABLE IF NOT EXISTS `table_log` (
`log_id` int(11) NOT NULL AUTO_INCREMENT,
`log_date` date NOT NULL,
`log_time` time NOT NULL,
`log_t1` float NOT NULL,
`log_t2` float NOT NULL,
`log_t3` float NOT NULL,
`log_t4` float NOT NULL,
`log_vbatt` float NOT NULL,
PRIMARY KEY (`log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;
phpmyadminページで実行することができます(または手動でテーブルを作成します)。上記では、自動インクリメントの ID ('log_id' - 必要)、日付と時刻、4つの温度値、電圧値 (これらは要件に応じて変更してください) のカラムを用意しています。
次に、新しいレコードを作成するためのクエリは、次のようになります。
INSERT INTO `table_log` (`log_id`, `log_date`, `log_time`, `log_t1`, `log_t2`, `log_t3`, `log_t4`, `log_vbatt`) VALUES
(0, '2016-03-04', '01:53:30', 1.0, 2.0, 3.0, 4.0, 3.0);
この文字列を動的に(実際の値で)作成し、INSERT_SQLの代わりに使用する必要があります。