树莓派(四)——Arduino IDE环境配置与入门项目实战

张开发
2026/4/16 5:51:38 15 分钟阅读

分享文章

树莓派(四)——Arduino IDE环境配置与入门项目实战
1. 为什么要在树莓派上玩Arduino很多刚接触树莓派的朋友都会有这个疑问既然树莓派本身就能跑Python、C这些语言为什么还要折腾Arduino呢其实我在刚开始玩硬件的时候也纠结过这个问题直到有一次做智能家居项目时才真正体会到两者的互补性。树莓派就像个全能型选手能处理复杂的图像识别、网络通信等任务但它的GPIO引脚直接控制外设时存在两个硬伤一是实时性不够比如精确控制步进电机二是电流输出有限单个引脚最大16mA。而Arduino恰好是专精型选手它的强项正是精准的时序控制和稳定的电流输出特别适合驱动电机、传感器等外设。最妙的是通过USB把两者连接后树莓派可以专注处理算法和网络通信把实时控制任务交给Arduino。这就好比让树莓派当大脑Arduino当小脑配合起来简直天衣无缝。我去年做的智能浇花系统就是这种架构——树莓派负责天气预报API获取和浇水策略计算Arduino精准控制水泵开关时长。2. 环境配置全攻略2.1 安装前的准备工作在敲安装命令之前有几点准备工作能让你少走弯路。首先确认你的树莓派系统版本我推荐使用Raspberry Pi OS Bullseye或更高版本老旧的Buster系统可能会遇到依赖问题。用这个命令检查lsb_release -a如果系统版本太旧建议先升级。另外记得执行常规的更新操作这能避免后续安装时出现依赖冲突sudo apt update sudo apt upgrade -y关于硬件连接有个实用技巧建议使用带独立供电的USB hub连接Arduino板。因为树莓派的USB接口供电能力有限单口最大1.2A我在测试时发现直接连接Arduino Uno偶尔会出现供电不足导致板子重启的情况。如果手头有9V电源适配器最好给Arduino外接供电。2.2 安装Arduino IDE的三种姿势官方源安装是最简单的方式一行命令搞定sudo apt install arduino -y但这种方式有个缺点安装的版本可能不是最新的。如果你想要最新版可以到Arduino官网下载Linux ARM版本手动安装。我实测过在树莓派4B上安装Arduino IDE 2.3.2的完整步骤wget https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.2_Linux_ARM.tar.xz tar xf arduino-ide_2.3.2_Linux_ARM.tar.xz cd arduino-ide_2.3.2_Linux_ARM ./install.sh第三种方式是通过Snap安装适合喜欢尝鲜的用户sudo apt install snapd sudo snap install arduino每种安装方式各有优劣我整理了个对比表格安装方式优点缺点适用场景apt官方源一键安装最稳定版本较旧新手快速上手手动下载能获取最新功能需要自行处理依赖需要特定版本功能Snap自动更新占用空间较大希望保持最新版的用户2.3 解决常见安装问题在帮学员调试的过程中我总结出几个高频问题。首先是权限问题安装后普通用户可能无法访问串口需要把用户加入dialout组sudo usermod -a -G dialout $USER然后注销重新登录生效。另一个常见问题是找不到开发板这是因为缺少对应的板卡支持包。以Arduino Uno为例需要安装arduino-avr-coresudo apt install arduino-avr-core如果遇到编译时报错缺少库可以尝试安装这些基础开发库sudo apt install gcc-avr avr-libc avrdude3. 硬件连接与配置详解3.1 物理连接的正确姿势连接Arduino到树莓派看似简单但细节决定成败。首先要注意USB线材质量劣质线材可能导致通信不稳定。我推荐使用带磁环的屏蔽USB线能有效减少干扰。对于需要外接电源的情况有个实用技巧先接USB线到树莓派再接电源适配器到Arduino这个顺序能避免板子意外重启。如果使用扩展板记得检查是否有独立的电源开关比如我用的这款电机驱动扩展板就需要先关闭PROG开关才能烧录程序。3.2 IDE配置的隐藏技巧打开Arduino IDE后别急着上传代码先做几个关键配置。在File Preferences里勾选Show verbose output during compilation这样编译出错时能看到详细日志。另外建议把编辑器字体调大些默认字体在树莓派的小屏幕上看着费劲。板卡选择有讲究如果用的是国产兼容板可能需要额外安装板卡支持。比如我用的CH340芯片的Uno兼容板就需要先安装驱动sudo apt install ch340ser-dkms端口选择也容易踩坑。有时候/dev/ttyACM0会被其他设备占用可以先用这个命令查看所有可用串口ls /dev/tty*如果看到多个选项可以逐个尝试。有个小技巧先拔掉Arduino运行命令记下现有端口再插上Arduino运行命令看新增了哪个端口那就是Arduino使用的端口。4. 从Blink项目深入理解4.1 经典Blink项目魔改打开示例中的Blink项目后别急着上传我们先来解剖这段代码。核心其实就三个函数pinMode()设置引脚模式digitalWrite()输出高低电平delay()控制时间间隔我建议新手可以这样玩把LED引脚从默认的13改成其他数字引脚比如8。然后在setup()里添加串口初始化Serial.begin(9600); Serial.println(Blink program started!);这样就能通过串口监视器观察程序运行状态。更进一步可以尝试用millis()替代delay()实现非阻塞式闪烁这对后续做多任务处理很有帮助unsigned long previousMillis 0; const long interval 1000; void loop() { unsigned long currentMillis millis(); if (currentMillis - previousMillis interval) { previousMillis currentMillis; digitalWrite(ledPin, !digitalRead(ledPin)); } }4.2 调试技巧与性能优化上传代码后如果LED没反应别慌按这个流程排查检查板载LED通常标着L是否亮起确认板子通电查看IDE下方的状态栏确认显示Done uploading打开串口监视器CtrlShiftM看是否有初始化输出用万用表测量目标引脚电压应该有3.3V左右的脉冲性能方面树莓派上跑Arduino IDE有个小技巧关闭不必要的插件能显著提升响应速度。在File Preferences里取消勾选Enable code folding和Enable auto format on save。如果编译速度慢可以增加交换空间sudo nano /etc/dphys-swapfile # 修改CONF_SWAPSIZE1024 sudo /etc/init.d/dphys-swapfile restart5. 项目实战智能光线感应灯现在我们来做个更实用的项目根据环境光强度自动控制的LED灯。需要准备光敏电阻1个10kΩ电阻1个LED灯1个220Ω电阻1个若干杜邦线电路连接要点光敏电阻与10kΩ电阻组成分压电路接模拟输入A0LED通过220Ω限流电阻接数字引脚9注意光敏电阻的朝向我习惯把感光面朝上代码逻辑如下const int lightSensor A0; const int ledPin 9; int sensorValue 0; int outputValue 0; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { sensorValue analogRead(lightSensor); outputValue map(sensorValue, 0, 1023, 255, 0); analogWrite(ledPin, outputValue); delay(100); }上传后用手遮住光敏电阻LED亮度应该会随之变化。这个项目虽然简单但包含了模拟输入读取、PWM输出等核心概念是学习Arduino的绝佳练手项目。6. 进阶技巧与扩展思路6.1 串口通信的妙用树莓派和Arduino配合最强大的功能就是串口通信。我们可以在Arduino端采集传感器数据通过串口发送给树莓派处理。比如改造前面的光感项目void loop() { sensorValue analogRead(lightSensor); Serial.println(sensorValue); delay(500); }然后在树莓派上用Python读取这些数据import serial ser serial.Serial(/dev/ttyACM0, 9600) while True: data ser.readline().decode().strip() print(fLight intensity: {data})6.2 电源管理的经验之谈长时间运行的项目中电源管理很重要。我发现用树莓派给Arduino供电时偶尔会出现电压不稳导致Arduino重启的情况。解决方案有两种使用带稳压的USB Hub在Arduino的5V和GND之间并联一个1000μF的电容如果项目中有电机等大功率设备强烈建议给Arduino单独供电并通过电平转换模块与树莓派通信。我曾经做过一个机械臂项目就因为供电问题调试了一整天。

更多文章