Arduino UnoPro4M
May 20, 2023About 4 min
简介
Arduino Uno Pro4M 是在Arduino Uno R3的基础上增加了4个电机驱动和一个JDY33无线蓝牙模块,电机的接口类型为XH2.54-2P。
产品参数
- 处理器: Arduino Uno Pro4M采用Atmel AVR 8位微控制器ATmega328P作为主要处理器,具有高性能和低功耗。
- 时钟频率: Arduino Uno Pro4M的时钟频率为16 MHz,能够提供快速且可靠的计算能力。
- 数字I/O引脚: Arduino Uno Pro4M拥有14个数字输入/输出引脚(其中6个可用作PWM输出)供连接各种外部设备和传感器。
- 模拟输入引脚: Arduino Uno Pro4M具有6个模拟输入引脚,可用于读取模拟信号,例如温度、光线等。
- 存储器: Arduino Uno Pro4M具有32KB的闪存程序存储空间,用于存储用户编写的程序,以及2KB的SRAM和1KB的EEPROM。
- 通信接口: Arduino Uno Pro4M支持串口通信(通过USB接口)和I2C、SPI等常用通信协议,方便与其他设备进行数据交互。
- 蓝牙:Arduino Uno Pro4M 支持蓝牙通信。
- 输入电压: USB5V、DC6-12V
- 输出电压: 3.3V-5V
- 开发环境: Arduino、Mind+、Mixly等。
引脚说明
![Arduino Uno Pro 4M](/assets/img/arduino/uno/UnoPro4MFoot.png)
序号 | 引脚名称 | 功能描述 |
---|---|---|
1 | D0 | 数字输入/输出引脚 |
2 | D1 | 数字输入/输出引脚 |
3 | D2 | 数字输入/输出引脚 |
4 | D3 | M1电机正转 |
5 | D4 | M4电机正转 (无法调速) |
6 | D5 | M2电机正转 |
7 | D6 | M2电机反转 |
8 | D7 | M4电机反转(无法调速) |
9 | D8 | 数字输入/输出引脚 |
10 | D9 | M3电机正转 |
11 | D10 | M3电机反转 |
12 | D11 | M1电机反转 |
13 | D12 | 数字输入/输出引脚 |
14 | D13 | 数字输入/输出引脚 |
15 | A0 | 模拟输入引脚 |
16 | A1 | 模拟输入引脚 |
17 | A2 | 模拟输入引脚 |
18 | A3 | 模拟输入引脚 |
19 | A4 | 模拟输入引脚,也用作I2C总线的SDA引脚 |
20 | A5 | 模拟输入引脚,也用作I2C总线的SCL引脚 |
21 | 5V | 5V电源引脚 |
22 | 3.3V | 3.3V电源引脚 |
23 | GND | 地引脚 |
24 | RESET | 复位引脚 |
驱动电机
ArduinoUno Pro4M 支持驱动四路电机M1、M2、M3、M4,M1是由D3、D11引脚控制的,M2是由D5、D6引脚控制的,M3是由D9、D10引脚控制,M4是由D4、D7引脚控制。
其中M4电机无法控制转速,只能控制转与不转,M1、M2、M3可以通过PWM来控制电机的转速。
控制电机的时候必须通过DC口单独供电USB电源无法带动电机。
电机转动
电机转动:如果想控制M1电机正转只需要设置D3引脚高电平D11引脚低电平,反转就是D3引脚低电平D11引脚高电平。M2电机只是引脚(D5、D6)不一样,控制方法一样。
M1电机正转
![](/assets/img/arduino/uno/UnoPro2MMottor1.png)
电机转速
电机转速:如果想要控制M1电机转速需要通过控制引脚的PWM值,比如让M1电机正转转速120,就需要设置D3引脚输出PWM120,D11引脚为低电平。
M1正转调速
![](/assets/img/arduino/uno/UnoPro2MMottor2.png)
M2、M3跟M1的操作方法一样,只需换一下引脚既可以。M4电机只能控制转与不转,无法控制转速,因为Arduino Uno只有6个PWM引脚。
Arduino Uno Pro4M
蓝牙驱动电机示例程序
uint8_t package=0;
void setup() {
Serial.begin(115200);//串口和Arduino之间的通信
pinMode(3, OUTPUT);
pinMode(11, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
digitalWrite(6, LOW);
digitalWrite(10, LOW);
digitalWrite(7, LOW);
digitalWrite(11, LOW);
digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(4, LOW);
}
void loop() {
while(Serial.available()>0){
package = Serial.read();
};
if(package==0x01)
{
digitalWrite(11, LOW);
digitalWrite(3, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
}else if(package==0x02)
{
digitalWrite(3, LOW);
digitalWrite(11, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
}
if(package==0x04)
{
digitalWrite(11, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
}else if(package==0x08)
{
digitalWrite(3, LOW);
digitalWrite(11, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
}
if(package==0x0A)
{
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
}else if(package==0x14)
{
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
}
if(package==0x28)
{
digitalWrite(7, LOW);
digitalWrite(4, HIGH);
}else if(package==0x50)
{
digitalWrite(4, LOW);
digitalWrite(7, HIGH);
}
if(package==0)
{
digitalWrite(6, LOW);
digitalWrite(10, LOW);
digitalWrite(7, LOW);
digitalWrite(11, LOW);
digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(4, LOW);
digitalWrite(13, LOW);
}
else
{
digitalWrite(13, HIGH);
}
delay(20);
}
蓝牙与主板通信软件
![软件图](/assets/img/arduino/uno/UnoPro4M_Soft.png)
JDY33蓝牙资料
串口读取蓝牙信号
不能直接使用主板串口读取JDY33蓝牙接收值,需要外接TTL下载模块,通过串口助手来读取接收值。
TTl的RX接到主板的0引脚,读取蓝牙的发送数据,接到1管脚,就能读取到单片机发送到蓝牙的数据。
学习资料
串口驱动下载
疑难解答
更多问题及有趣的应用,请访问论坛 或加入QQ技术交流群:522420541