Sensör verilerini arduino'dan bir veritabanına nasıl yüklerim?

Arduino UNO'ya su sensörleri, sıcaklık, ... gibi birçok sensörü bağlamak için bir Libelium kalkanı bağladım. Sensör verilerini bir veritabanına (MySQL) nasıl yükleyeceğimi gerçekten anlayamadım. Veritabanı bağlantısı için kodum var, ancak yine de sensör verilerini veritabanına nasıl yükleyeceğimi (Sorgulama) anlayamadım.

Buradaki temel problem, arduino'nun sensör verilerini veri tabanına yüklemek veya XBee aracılığıyla başka bir Arduino veya Raspberry pi'ye göndermek için nasıl tanıyacağını açıklamaktır.

Veritabanı bağlantısı kodu:

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
Endişeleri karıştırıyor olabilirsiniz ve durumun zihinsel modelini biraz ayrıştırmaktan faydalanabilirsiniz. Sensör okuma bileşenlerine, sensör verilerini tüketen bir bileşene sahip olmalısınız (örneğin DB'ye düşecek bir şey yapar) ve ağ katmanınız. İdeal mimari (1) Arduino sensöre bağlı. Çevre ölçümlerini okuyun ve ZigBee (2) Arduino üzerinden veri aktarın ya da ideal olarak Raspberry Pi, ZigBee mesh ağı üzerindeki mesajları dinler. Mesajda, verileri dezenfekte edin ve DB'ye ekleyin. Daha da iyisi, "verileri dezenfekte et" ve "DB'ye ekle" arasında bir sıra işlemi var.
katma yazar Robert Welain, kaynak

1 cevap

İlk önce, MySQL veritabanınızdaki tabloyu oluşturmanız gerekir:

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).

Yeni bir kayıt oluşturmak için sorgudan daha fazlası şöyle olurdu:

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);

Bu dizeyi dinamik olarak (gerçek değerlerle) oluşturmanız ve INSERT_SQL yerine kullanmanız gerekir.

1
katma