PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Общение с машиной

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2018, 18:30   #231
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Сообщение от Paziy Посмотреть сообщение
Может быть у кого-нибудь еще мнения есть или кто может подсказать где еще можно почитать/спросить чтобы определится?
Ты для себя сначала определись.
Ардуина или СТМ это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

Так что если есть нужда читать-писать в кан, дёргать какие нить релюшки и понимать нажатие кнопок на руле, то это микроконтроллер, а играть музыку, показывать карты и вообще быть с интерфейсом, так это планшет или компьютер.

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

Так что дальше уже задавайся конкретной целью.
Если что-то навороченое нужно, что требует быстрой реакции, то выбирай СТМ, если следить за кнопками на руле, то ардуины за глаза.

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.

Последний раз редактировалось admin; 28.03.2018 в 23:15.
T_r_D вне форума   Ответить с цитированием
Старый 27.03.2018, 21:03   #232
Paziy
Новый Пользователь
 
Регистрация: 19.03.2018
Регион: 54
Сообщений: 5
Paziy is on a distinguished road
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Ты для себя сначала определись.
Ардуина или СТМ это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

Так что если есть нужда читать-писать в кан, дёргать какие нить релюшки и понимать нажатие кнопок на руле, то это микроконтроллер, а играть музыку, показывать карты и вообще быть с интерфейсом, так это планшет или компьютер.

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

Так что дальше уже задавайся конкретной целью.
Если что-то навороченое нужно, что требует быстрой реакции, то выбирай СТМ, если следить за кнопками на руле, то ардуины за глаза.

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.
Это был очень полезный и продуктивный совет которого я и ждал. Огромное спасибо!

Последний раз редактировалось admin; 28.03.2018 в 23:16.
Paziy вне форума   Ответить с цитированием
Старый 20.09.2018, 16:29   #233
Misha2066
Пользователь
 
Регистрация: 13.04.2011
Город: Ростов-на-Дону
Регион: 61
Машина: Z51
Сообщений: 42
Misha2066 is on a distinguished road
По умолчанию

Приветствую всех!
Автомобиль Nissan Murano Z51 в комплектации с двумя матричными монохромными дисплеями для климата и магнитолы. Климат и штатная магнитола общаются по can-шине со своими дисплеями, каждое устройство со своим.
Есть цель -- заменить это безобразие на Андроид-девайс и отображать на его экране показания климата и штатной магнитолы.
Последовательность действий видится следующей:
1. Считать пакеты в can-шине при нажатии и отображении на дисплеях соответствующих кнопок при помощи связки Ардуино+кан-шилд.
2. Сделать некое устройство (скорее всего на той же Ардуине), которое формировало видеосигнал при поступлении соответствующего пакета.
3. Ввести сформированный видео сигнал в Андроид-девайс.

Буду признателен за любую информацию в этом направлении.

Последний раз редактировалось Misha2066; 20.09.2018 в 23:31.
Misha2066 вне форума   Ответить с цитированием
Старый 21.09.2018, 12:37   #234
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Первый пункт более или менее правильный, а остальные это слова человека который ни чего не понимает в данной теме.
На андроид устройстве должен быть самописный интерфейс который будет что-то отображать при поступлении каких либо команд от микроконтроллера. Да и вообще микроконтроллером можно ни чего не делать- пришёл пакет, переправили на андроид, а там дальше обрабатываем.

Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.

Да и для начала надо узнать что за CAN шина. HS, FT?
T_r_D вне форума   Ответить с цитированием
Старый 22.09.2018, 18:58   #235
Misha2066
Пользователь
 
Регистрация: 13.04.2011
Город: Ростов-на-Дону
Регион: 61
Машина: Z51
Сообщений: 42
Misha2066 is on a distinguished road
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.
И как это можно узнать? Документации никакой не нашел.

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Да и для начала надо узнать что за CAN шина. HS, FT?
Если подключаться непосредственно на контакты CAN самого блока (климата или магнитолы), то скорее всего будет та шина которая нужна.
Misha2066 вне форума   Ответить с цитированием
Старый 23.09.2018, 20:48   #236
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

А какая шина нужна?
В Ситроенах салонная шина FT, у шкоды HS.

А узнать что идёт в шине можно только после того, как туда залезешь, перед этим узнав какой тип шины и её скорость.
А от типа шины будет зависеть тип CAN трансивера.

А узнать тип шины можно двумя способами- первый тупой подбор, а второй- открыть любой блок подключённый к этой шине,
найти микросхему трансивера и потом скачать на неё даташит в интернете и оттуда узнать какой тип шины она поддерживает, ну а дальше уже подобрать скорость методом тыка.

Ну и третий способ, он доступен вообще избранным
Подключить анализатор логический и сразу узнать и тип шины и её скорость.

По поводу что куда и откуда идёт.
Сначала цепляемся к шине и пытаемся разобраться что там к чему.
Скорее всего будут найдены все кнопки, температуры и лампочки.
С пакетами сообщений может быть сложнее, но до этого ещё надо дойти...
Есть всякие гадские ID в которых есть вяло меняющиеся информация и всякие "фичи" в самих дисплеях.
Но до этого тоже надо дойти
По первой проще анализировать компом, а чтоб понимать что куда идёт нужно спаять на STM32 простой бридж с возможностью фильтрации и отображением всего этого на дисплей.
Я собирал такой бридж на STM32F105 и OLED дисплее мелком. С первого входа пришедшие ID забивались в лист и по этому листу можно было перемещаться двумя кнопочками, а третий блокировать прохождение данного ID с первого на второй вход, со второго на первый пакеты пролетали без каких либо обработок. Если требовалось отфильтровать пакет с другой стороны, то просто устройство переворачивалось.

Да и вообще- паять надо сразу на STM всё...
И не пугаться того что у той же 103 серии нельзя одновременно работать с CAN и USB. Это обходится переходником UART<>USB.
Ну чтоб к планшету цепляться.
Но зато получаешь нормальную скорость, ни каких шилдов, просто микросхему трансивера CAN дешёвую, а если у тебя FT шина, то микросхему на шилде ардуины всё равно перепаивать придётся.
T_r_D вне форума   Ответить с цитированием
Старый 23.09.2018, 22:20   #237
ganson
Новый Пользователь
 
Регистрация: 24.05.2017
Регион: Беларусь
Сообщений: 13
ganson is on a distinguished road
По умолчанию

Здравствуйте. Прошу прощения за ламерские вопросы, Arduino nano неделя как в руках, в написании программ - 0. Хочу сделать управление не заводской магнитолой с руля ( CAN ). Скетч , человека который это делал , пытаюсь подправить под свою шину. Изначально написано для посылок - ID + data 1 байт. У меня посылки - ID + data 4-е байта. Как не правлю под четыре байта - либо ошибка, либо принимает только первый.
Вот кусок

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
switch(canMsg.can_id & 0x5FF) {

case 0x5c1: // кнопки
if(key != canMsg.data[0]) {
switch(canMsg.data[0]) {
case 00: // Unpress (All)
switch(key) {
case 6: // Unpress Vol Up
Serial.println("Unpress Vol Up");
digitalWrite(vol_up, LOW);
break;
case 7: // Unpress Vol Down
Serial.println("Unpress Vol Down");
digitalWrite(vol_down, LOW);
break;
case 2: // Unpress Next
Serial.println("Unpress Next");
digitalWrite(next, LOW);
break;
case 3: // Unpress Prev
Serial.println("Unpress Prev");
digitalWrite(prev, LOW);
break;
case 0x1a: // Unpress SRC
Serial.println("Unpress SRC");
digitalWrite(sourse, LOW);
break;
case 0x2b: // Unpress Mute
Serial.println("Unpress Mute");
digitalWrite(mute, LOW);
break;
}
break;
case 6: // Press Vol Up
Serial.println("Press Vol Up");
digitalWrite(vol_up, HIGH);
break;
case 7: // Press Vol Down
Serial.println("Press Vol Down");
digitalWrite(vol_down, HIGH);
break;
case 2: // Press Next
Serial.println("Press Next");
digitalWrite(next, HIGH);
break;
case 3: // Press Prev
Serial.println("Press Prev");
digitalWrite(prev, HIGH);
break;
case 0x1a: // Press SRC
Serial.println("Press SRC");
digitalWrite(sourse, HIGH);
break;
case 0x2b: // Press Mute
Serial.println("Press Mute");
digitalWrite(mute, HIGH);
break;
}
key = canMsg.data[0];
}
break;

break;
}
}
}

У меня ID - 32A, ничего не нажато - 02 00 00 00, + 02 10 00 00, - 02 20 00 00, > 02 40 00 00, < 02 80 00 00, up 02 01 00 00, dn 02 02 00 00.
Как написать , что бы arduino видела все четыре байта?
ganson вне форума   Ответить с цитированием
Старый 24.09.2018, 12:38   #238
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
If (canMsg.can_id = 0x32A) {
If (canMsg.data[1] = 0x10) {нажато +}
}

И так далее
Или через switch:
switch(canMsg.data[1]) {
case 0x20:
плюс
break;

}
T_r_D вне форума   Ответить с цитированием
Старый 24.09.2018, 19:47   #239
ganson
Новый Пользователь
 
Регистрация: 24.05.2017
Регион: Беларусь
Сообщений: 13
ganson is on a distinguished road
По умолчанию

T_r_D, спасибо!!! (canMsg.data[1]), прописал вторые, меняющиеся байты и всё ок.
И вопросик так, для развития. А если бы менялись не один, а два байта?

Последний раз редактировалось ganson; 24.09.2018 в 22:08.
ganson вне форума   Ответить с цитированием
Старый 24.09.2018, 22:43   #240
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Ну сравнивать нужно было бы сразу два.
If (canMsg.data[1] = 0x10 && canMsg.data[0] = 0x02) {

Только не вторые, а первые
Яж тебе на это и указываю что счёт начинается не с 1, а с 0
T_r_D вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 4 (пользователей: 0 , гостей: 4)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 17:02.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot