- Почему требуется доработка obd-ii разъема и как это сделать?
- Разработка панели приборов на основе raspberry pi и 7″ дисплея
- крутилка спидометра купить в москве, подмотка (моталка) для всех видов авто
- Доработка can-шины для установки подмотки происходит следующим образом:
- Купить крутилки (моталки) спидометра в москве | «odo-service»
- Подмотки для спидометра купить по низкой цене на aliexpress
- Преимущества нашей намотки спидометра:
- Приложение на телефон виртуальная панель приборов
- Применение крутилок спидометров
- Приобретая у нас подмотку спидометра вы получаете:
- Софт панели приборов на python и kivy (ui framework)
- Универсальная перепрограммируемая can-подмотка (моталка, крутилка) | всё для диагностики автомобилей и авто тюнинга
Почему требуется доработка obd-ii разъема и как это сделать?
Дело в том, что на определенных авто моторная CAN-шина не подключается напрямую к диагностическому разъему OBD-II. Чтобы изменить пробег — нужно отправлять сигналы именно по этой CAN-шине, для чего к ней нужно подключиться напрямую.
Подключение заключается в присоединении к паре проводов. На разных авто эти провода могут иметь разные цвета. Например, на Toyota XV70 — это черный и белый провода, на других авто – могут быть другие цвета.
Информация по конкретной марке и модели есть в инструкциях по установке для наших CAN-подмоток.Также вы можете узнать её у специалистов нашей компании.
Разработка панели приборов на основе raspberry pi и 7″ дисплея
В качестве аппаратной части я выбрал Raspberry Pi. Была идея использовать Android планшет, но показалось, что на Raspberry Pi будет проще и быстрее. В итоге докупил официальный 7″ дисплей, и сделал CAN шилд из модуля TJA1050 Niren.
OBD2 штекер использовал от старого ELM327 адаптера.
Используются контакты: CAN_L, CAN_H, 12, GND.
Тесты в машине прошли успешно и теперь нужно было все собрать. Плату дисплея, Raspberry Pi и блок питания разместил на куске черного пластика, очень удачно подобрал пластмассовые втулки, с ними ничего не болтается и надежно закреплено.
Местом установки выбрал бардачок на торпедо, которым я не пользуюсь. По примеркам в него как раз помещается весь бутерброд.
Напильником довел лист черного пластика до размера крышки бардачка, к нему прикрепил бутерброд и дисплей. Для прототипа сойдет, а 3D модель с крышкой для дисплея и всеми нужными крепежами уже в разработке.
крутилка спидометра купить в москве, подмотка (моталка) для всех видов авто
Доработка can-шины для установки подмотки происходит следующим образом:
- Демонтируем приборную панель (инструкция по демонтажу для каждого автомобиля прилагается).
- В одном из жгутов (обычно их на приборную панель идет 2) находится нужная пара проводов, идущих к моторной CAN-шине.
- На обоих проводах зачищается от изоляции участок примерно 5 мм длиной. Рекомендуем выбирать место «врезки» как можно дальше от приборной панели для максимально скрытного монтажа.
- К зачищенным местам подключается по 1 проводу. Их длины должно хватить для подключения к диагностическому разъему OBD-II вашего авто.
- Места врезки тщательно изолируются.
- Присоединённые к моторной CAN-шине провода подключаются в указанные в инструкции контакты OBD-II разъема.
В зависимости от марки и модели авто, пара проводов подключается ко 2 и 10 или к 3 и 11 контактам.
В наших инструкциях есть вся информация по конкретным брендам авто. - Перед окончательной сборкой проводится тестирование работы крутилки. Если при подключении пробег не изменяется, нужно в разъеме OBD-II поменять местами подведенные от CAN-шины провода.
- Если пробег начал изменяться, можно производить окончательную сборку и пользоваться подмоткой спидометра
Купить крутилки (моталки) спидометра в москве | «odo-service»
Крутилка спидометра – это устройство для самостоятельного увеличения пробега автомобиля. Подключается через диагностический разъем по CAN шине. Данное устройство является самым современным прибором для накрутки пробега автомобиля.
В сравнении с устаревающей механикой, современные электронные системы обеспечивают повышенную точность информации о скорости движения и общем пробеге авто. Но рано или поздно, каждый автолюбитель сталкивается с потребностью в изменении показаний спидометра или одометра. Причин, из-за которых машина нуждается в регулярной «намотке», множество: от сбоев в работе электронных устройств, до полной замены приборной панели.
И если в автомобилях отечественного производства установить нужные показатели можно без особых проблем, то владельцам иномарок придется обращаться за профессиональной помощью. Однако прогресс не стоит на месте и уже сегодня каждый автолюбитель может купить крутилку спидометра в Москве. Небольшое устройство, подключающееся к диагностическому разъему OBDII по CAN-шине, позволяет прибавлять пробег, дублируя показатели приборов на все электронные блоки, благодаря чему выявить факт накрутки невозможно даже в условиях профессиональной СТО.
Изначально, устройства для подкрутки показаний с приборов авто представляли собой генератор импульсов, имитирующих работу датчика скорости. Но с появлением электронных систем ABS изменился подход к сбору информации: в новых авто данные о скорости движения поступают со специальных датчиков, установленных в области колес. При этом стоит отметить, что сам модуль ABS, равно так же, как и вся электроника авто (ЭБУ двигателя, спидометр, одометр, датчик топлива и т.д.), подключен к цифровой шине CAN.
Крутилки «нового поколения» способны перехватывать системные сообщения, содержащие все необходимые данные, подменяя их на заданные показатели, что позволяет «намотать» необходимый километраж на спидометре и подкрутить пробег до нужной величины без особых проблем.
Прибор для скрутки пробега считается одним из самых полезных и функциональных устройств для водителей, желающих:
Получить компенсацию стоимости горюче-смазочных материалов. При расчете расхода ГСМ, большинство организаций учитывают данные, прописанные в техническом паспорте машины, забывая о нюансах и тонкостях в виде прогрева авто, простоя в пробках или ожидания;
Привести в порядок маршрутный лист. Часто, фактический пробег оказывается гораздо меньше цифр, прописанных в отчете пройденного пути, из-за чего водителям приходиться «докатывать» лишний километраж до завершения рабочего времени;
Вернуть реальные показания при замене приборной панели. Зачастую, продавцы подобных деталей либо «скручивают» показатели к нулю, либо оставляют их как есть, из-за чего данные на новой панели не совпадают с фактическими показателями по авто.
Занимаясь продажей специализированного оборудования для коррекции пробега, компания «ODO-Service» предлагает купить крутилки для автомобилей любой марки, модели и года выпуска. Моталки, представленные в каталоге нашей компании, выделяются за счет:
Качественной сборки;
Простоты в использовании;
Адекватной, доступной цены;
Абсолютной безопасности для электроники.
При этом стоит отметить, что на данный момент мы можем предоставить девайсы для более чем 130 моделей авто, а также осуществлять бесплатную техническую поддержку для покупателей. В случае обнаружения брака, возврат денег или обмен прибора гарантирован!
Подмотки для спидометра купить по низкой цене на aliexpress
подмотки для спидометра хорошего качества и по доступной цене? Мы знаем, где искать! На AliExpress можно найти всё по ключевым словам, например, подмотки для спидометра — вы получите выгодные предложения и сможете сэкономить. Вот краткое руководство о том, как найти самые низкие цены и качественные товары.
Используйте фильтры. На AliExpress есть широкий выбор самых разнообразных товаров. Чтобы найти товар подмотки для спидометра по вашим параметрам, настройте фильтры и отсортируйте всё по соответствующим результатам, количеству заказов или цене. Вы также можете выбрать фильтры с бесплатной доставкой, быстрой доставкой или бесплатным возвратом.
Изучайте бренды. подмотки для спидометра от надёжных и известных брендов, которые вам нравятся — просто нажмите логотип бренда на левой боковой панели. Это поможет вам отфильтровать результаты поиска.
Читайте отзывы. Посмотрите, нравится ли подмотки для спидометра другим покупателям. Читайте реальные отзывы о товаре — вы найдёте много полезной информации, а также советы и подсказки для удобного шопинга.
Так будет проще найти подмотки для спидометра по выгодной цене и воспользоваться быстрой доставкой или бесплатным возвратом товара. А новых пользователей ждут спецпредложения и подарки! Заходите на сайт AliExpress, чтобы найти и купить ещё больше товаров из категории.”
Преимущества нашей намотки спидометра:
- Моталка спидометра подключается из салона машины, с помощью диагностического разъема.
- Отсутствует потребность в специальной установке.
- Показания одометра меняются и в дублирующих блоках авто, благодаря чему обнаружить намотку невозможно.
- Намотка спидометра не требует специальных знаний и навыков, и удобна в обращении.
- Каждый прибор проходит тестирование на стенде, для исключения брака нашей продукции.
- Моталка спидометра совместима со всеми трансмиссиями, и с любым объемом мотора.
- Скорость работы прибора 4000 км.ч.
Наш прибор по намотке спидометра интегрируется в любой автомобиль.При выключенном двигателе следует подключить крутилку к диагностическому разъему.
Приложение на телефон виртуальная панель приборов


Если есть желание поддержать проект, то вот ссылка на приложение, принимаю любые замечания и предложения!
VAG Virtual Cockpit
Применение крутилок спидометров
Оригинальная крутилка для спидометра от производителя с гарантией и бесплатной доставкой в Москве, не оставляет следов в блоках.
Возможность быстро и безопасно подкрутить одометр требуется в разных случаях, среди которых следует отметить наиболее распространенные:
- приведение в порядок обнуленного из-за ремонта или замены одометра;
- коррекция показаний одометра из-за установленных нестандартных колесных дисков или других причин;
- завышение пробега корпоративного транспорта с целью коррекции отчетности.
Это основные причины, по которым наши корректоры нужны всем, ведь даже если сегодня все нормально и текущее значение одометра вас устраивает, уже завтра ситуация может кардинально измениться, и вам понадобится коррекция.
Приобретая у нас подмотку спидометра вы получаете:
- Прибор, изготовленный на высоком уровне, с использованием современных технологий, новшествам в приборостроении, а также прошедшего сертификацию и
лицензирование. - Бесплатную доставку в пределах Москвы, не удаленно от МКАД, в то время, когда это вам удобно.
- Консультацию наших специалистов, связанную с особенностями работы моталки.
- При смене автомобиля перепрограммирование прибора на новые параметры.- Годовую гарантию и поддержку.
У нас вы можете подобрать моталку спидометра, подходящую именно для ваших потребностей. Опираться следует на марку машины, год выпуска. В нашем ассортименте имеются приборы для любого автомобиля, будь то отечественная марка либо иномарка.
Софт панели приборов на python и kivy (ui framework)
Параллельно со сборкой самой панели приборов я вел разработку приложения для отображения информации с датчиков. В самом начале я не планировал какой либо дизайн.

Первая версия панели приборов
По мере разработки решил визуализировать данные более наглядно. Хотел гоночный дизайн, а получилось, что-то в стиле 80-х.

Вторая версия панели приборов
Продолжив поиски более современного дизайна я обратил внимание какие цифровые приборки делают автопроизводители и постарался сделать что-то похожее.

Третья версия панели приборов
Ранее, я никогда не разрабатывал графические приложения под Linux поэтому не знал с чего начать. Вариант на вебе простой в разработке, но слишком много лишних компонентов: иксы, браузер, nodejs, хотелось быстрой загрузки. Попробовав Qt PySide2 я понял, что это займет у меня много времени, т.к. мало опыта.
Kivy позволяет запускать приложение без Иксов, прямо из консоли, в качестве рендера используется OpenGL. Благодаря этому полная загрузка системы может происходить за 10 секунд.
import can
import os
import sys
from threading import Thread
import time
os.environ['KIVY_GL_BACKEND'] = 'gl'
os.environ['KIVY_WINDOW'] = 'egl_rpi'
from kivy.app import App
from kivy.properties import NumericProperty
from kivy.properties import BoundedNumericProperty
from kivy.properties import StringProperty
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.uix.scatter import Scatter
from kivy.animation import Animation
messageCommands = { 'GET_DOORS_COMMAND': 0x220D, 'GET_OIL_TEMPERATURE' : 0x202F, 'GET_OUTDOOR_TEMPERATURE' : 0x220C, 'GET_INDOOR_TEMPERATURE' : 0x2613, 'GET_COOLANT_TEMPERATURE' : 0xF405, 'GET_SPEED' : 0xF40D, 'GET_RPM' : 0xF40C, 'GET_KM_LEFT': 0x2294, 'GET_FUEL_LEFT': 0x2206, 'GET_TIME': 0x2216
}
bus = can.interface.Bus(channel='can0', bustype='socketcan')# -*- coding: utf-8 -*-
import can
import os
import sys
from threading import Thread
import time
os.environ['KIVY_GL_BACKEND'] = 'gl'
os.environ['KIVY_WINDOW'] = 'egl_rpi'
from kivy.app import App
from kivy.properties import NumericProperty
from kivy.properties import BoundedNumericProperty
from kivy.properties import StringProperty
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.uix.scatter import Scatter
from kivy.animation import Animation
messageCommands = { 'GET_DOORS_COMMAND': 0x220D, 'GET_OIL_TEMPERATURE' : 0x202F, 'GET_OUTDOOR_TEMPERATURE' : 0x220C, 'GET_INDOOR_TEMPERATURE' : 0x2613, 'GET_COOLANT_TEMPERATURE' : 0xF405, 'GET_SPEED' : 0xF40D, 'GET_RPM' : 0xF40C, 'GET_KM_LEFT': 0x2294, 'GET_FUEL_LEFT': 0x2206, 'GET_TIME': 0x2216
}
bus = can.interface.Bus(channel='can0', bustype='socketcan')
class PropertyState: def __init__(self, last, current): self.last = last self.current = current def lastIsNotNow(self): return self.last is not self.current
class CanListener(can.Listener): def __init__(self, dashboard): self.dashboard = dashboard self.speedStates = PropertyState(None,None) self.rpmStates = PropertyState(None,None) self.kmLeftStates = PropertyState(None,None) self.coolantTemperatureStates = PropertyState(None,None) self.oilTempratureStates = PropertyState(None,None) self.timeStates = PropertyState(None,None) self.outDoorTemperatureStates = PropertyState(None,None) self.doorsStates = PropertyState(None,None) self.carMinimized = True def on_message_received(self, message): messageCommand = message.data[3] | message.data[2] << 8 if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_SPEED']: self.speedStates.current = message.data[4] if self.speedStates.lastIsNotNow(): self.dashboard.speedometer.text = str(self.speedStates.current) self.speedStates.last = self.speedStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_RPM']: self.rpmStates.current = message.data[5] | message.data[4] << 8 if self.rpmStates.lastIsNotNow(): self.dashboard.rpm.value = self.rpmStates.current/4 self.rpmStates.last = self.rpmStates.current if message.arbitration_id == 0x35B: self.rpmStates.current = message.data[2] | message.data[1] << 8 if self.rpmStates.lastIsNotNow(): self.dashboard.rpm.value = self.rpmStates.current/4 self.rpmStates.last = self.rpmStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_KM_LEFT']: self.kmLeftStates.current = message.data[5] | message.data[4] << 8 if self.kmLeftStates.lastIsNotNow(): self.dashboard.kmLeftLabel.text = str(self.kmLeftStates.current) self.kmLeftStates.last = self.kmLeftStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_COOLANT_TEMPERATURE']: self.coolantTemperatureStates.current = message.data[4] if self.coolantTemperatureStates.lastIsNotNow(): self.dashboard.coolantLabel.text = str(self.coolantTemperatureStates.current-81) self.coolantTemperatureStates.last = self.coolantTemperatureStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_OIL_TEMPERATURE']: self.oilTempratureStates.current = message.data[4] if self.oilTempratureStates.lastIsNotNow(): self.dashboard.oilLabel.text = str(self.oilTempratureStates.current-58) self.oilTempratureStates.last = self.oilTempratureStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_TIME']: self.timeStates.current = message.data[5] | message.data[4] << 8 if self.timeStates.lastIsNotNow(): self.dashboard.clock.text = str(message.data[4]) ":" str(message.data[5]) self.timeStates.last = self.timeStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_OUTDOOR_TEMPERATURE']: self.outDoorTemperatureStates.current = float(message.data[4]) if self.outDoorTemperatureStates.lastIsNotNow(): self.dashboard.outDoorTemperatureLabel.text = str((self.outDoorTemperatureStates.current - 100)/2) self.outDoorTemperatureStates.last = self.outDoorTemperatureStates.current if message.arbitration_id == 0x77E and messageCommand == messageCommands['GET_DOORS_COMMAND']: self.doorsStates.current = message.data[4] if self.doorsStates.lastIsNotNow(): self.doorsStates.last = self.doorsStates.current self.dashboard.car.doorsStates=message.data[4] # all doors closed -> minimize car if self.doorsStates.current == 0x55: self.dashboard.minimizeCar() self.carMinimized = True else: if self.carMinimized: self.dashboard.maximizeCar() self.carMinimized = False
class Dashboard(FloatLayout): def __init__(self,**kwargs): super(Dashboard,self).__init__(**kwargs) # Background self.backgroundImage = Image(source='bg.png') self.add_widget(self.backgroundImage) # RPM self.rpm = Gauge(file_gauge = "gauge512.png", unit = 0.023, value=0, size_gauge=512, pos=(0,0)) self.add_widget(self.rpm) self.rpm.value = -200 # Speedometer self.speedometer = Label(text='0', font_size=80, font_name='hemi_head_bd_it.ttf', pos=(0,-15)) self.add_widget(self.speedometer) # KM LEFT self.kmLeftLabel = Label(text='000', font_name='Avenir.ttc', halign="right", text_size=self.size, font_size=25, pos=(278,233)) self.add_widget(self.kmLeftLabel) # COOLANT TEMPEARATURE self.coolantLabel = Label(text='00', font_name='hemi_head_bd_it.ttf', halign="right", text_size=self.size, font_size=27, pos=(295,-168)) self.add_widget(self.coolantLabel) # OIL TEMPERATURE self.oilLabel = Label(text='00', font_name='hemi_head_bd_it.ttf', halign="right", text_size=self.size, font_size=27, pos=(-385,-168)) self.add_widget(self.oilLabel) # CLOCK self.clock = Label(text='00:00', font_name='Avenir.ttc', font_size=27, pos=(-116,-202)) self.add_widget(self.clock) # OUTDOOR TEMPERATURE self.outDoorTemperatureLabel = Label(text='00.0', font_name='Avenir.ttc', halign="right", text_size=self.size, font_size=27, pos=(76,-169)) self.add_widget(self.outDoorTemperatureLabel) # CAR DOORS self.car = Car(pos=(257,84)) self.add_widget(self.car) def minimizeCar(self, *args): print("min") anim = Animation(scale=0.5, opacity = 0, x = 400, y = 240, t='linear', duration=0.5) anim.start(self.car) animRpm = Animation(scale=1, opacity = 1, x = 80, y = -5, t='linear', duration=0.5) animRpm.start(self.rpm) def maximizeCar(self, *args): print("max") anim = Animation(scale=1, opacity = 1, x=257, y=84, t='linear', duration=0.5) anim.start(self.car) animRpm = Animation(scale=0.5, opacity = 0, x = 80, y = -5, t='linear', duration=0.5) animRpm.start(self.rpm)
class Car(Scatter): carImage = StringProperty("car362/car.png") driverDoorClosedImage = StringProperty("car362/driverClosedDoor.png") driverDoorOpenedImage = StringProperty("car362/driverOpenedDoor.png") passangerDoorClosedImage = StringProperty("car362/passangerClosedDoor.png") passangerDoorOpenedImage = StringProperty("car362/passangerOpenedDoor.png") leftDoorClosedImage = StringProperty("car362/leftClosedDoor.png") leftDoorOpenedImage = StringProperty("car362/leftOpenedDoor.png") rightDoorClosedImage = StringProperty("car362/rightClosedDoor.png") rightDoorOpenedImage = StringProperty("car362/rightOpenedDoor.png") doorsStates = NumericProperty(0) size = (286, 362) def __init__(self, **kwargs): super(Car, self).__init__(**kwargs) _car = Image(source=self.carImage, size=self.size) self.driverDoorOpened = Image(source=self.driverDoorOpenedImage, size=self.size) self.passangerDoorOpened = Image(source=self.passangerDoorOpenedImage, size=self.size) self.leftDoorOpened = Image(source=self.leftDoorOpenedImage, size=self.size) self.rightDoorOpened = Image(source=self.rightDoorOpenedImage, size=self.size) self.driverDoorClosed = Image(source=self.driverDoorClosedImage, size=self.size) self.passangerDoorClosed = Image(source=self.passangerDoorClosedImage, size=self.size) self.leftDoorClosed = Image(source=self.leftDoorClosedImage, size=self.size) self.rightDoorClosed = Image(source=self.rightDoorClosedImage, size=self.size) self.add_widget(_car) self.add_widget(self.driverDoorOpened) self.add_widget(self.passangerDoorOpened) self.add_widget(self.leftDoorOpened) self.add_widget(self.rightDoorOpened) self.bind(doorsStates=self._update) def _update(self, *args): driverDoorStates = self.doorsStates&1 passangerDoorStates = self.doorsStates&4 leftDoorStates = self.doorsStates&16 rightDoorStates = self.doorsStates&64 if driverDoorStates != 0: try: self.remove_widget(self.driverDoorOpened) self.add_widget(self.driverDoorClosed) except: pass else: try: self.remove_widget(self.driverDoorClosed) self.add_widget(self.driverDoorOpened) except: pass if passangerDoorStates != 0: try: self.remove_widget(self.passangerDoorOpened) self.add_widget(self.passangerDoorClosed) except: pass else: try: self.remove_widget(self.passangerDoorClosed) self.add_widget(self.passangerDoorOpened) except: pass if leftDoorStates != 0: try: self.remove_widget(self.leftDoorOpened) self.add_widget(self.leftDoorClosed) except: pass else: try: self.remove_widget(self.leftDoorClosed) self.add_widget(self.leftDoorOpened) except: pass if rightDoorStates != 0: try: self.remove_widget(self.rightDoorOpened) self.add_widget(self.rightDoorClosed) except: pass else: try: self.remove_widget(self.rightDoorClosed) self.add_widget(self.rightDoorOpened) except: pass
class Gauge(Scatter): unit = NumericProperty(1.125) zero = NumericProperty(116) value = NumericProperty(10) #BoundedNumericProperty(0, min=0, max=360, errorvalue=0) size_gauge = BoundedNumericProperty(512, min=128, max=512, errorvalue=128) size_text = NumericProperty(10) file_gauge = StringProperty("") def __init__(self, **kwargs): super(Gauge, self).__init__(**kwargs) self._gauge = Scatter( size=(self.size_gauge, self.size_gauge), do_rotation=False, do_scale=False, do_translation=False ) _img_gauge = Image(source=self.file_gauge, size=(self.size_gauge, self.size_gauge)) self._needle = Scatter( size=(self.size_gauge, self.size_gauge), do_rotation=False, do_scale=False, do_translation=False ) _img_needle = Image(source="arrow512.png", size=(self.size_gauge, self.size_gauge)) self._gauge.add_widget(_img_gauge) self._needle.add_widget(_img_needle) self.add_widget(self._gauge) self.add_widget(self._needle) self.bind(pos=self._update) self.bind(size=self._update) self.bind(value=self._turn) def _update(self, *args): self._gauge.pos = self.pos self._needle.pos = (self.x, self.y) self._needle.center = self._gauge.center def _turn(self, *args): self._needle.center_x = self._gauge.center_x self._needle.center_y = self._gauge.center_y a = Animation(rotation=-self.value*self.unit self.zero, t='in_out_quad',duration=0.05) a.start(self._needle)
class requestsLoop(Thread): def __init__(self): Thread.__init__(self) self.daemon = True self.start() canCommands = [ can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_DOORS_COMMAND'] >> 8, messageCommands['GET_DOORS_COMMAND'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_SPEED'] >> 8, messageCommands['GET_SPEED'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_KM_LEFT'] >> 8, messageCommands['GET_KM_LEFT'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_RPM'] >> 8, messageCommands['GET_RPM'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_OIL_TEMPERATURE'] >> 8, messageCommands['GET_OIL_TEMPERATURE'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_FUEL_LEFT'] >> 8, messageCommands['GET_FUEL_LEFT'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_OUTDOOR_TEMPERATURE'] >> 8, messageCommands['GET_OUTDOOR_TEMPERATURE'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x746, data=[0x03, 0x22, messageCommands['GET_INDOOR_TEMPERATURE'] >> 8, messageCommands['GET_INDOOR_TEMPERATURE'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_COOLANT_TEMPERATURE'] >> 8, messageCommands['GET_COOLANT_TEMPERATURE'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False), can.Message(arbitration_id=0x714, data=[0x03, 0x22, messageCommands['GET_TIME'] >> 8, messageCommands['GET_TIME'] & 0xff, 0x55, 0x55, 0x55, 0x55], extended_id=False) ] def run(self): while True: for command in self.canCommands: bus.send(command) time.sleep(0.005)
class BoxApp(App): def build(self): dashboard = Dashboard(); listener = CanListener(dashboard) can.Notifier(bus, [listener]) return dashboard
if __name__ == "__main__": # Send requests requestsLoop() _old_excepthook = sys.excepthook def myexcepthook(exctype, value, traceback): if exctype == KeyboardInterrupt: print "Handler code goes here" else: _old_excepthook(exctype, value, traceback) sys.excepthook = myexcepthook # Show dashboard BoxApp().run()
Алгоритм работы следующий, используется 3 потока:
- В главном потоке работаем с графическими элементы (спидометр, тахометр, часы, температуры и др) на экране
- Во втором потоке каждые 5 мс делаем опрос следующего датчика
- В третьем потоке слушаем CAN шину, получив ответ парсим его и обновляем соответствующий графический элемент
Работает стабильно, самый долгий процесс в разработке был связан с рисованием дизайна. На данный момент обкатываю решение и потихоньку пишу мобильное приложение для iOS, чтобы любой мог попробовать цифровую панель приборов.
Проект цифровой панель приборов открытый. Рад буду предложениям и комментариям!
Универсальная перепрограммируемая can-подмотка (моталка, крутилка) | всё для диагностики автомобилей и авто тюнинга

Универсальная перепрограммируемая подмотка спидометра по CAN-шине. CAN-подмотка в Нижнем Новгороде звоните по тел. 89103891058 Илья.
Обсудить данный товар и задать вопросы можете на форуме
Вводится новая накопительная система скидок.
Теперь количество купленных подмоток будет накапливаться,
т.е. купив два раза по 5 шт. третий раз цена будет по 2400 руб. и т.д.
Таким образом набрав в сумме 20 купленных подмоток ваша цена будет 2200 руб.
от 5 до 10 шт. – 2500 руб.
от 10 до 20 шт. – 2400 руб.
от 20 шт. – 2200 руб.
При расчете цены будут учитываться ранее купленные вами подмотки.
Вышла новая версия программы ConfigCAN 1.36. Для тех кто покупал у меня CAN-подмотки пишите вышлю новую версию программу. Обновление абсолютно бесплатное.
Версия 1.36
Добавлен Kia K5 2021
Добавлен Hyundai Sonata 2020
Добавлен Renault Arkana 2021
Добавлен Skoda Rapid 2020
Добавлен VW Touareg 2021
Добавлен VW Polo Sedan 2020
Добавлен VAZ Niva 2020
Добавлен GAZ Gazon Next 2020
Универсальная CAN-подмотка предназначена для увеличения пробега на автомобилях импортного и отечественного производства. CAN-подмотка подключается через диагностический разъем под рулем автомобиля и не требует вмешательства в проводку автомобиля (кроме автомобилей немецкого производства), а следовательно Вас не смогут улечить в этом. Не ведитесь на дешевизну подмоток через датчики ABS – это дешевле, но врезка подмотки обнаружиться при очередном ТО (автомобили обычно все на гарантии). CAN-подмотка абсолютно безопасна и не вызывает никаких сбоев электроники, т.к. просто имитирует цифровой сигнал от блока ABS, в отличии от подмоток на датчики ABS, которые вызывают ошибку ABS и вам придется ее сбрасывать спец. сканерами.
CAN-подмотка поддерживает функцию изменения типа автомобиля через специальную программу. К компьютеру CAN-подмотка подключается через специальный адаптер (стоимость адаптера 700 руб.). Данный тип подмоток идеально подходит людям, которые хотят заняться установкой CAN-подмоток на автомобили. Купив CAN-подмотку Вы сможете выбирать необходимый Вам тип автомобиля с помощью удобной программы. Никаких переключателей выбора машины, удобная программа с выбором машины и возможность обновления списка автомобилей.
Возможности:
1. возможность выбора автомобилей из списка
2. список автомобилей постоянно расширяется (бесплатные обновления)
3. возможность ручного ввода передаваемой посылки
4. возможность ввода ограничения по пробегу
Адаптер для программирования

Подключение CAN-подмотки для программирования к адаптеру для программирования

Достоинства:
1. простой, интуитивно понятный интерфейс программы
2. техническая поддержка
3. гарантия 1 год

Порядок установки CAN подмотки на автомобиль:
1. Включите зажигание или заведите машину
2. Установите подмотку в диагностический разъем
3. После достижения нужного пробега извлеките подмотку
4. Выключить зажигание
На автомобилях производства фирм Audi, VW, BMW, Mersedes, Mitsibishi необходима врезка в проводку автомобиля. Инструкция по установке на данные марки автомобилей высылается по запросу. Других вариантов не бывает, не верьте рекламным обощаниям на других сайтах!!!
Инструкцию по эксплуатации качайте здесь
HTML версия инструкции здесь
Цена CAN-подмотки – 2500 руб. при заказе от 5 шт.
Адаптер для программирования – 700 руб.
Стоимость конструктора CAN-подмотки от 5 шт. – 1900 руб. Описание – здесь.
Постоянным клиентам дополнительные скидки.
Полный список автомобилей смотрите здесь
История версий программы ConfigCAN для настройки CAN-подмотки:
Версия 1.35
Добавлен Peugeot Traveller 2021
Добавлен Toyota RAV4 2021
Добавлен Toyota Corolla 2021
Добавлен Kia Cerato 2021 (4 пок)
Добавлен UAZ Profi
Версия 1.34
Добавлен Skoda Kodiaq
Добавлен УАЗ Патриот 2021 ODO и ECU
Добавлен ГАЗ Next 2021
Добавлен Toyota Alphard 2021
Добавлен VW Crafter 2021
Версия 1.33
Добавлен Audi A3 2021
Добавлен Nissan Terrano 2021
Добавлен Kia Quoris 2021
Добавлен Mercedes S500 W222 2021
Добавлен Mercedes E200 W213 2021
Добавлен Volkswagen Teramont 2021
Версия 1.32
Добавлен Hyundai Sonata 2021
Добавлен Hyundai Santa Fe 2021
Добавлен Genesis 2021
Добавлен Kia Sorento Prime
Добавлен Infinity QX80
Версия 1.31
Версия 1.30
Версия 1.29
Версия 1.28
Версия 1.27
Добавлен Nissan Teana 2021
Добавлен Hyundai Solaris 2021
Добавлен Mercedes Vito 2021
Добавлен Mitsubishi Pajero Sport 2021
Добавлен Mitsubishi L200 2021
Добавлен УАЗ Патриот 2021
Добавлен Kia Seed 2021
Версия 1.26
Добавлен LADA Vesta (скорость 3 км в сек)
Версия 1.24
Добавлен Cadillac Escalade 2021
Добавлен Citroen Jumpy 2021
Добавлен Hyundai Elantra 2021
Добавлен Hyundai Genesis 2021
Добавлен Toyota RAV4 2021
Версия 1.23
Добавлен BMW X5 2021
Добавлен Hyundai Tucson 2021
Добавлен Toyota Prado 2021
Добавлен VW Passat B6 2021
Версия 1.22
Добавлен BMW 740LI 2021
Добавлен Mitsubishi ASX 2021
Добавлен Skoda Rapid 2021
Добавлен Toyota LC200 2021 Diesel
Добавлен VAZ Vesta 2021
Версия 1.21
Добавлен Fiat Ducato 2021
Добавлен Toyota LC200 2021
Добавлена фунция сохранения пароля
ФайлСохранение пароля
Добавлена функция привязки к VIN коду
(работает с версией прошивки 2.0)
Версия 1.20
Добавлен BMW 750 2021
Добавлен Mitsubishi Lancer 10 2021
Добавлен Renault Duster II 2021 ABS
Добавлен Renault Logan II 2021 NO ABS
Добавлен Renault Sandero 2021
Добавлен Nissan Sentra 2021
Добавлен Nissan Qashqai 2021
Добавлен Nissan X-trail 2021
Добавлен Nissan X-trail 2021
Версия 1.19
Добавлен BMW 525i 2009
Добавлен BMW 528i 2021
Добавлен Ford Mondeo 2021
Добавлен Hyundai Solaris MT 2021
Добавлен Lexus LX570 2021
Добавлен Mazda CX5 2021
Добавлен Nissan Patrol 2021
Добавлен Toyota Camry 2021
Версия 1.18
Добавлен Chevrolet TrailBlazer 2021
Добавлен Hyundai I40 AT 2021
Добавлен Hyundai Santa Fe 2021
Добавлен Mazda 6 2021
Добавлен Mercedes GLK300 2021
Добавлен Mitsubishi Outlander XL 2008
Добавлен Kia Rio MT 2021
Добавлен Renault Master 2021
Версия 1.17
Добавлен Isuzu Ataman 2021
Добавлен Ford Transit 2021
Добавлен Hyundai Equus 2021
Добавлен Hyundai Genesis 2021
Добавлен Mitsubishi Outlander 2021
Добавлен Nissan Murano No error 2021
Добавлен Nissan Teana No error 2021
Добавлен Skoda Superb 2021
Добавлен Volvo S80 2021
Добавлен VW Touareg 2021
Версия 1.16
Добавлен Geely Emgrand EC7 sedan 2021
Добавлен Geely Emgrand X7 2021
Добавлен Hyundai Solaris AT 2021 var2
Добавлен Nissan Note 2021
Добавлен Mercedes GL500 2021
Добавлен VAZ Kalina 2 MT 2021
Добавлен VAZ Priora 2021
Версия 1.15
Добавлен BMW 520 2021
Добавлен BMW X5 2021
Добавлен Hyundai Solaris AT 2021
Добавлен Peugeot Boxer 2021
Добавлен Skoda Fabia ABS
Версия 1.14
Добавлен Isuzu NPR75 2021
Добавлен Isuzu NMR75 2021
Добавлен Isuzu NLR75 2021
Добавлен Iveco 35C15 MT 2021
Добавлен Lexus GX460 2021
Добавлен Renault Latitude 2021
Добавлен Volvo S80 2008
Версия 1.13
Добавлен Chevrolet Malibu 2021
Добавлен Land Rover Freelander TD4 2021
Добавлен Renault Logan 2021
Добавлен Nissan Pathfinder 2021
Добавлен Nissan Teana 2021
Добавлен Skoda Rapid 2021
Версия 1.12
Добавлен Citroen Jumpy 2021
Добавлен Hyindai Equus 2021
Добавлен Mercedes S500 W222 2021
Добавлен Toyota Alphard 2021
Добавлен Toyota Corolla 2021
Добавлен Toyota Venza 2021
Версия 1.11
Добавлен Citroen Jumpy 2021
Добавлен Ford Tourneo Custom 2021
Добавлен Honda Pilot 2021
Добавлен SSangyong Rodius XDI АТ
Добавлен Kamaz 2021 Cummins
Версия 1.10
Добавлен Chery Elara 2021
Добавлен Land Rover Range Rover Sport 2021
Добавлен Land Rover Range Rover Supercharged 2021
Добавлен Mersedes Sprinter 2021
Добавлен Suzuki Grand Vitara 2021
Добавлен Suzuki SX4 new 2021
Добавлен Toyota Corolla New 2021
Версия 1.9
Добавлен Fiat Ducato 2021 OBD(2,8)
Добавлен Kalina 2 MT
Добавлен Kia Cerato 2021 AT
Добавлен Toyota Camry 2021
Добавлен Volkswagen Caddy 2021 (с фото подключения)
Добавлен Volkswagen B7 2021 (с фото подключения)
Версия 1.8
Добавлен Honda CR-V 2021
Добавлен Hyundai I30 MT 2021
Добавлен Hyundai I40 AT 2021
Добавлен Renault Fluence 2021
Добавлен Volkswagen Amarok 2021 (с фото подключения)
Версия 1.7
Добавлен Skoda Octavia A7 2021 (с фото подключения)
Добавлен Ford Explorer 2021
Добавлен Mersedes VITO 2021 (с фото подключения)
Версия 1.6
Добавлен Audi A6 2021 (с фото подключения)
Добавлен Toyota Prado 2021
Добавлен Mersedes Crafter 2021 (с фото подключения)
Добавлен Mitsubishi Outlander 2021 (без доработки)
Добавлен Kia Optima 2021 AT
Добавлен Land Rover Range Rover 2021
Добавлен Land Rover Discovery 4 2021
Добавлен Volkswagen Phaeton 2008 (с фото подключения)
Добавлен Land Rover Freelander II old
Добавлен Land Rover Freelander II new
Добавлен Chevrolet Tahoe 2021
Добавлен Sportage 2021 MT
Версия 1.5
Добавлен ВАЗ Kalina 2 AT ABS
Добавлен ВАЗ Granta AT ABS
Добавлен Peugeot 408 2021
Добавлен BMW 720 2021 (с фото подключения)
Добавлен Fiat Ducato 2021
Добавлен Audi A8 2021 (с фото подключения)
Обновлено руководство
Версия 1.4
Добавлен Hyundai Grandeur 2021
Добавлен Volkswagen Passat B7 2021 (с фото подключения)
Добавлен Volkswagen Jetta 2021 (с фото подключения)
Добавлен Hyundai I30 MT 2021
Добавлен Citroen Jumper 2021
Добавлен Iveco 50C15 MT 2021
Добавлен Iveco 65C15 MT 2021
Добавлен Volkswagen Caravella 2021 (с фото подключения)
Добавлен Chevrolet Cobalt 2021
Добавлен Volkswagen Polo Sedan 2021 (с фото подключения)
Версия 1.3
Добавлен ВАЗ Granta без АБС
Добавлен ВАЗ Приора без АБС
Добавлен Kia Optima 2021 AT
Добавлен Peugeot Boxer 2021
Добавлен Газель NEXT дизель
Версия 1.2
В программу добавлена краткая инструкция по подключению подмотки
Версия 1.1
Добавлен Citroen Berlingo 2021
Добавлен Renault Kangoo 2021
Добавлен Ford Galaxy 2021
Добавлен Renault Master 2021
Добавлен Ford Transit Connect 2021
Добавлен Opel Zafira 2021
Добавлен Mitsubishi Outlander 2021
Добавлен Chevrolet Malibu 2021
Добавлен Huyndai I40 MT 2021





