本帖最后由 gada888 于 2022-4-1 15:40 编辑
433MHz无线模块已经在工具箱里躺了很久了。趁今天有时间就把他拿出来擦一擦亮。小车做过不老少了。433M小车就没弄过。于是今天的主题就是433MHz的小车了。它的遥控控制距离有15米。那么控制小车很合适。它上面有D0-D3四个数字接收口,那么控制小车需要前进,停止,左转和右转这些常用功能也就足够了。话不多说。先上图片。
全貌图
发射端图
接收端图
视频链接如下:
一.硬件清单
二.主要模块介绍:
1.“Gravity: 数字量无线开关”
一款利用433Mhz射频通信技术的无线开关模组,包括发射器和接收器两部分。具有穿透性强、待机功耗低等优势。
[td]- 操作简单、可扩展性强
- 穿透性强
- 待机超低功耗
- 发射器15种按键状态
- 接收器具有配对功能
- 支持一发多收/一收多发
- 具有点动、锁存、自锁、互锁四种工作模式
- 数字量信号,支持3.3-5V电源输入
2.Romeo 三合一Arduino兼容控制器
DFRduino RoMeo控制器是一个兼容Arduino的专为机器人应用而设计的,受益Arduino开源平台,因此受到成千上万的开放源码的支持,并可以很容易地扩展arduino模块。 集成2路直流电动机驱动器和无线插座,给出了一个更简单容易的方式开始你的机器人项目。 性能描述
- Atmega 328
- 14 通道数字 I/O
- 6 PWM 通道 (Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)
- 8通道10位模拟I / O
- USB接口
- 自动切换输入电源
- ICSP下载程序接口
- 串行接口TTL电平
- 支持AREF
- 具有排母和排针接口
- 具有APC220射频模块和DF-蓝牙模块插座
- 具有3个I2C接口
- 2个2A大电流的H桥马达驱动器
- 模拟5键输入
- 直流电源:USB供电或外部7V〜12V直流。
- DC输出:5V/3.3V直流外接电源输出
=============================================
三.其他主要附件的图片如下:
=======================================
四.连线图。
一共有两个图。一个是接收端图,另一个是发射端图发射端如下:
接收端如下:Romeo的供电是7.4-12V。这里用的是三节3.7V的锂电池
五.最后是代码部分。在arduino ide 1.8.3测试通过
- /*遥控小车由gada888于2022.03.25原创制作,转载请引用来源,谢谢,遥控模块是DFRobot的Gravity: 数字量无线开关*/
-
- #define Button_D0 7//Arduino
- #define Button_D1 8//Arduino
- #define Button_D2 2//Arduino
- #define Button_D3 3//Arduino
- int M1 = 5;
- int M2 = 6;
-
- void setup() {
- Serial.begin(115200);
- pinMode(Button_D0, INPUT);
- pinMode(Button_D1, INPUT);
- pinMode(Button_D2, INPUT);
- pinMode(Button_D3, INPUT);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- }
-
- void loop() {
- if (((digitalRead(Button_D0)==1) && (digitalRead(Button_D1)==0)) && ((digitalRead(Button_D2)==0) && (digitalRead(Button_D3)==0))) {
- digitalWrite(M1,HIGH);
- digitalWrite(M2,HIGH);
- Serial.println("全速前进");
- }
- if (((digitalRead(Button_D0)==0) && (digitalRead(Button_D1)==1)) && ((digitalRead(Button_D2)==0) && (digitalRead(Button_D3)==0))) {
- digitalWrite(M1,LOW);
- digitalWrite(M2,LOW);
- Serial.println("停止前进");
- }
- if (((digitalRead(Button_D0)==0) && (digitalRead(Button_D1)==0)) && ((digitalRead(Button_D2)==1) && (digitalRead(Button_D3)==0))) {
- digitalWrite(M1,HIGH);
- digitalWrite(M2,LOW);
- Serial.println("向左转");
- }
- if (((digitalRead(Button_D0)==0) && (digitalRead(Button_D1)==0)) && ((digitalRead(Button_D2)==0) && (digitalRead(Button_D3)==1))) {
- digitalWrite(M1,LOW);
- digitalWrite(M2,HIGH);
- Serial.println("向右转");
- }
- }
复制代码
|