我们需要什么?
1。 两个Arduino Pro mini
2。一个433 MHz无线接收器
3。一个433 MHz无线发射器
4。串行TTL / FTDI FT232RL模块(如果您使用arduino Pro mini)
5。电线,导线,焊锡,烙铁......
我们想要两个Arduinos之间的通过无线电进行通信。这两个非常便宜的模块对于我们需要近距离的小型项目而言是非常有用的。这些模块的最大操作范围不超过20米。它们非常易于使用和连接。您只需要一个电源和数据连接。缺点是我们一次只能发送一个字节,因此速度不是很快,数据包非常小。但是,如果我们只使用按钮的高低状态,那么为机器人创建这样的遥控器将是完美的。
接线图
编程
首先,我们需要将Arduino FTDI模块的5伏连接到Vcc arduino进行供电。我们还将GND连接到微控制器的GND。我们为Arduino提供电源。如果在这里使用Arduino pro mini,您可以用FTDI模块来进行程序烧录。
接线来烧录微控制器:我们编程时,连接到RAW引脚,电压在6到12伏之间(电池,USB等)连接很简单。我们直接从arduino为每个模块供电5伏Vcc。将地线连接到地,数据线连接到arduino的任何数字引脚。我这次选择了D7针。在接收器的情况下,两个中间引脚中的任何一个都起作用。两者是相同的RX引脚。对于这个项目,我们需要在编译和烧录微控制器之前使用VirtualWire库。
请自行下载VirtualWire库
为了测试我们的连接,我们将使用一个按钮和一个LED。我们将按钮连接到地,按钮的另一个引脚将通过一个上拉电阻连接到Vcc。连接到地按钮的同一个引脚将转到arduino的一个数字引脚。在这种情况下将是引脚D10。这样,如果我们不按下按钮,我们将有一个低数字输入和我们按下它的每个时间,我们将有一个高数字输入。
发射器代码
//Transmitter code (ProMini)
#include <Vir;//We inport necessary libraries
#include <Wire.h>
int boton=10;//We create the button INPUT using pin 10
void setup() {
pinMode(boton,INPUT);//The D10 pin as input
vw_setup(4000);//comunication speed, it can be 2000, 4000 and up to 8000
vw_set_tx_pin(7);//Pin 7 is the TX pin
}
void loop() {
//Low input -> we send a "0"
if (digitalRead(boton)==LOW)
{
char msg[1] = {'0'};
vw_send((uint8_t *)msg, 1);
vw_wait_tx();
}
//Hign input -> we send a "1"
if (digitalRead(boton)==HIGH)
{
char msg[1] = {'1'};
vw_send((uint8_t *)msg, 1);
vw_wait_tx();
}
}
接收器代码
//Receiver code (ProMini)
#include <Vir;//Inport necessary libraries
#include <Wire.h>
int LED=10;//We create the led OUTPUT using D10 pin
void setup() {
pinMode(LED,OUTPUT);//Define the 10 pin as output
vw_setup(4000);//comunication speed, it can be 2000, 4000 and up to 8000
vw_set_tx_pin(7);//define the 7 pin as RX pin
}
void loop() {
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[buflen];
if(vw_get_message(buf, &buflen))
{
for(int i = 0;i < buflen;i++)
{
if(buf[i] == '0')//If a "0" is received we turn off the led
{
digitalWrite(LED,LOW);
}
else if(buf[i] == '1')//If a "1" is received we turn on the led
{
digitalWrite(LED,HIGH);
}
}
}
}