TFMini-Plus
TFMini-Plus copied to clipboard
got message - Status: HEADER Data: 20 09 68 FF 20 09 68 FF 20
Hello I bought a TFmini Plus and am testing.Thanks for your library. I'm testing the code with ESP32 Cam. I' got some printf related errors.And changed them as Serial.print. I think I got message from the TFmini Plus.But I can not understand the messages. I think it is error.Following is the message and the code that I used. Could you give me an advice?
Status: HEADER Data: 20 09 68 FF 20 09 68 FF 20 Status: HEADER Data: FF 26 09 64 FF 20 09 65 FF Status: HEADER Data: 09 6D FF 16 20 20 09 74 FF Status: HEADER Data: FF 20 09 7C FF 20 09 71 FF Status: HEADER Data: FF 20 09 70 FF 20 09 6D FF Status: HEADER Data: FF 20 09 7D FF 20 09 75 FF Status: HEADER Data: FF 20 09 71 FF 20 09 74 FF Status: HEADER Data: FF 22 09 6C FF 20 09 7D FF
---------------code---------------------------------------------------------/* File Name: TFMP_example.ino * Developer: Bud Ryerson * Inception: 29JAN2019 * Last work: 10SEP2021
* Description: Arduino sketch to test the Benewake TFMini Plus * time-of-flight Lidar ranging sensor using the TFMPlus Library.
* Default settings for the TFMini Plus are a 115200 serial baud rate * and a 100Hz measurement frame rate. The device will begin returning * measurement data right away: * Distance in centimeters, * Signal strength in arbitrary units, * and an encoded number for Temperature in degrees centigrade.
* Use the 'sendCommand()' to send commands and return a status code. * Commands are selected from the library's list of defined commands. * Parameters can be entered directly (115200, 250, etc) but for * safety, they should be chosen from the library's defined lists. */
#include <TFMPlus.h> // Include TFMini Plus Library v1.5.0 TFMPlus tfmP; // Create a TFMini Plus object
//#include "printf.h" // Modified to support Intel based Arduino // devices such as the Galileo. Download from: // https://github.com/spaniakos/AES/blob/master/printf.h //#include "printEX.h" // Modified to support Intel based Arduino // The Software Serial library is an alternative for devices that // have only one hardware serial port. Delete the comment slashes // on lines 37 and 38 to invoke the library, and be sure to choose // the correct RX and TX pins: pins 10 and 11 in this example. Then // in the 'setup' section, change the name of the hardware 'Serial2' // port to match the name of your software serial port, such as: // 'mySerial.begin(115200); etc.
#include <SoftwareSerial.h> SoftwareSerial mySerial( 13, 15); void setup() { Serial.begin( 115200); // Intialize terminal serial port delay(20); // Give port time to initalize // printf_begin(); // Initialize printf. Serial.print("\r\nTFMPlus Library Example - 10SEP2021\r\n"); // say 'hello'
mySerial.begin( 115200); // Initialize TFMPLus device serial port. delay(20); // Give port time to initalize tfmP.begin( &mySerial); // Initialize device library object and... // pass device serial port to the object.
// Send some example commands to the TFMini-Plus // - - Perform a system reset - - - - - - - - - - - Serial.println( "Soft reset: "); if( tfmP.sendCommand( SOFT_RESET, 0)) { Serial.print( "passed.\r\n"); } else tfmP.printReply(); delay(500); // added to allow the System Rest enough time to complete
// - - Display the firmware version - - - - - - - - - // Serial.print( "Firmware version: "); // if( tfmP.sendCommand( GET_FIRMWARE_VERSION, 0)) // { // Serial.print( tfmP.version[ 0]); // print three single numbers // Serial.print( tfmP.version[ 1]); // each separated by a dot // Serial.print( tfmP.version[ 2]); // } // else tfmP.printReply(); // - - Set the data frame-rate to 20Hz - - - - - - - - // Serial.print( "Data-Frame rate: "); // if( tfmP.sendCommand( SET_FRAME_RATE, FRAME_20)) // { // Serial.println( String(FRAME_20)); // } // else tfmP.printReply(); // - - - - - - - - - - - - - - - - - - - - - - - -
/* // - - - - - - - - - - - - - - - - - - - - - - - - // The next two commands may be used to switch the device // into I2C mode. This sketch will no longer receive UART // (serial) data. The 'TFMPI2C_example' sketch in the // TFMPI2C Library can be used to switch the device back // to UART mode. // Don't forget to switch the cables, too. // - - - - - - - - - - - - - - - - - - - - - - - - printf( "Set I2C Mode: "); if( tfmP.sendCommand( SET_I2C_MODE, 0)) { printf( "mode set.\r\n"); } else tfmP.printReply(); printf( "Save settings: "); if( tfmP.sendCommand( SAVE_SETTINGS, 0)) { printf( "saved.\r\n"); } else tfmP.printReply(); // - - - - - - - - - - - - - - - - - - - - - - - - */
delay(500); // And wait for half a second. }
// Initialize variables int16_t tfDist = 0; // Distance to object in centimeters int16_t tfFlux = 0; // Strength or quality of return signal int16_t tfTemp = 0; // Internal temperature of Lidar sensor chip
// Use the 'getData' function to pass back device data. void loop() { delay(50); // Loop delay to match the 20Hz data frame rate
if( tfmP.getData( tfDist, tfFlux, tfTemp)) // Get data from the device. { Serial.print( "Louis_Dist: cm "); // display distance, Serial.print( tfDist); // display distance, // Serial.print( "Flux: "); // display signal strength/quality, // Serial.print( tfFlux); // display signal strength/quality, // Serial.print( "Temp:" ); // display temperature, // Serial.print( tfTemp); // display temperature, Serial.print( "\r\n"); // end-of-line. } else // If the command fails... { tfmP.printFrame(); // display the error and HEX dataa } }
Hello,
It appears that your code is setting the device to I2C mode tfmP.sendCommand( SET_I2C_MODE, 0):
and then expecting to communicate in Serial mode.
Can you still communicate with the device using the GUI? If not, it might be stuck in I2C mode; and then you may have to use the TFMPI2C library to command it back into UART (Serial) mode.
Good luck. Let me know how you're doing.
Bud