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*