0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将1个或多个Arduino与树莓派结合使用

454398 来源:网络整理 作者:网络整理 2019-11-19 11:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:RaspberryPi电路

如何将1个或多个Arduino与树莓派结合使用

您将需要一种将RaspberryPi线路连接到面包板的方法。您可以使用公/母跳线,但是本页上列出的Adafruit的Pi补鞋匠将使其变得更容易:http://www.adafruit.com/search?q=cobbler

对于您还将需要的RaspberryP电路:

RaspberryPi

面包板

跳线

2-LED,我用了一个红色和绿色。

2-330-560欧姆电阻,用于LED。

1-按钮开关

1-10K电阻,下拉电阻用于开关。

使用这些部件复制上图中的电路。

除了http://www.adafruit上Adafruit的电阻器外,您还可以获取所需的一切。 .com/

或在Sparkfun上https://www.sparkfun.com/

Sparkfun还提供了一个不错的电阻器组合,其中包括您需要的每个电阻值中的25个,您可以在这里https://www.sparkfun.com/products/10969。

第2步:Arduino电路

第一个Arduino使用了从RaspberryPi调用的pinMode(),digitalRead(),digitalWrite(),analogRead()和pwmWrite()函数。这是我知道将最简单的方法添加到RaspberryPi的模数转换器。请注意,connectionPi使用pwmWrite而不是AnalogWrite,它更准确。

第二个Arduino只是在RaspberryPi的控制下,闪烁了13针上的内置LED。这只是表明它确实可以控制多个Arduino。它还显示了connectionPi的多线程功能的很好但简单的使用。

如果只有一个Arduino,您仍然可以尝试该程序,第5步是使用一个arduino的程序。

我在原型屏蔽板上构建了Arduino电路,但我展示了

对于Arduino电路,您将需要:

2-Arduinos

2-连接到的USB电缆RaspberryPi

面包板

跳线

2-LED,我使用了一个红色和一个绿色。

2-330-560欧姆电阻,用于LED。

1-按钮开关

1-电阻传感器

2-10K电阻,开关和传感器的下拉电阻。

使用这些部件复制上图中的电路。

我在电阻传感器中使用了力敏电阻,但是光电管或弯曲传感器也能正常工作。您也可以使用电位计。要为电位器接线,请忘掉10K电阻,将中间引线连接到该引脚,一端引线连接到正极轨,另一端接地。

步骤3:代码

为您的RaspberryPi下载此程序。

使用以下命令对其进行编译:

gcc -o DRCtest DRCtest.c -lwiringPi -lpthread

并使用以下命令运行它:

sudo 。/DRCtest

/************************************************************************

* DRCtest.c - Test program for Drogon Remote Control. (DRC)

*

* On the first Arduino:

* LEDs are connected to pins nine and eleven, with 560 Ohm current limiting resistors.

* A push button switch is connected to pin five, with a 10K pull-down resistor.

* A resistive sensor is connected to analog pin zero, with a 10K pull-down resistor.

* The only connection to the RaspberryPi is the USB cable.

* The program in the RaspberryPi is controling the Arduino.

* The DRC.ino program must be installed and running.

*

* Nothing is connected to the second Arduino.

*

* On the RaspberryPi:

* LEDs are connected to pins nine and eleven, with 560 Ohm current limiting resistors.

* A push button switch is connected to pin five, with a 10K pull-down resistor.

* The pin numbers for the RaspberryPi use the wiringPi pin numbering scheme.

*

* The loop() function does a digitalRead of the push button on the Arduino

* and digitalWrites the value to the both red LEDs

* Next it performs an analogRead of the force sensitive resistor, divides

* the value by four, and pwmWrites the value to both green LEDs.

* Then is does a digitalRead of the push button on the RaspberryPi

* and digitalWrites the value to the both red LEDs

*

************************************************************************/#include

#include

#include

#define BASE 100

#define BASE2 200/*****************************************************************************

* The second thread blinks the built in LED on pin 13 of the Second Arduino.

* The code here runs concurrently with the main program in an infinite loop.

*****************************************************************************/

PI_THREAD(arduino2)

{

for(;;)

{

digitalWrite(BASE2+13, HIGH); // Turn pin 13 on.

delay(500);

digitalWrite(BASE2+13, LOW); // Turn pin 13 off.

delay(500);

}

}/**************************************************************************

* setup() function

**************************************************************************/

void setup(void)

{

wiringPiSetup();

drcSetupSerial(BASE, 20, “/dev/ttyACM0”, 115200);

drcSetupSerial(BASE2, 20, “/dev/ttyACM1”, 115200);

int x = piThreadCreate(arduino2); // Start second thread.

if (x != 0) printf(“It didn‘t start. ”);

// Pins on Arduino:

pinMode (BASE+11, PWM_OUTPUT); // Reset pin to maximum value

pwmWrite(BASE+11, 255); // after PWM write.

pinMode (BASE+5, INPUT); // Pin 5 used for digitalRead.

pinMode (BASE+9, PWM_OUTPUT); // Pin 9 used for pwmWrite.

// Pin A0 is used for analogRead.

// Pins on second Arduino:

pinMode (BASE2+13, OUTPUT); // Pin 13 used for digitalWrite.

// Pins on RaspberryPi:

pinMode(0, OUTPUT); // Pin 0 used for digitalWrite.

pinMode(5, INPUT); // Pin 5 used for digitalRead.

pinMode(1, PWM_OUTPUT); // Pin 1 used for pwmWrite.

}/**************************************************************************

* loop() function

**************************************************************************/

void loop(void)

{

digitalWrite(BASE+11, digitalRead(BASE+5)); // If Arduino button is pressed

digitalWrite(0, digitalRead(BASE+5)); // turn on both red LEDs.

pwmWrite(BASE+9, (analogRead(BASE)/4)); // Varies the brightness of both green

pwmWrite(1, (analogRead(BASE)/4)); // LEDs according to pressure applied

// to the force sensitive resistor.

digitalWrite(BASE+11, digitalRead(5)); // If RaspberryPi button is pressed

digitalWrite(0, digitalRead(5)); // turn on both red LEDs.

}/**************************************************************************

* main() function

**************************************************************************/

int main (void)

{

setup();

for(;;)

{

loop();

}

return 0 ;

}

第4步:将它们放在一起

将第6步中的Arduino草图上传到您将要使用的Arduino。

关闭RaspberryPi并连接RaspberryPi电路。插入USB端口之前必须先关闭RaspberryPi,否则RaspberryPi不会将它们注册为正确的设备。第一个Arduino是/dev/ttyACM0,第二个是/dev/ttyACM1。如果您没有将Arduinos插入正确的USB端口,则会将命令发送到错误的Arduino。在B +型上,第一个Arduino在与GPIO接头相同的顶部USB端口中。第二个Arduino在下面的底部USB端口中。如果您使用的是USB集线器,则必须在各个端口之间切换以查看其工作原理

打开RaspberryPi并使用以下命令运行该程序:

sudo 。/DRCtest

按下RaspberryPi电路上的按钮应点亮红色LED。 RaspberryPi电路和第一个Arduino。

按下第一个Arduino上的按钮也会点亮两个红色LED。

改变电阻传感器会导致绿色LED的亮度发生变化。

在第二个Arduino上,板载引脚13指示器LED应当闪烁并熄灭。

如果第一次不起作用,请关闭所有设备并反转USB端口。

步骤5:使用一个Arduino运行程序

如果没有第二个Arduino,您仍然可以尝试演示。

下载此版本的程序并使用以下命令进行编译:

gcc- o DRCtest-1 DRCtest-1.c -lwiringPi

并使用以下命令运行程序:

sudo 。/DRCtest-1

仅使用一个Arduino您可以在关闭电源的情况下将Arduino插入任何USB端口,然后它将正常工作。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195966
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109704
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于树莓(RaspberryPi)构建高效实时监控系统

    由于树莓体积小、可开发性强等特性,常被用于视频监控场景中,结合 ZeroNews,可实现用户在任意位置都能实时安全得访问视频监控系统。 先决条件:树莓
    的头像 发表于 09-22 15:14 859次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>(RaspberryPi)构建高效实时监控系统

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用
    的头像 发表于 08-14 17:45 957次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 828次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

    树莓5上,如何使用毫米波雷达检测和追踪人类?

    在本指南中,我们学习如何将RD-03D雷达传感器添加到树莓单板计算机上,以便实时检测和追踪人类。我们将了解该传感器的工作原理及可获取的数据、如何
    的头像 发表于 07-24 15:32 1955次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5上,如何使用毫米波雷达检测和追踪人类?

    7令人惊叹的树莓应用,让你大开眼界!

    无所不在。得益于其强大的硬件和多功能性,树莓被应用于各个行业。继续阅读,了解这款单板计算机如何应对全球挑战,来让我们惊叹。1.学生树莓
    的头像 发表于 07-16 16:51 904次阅读
    7<b class='flag-5'>个</b>令人惊叹的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>应用,让你大开眼界!

    如何将你手中的树莓变身为强大路由器?

    树莓用作路由器,是一种经济高效且可定制的解决方案,能满足从基础家庭网络到专业设置的各种网络需求。树莓是一款小型单板计算机,配备必要的硬
    的头像 发表于 07-07 16:30 2870次阅读
    <b class='flag-5'>如何将</b>你手中的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>变身为强大路由器?

    如何在树莓派上安装并运行 Arduino 集成开发环境!

    ,我们介绍如何在树莓派上安装并运行ArduinoIDE。所需物品要在树莓派上运行ArduinoIDE,你需要以下组件:配备适当电源的树莓
    的头像 发表于 07-01 17:41 4041次阅读
    如何在<b class='flag-5'>树莓</b>派上安装并运行 <b class='flag-5'>Arduino</b> 集成开发环境!

    树莓小技巧:无需键盘显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看
    的头像 发表于 06-26 15:41 1044次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘<b class='flag-5'>或</b>显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:用树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 986次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通
    的头像 发表于 06-04 15:33 1142次阅读
    用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    树莓“吉尼斯世界记录”:树莓的性能发挥到极致的项目!

    完成的许多酷炫项目。这就引出了一问题——你该如何将树莓的性能推向极限呢?历经13年的项目实践和树莓
    的头像 发表于 05-22 16:53 1199次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:<b class='flag-5'>将</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    能够精准定位的树莓机器人!

    SenseHATx1导航需要用到SenseHAT扩展板。树莓3ModelBx1此项目中,我使用了三
    的头像 发表于 05-17 08:33 842次阅读
    能够精准定位的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>机器人!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×
    的头像 发表于 05-13 16:39 870次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    GPIO在树莓中的应用

    直接控制和读取外部硬件设备的状态。 1. GPIO简介 GPIO是树莓派上用于与外部世界交互的一组引脚。这些引脚可以被配置为输入输出模式,从而实现对外部设备的控制和数据读取。树莓
    的头像 发表于 01-09 09:41 1248次阅读

    STM32、Arduino树莓开发方式差异大吗

    最近看到有网友问:STM32、Arduino树莓开发方式差异大吗?   要说相同点,它们之间也有很多相同点。但你要说他们之间开发的差异,其实也蛮大的。   STM32、Arduino
    的头像 发表于 01-02 11:33 1930次阅读