arduinoからセンサーデータをデータベースにアップロードするにはどうすればよいですか?

私は、Arduino UNOに多くのセンサーを接続するLibeliumシールドを接続しました。これは水の水位、温度などを測定します。私は実際にどのようにデータベース(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!");
          }
}
1
追加された 編集された
ビュー: 12
あなたは懸念を混ぜているかもしれませんし、状況の精神モデルを少し分解することで利益を得るかもしれません。センサーの読み取りコンポーネント、センサーデータを消費するコンポーネント(DBにドロップするなど)とネットワークレイヤーが必要です。理想的なアーキテクチャー(1)Arduinoセンサーに接続。 ZigBee(2)経由で環境測定とデータ送信を読んでください。Arduinoまたは理想的には、Raspberry PiはZigBeeメッシュネットワーク上のメッセージを受信します。メッセージが表示されたら、データをサニタイズしてDBに挿入します。 「データのサニタイズ」と「DBへの挿入」の間にキュープロセスがあると、
追加された 著者 Robert Welain,

1 答え

まず、あなたの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; 

You can execute it in your phpmyadmin page (or create the table manually there). Above we have columns for auto-increment id ('log_id' - necessary), date & time, 4 temperature values and voltage value (modify these according your requirements).

新しいレコードを作成するクエリは次のようになります。

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の代わりに使用する必要があります。

1
追加された