• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESP8266 + MCP2515

Доброго времени суток. Нужна ваша помощь. Имеется связка из ESP8266 (Lolin NodeMcu V3) + модуль CAN шины MCP2515 (SPI).
Lolin.PNG MCP2515-CAN-Bus-Module-TJA1050-Receiver-Microcontroller-Development-Board.jpg
Нужно установить связь между двумя ESP по CAN шине. Сначала собрал все на 2-х Arduino UNO, все работает, сообщения отправляются и принимаются. Сейчас пытаюсь принять на ESP сообщения с Arduino. Ничего не работает. Модуль CAN шины подключен к ESP8266 через логический преобразователь 5 - 3.3В. Оба модуля CAN шины запитаны от 5В (гугл говорит, что на 3.3 ничего не заработает, ну в общем то оно никак не работает). Использую на Nodemcu SPI пины D5-D8. Причем, если подключаю пин D8, то плата отказывается прошиваться с ошибкой error: espcomm_open failed. Отсоединяю провод D8 или замыкаю его на землю, все снова прошивается. Скетчи брал из примеров к библиотеке.

Скетч отправки сообщений на Arduino.

Код:
#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(10);


void setup() {

  canMsg1.can_id  = 0x0F6;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x8E;
  canMsg1.data[1] = 0x87;
  canMsg1.data[2] = 0x32;
  canMsg1.data[3] = 0xFA;
  canMsg1.data[4] = 0x26;
  canMsg1.data[5] = 0x8E;
  canMsg1.data[6] = 0xBE;
  canMsg1.data[7] = 0x86;

  canMsg2.can_id  = 0x036;
  canMsg2.can_dlc = 8;
  canMsg2.data[0] = 0x0E;
  canMsg2.data[1] = 0x00;
  canMsg2.data[2] = 0x00;
  canMsg2.data[3] = 0x08;
  canMsg2.data[4] = 0x01;
  canMsg2.data[5] = 0x00;
  canMsg2.data[6] = 0x00;
  canMsg2.data[7] = 0xA0;
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
  Serial.println("Example: Write to CAN");
}

void loop() {
 
  mcp2515.sendMessage(&canMsg1);
  mcp2515.sendMessage(&canMsg2);

  Serial.println("Messages sent");
 
  delay(100);
Скетч приема сообщений на Nodemcu.

Код:
#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg;
MCP2515 mcp2515(15);


void setup() {
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
  Serial.println("------- CAN Read ----------");
  Serial.println("ID  DLC   DATA");
}

void loop() {
 
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
    
    Serial.print(canMsg.can_id, HEX); // print ID
    Serial.print(" ");
    Serial.print(canMsg.can_dlc, HEX); // print DLC
    Serial.print(" ");
  
    for (int i = 0; i<canMsg.can_dlc; i++)  {  // print the data
      
      Serial.print(canMsg.data[i]);
      Serial.print(" ");

    }

    Serial.println();    
  }

}
 

Сергей_Ф

Moderator
Команда форума
подключаю пин D8
это gpio15, для нормальной работы на нём должен быть 0 при старте.
Модуль CAN шины подключен к ESP8266 через логический преобразователь 5 - 3.3В
Как подключены? Схему в студию. Питания +3,3 и +5 не забыли на преобразователь подать? Земли?
 

nikolz

Well-known member
Доброго времени суток. Нужна ваша помощь. Имеется связка из ESP8266 (Lolin NodeMcu V3) + модуль CAN шины MCP2515 (SPI).
Посмотреть вложение 7171 Посмотреть вложение 7172
Нужно установить связь между двумя ESP по CAN шине. Сначала собрал все на 2-х Arduino UNO, все работает, сообщения отправляются и принимаются. Сейчас пытаюсь принять на ESP сообщения с Arduino. Ничего не работает. Модуль CAN шины подключен к ESP8266 через логический преобразователь 5 - 3.3В. Оба модуля CAN шины запитаны от 5В (гугл говорит, что на 3.3 ничего не заработает, ну в общем то оно никак не работает). Использую на Nodemcu SPI пины D5-D8. Причем, если подключаю пин D8, то плата отказывается прошиваться с ошибкой error: espcomm_open failed. Отсоединяю провод D8 или замыкаю его на землю, все снова прошивается. Скетчи брал из примеров к библиотеке.

Скетч отправки сообщений на Arduino.

Код:
#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(10);


void setup() {

  canMsg1.can_id  = 0x0F6;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x8E;
  canMsg1.data[1] = 0x87;
  canMsg1.data[2] = 0x32;
  canMsg1.data[3] = 0xFA;
  canMsg1.data[4] = 0x26;
  canMsg1.data[5] = 0x8E;
  canMsg1.data[6] = 0xBE;
  canMsg1.data[7] = 0x86;

  canMsg2.can_id  = 0x036;
  canMsg2.can_dlc = 8;
  canMsg2.data[0] = 0x0E;
  canMsg2.data[1] = 0x00;
  canMsg2.data[2] = 0x00;
  canMsg2.data[3] = 0x08;
  canMsg2.data[4] = 0x01;
  canMsg2.data[5] = 0x00;
  canMsg2.data[6] = 0x00;
  canMsg2.data[7] = 0xA0;
 
  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
  Serial.println("Example: Write to CAN");
}

void loop() {
 
  mcp2515.sendMessage(&canMsg1);
  mcp2515.sendMessage(&canMsg2);

  Serial.println("Messages sent");
 
  delay(100);
Скетч приема сообщений на Nodemcu.

Код:
#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg;
MCP2515 mcp2515(15);


void setup() {
  Serial.begin(115200);
  SPI.begin();
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
  mcp2515.setNormalMode();
 
  Serial.println("------- CAN Read ----------");
  Serial.println("ID  DLC   DATA");
}

void loop() {
 
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
   
    Serial.print(canMsg.can_id, HEX); // print ID
    Serial.print(" ");
    Serial.print(canMsg.can_dlc, HEX); // print DLC
    Serial.print(" ");
 
    for (int i = 0; i<canMsg.can_dlc; i++)  {  // print the data
     
      Serial.print(canMsg.data[i]);
      Serial.print(" ");

    }

    Serial.println();   
  }

}
уж сколько раз твердили миру...
выкиньте преобразователи
MCP2515 работает от 3.3 и ESP тоже ничего не надо согласовывать.
 

Fayton

Member
НОВАЯ версия CANSAN-V3
Реализован полноценный канхакер(LAWICEL) в режиме работы по USB! Тоько скорость сана и битность выставятся через морду..
Работает одновременно с мордой.
Добавлен вывод байт бомбера в статус.
Увеличил скорость работы.

CANSAN-V3.zip
 

Fayton

Member
Новая версия CANSAN-V4
Добавил CAN PLAYER (МАГНИТОФОН :)) с кнопками REC stop PLAY
Вывод сохраненного в PLAYER на странице

И повторю все функции Wifi CANHACKER - CANSAN
1 бомбер
2 один динамический сендер
3 один статический сендер
4 IF to SEND чекер для удаления ошибок
5 полноценный канхакер(CANHACKER) в режиме работы по USB или Bluetooth
6 Встроенный рекордер для записи и воспроизведения CAN
7 Смена SSID и PASSWORD
8 Установка таймера работы для клиента
9 Удобная мобильная версия встроенного сайта
Пароль по дефолту 12345678
SSID по дефолту CANSan
Адрес встроенного сайта 192.168.4.1

Последнюю прошивку выложу под видео с обзором на моем канале!
 

Fayton

Member
Добрый день!
Заинтересовал Ваш проект.
Зашил в Lolin NodeMcu V3 без Can модуля, wifi не появился
пробовал разные версии 2, 4, 5

у кого ни будь завелось?
Возможно не установлена подтяжки или установлена перемычка Wi-Fi.
Залейте последнюю версию. Она есть под видео на моем канале.
 

Fayton

Member
Добрый день!
Заинтересовал Ваш проект.
Зашил в Lolin NodeMcu V3 без Can модуля, wifi не появился
пробовал разные версии 2, 4, 5

у кого ни будь завелось?
Возможно не установлена подтяжки или установлена перемычка Wi-Fi.
Залейте последнюю версию. Она есть под видео на моем канале.
 

pvvx

Активный участник сообщества

Fayton

Member
CanSan-v6 Новые супер возможности! Сохранение файла плеера редактирование и загрузка. Теперь можно делится наработками и не только! С Новым Годом!
 

Вложения

  • 109.6 KB Просмотры: 27
Сверху Снизу