Подключение модуля MCP2515 к Arduino
Модуль MCP2515 - это контроллер шины CAN, который позволяет обмениваться данными между периферийными устройствами и микроконтроллером без подключений к компьютеру. Прежде чем обратиться к сборке аппаратных компонентов, мы рассмотрим основные моменты, связанные с этой технологией.
Controlled Area Network - стандарт интерфейса. Он часто используется в электронных системах диагностики современных автомобилей для передачи информации от блока управления к другим цифровым датчикам и механизмам (контроля температуры, давления и т.п.). Такая его особенность позволяет активно применять устройство во многих как простых, так и более сложных проектах (например, моделирование системы «умный дом») – все это без задействования ПК.
Модуль MCP2515 представляет собой компактный автономный контроллер с 3 подкомпонентами и интегрированным интерфейсом SPI.
Технические параметры:
- напряжение питания: 5V;
- интерфейс: высокоскоростной SPI;
- частота: 40 МГц;
- тип шины: CAN;
- max скорость шины: 1МБ/сек.;
- рабочий ток: 5 мА (в режиме ожидания - 1uA);
- диапазон рабочих температур: -40 … +85 C;
- габариты: 4х2.8 см.
Контроллер оснащен держателем Micro SD-карты, кнопкой сброса, разъемом для последовательного LCD, 2-мя LED-индикаторами. При желании возможно управление с помощью джойстика.
Кроме всего вышеперечисленного, устройство имеет неплохие дополнительные (опциональные) возможности: эффективная фильтрация сведений, высокая производительность и коммерческая доступность.
Подключение MCP2515 к Arduino
Давайте рассмотрим принципиальную схему подключения.
Для реализации несложного проекта нам понадобится такое «железо»:
- CAN контроллер MCP2515 – 2 шт.
- Плата Arduino (Uno, Nano или Mega) – 2шт.
- Макетная плата.
- Соединительные провода.
Еще более простая схема сборки:
Для прошивки и облегчения процесса программирования рекомендуем использовать специализированное ПО - CAN_BUS_Shield. Эту библиотеку необходимо скачать и инсталлировать, а именно разархивировать содержимое следует в каталог библиотек среды Arduino IDE.
https://github.com/Seeed-Studio/CAN_BUS_Shield
Еще один популярный (альтернативный) вариант - MCP_CAN_lib
https://github.com/coryjfowler/MCP_CAN_lib
Зальем 2 скетча (под код передатчика и приемника CAN):
Первый скетч:
#include <SPI.h>
#include <mcp_can.h>
const int spiCSPin = 10;
int ledHIGH = 1;
int ledLOW = 0;
MCP_CAN CAN(spiCSPin);
void setup()
{
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS init Failed");
delay(100);
}
Serial.println("CAN BUS Shield Init OK!");
}
unsigned char stmp[8] = {ledHIGH, 1, 2, 3, ledLOW, 5, 6, 7};
void loop()
{
Serial.println("In loop");
CAN.sendMsgBuf(0x43, 0, 8, stmp);
delay(1000);
}
Второй скетч:
#include <SPI.h>
#include "mcp_can.h"
const int spiCSPin = 10;
const int ledPin = 2;
boolean ledON = 1;
MCP_CAN CAN(spiCSPin);
void setup()
{
Serial.begin(115200);
pinMode(ledPin,OUTPUT);
while (CAN_OK != CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS Init Failed");
delay(100);
}
Serial.println("CAN BUS Init OK!");
}
void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);
unsigned long canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.print("Data from ID: 0x");
Serial.println(canId, HEX);
for(int i = 0; i<len; i++)
{
Serial.print(buf[i]);
Serial.print("\t");
if(ledON && i==0)
{
digitalWrite(ledPin, buf[i]);
ledON = 0;
delay(500);
}
else if((!(ledON)) && i==4)
{
digitalWrite(ledPin, buf[i]);
ledON = 1;
}
}
Serial.println();
}
}
Как вы наверняка успели отметить, мы использовали еще один софт – библиотеку SPI (уже для управления интерфейсом). Проверьте ее наличие у себя в приложении!
Изучайте Arduino, выбирайте интересные проекты и развивайтесь в этом направлении. До скорой встречи!
GSM модуль NEOWAY M590 – один из самых простых и бюджетных контроллеров, с помощью которого можно совершать звонки, принимать ∕ отправлять SMS-сообщения, а...
Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...
Модуль энкодер KY-040 является электромеханическим устройством, а точнее - датчиком угла поворота и вращения оси различных девайсов. Непосредственно сам прибор...
Подключение джойстика к Arduino позволит просто и эффективно обмениваться информацией между человеком и электронными устройствами (компьютером, ноутбуком, тем...
Дисплейно-клавиатурный модуль на микросхеме TM1638 – очень полезная покупка для любителей конструирования, проектирования и робототехники на базе Arduino....