ใช้ MCP2515 กับ Raspberry Pi

Using the MCP2515 with the Raspberry Pi

MCP2515 เป็นโมดูลคอนโทรลเลอร์ CAN CAN (CONTROLLER AREA) ที่ได้รับความนิยมซึ่งช่วยให้อุปกรณ์ Raspberry Pi สื่อสารกับระบบที่เปิดใช้งาน CAN สิ่งนี้ทำให้เหมาะสำหรับโครงการยานยนต์ระบบอัตโนมัติอุตสาหกรรมและแอพพลิเคชั่น IoT คู่มือนี้อธิบายวิธีการตั้งค่าและใช้ MCP2515 ด้วย Raspberry Pi


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
  2. MCP2515 สามารถโมดูลได้
  3. เครื่องหั่นขนมปังและสายจัมเปอร์
  4. คอมพิวเตอร์ที่มีการเข้าถึง SSH ไปยัง Raspberry Pi หรือแป้นพิมพ์และจอภาพที่เชื่อมต่อ
  5. Python ติดตั้งบน Raspberry Pi
  6. โมดูลตัวรับส่งสัญญาณสามารถ (ถ้าไม่รวมอยู่ใน MCP2515)

ขั้นตอนที่ 1: เดินสาย MCP2515 ไปยัง Raspberry Pi

MCP2515 สื่อสารกับ Raspberry PI โดยใช้โปรโตคอล SPI

การเชื่อมต่อ (โหมด SPI)

MCP2515 PIN Raspberry Pi Pin
VCC 3.3V (พิน 1)
gnd พื้นดิน (พิน 6)
CS GPIO8 (PIN 24, SPI0_CE0)
ดังนั้น GPIO9 (PIN 21, SPI0_MISO)
ศรี GPIO10 (PIN 19, SPI0_MOSI)
SCK GPIO11 (PIN 23, SPI0_SCLK)
int GPIO25 (พิน 22)

ขั้นตอนที่ 2: เปิดใช้งานอินเทอร์เฟซ SPI บน Raspberry Pi

  1. เปิดเครื่องมือกำหนดค่า Raspberry Pi:
    sudo raspi-config
    
  2. นำทางไปยัง ตัวเลือกอินเตอร์เฟส> SPI และเปิดใช้งาน
  3. รีบูตราสเบอร์รี่ pi:
    sudo reboot
    

ขั้นตอนที่ 3: ติดตั้งไลบรารีและเครื่องมือที่จำเป็น

  1. อัปเดต Raspberry Pi ของคุณ:
    sudo apt update && sudo apt upgrade -y
    
  2. ติดตั้ง can-utils แพ็คเกจสำหรับการสื่อสารสามารถ:
    sudo apt install -y can-utils
    

ขั้นตอนที่ 4: กำหนดค่าอินเตอร์เฟส CAN

  1. เปิด /boot/config.txt file:

    sudo nano /boot/config.txt
    
  2. เพิ่มบรรทัดต่อไปนี้เพื่อเปิดใช้งานการซ้อนทับ MCP2515:

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
    dtoverlay=spi-bcm2835
    

    บันทึกและออก

  3. รีบูตราสเบอร์รี่ pi:

    sudo reboot
    
  4. เปิดอินเทอร์เฟซ CAN:

    sudo ip link set can0 up type can bitrate 500000
    
  5. ตรวจสอบอินเตอร์เฟส CAN:

    ifconfig can0
    

ขั้นตอนที่ 5: ทดสอบ MCP2515

  1. ส่งข้อความ CAN: ใช้ cansend คำสั่งเพื่อส่งข้อความทดสอบ:

    cansend can0 123#DEADBEEF
    
  2. รับข้อความ CAN: ใช้ candump คำสั่งเพื่อตรวจสอบข้อความที่เข้ามา:

    candump can0
    

ขั้นตอนที่ 6: การใช้ Python เพื่อสื่อสารกับ MCP2515

ติดตั้ง python-can ห้องสมุดที่จะส่งและรับข้อความสามารถผ่าน Python

การติดตั้ง

pip install python-can

ตัวอย่างสคริปต์ Python

import can

# Create a CAN bus instance
bus = can.interface.Bus(channel='can0', bustype='socketcan')

# Send a CAN message
msg = can.Message(arbitration_id=0x123, data=[0xDE, 0xAD, 0xBE, 0xEF], is_extended_id=False)
bus.send(msg)
print("Message sent: ", msg)

# Receive a CAN message
print("Waiting for a message...")
message = bus.recv()
print("Received message: ", message)

การแก้ไขปัญหา

  1. ไม่พบอินเทอร์เฟซ:

    • ตรวจสอบว่าเปิดใช้งานอินเตอร์เฟส SPI
    • ตรวจสอบการเดินสายระหว่าง Raspberry Pi และ MCP2515
    • ตรวจสอบให้แน่ใจว่า /boot/config.txt ไฟล์ได้รับการกำหนดค่าอย่างถูกต้อง
  2. ไม่มีข้อความสามารถ:

    • ตรวจสอบว่าบัสสามารถยกเลิกได้อย่างเหมาะสมด้วยตัวต้านทาน 120 โอห์ม
    • ตรวจสอบให้แน่ใจว่าบิตเรตจับคู่กับอุปกรณ์ทั้งหมดบนรถบัส CAN
  3. ข้อผิดพลาดของ Python:

    • ตรวจสอบให้แน่ใจว่า python-can ติดตั้งห้องสมุด
    • ตรวจสอบสคริปต์ Python สำหรับการพิมพ์ผิดหรือข้อผิดพลาดการกำหนดค่า

แอปพลิเคชันของ MCP2515

  1. การวินิจฉัยและการตรวจสอบยานยนต์
  2. ระบบอัตโนมัติอุตสาหกรรม
  3. เครือข่ายการสื่อสารของหุ่นยนต์
  4. โครงการ IoT ที่ต้องการโปรโตคอลการสื่อสารที่เชื่อถือได้

บทสรุป

MCP2515 สามารถเพิ่มโมดูลคอนโทรลเลอร์เพิ่มความสามารถในการสื่อสารที่แข็งแกร่งให้กับ Raspberry Pi ของคุณทำให้เหมาะสำหรับการใช้งานยานยนต์อุตสาหกรรมและ IoT โดยทำตามคำแนะนำนี้คุณสามารถตั้งค่าและทดสอบ MCP2515 และเริ่มสร้างโครงการที่ทรงพลังที่ใช้ประโยชน์จากโปรโตคอล CAN

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.