Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

got message - Status: HEADER Data: 20 09 68 FF 20 09 68 FF 20 #44

Open
sbb777 opened this issue Mar 28, 2022 · 1 comment
Open

got message - Status: HEADER Data: 20 09 68 FF 20 09 68 FF 20 #44

sbb777 opened this issue Mar 28, 2022 · 1 comment

Comments

@sbb777
Copy link

sbb777 commented Mar 28, 2022

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
    }
}

@budryerson
Copy link
Owner

budryerson commented Apr 4, 2022

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants