Raspberry Pi运行Arduino Sketch

背景知识视频教程

  • Arduino分步指南:完整指南
  • 面向新手的完整Python 3和Raspberry Pi大师课程
  • Raspberry Pi:家庭监视和控制

在本文中,您将学习如何在Raspberry Pi上运行为Arduino编写的sketch。 这将使我们能够将Arduino代码编译为可以在Raspberry Pi上运行的二进制文件。 但是在我们这样做之前,我们必须在Arduino IDE和Raspberry Pi上做一些准备。

硬件

软件

Arduino IDE设置

  1. 打开Arduino安装文件夹。在Windows系统上,最有可能在32位系统上为“ C:\ Program Files \ Arduino”,在64位系统上为“ C:\ Program Files(x86)\ Arduino”。
  2. 打开文件夹“ hardware”,并在该文件夹中创建一个名为“ RaspberryPi”的新文件夹。

Raspberry Pi设置

  1. 转到 https://www.raspberrypi.org/downloads/并下载最新的Raspberry OS – Raspbian。将其安装到Raspberry(通过使用NOOBS安装程序,或直接将其安装到SD卡)。

基本示例:LED和控制台

理论已经足够,需要一些练习的时间! 我们将以最基本的Arduino功能开始工作:LED和串行输出。 我们将使用以下Arduino Sketch,这是经过稍微修改的“ Fading” Arduino示例。 使用PWM(脉冲宽度调制)设置LED亮度,并将当前的PWM值打印到控制台。

// GPIO pin with PWM support
int pwmLedPin = 12;

// GPIO pin without PWM support
int onOffLedPin = 6;

void setup() {
// set both pins to output
pinMode(pwmLedPin, OUTPUT);
pinMode(onOffLedPin, OUTPUT);
}

void loop() {
// turn the first LED fully on
digitalWrite(onOffLedPin, HIGH);
// fade in the second LED
for(int pwm = 0; pwm <= 255; pwm += 5) {
// set the PWM value
analogWrite(pwmLedPin, pwm);
// print the PWM value to console
Console.println(pwm);
delay(30);
}

// turn the first LED fully off
digitalWrite(onOffLedPin, LOW);
// fade out the second LED
for(int pwm = 255; pwm >= 0; pwm -= 5) {
// set the PWM value
analogWrite(pwmLedPin, pwm);
// print the PWM value to console
Console.println(pwm);
delay(30);
}
}

我们有了代码,现在我们需要将所有组件连接在一起。这里也没有什么复杂的,只有两个LED和10k电阻。

现在,所有控制台输出将出现在控制台中。 与其他任何终端程序一样,可以通过键盘快捷键Ctrl + C停止该程序。 我更喜欢手动上传,因为它不需要设置其他服务,并且通常更可靠(至少在我的设置下)。

使用以上两种方法之一上载sketch,并观察其中一个LED闪烁,另一个则逐渐淡入和淡出!

sketch还将当前的PWM值打印到控制台中,这就是输出的样子。

高级示例:SPI和I2C

显然,您可以通过闪烁的LED和控制台输出来完成出色的工作,但是我认为,当添加一些更高级的功能(例如I2C和SPI)时,您可以做的事情更多。 RasPiArduino框架也支持这些框架,因此我们可以使用I2C总线将Raspberry连接到许多不同的传感器,或者使用SPI总线连接到通信模块之类的东西。 对于I2C设备,我将使用ROHM传感器评估套件中的BH1745NUC颜色传感器,对于SPI设备,我将使用SX1278 LoRa模块。 它们都在3.3V逻辑上运行,因此将它们与Raspberry连接就像连接几根电线一样容易。

// define the sensor we will use
#define INCLUDE_BH1745NUC

// include the libraries
#include 
#include 

// instantiate the sensor's class
BH1745NUC sensorColor;

// SX1278 digital I/O pin 0
int dio0 = 17;

// SX1278 digital I/O pin 1
int dio1 = 27;

// SX1278 SPI slave select pin
int nss = 22;

// create LoRa class instance
LoRa lora(CH_SX1278, nss, BW_125_00_KHZ, SF_9, CR_4_7, dio0, dio1);

// create empty instance of Packet class
Packet pack;

void setup() {
// start I2C communication
Wire.begin();

这就是电路的样子。它虽然不漂亮,但可以完成工作。

在此示例中,所有重要信息都被打印到Raspberry控制台。 我们可以看到SX1278成功接收到包含字符串“ Hello Raspberry!”的数据包。 (从Arduino通过LoRenz屏蔽发送),并且颜色传感器正在测量正确的值!

详情参阅http://viadean.com/rPi_arduino_ske.html

你可能感兴趣的:(Arduino,Raspberry,Pi)