UnihikerExpansionBoard

简介

这是一款深度适配行空板K10/M10的多功能扩展板,同时也支持结合microbit、掌控板等主板使用,解决多功能引脚不足、需外接电源、舵机/电机驱动能力不足等问题。
在为主板增加大量ADC、PWM、单总线、超声波等多功能IO引脚的同时,也保留了主板的原生金手指接口,并且集成了板载RGB灯、红外发射/接收功能。集成 18650 电池座与充放电电路,告别线缆和外接电池,同时板载电量指示灯,实现安全供电、便捷充电、持久续航,项目移动性大幅提升。集成四路直流电机驱动,舵机接口使用独立电源,可同时驱动4路电机和6路舵机。提供1路5V I2C接口,可用于驱动HUSKYLENS等大功率设备。底部M3安装孔孔距兼容乐高积木尺寸,可以结合乐高进行搭建。集成系统电源状态、电机正反转状态、电池电量、充电状态等多种指示灯,方便查看系统工作状态。所有接口都有清晰标注和彩色的接口区分,使用直观。
配合DFRobot强大的Gravity生态,让行空板K10创造更多可能。

产品特点

  • 板载4路直流电机驱动
  • 板载18650充电电池仓及充电电路,USB-C充电接口
  • 板载红外收发模块,RGB灯,增加可玩性
  • 协处理器扩展多路GPIO,可外接更多传感器
  • 支持5V I2C,外接二哈视图供电更稳定

技术规格

数字输入/输出IO:8个
全功能IO:6个
舵机接口:6个
I2C:4个(内含5V I2C * 1)
电池规格:18650可充电电池
充电输入规格:USB-C 5V
电机接口:4个直流电机
板载外设:RGB灯珠 * 2;红外发射; 红外接收器; TRIG超声波接口
尺寸:65 * 88mm
重量:200g

功能说明

行空板K10使用教程

硬件准备

  • 行空板K10 * 1
  • 行空板多功能扩展板 * 1
    注:多功能扩展板使用时需要单独供电,可通过安装18650电池或从扩展板的USB IN处供电,并需要打开PWR供电开关。

软件准备

[UnihikerExpansionBoard]
将上述URL链接复制到扩展->用户库的搜索框进行搜索导入

样例一 数字输入输出

额外硬件准备
Gravity: 数字LED发光模块 * 1
Gravity: 数字大按钮模块 * 1
硬件连接
UnihikerExpansionBoard

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
void setup()
{
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
	} 
	Serial.println("Device connected !");
	eunihiker.setMode(eC0, eReadGpio);
	eunihiker.setMode(eC1, eWriteGpio);
}

void loop()
{
	if(eunihiker.getGpioState(eC0) == 1){
		eunihiker.setGpioState(eC1, eHIGH);
	}
	else{
		eunihiker.setGpioState(eC1, eLOW);
	}
}

效果
按下按钮,LED灯亮。
松开按钮,LED灯灭。

UnihikerExpansionBoard

样例二 模拟输入

额外硬件准备
Gravity: 模拟角度传感器 * 1

硬件连接
UnihikerExpansionBoard

Mind+

Arduino IDE

#include "unihiker_k10.h"
#include "DFRobot_UnihikerExpansion.h"
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
  k10.begin();
  while(!eunihiker.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  } Serial.println("Device connected !");
  eunihiker.setMode(eC0, eADC);
  k10.initScreen(screen_dir);
  k10.creatCanvas();
}
void loop() {
  k10.canvas->canvasText((eunihiker.getADCValue(eC0)), 1, 0x0000FF);
  k10.canvas->updateCanvas();
}

UnihikerExpansionBoard

样例三 舵机驱动

额外硬件准备
DFRobot DF9GMS 180° 微型舵机 * 1
DFRobot DF9GMS 360°微型舵机 * 1

硬件连接
180°舵机连接到S0,360°舵机连接到S1
UnihikerExpansionBoard

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
void setup()
{
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
		} 
	Serial.println("Device connected !");
	eunihiker.setServo360(eServo0, eForward, 50);
}

void loop()
{
	eunihiker.setServoAngle(eServo1, 90);
	delay(1000);
	eunihiker.setServoAngle(eServo1, 180);
	delay(1000);
}

效果
180°舵机变换角度
360°舵机持续旋转

UnihikerExpansionBoard

样例四 板载RGB灯

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
uint32_t led[2] = {0x000000, 0x000000};

void setup()
{
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
		}
}

void loop()
{
	led[0] = 0x0000FF;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	led[1] = 0x0000FF;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	delay(1000);
	
	led[0] = 0xFF0000;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	led[1] = 0xFF0000;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	delay(1000);
	
	led[0] = 0x33CC00;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	led[1] = 0x33CC00;
	eunihiker.setWS2812((uint32_t*)led, 5*25);
	delay(1000);
}

效果
板载RGB灯珠变化
UnihikerExpansionBoard

样例五 红外收发

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
#include "unihiker_k10.h"

DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
UNIHIKER_K10 k10;
uint8_t screen_dir=2;

int times;

void setup()
{
	k10.begin();
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
	}
	k10.initScreen(screen_dir);
	k10.creatCanvas();
}

void loop()
{
	times = 1;
	while (!(times==5)) {
		eunihiker.sendIR(12345);
		k10.canvas->canvasText(eunihiker.getIRData(), times, 0x0000FF);
		k10.canvas->updateCanvas();
		times += 1;conglai
		delay(1000);
	}
	delay(1000);
	k10.canvas->canvasClear();
}

效果
UnihikerExpansionBoard

样例六 电机驱动

额外硬件准备
带接口金属齿轮减速电机 * 1

硬件连接
UnihikerExpansionBoard

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"

DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);

void setup()
{
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
	}
	eunihiker.setMotorPeriod(eMotor1_2, 255);
	eunihiker.setMotorPeriod(eMotor3_4, 255);
}

void loop()
{
	eunihiker.setMotorDuty(eMotor1_A, 200);
	eunihiker.setMotorDuty(eMotor1_B, 0);
	delay(3000);
	eunihiker.setMotorDuty(eMotor1_A, 0);
	eunihiker.setMotorDuty(eMotor1_B, 200);
	delay(3000);
}

效果
UnihikerExpansionBoard

样例七 电池电量检测

Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
#include "unihiker_k10.h"

UNIHIKER_K10 k10;
uint8_t screen_dir = 2;
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);

void setup()
{
	k10.begin();
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
	}
	eunihiker.setMotorPeriod(eMotor1_2, 255);
	eunihiker.setMotorPeriod(eMotor3_4, 255);
	k10.initScreen(screen_dir);
	k10.creatCanvas();
}

void loop()
{
	k10.canvas->canvasText("Battery:", 1, 0x0000FF);
	k10.canvas->canvasText((String(eunihiker.getBattery()) + String("%")), 2, 0x0000FF);
	k10.canvas->updateCanvas();
	Serial.println(eunihiker.getBattery());
	delay(1000);
}

效果
UnihikerExpansionBoard

样例八 温湿度传感器检测

额外硬件准备
Gravity DHT11温湿度传感器 * 1
Gravity DHT22 温湿度传感器 * 1
硬件连接
UnihikerExpansionBoard
Mind+

Arduino IDE

#include "DFRobot_UnihikerExpansion.h"
#include "unihiker_k10.h"

UNIHIKER_K10 k10;
uint8_t screen_dir=2;
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);

void setup()
{
	k10.begin();
	Serial.begin(115200);
	while(!eunihiker.begin()){
		Serial.println("NO Deivces !");
		delay(1000);
}
	eunihiker.setMode(eC0, eDHT11);
	eunihiker.setMode(eC1, eDHT22);
	k10.initScreen(screen_dir);
	k10.creatCanvas();
}

void loop()
{
	sDhtData_t dhtData;
	dhtData = eunihiker.getDHTValue(eC0);
	k10.canvas->canvasText((String((String("DHT11 Tem: ") + String((dhtData.temperature)))) + String("℃")), 1, 0x0000FF);
	k10.canvas->canvasText((String((String("DHT11 Hum: ") + String((dhtData.humidity)))) + String("%")), 2, 0x0000FF);
	dhtData = eunihiker.getDHTValue(eC1);
	k10.canvas->canvasText((String((String("DHT22 Tem: ") + String((dhtData.temperature)))) + String("℃")), 3, 0x0000FF);
	k10.canvas->canvasText((String((String("DHT22 Hum: ") + String((dhtData.humidity)))) + String("%")), 4, 0x0000FF);
	k10.canvas->updateCanvas();
	delay(1000);
}

效果
UnihikerExpansionBoard

样例九 DS18B20温度检测

额外硬件准备
Gravity DS18B20 数字温度传感器 * 1

硬件连接
UnihikerExpansionBoard

Mind+

Arduino IDE

#include "unihiker_k10.h"
#include "DFRobot_UnihikerExpansion.h"
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
  k10.begin();
  while(!eunihiker.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  } Serial.println("Device connected !");
  eunihiker.setMode(eC0, eDS18B20);
  k10.initScreen(screen_dir);
  k10.creatCanvas();
}
void loop() {
  k10.canvas->canvasText("18B20 Temp:", 1, 0x0000FF);
  k10.canvas->canvasText((eunihiker.get18b20Value(eC0)), 2, 0x0000FF);
  k10.canvas->updateCanvas();
}

效果
UnihikerExpansionBoard

样例十 超声波

额外硬件准备
TRIG-ECHO超声波(需要TRIG/ECHO引脚分开)* 1

硬件接线
UnihikerExpansionBoard

Mind+
UnihikerExpansionBoard

Arduino IDE

#include "unihiker_k10.h"
#include "DFRobot_UnihikerExpansion.h"

DFRobot_UnihikerExpansion_I2C eunihiker(&Wire) ;
UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
	k10.begin();
	while(!eunihiker.begin()){delay(1000);}
	k10.initScreen(screen_dir);
	k10.creatCanvas();
}
void loop() {
	k10.canvas->canvasText(eunihiker.getSr04Distance(), 1, 0x0000FF);
	k10.canvas->updateCanvas();
	delay(1000);
}

效果
UnihikerExpansionBoard

M10使用教程

硬件准备

  • 行空板M10 * 1
  • 行空板多功能扩展板 * 1
    注:多功能扩展板使用时需要单独供电,可通过安装18650电池或从扩展板的USB IN处供电,并需要打开PWR供电开关。
    多功能扩展板无法通过金手指为行空板M10供电,行空板M10需要从顶部USB-C处供电。可以借由HY2.0转USB-C线,购买多功能扩展板M10套装实现完全脱机。

软件准备

样例一 数字输入输出

额外硬件准备
Gravity: 数字LED发光模块 * 1
Gravity: 数字大按钮模块 * 1
硬件连接
UnihikerExpansionBoard

Mind+

Python

from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, IONum, IOType, GpioState
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")

Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_mode(IONum.C0, IOType.GPIO_IN)
eunihiker.set_mode(IONum.C1, IOType.GPIO_OUT)
while True:
    if (eunihiker.get_gpio_state(IONum.C0) == 1):
        eunihiker.set_gpio_state(IONum.C1, GpioState.HIGH)
    else:
        eunihiker.set_gpio_state(IONum.C1, GpioState.LOW)

效果
UnihikerExpansionBoard

样例二 模拟输入

硬件连接
UnihikerExpansionBoard

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, IONum, IOType


u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_mode(IONum.C0, IOType.ADC)
ana=u_gui.draw_text(text=eunihiker.get_adc_value(IONum.C0),x=0,y=0,font_size=20, color="#0000FF")
while True:
    ana.config(text=eunihiker.get_adc_value(IONum.C0))

效果
UnihikerExpansionBoard

样例三 舵机驱动

额外硬件准备
DFRobot DF9GMS 180° 微型舵机 * 1
DFRobot DF9GMS 360°微型舵机 * 1

硬件连接
180°舵机连接到S0,360°舵机连接到S1
UnihikerExpansionBoard

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, ServoNum
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, ServoNum, Servo360Direction

Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_servo360(ServoNum.SERVO0, Servo360Direction.FORWARD, 50)
while True:
    eunihiker.set_servo_angle(ServoNum.SERVO1,90)
    time.sleep(1)
    eunihiker.set_servo_angle(ServoNum.SERVO1,180)
    time.sleep(1)

效果
UnihikerExpansionBoard

样例四 板载RGB灯

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, RgbNum

Board("").begin()

eunihiker = UnihikerExpansion()
while True:
    eunihiker.set_ws2812(RgbNum.RGB0, 0x0000FF)
    eunihiker.set_bright(5*25)
    eunihiker.set_ws2812(RgbNum.RGB1, 0x0000FF)
    eunihiker.set_bright(5*25)
    time.sleep(1)
    eunihiker.set_ws2812(RgbNum.RGB0, 0xFF0000)
    eunihiker.set_bright(5*25)
    eunihiker.set_ws2812(RgbNum.RGB1, 0xFF0000)
    eunihiker.set_bright(5*25)
    time.sleep(1)
    eunihiker.set_ws2812(RgbNum.RGB0, 0x00FF00)
    eunihiker.set_bright(5*25)
    eunihiker.set_ws2812(RgbNum.RGB1, 0x00FF00)
    eunihiker.set_bright(5*25)
    time.sleep(1)

效果
UnihikerExpansionBoard

样例五 红外收发

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion

u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
while True:
    sec = 1
    while not ((sec == 5)):
        eunihiker.send_ir(12345)
        time.sleep(0.1)
        text=u_gui.draw_text(text=eunihiker.get_ir_data(),x=0,y=(sec * 25),font_size=20, color="#0000FF")
        sec = (sec + 1)
    time.sleep(1)
    u_gui.clear()

样例六 电机驱动

额外硬件准备
带接口金属齿轮减速电机 * 1

硬件连接
UnihikerExpansionBoard

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, MPeriod, MotorNum

Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_motor_period(MPeriod.MOTOR1_2, 255)
eunihiker.set_motor_period(MPeriod.MOTOR3_4, 255)
while True:
    eunihiker.set_motor_duty(MotorNum.MOTOR1_A, 200)
    eunihiker.set_motor_duty(MotorNum.MOTOR1_B, 0)
    time.sleep(3)
    eunihiker.set_motor_duty(MotorNum.MOTOR1_A, 0)
    eunihiker.set_motor_duty(MotorNum.MOTOR1_B, 200)
    time.sleep(3)

效果
UnihikerExpansionBoard

样例七 电池电量检测

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion

u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
while True:
    BAT=u_gui.draw_text(text="Battery:",x=0,y=0,font_size=20, color="#0000FF")
    bat=u_gui.draw_text(text=(str(eunihiker.get_battery()) + str("%")),x=0,y=25,font_size=20, color="#0000FF")
    time.sleep(1)
    bat.remove()

效果
UnihikerExpansionBoard

样例八 温湿度传感器检测

额外硬件准备
Gravity DHT11温湿度传感器 * 1
Gravity DHT22 温湿度传感器 * 1
硬件连接
UnihikerExpansionBoard

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, IONum, IOType

u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_mode(IONum.C0, IOType.DHT11)
eunihiker.set_mode(IONum.C1, IOType.DHT22)
while True:
    T11=u_gui.draw_text(text=(str((str("DHT11 Tem:") + str(eunihiker.get_dht_value(IONum.C0).temperature))) + str("℃")),x=0,y=0,font_size=18, color="#0000FF")
    H11=u_gui.draw_text(text=(str((str("DHT11 Hum:") + str(eunihiker.get_dht_value(IONum.C0).humidity))) + str("%")),x=0,y=25,font_size=18, color="#0000FF")
    T22=u_gui.draw_text(text=(str((str("DHT22 Tem:") + str(eunihiker.get_dht_value(IONum.C1).temperature))) + str("℃")),x=0,y=50,font_size=18, color="#0000FF")
    H22=u_gui.draw_text(text=(str((str("DHT22 Hum:") + str(eunihiker.get_dht_value(IONum.C1).humidity))) + str("%")),x=0,y=75,font_size=18, color="#0000FF")
    time.sleep(1)
    u_gui.clear()

效果
UnihikerExpansionBoard

样例九 DS18B20温度传感器

额外硬件准备
Gravity DS18B20 数字温度传感器 * 1

硬件连接
UnihikerExpansionBoard

Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion, IONum, IOType

u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
eunihiker.set_mode(IONum.C0, IOType.DS18B20)
bat=u_gui.draw_text(text=(str(eunihiker.get_18b20_value(IONum.C0)) + str("℃")),x=0,y=0,font_size=20, color="#0000FF")
while True:
    bat.config(text=(str(eunihiker.get_18b20_value(IONum.C0)) + str("℃")))

效果
UnihikerExpansionBoard

样例十 超声波传感器

额外硬件准备
TRIG-ECHO超声波(需要TRIG/ECHO引脚分开)* 1

硬件接线
UnihikerExpansionBoard
Mind+

Python

import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/drobot_yeezb-unihikerioexpansion-thirdex")
import time
from unihiker import GUI
from pinpong.board import Board
from dfrobot_unihiker_expansion import UnihikerExpansion


u_gui=GUI()
Board("").begin()

eunihiker = UnihikerExpansion()
while True:
    us=u_gui.draw_text(text=eunihiker.get_sr04_distance(),x=0,y=0,font_size=20, color="#0000FF")
    time.sleep(0.5)
    u_gui.clear()

效果
UnihikerExpansionBoard

更多资料

DFshopping_car1.png DFRobot商城链接