Raspberry Pi CAN Bus サンプルコード

UIROBOT CAN Bus 製品の Raspberry Pi 開発サンプルコード。SocketCAN、Python、C++ の例。

# Raspberry Pi CAN Bus サンプルコード このページでは、Raspberry Pi で UIROBOT CAN bus デバイスを制御するためのサンプルコードを提供します。 --- ## Quick Selection | 接続方法 | 対応製品 | ドキュメント | |---------|---------|-------------| | **SocketCAN + MCP2515** | UIM342, UIM342A, UIM1616 | [AN017] | | **Python + python-can** | UIM342, UIM342A | [AN018] | ## セクション 1: SocketCAN + MCP2515 ### 配線 ``` Raspberry Pi MCP2515 Pin 19 (MOSI) --> SI Pin 21 (MISO) <-- SO Pin 23 (SCLK) --> SCK Pin 24 (CE0) --> CS Pin 1 (3.3V) --> VCC Pin 6 (GND) --> GND ``` ### SocketCAN 設定 ```bash # SPI を有効化(raspi-config) # CAN インターフェースを設定 sudo ip link set can0 up type can bitrate 500000 # 送信テスト cansend can0 01#01F4000000000000 # モニタリング candump can0 ``` ### C サンプルコード ```c #include <stdio.h> #include <sys/socket.h> #include <linux/can.h> #include <linux/can/raw.h> int main() { int s = socket(PF_CAN, SOCK_RAW, CAN_RAW); struct sockaddr_can addr; addr.can_family = AF_CAN; addr.can_ifindex = if_nametoindex("can0"); bind(s, (struct sockaddr *)&addr, sizeof(addr)); struct can_frame frame; frame.can_id = 0x01; frame.can_dlc = 8; frame.data[0] = 0x01; // 速度設定 frame.data[1] = 0xF4; // 500 RPM // ... write(s, &frame, sizeof(frame)); close(s); return 0; } ``` --- ## ダウンロード | アプリケーションノート | 説明 | ダウンロードリンク | |---------------------|------|-----------------| | AN017 | RPi + MCP2515 C 言語 | [Download ZIP](https://www.uirobot.com) | | AN018 | RPi + Python | [Download ZIP](https://www.uirobot.com) | --- ## 関連ドキュメント - [Python CAN Bus サンプルコード](/docs/python-examples) - [Raspberry Pi 5 サンプルコード](/docs/raspberry-pi-5-examples) - [Arduino CAN Bus サンプルコード](/docs/arduino-examples) --- *最終更新: 2026-07-03*