Compatible hardware
Please see the CAN library’s compatible hardware.
Example ino file with dummy values for sensors
For a quick test, there’s a ino file in examples/DataSimulator directory. This is a running example with some PID’s and some fake data values.
Example: creating a ino file
/*** Start by including GTTurboEcu Library*/
#include<GTTurboEcu.h>/** * Define and configure GTTurboEcu Library * * This values are related to the bluetooth configuration. * library SoftwareSerial.h is use to connect the bluetooth device * by identifying: * 1) baudRate * 2) rxPin * 3) txPin*/
GTTurboEcu gtTurboEcu(9600L, 11, 10);
voidsetup() {
// init serial communication, is only need if theres a need to read the debug info on serial port of the arduino// Serial.begin(9600);/** * https://en.wikipedia.org/wiki/OBD-II_PIDs * * When the OBD client (ex: torque) * init's connection, it will ask what sensors the "ecu" supports * * Register the PID(sensors) that will be reported to ODBII client app, * only insert the PID in Hex, do not send the mode01 (see the wikipedia page for more info) * * ex PID(010C - Engine RPM) PID(0170 - Boost pressure control)*/
gtTurboEcu.registerMode01Pid(0x0C);
gtTurboEcu.registerMode01Pid(0x70);
}
voidloop() {
/** * The OBD client App (ex: torque), * will frequently request values for the PID(sensors), * that where registered in setup() * * use readPidRequest to listen for OBDII client app, pid request's*/
String pidRequest = gtTurboEcu.readPidRequest();
/** * Process the pid request 010C - Engine RPM*/if (pidRequest.equalsIgnoreCase("010C")) {
// read RPM value from RPM sensoruint32_t rpmSensorValue = <readYourRpmSensorValue()>;
// CONVERT FORMULAS ON PID (more on wikipage)// find the formula that is used to convert the RPM value on the client side// revert the formula and apply to the value that was readed from the RPM sensor// EX on the client side the RPM value is divide by 4, // this means that the client is expecting an RPM = (rpmSensorValue * 4)uint32_t rpmSensorValueConverted = rpmSensorValue * 4;
// NUMBER OF EXPECTED BYTES// The OBDII client is expecting a response with n number of bytes for a given PID (check the wikipage)// EX the RPM PID (010C), is expecting 2 bytes in the responseuint8_t numberOfBytes = 2;
// finally send the response back/** * pidRequest - we re-send the pid we received to identify it * numberOfBytes - the number of bytes this PID value has, see OBDII PID specifications * rpmSensorValueConverted - the value of the sensor*/
gtTurboEcu.writePidResponse(pidRequest, numberOfBytes, rpmSensorValueConverted);
} elseif (pidRequest.equalsIgnoreCase("0170")) {
// read value from Turbo Boost sensoruint32_t turboBoostSensorValue = <readYourTurboBoostSensorValue()>;
// CONVERT FORMULAS ON PID// no need to convert// NUMBER OF EXPECTED BYTESuint8_t numberOfBytes = 9;
// finally send the response back
gtTurboEcu.writePidResponse(pidRequest, numberOfBytes, turboBoostSensorValue);
} else {
/** * If pid not implemented, report it as not implemented*/
gtTurboEcu.writePidNotSupported();
}
} // loop end
Examples
See examples folder.
Gtturboecu
Arduino ODBII & ELM327 Emulator – Allows Arduino to act as a ECU and a OBD2 ELM327 device and response to PID requests, from any given ODBII app (ex: android::torque).
This library can be used to read values from real sensor’s with arduino and visualize them in any OBDII client App,
or it can be used as an emulator to help developing OBDII client App’s over ELM327 chip’s.
GTTurboEcu implements the specification’s of the ELM327 chip.
It was only tested with Torque, but in theory it should work OK, with any OBDII client App that can communicate with a ELM327 chip.
License
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (c) 2021 . All right reserved.
Motivation
Has a fan of classic car’s and owner of some, I need to read some performance values without changing the interior dash by setting gauges or arduino displays.Since I was unable to find an ELM327 arduino implementation, decided to make my own and share it with all classic cars enthusiast.
Using the arduino ide library manager
- Choose
Sketch
->Include Library
->Manage Libraries...
- Type
OBD2
into the search box. - Click the row to select the library.
- Click the
Install
button to install the library.
Устройства для автосимуляторов на arduino (каналы и видео)
Все видео на English
Ничего не поделать. В русском сегменте почти никто таким не увлекается (кроме одного русского канала который приведен в списке ниже)
Я не затрагиваю тему рулей которые собраны на базе мышки или геймпада, потому что это адовое дерьмо.
Если нужны ссылки на компоненты из видео, то все они есть под самим видео на YouTube. Но в основном все EBAY. Так что проще будет поискать своими руками на родном Али
Подборка видео от канала amstudio
Небольшой дисплей со спидометром, тахометром, показом текущей передачи и текущим кругом
В видео используется Arduino Nano, дисплей TM1638 и программа SimHub
SimHub имеет множество стандартных и пользовательских настроек. Дисплей можно настроить в соответствии с требованиями пользователя. Дисплей также показывает лучшее время круга, предупреждение о низком количестве топлива и давление в шинах. Он будет показывать цифровые часы когда Вы не в игре. Переключатели управляют яркостью дисплея и прокручивают режимы. Их можно легко изменить в соответствии с желаниями пользователя. На данный момент добавлен задний переключатель для управления яркостью.
Для работы дисплея должен работать SimHub.
Контроллер ручного тормоза представляет собой Arduino ProMicro с загруженным в него скетчем ручного тормоза. Скетч можно найти здесь
После загрузки скопируйте папку Joystick в папку с библиотеками Arduino, а затем загрузите скетч в ProMicro. Вы можете изменить ощущение рычага, используя более сильные или слабые пружины.
Дисплей 7 дюймов с возможностью полной кастомизации шаблона
Подсоединение Тахометра к SimHub
Панель с кнопками, энкодерами и тумблерами (32 функции)
Подсоединение Датчика Турбонаддува к SimHub
(Поддерживается только в Asseto Corsa)
RGB (WS2812) Тахометр
Приборная панель из смартфона или планшета
Коробка передач распечатанная на 3D принтере на базе модуля от USB джойстика
3D Модель для печати
Индикатор передачи КПП
Подключение приборной панели от BMW к SimHub
Скетч и протокол для Arduino
Симулятор потоков ветра во время игры
Ссылка на сайт где всегда лежит всегда свежий SimHub. Тут же есть и другие проекты людей
https://www.racedepartment.com/downloads/simhub-diy-s..
И оставлю сразу каналы с людьми которые собирали себе рули, педали, коробки.
Канал AgaYuditra который собрал свой руль вместе с коробкой передач, но так как это процесс у него растянут на множество видосов, то я просто оставлю его плейлист. Думаю по названиями видео не сложно будет разобраться
https://www.o-b-d.ru/playlist?list=PLfmTHLP-fJJQ-k..
Еще один канал BS Simulator который тоже собирал руль. Опять же плейлист.
https://www.o-b-d.ru/playlist?list=PLcwUjKUs6bU6x_..
Русский канал (что удивительно так как годных решений в русском сегменте тытрубы я не нашел)
https://www.o-b-d.ru/playlist?list=PLbZDfYWVxuLvFJ..
Плейлист конечно весь вперемешку, но опять же найдете все видео по названиям.
Так же у него на канале есть видос под переделку дешманского руля на 700-900 градусов
https://youtu.be/upNkGayk43k
А если вам лень творить такое “искусство”, то можете собрать себе такой руль, который составит конкуренцию легендарному G27
https://youtu.be/Y838v1GNteA