ماژول تبدیل CAN به SPI با تراشه MCP2515
ماژول تبدیل پروتکل CAN به SPI، یکی از ماژول های فوق العاده کاربردی در سیستم های الکترونیکی است. ماژول تبدیل CAN به SPI با تراشه MCP2515، یک ماژول تبدیل واسط بین پروتکلهای ارتباطی CAN و SPI است. این ماژول قابلیت اتصال به شبکههای CAN را داراست و اطلاعات را از آن خوانده و به کنترلرهای دیگر از طریق رابط SPI ارسال میکند. این ماژول شامل تراشه MCP2515 و تراشه مدیریتی MCP2551 است. تراشه MCP2551 یک تقویتکنندهی سیگنال است که بهصورت دوطرفه برای تقویت سیگنال CAN استفاده میشود و تراشه MCP2515، یک کنترلکنندهی CAN است که ارتباطات CAN را مدیریت میکند. با استفاده از این ماژول، میتوان بهطور مستقیم به شبکهی CAN متصل شد و از طریق رابط SPI، دادهها را به کنترلرهای دیگری که قابلیت ارتباط با SPI را دارند ارسال کرد. از آنجاییکه پروتکل CAN جهت ارتباط با کامپیوترهای خودرو (ECU) استفاده می گردد، بنابراین به کمک این ماژول و به سادگی هرچه تمام تر، می توانید بردهای آردوینو، ESP و سایر میکروکنترلرهای دارای پروتکل SPI نظیر ARM را به سادگی به کامپیوتر خودرو متصل نمایید.
شناخت تراشه MCP2515
تراشه MCP2515 یک کنترل کنندهی کنترلر منطقی برای شبکههای CAN است. این تراشه توسط شرکت Microchip Technology تولید میشود و به دلیل داشتن ویژگیهایی مانند انعطاف پذیری در برنامهریزی، قابلیت پشتیبانی از پروتکل های 2.0A و 2.0B، قابلیت اتصال به میکروکنترلرهای مختلف، قابلیت تشخیص خطا و قابلیت تشخیص تداخل بر روی شبکه، مورد استفاده قرار میگیرد. این تراشه در کاربردهای گوناگونی مانند خودروها، دستگاههای صنعتی، ابزار دقیق و... استفاده میشود.
مشخصات فنی و ویژگی های کلی ماژول تبدیل CAN به SPI با تراشه MCP2515
ولتاژ کاری 5 ولت
قابلیت اتصال به کامپیوترخودروها
توانایی انتقال داده با سرعت 1 مگابیت بر ثانیه
جریان مصرفی بسیار ناچیز در حدود 5 میلی آمپر
دارای ترمینال پیچی جهت اتصال پایه های CAN
دارای پین هدر جهت اتصال پایه های پورت SPI
سازگاری کامل با بردهای آردوینو و سایر میکروکنترلرهای دارای پورت SPI
پایههای PinOut ماژول مبدل CAN به SPI با تراشه MCP2515
پایههای PinOut ماژول مبدل CAN به SPI با تراشه MCP2515 به شرح زیر هستند.
VCC: ورودی تغذیه با ولتاژ 5 ولت
GND: زمین ماژول
CS: ورودی انتخاب تراشه برای SPI
SO: خروجی سریالی (Serial Output)، به عنوان خروجی داده های SPI از تراشه MCP2515 استفاده می شود.
SI: ورودی سریالی (Serial Input)، برای ارسال داده ها به تراشه MCP2515 از طریق SPI استفاده می شود.
SCK: کلاک SPI
INT: خروجی تخصصی تراشه MCP2515 که معمولاً برای اعلام وقایع خاص مرتبط با CAN استفاده می شود.
NC: پایه ای که برای استفاده در برنامه های خاص مورد استفاده قرار می گیرد، اما به طور معمول بدون استفاده است و باید به زمین متصل شود.
توجه داشته باشید که این پایه ها برای هر ماژول به صورت متفاوتی ممکن است نامگذاری شوند. بنابراین، در هنگام استفاده از این ماژول، بهتر است به دقت دیتاشیت آن و یا چاپ راهنمای آن را بررسی کنید.
به همراه ماژول MCP2515 مبدل CAN به SPI چه اقلامی باید خریداری شود؟
برای استفاده از ماژول مبدل CAN به SPI با تراشه MCP2515، باید از موارد زیر تهیه شود:
1- برد میکروکنترلر (مانند Arduino یا Raspberry Pi)
2- ماژول مبدل CAN به SPI با تراشه MCP2515
3- کابلهای ارتباطی (مانند USB برای ارتباط با برد میکروکنترلر)
4- کابلهای ارتباطی CAN (برای اتصال به دستگاههای دیگر با پروتکل CAN)
لازم به ذکر است که نوع کابلهای ارتباطی و نحوه اتصال آنها به ماژول ممکن است بسته به نوع ماژول متفاوت باشد. همچنین برای استفاده از ماژول باید از کتابخانههای مرتبط با آن استفاده شود که میتوان آنها را از منابع آموزشی در اینترنت پیدا کرد.
راه اندازی ماژول MCP2515 مبدل CAN به SPI با آردوینو
برای راهاندازی ماژول MCP2515 مبدل CAN به SPI با آردوینو، میتوانید از کتابخانه MCP_CAN استفاده کنید. این کتابخانه شامل توابعی است که برای برقراری ارتباط با ماژول MCP2515 و ارسال و دریافت دادهها از آن استفاده میشود. نکته: در اینجا فرض شده است که ماژول MCP2515 با پایههای SPI آردوینو وصل شده است. ابتدا کتابخانه MCP_CAN را از لینک زیر دانلود و در برنامه آردوینو خود اضافه کنید. https://github.com/coryjfowler/MCP_CAN_lib/archive/master.zip سپس کد زیر را در برنامه آردوینو خود قرار دهید و آن را آپلود کنید.
#include <SPI.h>
#include <mcp_can.h>
// define CS pin for MCP2515
const int SPI_CS_PIN = 10;
// create MCP_CAN object
MCP_CAN CAN(SPI_CS_PIN);
void setup() {
Serial.begin(9600);
// initialize MCP2515
if(CAN.begin(MCP_ANY, CAN_125KBPS, MCP_16MHZ) == CAN_OK) {
Serial.println("MCP2515 Initialized Successfully!");
} else {
Serial.println("Error Initializing MCP2515...");
}
}
void loop() {
// read incoming messages
if(CAN_MSGAVAIL == CAN.checkReceive()) {
// create empty message buffer
CAN_MSG msg;
// read message into buffer
CAN.readMsgBuf(&msg);
// print message ID
Serial.print("ID: ");
Serial.print(msg.can_id, HEX);
Serial.print(" DLC: ");
Serial.print(msg.can_dlc);
Serial.print(" Data: ");
// print message data
for(uint8_t i = 0; i < msg.can_dlc; i++) {
Serial.print(msg.data[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}
در این کد، پایه CS ماژول به پایه 10 آردوینو وصل شده است. این پایه میتواند به هر پایهای که تمایل دارید وصل شود، اما حتما باید در قسمت مقداردهی اولیه ساختآن در تابع CAN.begin() مشخص شود. از طریق دستور CAN.begin() میتوانید سرعت ارتباطی و حالت فرستنده/گیرنده ماژول را تعیین کنید.
راه اندازی ماژول MCP2515 مبدل CAN به SPI با میکروپایتون و ESP32
برای راه اندازی ماژول MCP2515 با میکروکنترلر ESP32 و زبان برنامه نویسی میکروپایتون، باید ابتدا کتابخانه های لازم را نصب کرده و سپس کد را برنامه نویسی کنید. نصب کتابخانه ها، ابتدا باید کتابخانه های زیر را از طریق وب سایت رسمی micropython نصب کنید.
micropython-can
micropython-uasyncio
اتصالات سخت افزاری:
پایه CS ماژول به پایه 5 ESP32 متصل شود.
پایه SO ماژول به پایه 19 ESP32 متصل شود.
پایه SI ماژول به پایه 23 ESP32 متصل شود.
پایه SCK ماژول به پایه 18 ESP32 متصل شود.
پایه INT ماژول به پایه 4 ESP32 متصل شود.
پایه VCC ماژول به 5 ولت منبع تغذیه متصل شود.
پایه GND ماژول به زمین منبع تغذیه متصل شود.
پایه CANH ماژول به مثبت خط CAN متصل شود.
پایه CANL ماژول به منفی خط CAN متصل شود.
کد برنامه: کد زیر یک مثال ساده برای راه اندازی ماژول MCP2515 با میکروپایتون و ESP32 است.
import can
from machine import Pin
from micropython import schedule
# تعریف پایه ها
cs = Pin(5, Pin.OUT)
int_pin = Pin(4, Pin.IN)
# تعریف ماژول CAN
can0 = can.CAN(1, mode=can.CAN.NORMAL, extframe=False, baudrate=500000, pins=("P22", "P21"), clkfreq=20000000)
# تعریف تابع برای دریافت داده ها
def on_can_msg_received(msg):
print("Received:", msg)
# تعریف تابع برای ارسال داده ها
def send_can_message(id, data):
msg = can.Message(arbitration_id=id, data=data)
can0.send(msg)
# تعریف تابع برای مدیریت مقدار پایین INT پین
def on_can_interrupt(pin):
while True:
# خواندن پیام ها از MCP2515
msg = can0.recv(0)
if msg:
# اعلان دریافت داد
راه اندازی ماژول MCP2515 مبدل CAN به SPI با میکروپایتون و rp2040 رزبری پیکو
برای راه اندازی ماژول MCP2515 مبدل CAN به SPI با میکروکنترلر RP2040، ابتدا باید کتابخانه های مورد نیاز را نصب کنید. RP2040_CAN: این کتابخانه برای ارتباط با ماژول MCP2515 و تبدیل داده ها از پروتکل CAN به SPI استفاده می شود. microcontroller : کتابخانه microcontroller برای مدیریت پورت های سریال بر روی RP2040 استفاده می شود. برای نصب کتابخانه ها، می توانید از ابزار pip یا پوشه lib در پروژه پایتون خود استفاده کنید. نمونه کد زیر را می توانید به عنوان راهنمایی برای راه اندازی ماژول MCP2515 با استفاده از میکروکنترلر RP2040 در پایتون ببینید:
import microcontroller
from rp2040_can import CAN
# ست کردن پین های SPI برای استفاده با MCP2515
spi = microcontroller.SPI(0, sck=microcontroller.Pin(2), mosi=microcontroller.Pin(3), miso=microcontroller.Pin(4))
# ساخت شیء CAN برای ارتباط با MCP2515
can = CAN(spi, cs=microcontroller.Pin(5), irq=microcontroller.Pin(6))
# تنظیم سرعت baud rate برای CAN
can.configure(baudrate=500000)
# ارسال پیام با پیام های شخصی سازی شده
can.send(can.Message(arbitration_id=0x7de, data=[1, 2, 3, 4, 5, 6, 7, 8], extended_id=False))
# دریافت پیام های CAN با تنظیم یک تابع callback
def on_can_message_received(can_id, can_data, can_dlc, can_timestamp):
print("Received message: ID=%d DLC=%d DATA=%s TIMESTAMP=%s" % (can_id, can_dlc, can_data.hex(), can_timestamp))
can.receive(on_can_message_received)
# مانیتورینگ حلقه اصلی برای دریافت پیام های CAN
while True:
can.listen(timeout=0.1)
کاربردهای ماژول تبدیل CAN به SPI با تراشه MCP2515
ساخت صفحه کیلومترهای اسپرت و دیجیتال
ثبت کننده اطلاعات خودرو در حافظه های جانبی
ساخت دستگاه های هشدار دهنده سرعت و افزایش دما
ساخت کامپیوتر اطلاعات سفر خودرو و نمایش داده بر روی TFT
برقرار کننده ارتباط بین آردوینو و سایر میکروکنترلرها با دستگاه های مختلف صنعتی
ساخت سیستم های ارسال کننده موقعیت و سایر اطلاعات خودرو به صورت آنلاین
نمایش اطلاعات خودرو نظیر دما و سرعت بر روی رایانه و تلفن همراه از طرق کابل و یا به صورت بی سیم به کمک وای فای و بلوتوث
مشخصات
- کاربری
- مناسب برای استفاده صنعتی
- نوع ماژول
- مبدل
- تعداد قطعات
- 12 عدد
- ابعاد فیبر
- 4 *2.8 سانتی متر
- تعداد فیبر
- 1 عدد
- سطح تجربه مورد نیاز
- پیشرفته
- ابعاد
- 40x27mm
- ولتاژ مورد نياز
- 5 ولت DC
- فیبر مدار چاپی
- فایبر گلاس
- دمای کاری
- 40 - تا 85 + درجه سانتی گراد
- جریان
- 5 میلی آمپر
- چاپ مس
- دارای چاپ آبی
- اقلام همراه محصول
- ندارد
- کشور سازنده
- چین
چین
- حداکثر سرعت
- 1 مگابایت بر ثانیه
- نوع کانکتور
- ترمینال پیچی
پین هدر
- پروتکل ارتباطی
- CAN BUS to SPI
- نوع اسیلاتور
- سلف
- تعداد ورودی
- یک عدد CAN
- تعداد خروجی
- یک عدد SPI
- فرمت پایه ها
- طبق چاپ راهنما
- ارتباط UART
- ندارد
- پردازنده
- MCP2515
- سایر توضیحات
- پشتیبانی از CAN V2.0B
- سایر قابلیتها
- دارای مدار محافظ در برابر اتصال کوتاه
- وضعیت مونتاژ
- آماده به کار
اتصالات باتریها را بررسی کنید. همگی از یک نمونه باشند و اتصالات کامل و استاندارد باشند.
توسط همین ماژول هم میتوانید اقدام به اجرای درخواستتان کنید. البته اگر فقط بخواهید یک سلول باتری لیتیومی را مدیریت شارژ کنید، همان گزینه ماژول TP4056 مناسب خواهد بود.
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.