当前位置: 首页 > ai >正文

树莓派开发环境部署(任何类型的树莓派),最简易

以下是树莓派从零开始使用C语言开发的超详细指南,包含环境搭建到功能开发的完整流程(基于SSH远程开发):


一、硬件准备

  1. 所需材料
    • 树莓派主板(推荐4B/5型号)
    • Micro SD卡(至少16GB Class10)
    • 5V电源适配器(Type-C接口)
    • 网线或可连接的WiFi环境
    • 读卡器(用于烧录系统)
    • 可选:HDMI线、显示器、键鼠(首次配置可不用)

二、系统安装与网络配置

1. 烧录系统
  1. 下载官方工具Raspberry Pi Imager
  2. 选择系统:
    • 推荐:Raspberry Pi OS Lite(无桌面版)
    • 版本:选择64-bit或32-bit(根据硬件选择)
  1. 高级设置(⚙️图标):
    • 启用SSH:勾选"Enable SSH"
    • 设置用户名密码:建议用户pi,密码自定义
    • 配置WiFi(可选):填入SSID和密码
  1. 烧录到SD卡

2. 首次启动配置
  1. 插入SD卡到树莓派并通电
  2. 等待启动(约1-2分钟)
  3. 获取IP地址(任选一种方法):
    • 登录路由器管理页面查看
    • 使用arp -a命令扫描局域网
    • 使用nmap -sn 192.168.1.0/24扫描(需安装nmap)

三、SSH远程连接

1. 基础连接
ssh pi@<树莓派IP>  # 示例:ssh pi@192.168.137.123
输入密码完成登录    #我设置的是1

2. 配置免密登录(推荐)
  1. 本地生成密钥:
ssh-keygen -t rsa  # 按回车使用默认路径
  1. 上传公钥到树莓派:
ssh-copy-id pi@<树莓派IP>
3. 基础安全设置
sudo raspi-config
# 选择:System Options -> Password -> 修改密码
# 选择:System Options -> Wireless LAN -> 配置WiFi(可选)
# 选择:Advanced Options -> Expand Filesystem

四、开发环境搭建

3.1 更新系统

sudo apt update && sudo apt upgrade -y

3.2 修改密码

passwd

3.3 配置时区

sudo dpkg-reconfigure tzdata

选择Asia -> Shanghai

3.4 扩展文件系统

sudo raspi-config

选择"Advanced Options" -> "Expand Filesystem"

4. 开发环境搭建

4.1 安装编译工具

以下操作在SSH登录到树莓派的时候操作

sudo apt install build-essential git cmake

4.2 安装GPIO库

sudo apt update
sudo apt install libgpiod-dev  # 官方推荐的GPIO库

下载其他库,未找到,待解决

sudo apt install libi2c-dev libspi-dev libserial-dev

5. 开发流程

5.1 在Ubuntu上开发

在Ubuntu上使用你喜欢的编辑器编写代码,例如:

exit #从pi切换到用户
sudo apt install libgpiod-dev  #在ubuntu用户模式下也下载库,便于调试
mkdir ~/raspberry_projects
cd ~/raspberry_projects
code test.c

示例代码(test.c):

// ~/raspberry_projects/blink.c
#include <gpiod.h>
#include <unistd.h>#define GPIO_CHIP "gpiochip0"
#define LED_PIN 17  // 物理引脚11int main() 
{struct gpiod_chip *chip = gpiod_chip_open_by_name(GPIO_CHIP);struct gpiod_line *led = gpiod_chip_get_line(chip, LED_PIN);gpiod_line_request_output(led, "blink-example", 0);while (1) {gpiod_line_set_value(led, 1);sleep(1);gpiod_line_set_value(led, 0);sleep(1);}gpiod_line_release(led);gpiod_chip_close(chip);return 0;
}

编译要记得链接库

gcc test.c  -lgpiod
#仅用来查看错误

5.2 传输代码到树莓派

先使用ssh登录树莓派

ssh pi@192.168.137.123ls #查看文件
mkdir project #创建文件,便于ubuntu上传储存exit #退出登录树莓派

在ubuntu下操作

scp test.c pi@192.168.137.123:~/project/

5.3 在树莓派上编译运行

ssh pi@192.168.137.123
cd ~/project
gcc -o test test.c -lgpiod  #gcc test.c
./test                       #./a.out

连接相关点亮,led灯闪烁

使用系统启动,防止运行./a.out再ctr+c时代码不允许,但是没有flash,只能用系统启动自启

将代码设置为开机自启动是一个常见的需求,尤其是对于嵌入式系统或需要持续运行的任务。以下是将你的可执行文件 a.out 设置为开机自启动的详细步骤,基于你的当前目录结构(~/project)和文件列表(a.outtest.c)。

步骤 1: 确保可执行文件可以运行

首先,确保 a.out 是一个有效的可执行文件,并且可以在终端中正常运行。你可以通过以下命令测试:

./a.out

如果程序正常运行,你可以继续下一步。

步骤 2: 创建 systemd 服务文件

systemd 是现代 Linux 发行版(包括树莓派的 Raspbian)使用的初始化系统和服务管理器。我们可以使用它来创建一个服务,使程序在系统启动时自动运行。

  1. 创建服务文件:

使用文本编辑器(如 vim)创建一个新的服务文件。例如,在 /etc/systemd/system/ 目录下创建一个名为 mycode.service 的文件:

sudo vim /etc/systemd/system/mycode.service
  1. 编辑服务文件:

在文件中添加以下内容:


[Unit]
Description=My Code Service
After=network.target #在网络启动后启动,但是不管网络能是否正确连上都启动,注释掉的话直接启动[Service]
ExecStart=/home/pi/project/a.out
WorkingDirectory=/home/pi/project
Restart=always
User=pi[Install]
WantedBy=multi-user.target
    • Description 是服务的描述。
    • After=network.target 表示服务在网络服务启动后启动。如果你的程序不需要网络,可以省略这一行。
    • ExecStart 是启动服务的命令。这里指定了你的可执行文件的完整路径。
    • WorkingDirectory 是服务运行时的工作目录。
    • Restart=always 表示如果服务崩溃或停止,systemd 将自动重启它。
    • User=pi 表示服务将以 pi 用户的身份运行。

程序等待网络连接成功才可以使用

[Unit]
Description=My Code Service
After=network-online.target
Wants=network-online.target[Service]
ExecStart=/home/pi/project/a.out
WorkingDirectory=/home/pi/project
Restart=always
User=pi[Install]
WantedBy=multi-user.target
  1. 保存并退出

Ctrl+O 保存文件,然后按 Ctrl+X 退出 nano 编辑器。

步骤 3: 启用并启动服务

  1. 启用服务

使用 systemctl 命令启用服务,使其在系统启动时自动运行:

sudo systemctl enable mycode.service
  1. 启动服务

立即启动服务(如果你不想等待系统重启):

sudo systemctl start mycode.service
  1. 检查服务状态

你可以使用以下命令检查服务的状态:

sudo systemctl status mycode.service
sudo reboot #重启设备查看

你应该会看到服务正在运行的信息。

步骤 4: 验证

  • 重启树莓派,然后检查你的程序是否在启动时自动运行。
  • 你可以通过查看日志文件(通常位于 /var/log/syslog 或使用 journalctl 命令)来调试任何问题。

注意事项

确保你的可执行文件具有适当的权限,以便 pi 用户可以运行它。

如果你的程序需要特定的环境变量或配置文件,确保这些在服务文件中正确设置。

如果你需要调试服务,可以查看 journalctl 的输出:

journalctl -u mycode.service

这样,你的程序 a.out 就会在树莓派启动时自动运行了。

在使用ssh登录树莓派使能相关的iic和spi

6. 高级开发设置

6.1 使用VS Code远程开发

  1. 在Ubuntu上安装VS Code
  2. 安装"Remote - SSH"扩展
  3. 点击左下角绿色图标 > "Connect to Host" > 输入树莓派SSH信息
  4. 现在可以直接在VS Code中编辑树莓派上的文件

6.2 自动同步代码(rsync)

在Ubuntu上创建同步脚本sync.sh

#!/bin/bash
rsync -avz --exclude='.git/' ~/raspberry_projects/ pi@<树莓派IP>:~/projects/

然后:

chmod +x sync.sh
./sync.sh

7. 外设和传感器开发

7.1 GPIO使用

确保用户有GPIO访问权限:

sudo usermod -a -G gpio pi

7.2 I2C设备

启用I2C:

sudo raspi-config

选择"Interface Options" -> "I2C" -> "Yes"

安装i2c工具:

sudo apt install i2c-tools

检测设备:

sudo i2cdetect -y 1

7.3 SPI设备

启用SPI:

sudo raspi-config

选择"Interface Options" -> "SPI" -> "Yes"

8. 调试技巧

8.1 查看GPIO状态

gpio readall

8.2 查看系统日志

dmesg | tail

8.3 监控CPU温度

vcgencmd measure_temp

9. 常用命令备忘

用途

命令

重启树莓派

sudo reboot

关机

sudo poweroff

查看IP

hostname -I

查看存储

df -h

查看内存

free -h

查看CPU信息

cat /proc/cpuinfo

查看USB设备

lsusb

查看内核日志

journalctl -k

10. 后续学习建议

  1. 学习Linux基本命令
  2. 研究树莓派GPIO引脚图
  3. 查阅传感器数据手册
  4. 学习Makefile编写
  5. 探索交叉编译(在Ubuntu上编译树莓派程序)

这样你就完成了从零开始的无屏幕树莓派4B C语言开发环境搭建!

五、第一个C程序

1. 创建项目目录
mkdir ~/projects && cd ~/projects
2. 编写Hello World
vim hello.c

输入以下内容:

#include <stdio.h>int main() {printf("Hello Raspberry Pi!\n");return 0;
}
3. 编译与运行
gcc hello.c -o hello  # 编译
./hello               # 运行

六、GPIO控制开发(以LED为例)

1. 安装硬件控制库
sudo apt install -y wiringpi  # 传统库
# 或使用新库(推荐):
git clone https://github.com/WiringPi/WiringPi
cd WiringPi && ./build
2. 硬件连接
  • LED正极 → GPIO17(物理引脚11)
  • LED负极 → GND(物理引脚9)
  • 串联220Ω电阻
3. 编写控制程序
// blink.c
#include <wiringPi.h>#define LED_PIN 0  // wiringPi编号模式(对应GPIO17)int main() {wiringPiSetup();pinMode(LED_PIN, OUTPUT);while(1) {digitalWrite(LED_PIN, HIGH);delay(1000);digitalWrite(LED_PIN, LOW);delay(1000);}return 0;
}
4. 编译运行
gcc blink.c -o blink -lwiringPi  # 链接库
sudo ./blink  # 需要root权限操作GPIO

七、进阶开发配置

1. 启用硬件PWM(以控制舵机为例)
#include <wiringPi.h>
#include <softPwm.h>int main() {wiringPiSetup();softPwmCreate(1, 0, 200);  // 引脚1,初始占空比0,范围200while(1) {softPwmWrite(1, 15);  // 15/200 = 7.5% → 舵机中位delay(2000);softPwmWrite(1, 25);  // 12.5% → 右转delay(2000);}return 0;
}
2. 使用Makefile

创建Makefile

CC = gcc
CFLAGS = -Wall -Wextra
LDFLAGS = -lwiringPiTARGET = blinkall: $(TARGET)$(TARGET): $(TARGET).c$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)clean:rm -f $(TARGET)

八、调试技巧

  1. GDB调试
gcc -g program.c -o program
gdb ./program
  1. GPIO状态检查
gpio readall  # 查看所有GPIO状态
  1. 系统监控
top           # 查看CPU使用
vcgencmd measure_temp  # 查看温度

九、常见问题排查

  1. SSH连接失败
    • 确认IP地址正确
    • 检查/boot/ssh文件是否存在
    • 使用ping <IP>测试网络连通性
  1. GPIO无响应
    • 检查接线是否正确
    • 确认使用sudo运行程序
    • 验证GPIO编号模式(wiringPi使用自身编号)
  1. 编译错误
    • 确认安装了所有依赖库
    • 检查-l参数后的库名称拼写
    • 使用ldconfig -p | grep wiringPi验证库安装

十、推荐学习路径

  1. 掌握Linux基础命令(ls, cd, grep等)
  2. 学习C语言指针和内存管理
  3. 研究树莓派官方文档
  4. 尝试传感器集成(温湿度/DHT11)
  5. 探索多线程编程(pthread库)

建议从简单的GPIO控制开始,逐步过渡到I2C/SPI设备通信,最后尝试结合网络编程开发物联网项目。

http://www.xdnf.cn/news/5691.html

相关文章:

  • 新书速览|纯血鸿蒙HarmonyOS NEXT原生开发之旅
  • 使用conda导致无法找到libpython动态库
  • 【番外】01:Windows 安装配置 CUDA 和 cuDNN 教程
  • 【RTOS】 vxworks里面的配置项
  • vscode 默认环境路径
  • cursor 30.Our servers are currently........
  • 1.2 函数
  • SpringBoot医院病房信息管理系统开发实现​
  • 【HTOP 使用指南】:如何理解主从线程?(以 Faster-LIO 为例)
  • 嵌入式软件--stm32 DAY 6 USART串口通讯(下)
  • 从逻辑学视角探索数学在数据科学中的系统应用:一个整合框架
  • 1.3 极限
  • Java线程的优先级(Priority)
  • nginx配置sse流传输问题:直到所有内容返回后才往下传输
  • 1.7 方向导数
  • TiDB预研-基本模块、初步使用
  • [笔记]几起风电结构失效案例
  • 踩坑记录-恒源云-GPUSHARE
  • 大小端的判断方法
  • Spring Cache的详细使用
  • 编程技能:字符串函数03,strncpy
  • 碰一碰发视频源码搭建,支持OEM
  • 解决在 PowerShell 中 `javac -version` 命令无法运行
  • Qwen:Qwen3,R1 在 Text2SQL 效果评估
  • 1.5 连续性与导数
  • HDFS概述
  • XXE记录
  • 如何使用人工智能翻译WordPress网站
  • 如何进行前端性能测试?--性能标准
  • SnowAdmin - 功能丰富、简单易用的开源的后台管理框架,基于 Vue3 / TypeScript / Arco Design 等技术栈打造