Serial communication between tfmini plus and mrk gsm 1400 doesnt work

  For Arduino boards with only one serial port like UNO board, the function of software visual serial
  port is to be used.
//#include <SoftwareSerial.h> //header file of software serial port
//SoftwareSerial Serial1(13,14); //define software serial port name as Serial1 and define pin2 as RX and pin3 as TX
/* For Arduinoboards with multiple serial ports like DUEboard, interpret above two pieces of code
  and directly use Serial1 serial port*/
int dist; //actual distance measurements of LiDAR
int strength; //signal strength of LiDAR
float temprature;
int check; //save check value
int i;
int uart[9]; //save data measured by LiDAR
const int HEADER = 0x59; //frame header of data package

void setup() {
  Serial.begin(9600); //set bit rate of serial port connecting Arduino with computer 
  Serial1.begin(115200); //set bit rate of serial port connecting LiDAR with Arduino
void loop() {
  if (Serial1.available()) { //check if serial port has data input
    if ( == HEADER) { //assess data package frame header 0x59
      uart[0] = HEADER;
      if ( == HEADER) { //assess data package frame header 0x59
        uart[1] = HEADER;
        for (i = 2; i < 9; i++) { //save data in array
          uart[i] =;
        check = uart[0] + uart[1] + uart[2] + uart[3] + uart[4] + uart[5] + uart[6] + uart[7];
        if (uart[8] == (check & 0xff)) { //verify the received data as per protocol
          dist = uart[2] + uart[3] * 256; //calculate distance value
          strength = uart[4] + uart[5] * 256; //calculate signal strength value
          temprature = uart[6] + uart[7] * 256; //calculate chip temprature
          temprature = temprature / 8 - 256;
          Serial.print("dist = ");
          Serial.print(dist); //output measure distance value of LiDAR
          Serial.print("strength = ");
          Serial.print(strength); //output signal strength value
          Serial.print("\t Chip Temprature = ");
          Serial.println(" celcius degree"); //output chip temperature of Lidar

Please follow the advice given in the link below when posting code. Use code tags (the </> icon above the compose window) to make it easier to read and copy for examination

sorry I'am new to the forum.

How do you know?

One thing to pay attention to in your loop() code:

If one (or maybe more) bytes are available on Serial1, read all 10 bytes. That does not work, serial communication is slow compared to your Arduino.

One solution is to change if (Serial1.available()) and compare it with the number of bytes that you expect and next read them.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.