简介
这是一款深度适配行空板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使用教程
硬件准备
软件准备
- 使用Mind+
Mind+下载
Mind+用户库:
https://gitee.com/yeezb/ext-unihiker-expansion
[]
将上述URL链接复制到扩展->用户库的搜索框进行搜索导入
- 使用Arduino IDE
Arduino IDE下载(需下载Arduino 1.8.19及以下版本)
Arduino library:
https://gitee.com/dfrobot/DFRobot_UnihikerExpansion
样例一 数字输入输出
额外硬件准备
Gravity: 数字LED发光模块 * 1
Gravity: 数字大按钮模块 * 1
硬件连接
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);
}
}
样例二 模拟输入
额外硬件准备
Gravity: 模拟角度传感器 * 1
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();
}
样例三 舵机驱动
额外硬件准备
DFRobot DF9GMS 180° 微型舵机 * 1
DFRobot DF9GMS 360°微型舵机 * 1
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°舵机持续旋转
样例四 板载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);
}
样例五 红外收发
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();
}
样例六 电机驱动
额外硬件准备
带接口金属齿轮减速电机 * 1
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);
}
样例七 电池电量检测
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);
}
样例八 温湿度传感器检测
额外硬件准备
Gravity DHT11温湿度传感器 * 1
Gravity DHT22 温湿度传感器 * 1
硬件连接
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);
}
样例九 DS18B20温度检测
额外硬件准备
Gravity DS18B20 数字温度传感器 * 1
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();
}
样例十 超声波
额外硬件准备
TRIG-ECHO超声波(需要TRIG/ECHO引脚分开)* 1
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);
}
M10使用教程
硬件准备
- 行空板M10 * 1
- 行空板多功能扩展板 * 1
注:多功能扩展板使用时需要单独供电,可通过安装18650电池或从扩展板的USB IN处供电,并需要打开PWR供电开关。
多功能扩展板无法通过金手指为行空板M10供电,行空板M10需要从顶部USB-C处供电。可以借由HY2.0转USB-C线,购买多功能扩展板M10套装实现完全脱机。
软件准备
-
使用Mind+
Mind+下载
Mind+用户库:
https://gitee.com/yeezb/ext-unihiker-expansion
将上述URL链接复制到扩展->用户库的搜索框进行搜索导入
-
使用其他Python编辑器
Python library:
https://gitee.com/dfrobot/DFRobot_UnihikerExpansion
样例一 数字输入输出
额外硬件准备
Gravity: 数字LED发光模块 * 1
Gravity: 数字大按钮模块 * 1
硬件连接
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)
样例二 模拟输入
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))
样例三 舵机驱动
额外硬件准备
DFRobot DF9GMS 180° 微型舵机 * 1
DFRobot DF9GMS 360°微型舵机 * 1
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)
样例四 板载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)
样例五 红外收发
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
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)
样例七 电池电量检测
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()
样例八 温湿度传感器检测
额外硬件准备
Gravity DHT11温湿度传感器 * 1
Gravity DHT22 温湿度传感器 * 1
硬件连接
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()
样例九 DS18B20温度传感器
额外硬件准备
Gravity DS18B20 数字温度传感器 * 1
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("℃")))
样例十 超声波传感器
额外硬件准备
TRIG-ECHO超声波(需要TRIG/ECHO引脚分开)* 1
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()