概 述

Arduino是一款开源的控制板,非常适合爱好电子制作的朋友制作互动作品,但对于一些不熟悉电子技术的人,要在Arduino上添加电路是一个比较麻烦是事,所以我们设计了一个传感器扩展板,能使大部分传感器轻松地和Arduino控制板连接。

特色描述

1.扩展14个数字 IO口(12个舵机接口)及电源;

2.6个模拟IO口及电源;

3.1个数字端口外接电源接线柱,外部供电和内部供电自动切换;

4.数字端口外部供电和板载电源自动切换;

5.1个外接电源输入接线柱和1个输入插针;

6.RS485接口;

7.复位按钮;

8.xbee/Bluetooh Bee蓝牙无线数传接口;

9.APC220/Bluetooh V3蓝牙无线数传接口;

10.IIC/I2C/TWI接口;

11.3.3V输出端口;

12.SD卡模块接口;

技术规格

1.模块电源:+5V

2.舵机电源:+5V

3.输出电源:+3.3V

4.模块尺寸:57x54mm

引脚定义

DFRduino_IO_Expansion_V5_1.jpg

数字传感器的使用

数字传感器需要使用数字传感器连接线接插到数字口 D0-D13,绿色为信号,红色为电源正,黑色为电源地。

DFRduino_IO_Expansion_V5_2.jpg

DFRduino_IO_Expansion_V5_3.jpg

DFRduino_IO_Expansion_V5_4.jpg

Arduino数字大按钮实验代码:

 int ledPin = 13;                // choose the pin for the LED
 int inputPin = 2;               // choose the input pin (for a pushbutton) 按键接到数字2
int val = 0;                    // variable for reading the pin status
 void setup() {
 pinMode(ledPin, OUTPUT);      // declare LED as output
 pinMode(inputPin, INPUT);     // declare pushbutton as input
 }
 void loop(){
   val = digitalRead(inputPin);  // read input value
   if(val == HIGH) {            // check if the input is HIGH
      digitalWrite(ledPin, LOW);  // turn LED OFF
     } else {
      digitalWrite(ledPin, HIGH); // turn LED ON
     }
 }

模拟传感器的使用

模拟传感器需要使用模拟传感器连接线接插到模拟口A0-A5,红色为电源正,黑色为电源地 ,蓝色为信号。

DFRduino_IO_Expansion_V5_5.jpg

DFRduino_IO_Expansion_V5_6.jpg

DFRduino_IO_Expansion_V5_7.jpg

Arduino模拟环境光实验代码:

 void setup()
 {
   Serial.begin(9600); // 9600 bps
 }
 void loop()
 {
     int val;
     val=analogRead(0);
     Serial.println(val ,DEC);
     delay(100);
 }

根据光线强弱的变化,读取到的值也会随其变化。打开串口助手可以看到检测结果。

IIC接口的使用

DFRduino_IO_Expansion_V5_8.jpg

Arduino IICLCD实验代码:

 #include <Wire.h>
 #include <LiquidCrystal_I2C.h>
 LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 void setup()
 {
   lcd.init();                      // initialize the lcd
   // Print a message to the LCD.
   lcd.backlight();
   lcd.print("Hello, world!");
 }
 void loop()
 {
 }

舵机的使用

舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。

DFRduino_IO_Expansion_V5_9.jpg

舵机属于大电流器件,在使用时需要单独供电,Arduino上的5V供电仅提供800mA电流,不能维持舵机的需要。当数字口用于驱动舵机时,由于舵机电流较大,这时就需要外部电源供电,从数字口外部供电接口接入,电压必须大于5V将自动断开Arduino控制器的5V。舵机供电电压需要符合所使用的舵机额定电压。

使用Arduino 0017-0018可以让Arduino控制器的Pin2-13端口控制12个舵机。如上图连接。

演示代码:

 #include <Servo.h>
 Servo servo1;
 Servo servo2;
 Servo servo3;
 void setup()
 {
   servo1.attach(8);               //定义舵机1控制口为Pin8
   servo2.attach(9);              //定义舵机2控制口为Pin9
   servo3.attach(10);              //定义舵机3控制口为Pin10
   Serial.begin(19200);           //设置波特率
   Serial.print("Ready");
 }
 void loop()
 {
   static int v = 0;
   if ( Serial.available()) {
   char ch = Serial.read();       //读取串口数据
    switch(ch) {
     case '0'...'9':
       v = v * 10 + ch - '0';  //字符换算成10进制
       break;
     case 'a':             //如果数据后带a,则表示是servo1的数据,比如串口发送85a
       servo1.write(v);
       v = 0;
       break;
     case 'b':             //如果数据后带b,则表示是servo2的数据,比如串口发送90b
       servo2.write(v);
       v = 0;
       break;
     case 'c':             //如果数据后带c ,则表示是servo3的数据,比如串口发送180c
       servo3.write(v);
       v = 0;
       break;
      }
   }
 }

程序功能:通过IDE中的串口助手,发送舵机度数控制舵机转动的角度,比如发送字符85a表示舵机1转动85度,发送字符180c表示舵机3转动180度。