ELMduino: Wrong RPM

Hi, I’m just trying to program a data logger for my motorbike. It will combine GPS, Angle, rpm and kph. SD for logging and a Display for setup and control.

Using ELM327 for rpm and kph. Connection is established. When I try to read rpm I always get the fix value 884. In this LOG the ignition was on but the engine was not running. Got the same when the engine is at different rpm. Any idea?

#include "BluetoothSerial.h"
#include "ELMduino.h"

BluetoothSerial SerialBT;
#define ELM_PORT SerialBT
#define DEBUG_PORT Serial

ELM327 myELM327;

uint32_t rpm = 0;
// To change for a different ELM327
uint8_t MyBTAddress[6] = {0x66, 0x1E, 0x11,
                          0xEE, 0xAD, 0xAC};  // ELM MAC Adress

void setup() {
#if LED_BUILTIN
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
#endif

  DEBUG_PORT.begin(115200);

  ELM_PORT.begin("ArduHUD", true);
  ELM_PORT.setPin("1234");

  if (!ELM_PORT.connect(MyBTAddress)) {
    DEBUG_PORT.println("Couldn't connect to BT - Phase 1");
    while (1)
      ;
  }

  if (!myELM327.begin(ELM_PORT, true, 2000)) {
    Serial.println("Couldn't connect to OBD - Phase 2");
    while (1)
      ;
  }

  Serial.println("Connected to ELM327");
}

void loop() {
  float tempRPM = myELM327.rpm();

  if (myELM327.nb_rx_state == ELM_SUCCESS) {
    rpm = (uint32_t)tempRPM;
    Serial.println(rpm);
  } else if (myELM327.nb_rx_state != ELM_GETTING_MSG)
    myELM327.printError();
}

LOG: Clearing input serial buffer Sending the following command/query: AT D Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT Z Received char: A Received char: T Received char: Z Received char: \r Received char: \r Received char: \r Received char: E Received char: L Received char: M Received char: 3 Received char: 2 Received char: 7 Received char: _ Received char: v Received char: 1 Received char: . Received char: 5 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: ATZELM327v1.5 Clearing input serial buffer Sending the following command/query: AT E0 Received char: A Received char: T Received char: E Received char: 0 Received char: \r Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: ATE0OK Clearing input serial buffer Sending the following command/query: AT S0 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT AL Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT ST 00 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT TP A0 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Connected to ELM327 Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: S Received char: E Received char: A Received char: R Received char: C Received char: H Received char: I Received char: N Received char: G Received char: . Received char: . Received char: . Received char: \r Timeout detected with overflow of 0ms Received: SEARCHING… ERROR: ELM_TIMEOUT Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: 4 Received char: 1 Received char: 0 Received char: C Received char: 0 Received char: 0 Received char: 0 Received char: 0 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: 410C0000 Expected response header: 410C Single response detected 64-bit response: 0 responseByte_0: 0 responseByte_1: 0 responseByte_2: 0 responseByte_3: 0 responseByte_4: 0 responseByte_5: 0 responseByte_6: 0 responseByte_7: 0 884 Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: 4 Received char: 1 Received char: 0 Received char: C Received char: 0 Received char: 0 Received char: 0 Received char: 0 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: 410C0000 Expected response header: 410C Single response detected 64-bit response: 0 responseByte_0: 0 responseByte_1: 0 responseByte_2: 0 responseByte_3: 0 responseByte_4: 0 responseByte_5: 0 responseByte_6: 0 responseByte_7: 0 884

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 16 (7 by maintainers)

Commits related to this issue

Most upvoted comments

Just changed it… and it works.

Tested it with rpm and kph. Both fine.

Thanks for your support.