/** * @file a_wild_card.ino * @copyright (c) 2013-2020 Stroud Water Research Center (SWRC) * and the EnviroDIY Development Team * This example is published under the BSD-3 license. * @author Kevin M.Smith * @date August 2013 * * @brief Example A: Using the Wildcard - Getting Single Sensor Information * * This is a simple demonstration of the SDI-12 library for Arduino. * * It requests information about the attached sensor, including its address and * manufacturer info. * * TEKBOX TBSM03 * Ta -20 <-> +65 C * Tstg -40 <-> +85 C * moisture level - <-> 100% * */ #include #define SERIAL_BAUD 9600 /*!< The baud rate for the output serial port */ #define DATA_PIN 11 /*!< The pin of the SDI-12 data bus */ #define POWER_PIN -1 /*!< The sensor power pin (or -1 if not switching power) */ //#define ENABLE_12V 11 //#define FAULT_12V 12 //#define SDI_DE 9 /** Define the SDI-12 bus */ SDI12 mySDI12(DATA_PIN); //SDI12 sdi12Tx(1); //SDI12 sdi12Rx(0); /** '?' is a wildcard character which asks any and all sensors to respond 'I' indicates that the command wants information about the sensor '!' finishes the command */ String myCommand = "?!"; //String myCommand; byte dataString; void setup() { //pinMode(ENABLE_12V, OUTPUT); //pinMode(SDI_DE, OUTPUT); //digitalWrite(ENABLE_12V, HIGH); Serial.begin(SERIAL_BAUD); Serial.println("SDI12 test"); Serial.println("Opening SDI-12"); mySDI12.begin(); Serial.println("Sent: ?!"); mySDI12.sendCommand("?!"); delay(150); while(mySDI12.available()) { dataString = mySDI12.read(); Serial.print(" Recieved: "); Serial.print(dataString, HEX); } Serial.println(); delay(1000); } void loop() { Serial.println("Sent: 0!"); // Acknowledge active mySDI12.sendCommand("0!"); delay(150); while(mySDI12.available()) { dataString = mySDI12.read(); Serial.print("Recieved: "); Serial.print(dataString, HEX); } Serial.println(); // // Serial.println("Sent ?!:"); // ask address // mySDI12.sendCommand("?!"); // while(mySDI12.available()) // { // dataString = mySDI12.read(); // Serial.print(" Recieved: "); // Serial.print(dataString, HEX); // } // // Serial.println(); // Serial.println("Sent 0M1!:"); // start measurement mySDI12.sendCommand("0M1!"); delay(150); while(mySDI12.available()) { dataString = mySDI12.read(); Serial.print(" Recieved: "); Serial.print(dataString, HEX); } Serial.println(); delay(150); Serial.println("Sent 0D0!:"); mySDI12.sendCommand("0D0!"); delay(150); while(mySDI12.available()) { dataString = mySDI12.read(); Serial.print(" Recieved: "); Serial.print(dataString, HEX); //dataString = mySDI12.readStringUntil('\n'); //dataString.trim(); //Serial.println(decTochar(dataString)); } mySDI12.clearBuffer(); Serial.println(); delay(5000); }