Hoe upload ik de sensorgegevens van arduino naar een database?

Ik heb zojuist een Libelium-schild aangesloten om veel sensoren aan te sluiten op Arduino UNO, die water ph-niveau, temperatuur, enz. Meten. Ik kon echt niet achterhalen hoe ik de sensorgegevens upload naar een database (MySQL). Ik heb de code voor databaseverbinding, maar kon nog steeds niet achterhalen hoe (opvragen) de sensorgegevens in de database moeten worden geüpload.

Het grootste probleem hier is hoe ik de Arduino de sensorgegevens laat herkennen om deze in de database te uploaden of via XBee naar een andere Arduino of Raspberry pi te sturen.

Code voor databaseverbinding:

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
Je mengt misschien zorgen en je hebt baat bij het een beetje ontbinden van je mentale model van de situatie. U moet sensor-leescomponenten hebben, een component die de sensorgegevens verbruikt (doet er iets mee, bijv. In DB laten vallen), en uw netwerklaag. Ideale architectuur (1) Arduino verbonden met sensor. Inlezen van metingen van de omgeving en verzenden van gegevens via ZigBee (2) Arduino of, idealiter, Raspberry Pi luistert naar berichten op ZigBee mesh-netwerken. Bij bericht, gegevens opschonen en invoegen in DB. Nog beter is er een wachtrijproces tussen "Gegevens opschonen" en "Invoegen in DB"
toegevoegd de auteur Robert Welain, de bron

1 antwoord

Eerst moet je de tabel in je MySQL-database maken, zoals:

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

Dan zou de vraag om een ​​nieuw record te maken als volgt zijn:

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

U moet deze reeks dynamisch (met echte waarden) maken en gebruiken in plaats van INSERT_SQL.

1
toegevoegd