Arduino UNO и MCP2515 CAN

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Вечером попробую с 11bit тоже самое сделать

sadman41
Offline
Зарегистрирован: 19.10.2016

sadman41 пишет:

А вот такой вопрос - кто-нибудь проверяет состояние MCP2515?

Вобщем, сделал вот так. Если библиотека не правит дефолтовые настройки в CAN CTRL REGISTER, то вытаскивание модуля из платы (без питания, понятное дело) отслеживается.

uint8_t MCP2515::driverIsAlive(void){
  uint8_t canCtrlRegisterValue = readRegister(MCP_CANCTRL);
  // return OK if readed value have not "all bits set" (shorted to +5V) and have set some bits on its default values
  uint8_t success = (canCtrlRegisterValue != 0xFF) && (CANCTRL_CLKEN & canCtrlRegisterValue) && (CANCTRL_CLKPRE & canCtrlRegisterValue);
  return success;
}

 

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:
Сегодня провёл эксперимент, подключил две ардуины между собой включил два CANHACKER , от балды написал 13 пакетов в 29 bit и послализ одного в другой с периудом 30 мил.сек .Пакеты принемаются. Ставлю 14 пакетов 2-3 сек работает и CANHACKER приёмник зависает.
Машина у меня при включении бомбит пакетами больше 13шт поэтому c.h зависает. Что тормозит? Незнаю. Посоветуйте что нибудь

Я конечно в программировании не силен. Попробую завтра у себя сделать тоже самое с 29bit пакетами.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Друзья я победил CANHACKER . Точнее не я победил а нашол того кто победил https://youtu.be/8pwFN5bfxc4 в этом видео человек рассказывает мою проблеммуи под видео унего ссылка на скетч . С этим скетчем у меня работает С.h на машине 29 bit. Правда перед этим скетчем надо заливать CAN_read потом Can_recive . Попеть шаманские песни . Но всё ровно плохо работает, пропускает пакеты

Maxboxr
Offline
Зарегистрирован: 28.02.2017

У меня при включении зажигания 40 пакетов вываливаются .процентов 70 c.h видет. А остальные фриизами пявляются. Вобщем не тянет ARDUINO. Но всёравно нашол пару кнопокна руле

Nikey
Offline
Зарегистрирован: 03.11.2017

Ура! наконец-то после диких плясок с огромным бубном канхакер заработал. Но не на долго... работает максимум 30 секунд и прога зависает. Пробовал на трёх кан модулях (2 маленькие как у МаксVV на 8 МГц, и один большой такой шилд на 16 МГц который вставляется в ардуину). Причём хоть с перемычкой хоть без, всё одинаково... Всё зависает зараза.

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

b707
Offline
Зарегистрирован: 26.05.2017

Мужики, а нафига вам канхакер? Что мешает принимать пакеты прямо в скетче

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Я уже забыл для чего я все эти танцы начинал. остался только спортивный интерес победить canhacker. ОН МНЕ УЖЕ НАФИК НЕ НУЖЕН. Из детского конструктора ничего путного не получится

Maxboxr
Offline
Зарегистрирован: 28.02.2017
Nikey
Offline
Зарегистрирован: 03.11.2017

эт точно! )))))). Выяснил я почему подвисает канхакер. Банально не успевает ардуино принимать данные

MaksVV
Offline
Зарегистрирован: 06.08.2015

ставьте аппаратный фильтр в канхакере чтобы на дуню  весь поток не валился и будет счастье. 

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Сегодня купил canhacker оригинальный и увидел как на самом деле он должен работать. Земля и небо, никаких вылетов всё чётко

Nikey
Offline
Зарегистрирован: 03.11.2017

где и заскока?

Nikey
Offline
Зарегистрирован: 03.11.2017

прошил я ардуину вот этим:

всё чётко работает. за час ниразу не подвисло и не глюкануло

-NMi-
Offline
Зарегистрирован: 20.08.2018

Повезло.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Canhacker за 5 т.р . Отбомбил всю машину, за один день узнал всё что нужно. Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:
Canhacker за 5 т.р . Отбомбил всю машину, за один день узнал всё что нужно. Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO

Где приобретал? Здесь http://canhacker.ru?

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:
Canhacker за 5 т.р . Отбомбил всю машину, за один день узнал всё что нужно. Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO

Где приобретал? Здесь http://canhacker.ru?

b707
Offline
Зарегистрирован: 26.05.2017

Maxboxr пишет:
Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO
ты просто не умеешь их готовить (с)

Maxboxr
Offline
Зарегистрирован: 28.02.2017

У меня их аж 2 комплекта ,я ими наелся. Куда девать теперь незнаю. Чтото страшно на машину ставить .Будет у меня VOLVODUINA

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Здравствуйте друзья. Я все таки нашел место для ардуино в своей машине. но у меня появилась проблема

[code]
#include <SPI.h>
#include <mcp2515.h>
struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(10);

void setup() {
  canMsg1.can_id  = 0x82202262;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x00;
  canMsg1.data[1] = 0x02;
  canMsg1.data[2] = 0x09;
  canMsg1.data[3] = 0x00;
  canMsg1.data[4] = 0x58;
  canMsg1.data[5] = 0x00;
  canMsg1.data[6] = 0x40;
  canMsg1.data[7] = 0x00;
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
 }
void loop() {
 
  mcp2515.sendMessage(&canMsg1);
  mcp2515.sendMessage(&canMsg2);
  Serial.println("Message Sent");
 
  delay(200);
}
[/code]

Как мне сделать что бы при включении сообщение посылалось один раз без повторов?

Cho1s
Offline
Зарегистрирован: 26.07.2017

может в сетап его прописать?) 

Nikey
Offline
Зарегистрирован: 03.11.2017

Maxboxr пишет:
Canhacker за 5 т.р . Отбомбил всю машину, за один день узнал всё что нужно. Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO

да ну, ладно, не драматизируй. ну потеряешь пару пакетов,  и чо с того? 

Я вот только не пойму как управлять тачкой. нашёл цифры отвечающие за педаль газа. плюю пакеты а толку ноль...

son32
Offline
Зарегистрирован: 04.12.2017

Может delay(200); убрать?

son32
Offline
Зарегистрирован: 04.12.2017

Nikey пишет:

Я вот только не пойму как управлять тачкой. нашёл цифры отвечающие за педаль газа. плюю пакеты а толку ноль...


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

Cho1s
Offline
Зарегистрирован: 26.07.2017

Nikey пишет:

Maxboxr пишет:
Canhacker за 5 т.р . Отбомбил всю машину, за один день узнал всё что нужно. Парни, ЗАВЯЗЫВАЙТЕ ВЫ С ЭТИМИ ARDUINO

да ну, ладно, не драматизируй. ну потеряешь пару пакетов,  и чо с того? 

Я вот только не пойму как управлять тачкой. нашёл цифры отвечающие за педаль газа. плюю пакеты а толку ноль...

а Вы хотите чтоб она газовала? 

не думали что моторник долбит значение НЕнажатой педали в шину?

son32
Offline
Зарегистрирован: 04.12.2017

О том то и речь, что скорее всего это пакеты кан не для моторника идут, а от моторника.

son32
Offline
Зарегистрирован: 04.12.2017

О том то и речь, что скорее всего это пакеты кан не для моторника идут, а от моторника.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Убираю deley(200) . пакеты начинают бежать со скоростью 10 милисикунд

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:

Убираю deley(200) . пакеты начинают бежать со скоростью 10 милисикунд


Так там ещё нужно добавить команду завершения))) точно не помню как он правильно пишется.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

блин как же узнать?

son32
Offline
Зарегистрирован: 04.12.2017

Сейчас до дома доеду посмотрю, я делал такой скетч уже. За рулём тяжело писать и вспоминать)))

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:

блин как же узнать?

я делал вот так

#include <SPI.h>
#include <mcp2515.h>
struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(10);

void setup() {
  canMsg1.can_id  = 0x82202262;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x00;
  canMsg1.data[1] = 0x02;
  canMsg1.data[2] = 0x09;
  canMsg1.data[3] = 0x00;
  canMsg1.data[4] = 0x58;
  canMsg1.data[5] = 0x00;
  canMsg1.data[6] = 0x40;
  canMsg1.data[7] = 0x00;
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
 }
void loop() {
  mcp2515.sendMessage(&canMsg1);
  mcp2515.sendMessage(&canMsg2);
  Serial.println("Message Sent");
abort();
}

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

что именно вы хотите с имитировать этой посылкой? 

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Спасибо тебе son32 . Вроде работает

Я хочу на MCP ARDUINO Bluetooth или GSM поставить и к can подключиться. что бы запускать подогрев двиг дистанционно. Пакеты нашел Canhacker . теперь самое сложное это скетч son32 поможешь с скетчем?. а то я в этом не бум бум.

sadman41
Offline
Зарегистрирован: 19.10.2016

А зачем вы шлёте второй, нулевой, пакет в шину?

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Я по незнанию. Там было 2 пакета один я тупо стёр

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Son32 как вы считаете лучше сделать.допустим я включил этот подогрев ардуинка отработала 1 раз. чтобы второй раз включить её надо перезарядить. Как бы это сделать. Питание там будет постоянное

b707
Offline
Зарегистрирован: 26.05.2017

Maxboxr пишет:

теперь самое сложное это скетч son32 поможешь с скетчем?. а то я в этом не бум бум.

да, ребята, попали вы :)

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr. Я не силен в написании скетчей. Но если правильно понимаю вы хотите что бы ардуино отправляла какие то пакеты при нажатии на какие то кнопки в машине?

Nikey
Offline
Зарегистрирован: 03.11.2017

son32 пишет:
Nikey пишет:

Я вот только не пойму как управлять тачкой. нашёл цифры отвечающие за педаль газа. плюю пакеты а толку ноль...

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

точно! во я осёл...

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:

Спасибо тебе son32 . Вроде работает

Я хочу на MCP ARDUINO Bluetooth или GSM поставить и к can подключиться. что бы запускать подогрев двиг дистанционно. Пакеты нашел Canhacker . теперь самое сложное это скетч son32 поможешь с скетчем?. а то я в этом не бум бум.


Не увидал это сообщение. Здесь я вообще не смогу помочь. Так как знаний на такое не хватает. Но здесь на форуме есть подобные темы, ищите читайте. И также как и мне вам нужно начинать учиться самому.
Вот есть подходящая ветка http://arduino.ru/forum/proekty/gsm-ustroistvo-upravleniya-kotlami-webas...

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Придумал я как минимизировать моё общение с ардуино исс+ . Поставлю дистанционно управляемое реле. И будет оно вкл напряжение и выкл.

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:
Придумал я как минимизировать моё общение с ардуино исс+ . Поставлю дистанционно управляемое реле. И будет оно вкл напряжение и выкл.

Не лучшее решение.

тогда лучше сделай так

#include <SPI.h>
#include <mcp2515.h>
const int butPin = 5;
struct can_frame canMsg1;
MCP2515 mcp2515(10);

void setup() {
  canMsg1.can_id  = 0x82202262;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x00;
  canMsg1.data[1] = 0x02;
  canMsg1.data[2] = 0x09;
  canMsg1.data[3] = 0x00;
  canMsg1.data[4] = 0x58;
  canMsg1.data[5] = 0x00;
  canMsg1.data[6] = 0x40;
  canMsg1.data[7] = 0x00;

  pinMode(butPin,INPUT);
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
 }
void loop() {
  if (digitalRead(butPin) == HIGH) {
     mcp2515.sendMessage(&canMsg1);
     }
     delay(1000);
  }

при подачи на пин (5) +5 вольт менее 1 секунды (кратковременно) будет отослан твой пакет в шину, пока +5 вольт отсутствует на пин в шину отправляться ни чего не будет. только пин (5) нужно аппаратно подтянуть к GND(как это делать читай в интернете).

лучше сделать таким способом

#include <SPI.h>
#include <mcp2515.h>
const int butPin = 5;
struct can_frame canMsg1;
MCP2515 mcp2515(10);

void setup() {
  canMsg1.can_id  = 0x82202262;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x00;
  canMsg1.data[1] = 0x02;
  canMsg1.data[2] = 0x09;
  canMsg1.data[3] = 0x00;
  canMsg1.data[4] = 0x58;
  canMsg1.data[5] = 0x00;
  canMsg1.data[6] = 0x40;
  canMsg1.data[7] = 0x00;

  pinMode(butPin,INPUT_PULLUP);
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
 }
void loop() {
  if (digitalRead(butPin) == LOW) {
     mcp2515.sendMessage(&canMsg1);
     }
     delay(1000);
  }

в данном случаи на пин (5) нужно подать кратковременно GND. сам пин уже подтягивать ни куда не нужно он уже программно подтянут.

Чем дольше сигнал подаешь на пин тем больше ставишь значение delay(1000).

таким образом мы дистанционно запускали котел на грузовике, использовали отрицательный выход доп канала сигнализации 0,5 сек. правда я не участвовал когда готовую ардуино прикручивали к машине. но человек говорит работает исправно.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Это оч сложно. Я думаю так. На выключиной машине can шина спит. Этот пакет который мы написали в скетче.Какими-то образом отправляет команду на вкл подогревателя по выключенной шине. Я даже незнаю названия этого модуля, чисто случайно нашел эту каманду..
Ставлю дистанционное реле за 500р с брелком к релюхе цепляю ардуину. Нажал на кнопку подержал пару секунд ушла команда ардуинка 1 раз плюнула в шину. Котёл включился.

son32
Offline
Зарегистрирован: 04.12.2017

Maxboxr пишет:
Это оч сложно.

Ты чего моришь. Сложно последний скетч залить? Заливаешь скетч, ставишь свое реле с белком и через это реле при нажатии на кнопку брелка даёшь сигнал на ногу D5 ардуино. И все.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Ну да я так и хотел только 12 вольт
С телефона читал плохо понял

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Блин я тут почитал 12 вольт лучше не стоит давать nano .надо преобразователь

son32
Offline
Зарегистрирован: 04.12.2017

Подай минус на пятый пин.

Maxboxr
Offline
Зарегистрирован: 28.02.2017

В процессе

Maxboxr
Offline
Зарегистрирован: 28.02.2017

Наконец то рукидошли до моего проекта. Купил я реле с дист. пультом. Всё подключил на столе в принципе всё работает.
Но появилась проблемка ,мне нужно чтобы ардуинка посылала всего два сообщения одинаковых . Первое сообщение пробуждает can а второе сообщение через 50 мил сек запускает подогрев. Son32 помоги пожалуйста.