Nobby-AI 1 用户手册
目录
前言 3
第一章 产品介绍 4
一、MC101 控制器 4
二、执行器和传感器 5
第二章 软件介绍 7
一、软件下载与安装 7
二、连接控制器与下载程序 7
三、流程图编程 8
1、流程图界面介绍 8
2、模块使用说明 9
3、模块介绍 9
四、C 语言与 Python 语言编辑界面介绍 15
1、 C 语言界面介绍 15
2、 Python 语言界面介绍 16
第四章 编程示例 17
一、触碰传感器控制电机停转 17
二、红外传感器检测 18
第五章 巡线入门 19
前言
本书介绍了 Nobby-AI 1 系列积木机器人及配套的 WhalesBot Scratch 软件 的使用方法,并提供一些简单的编程实例,帮助用户更好更快的学习使用积木机 器人和软件。在你拿到本产品后,请务必认真研读该手册。
Nobby-AI
1 系列积木机器人是我公司最新推出的控制器和软件,不仅可以 满足日常机器人教学,更能满足机器人竞赛等多种应用环境。WhalesBot
Scratch 软件可实现当前主流 Scratch 和 Python 编程学习,支持条形图编程、标准 C 语 言编程和 Python
编程三种编程方式。流程图模块包含所有端口功能,支持子程 序功能等可视化编程。含有动作、传感器(侦测)、控制、程序、数据、高级、 巡线 7
大功能模块;基于全新跨平台技术开发,可适用于 Windows、Mac 等操作 系统,同时可以多线程编程。条形图可自动生成 C 和 Python
语言,C 语言支持 指针、数组、结构体等复杂应用,机器人库函数全部开放。
第一章 产品介绍
一、MC101 控制器
MC101
控制器是研发的最新一代控制器,具有高性能、 低功耗, 程序存储容量大,接口丰富,体积小且稳定可靠 等特点。MC101 控制器顶端为
I/O、I^2C、URART 通用接 口,底端接口为电机接口、MiniUSB 接口,正面是按键和扬 声器,背部是电池仓。
处理器:32位Cortex-M3处理器,时钟频率72MHz, 512KB FlashROM,64K RAM;
存储:采用32Mbit大容量存储芯片,内置多种音效,可随软件升级扩展更 多的功能;
端口:提供10路各类输入输出接口,其中5路数字/模拟接口(AI、DO);提 供4路闭环电机控制接口,单路最大电流1.5A;1路RS485伺服电机串行接口,最 大电流6A;USB接口可支持在线调试模式,方便程序调试;
按键:设置一个按键,简化了用户操作,通过这个按键可以开关机、运行 程序、进行蓝牙配对等功能。通过按钮内置的指示灯可以显示控制器的各种工 作状态。
⚫ 灯灭:处于关机状态
⚫ 白色:处于开机状态
⚫ 白色闪烁:正在运行程序
⚫ 黄色闪烁:正在下载程序
⚫ 红色闪烁:电池电量不足
其他:系统工作电压 6.8~10V。工作状态显示,声音播放等功能。
MC101 控制器固件升级
固件是置于WhalesBot Scratch软件。没有固件,MC101控制器将无法工 作。
有时会发布新的固件版本,添加增强功能或修复软件缺陷。 更新固件时需要用 USB 线将您的计算机连接到MC101控制器。 1. 打开MC101控制器,将其连接到您的计算机。
2. 在“”菜单中选择“固件升级”。出现以下界面:
3. 单击“开始升级”按钮,检查固件是否可升级。
4. “选择固件”在可用固件文件中选择最新固件版本。
5. 如果您想改用计算机上的某个固件版本,单击“浏览”按钮,找到并选
择正确的固件文件。
6. 单击“开始升级”按钮,下载新版固件到MC101控制器。“固件升级”对 话窗口的底部进度条将会显示固件升级进度。一旦完成,MC101控制器将会自动 重启。
如果在固件升级过程中,MC101控制器停止工作,您将需要按照以上步骤 重复升级固件(MC101控制器同样需要使用 USB 线连接到您的计算机)。
二、执行器和传感器
名称
|
图
|
相关模块
|
使用方法
|
智能电机
|
|
反转电机
电机 停止电机
|
新一代智能电机,拥有体积小、
转速高、扭矩大特点,具有开 环和闭环两种工作模式,可控 制旋转速度和旋转圈数精准的 驱动机器人,完成各项任务。
|
LED 点阵屏
|
|
LED 阵列-表情
LED 阵列-符号 LED 阵列-自定 义
|
采用点阵式 LED 显示技术,内
置多种机器人表情、五十多种 符号,适合多种场景使用,大 大的提升了机器人的趣味性和 表现能力。
|
红外传感器
|
|
红外测距
|
红外测距传感器是一种模拟传
感器,可以检测从固体物体反 射回来的红外光,达到检测距 离的目的。通过探测物体的距 离,实现测距、避障等高级路 径规划应用。
测距范围:10-50cm 对应数值范围:0-2300
|
触碰传感器
|
|
触碰开关
|
触碰传感器是一种数字传感
器,具有按下和松开两种状 态,通过检测机器人的碰撞状 态来实现避障等功能。 触碰开/关状态对应值:0/4000
|
集成灰度
传感器
|
|
巡线
|
集成灰度传感器具有 5 个灰度
探测器,通过高度集成的一体 化设计和内置的高性能协处理 器,简化了机器人的应用难 度,配合控制器可实现更高性 能的巡线功能。
|
第二章 软件介绍
一、软件下载与安装
WhalesBot Scratch 软件可从官方网站的对应下载区下载最新软件。运行 WhalesBot Scratch(标准版)Setup.exe,按照安装提示完成 WhalesBot Scratch 软件的安装。
二、连接控制器与下载程序
WhalesBot Scratch 软件连接控制器时,请确实控制器电量充足、USB 连接 线已与电脑和控制器连接。当控制器连接电脑时,会使关闭状态下控制器自动 开机,并有开机提示音“你好!我是小鲸。”
当编程写好程序之后,点击“”下载图标,会出现以下四种提示:
当提示下载成功时,即可拔掉 USB 数据连接线进行离线运行程序。
注意:请勿在下载过程中,拔插 USB 数据线或按控制器按钮运行程序!
三、流程图编程
1、流程图界面介绍
模块栏
软件信息
菜单栏
程序编辑界面 代码显示区
如上图所示为流程图程序编辑窗口。左侧为模块库,中间是程序编辑窗口,
右侧为 C 代码栏或 Python 代码栏(可以控制是否显示,该栏显示内容为流程图 程序自动生成的,不可更改(如需更改可切换到 C
语言界面),能方便您学习 C 语言结构以及读取各模块参数)。
WhalesBot Scratch 软件共有八大模块库,分为:动作模块库、传感器模块 库、控制模块库、函数模块库、运算模块库、变量模块库、高级模块库和巡线 模块库。
2、模块使用说明
首先明确程序功能,然后找到对应模块,拖动到主程序下方,出现蓝条提 示后连接,使用鼠标左键单击该模块在弹出界面中选择参数,下载程序到控制 器,运行程序,实现功能。
示例:
功能:A 端口电机以 80 速度正转; 对应模块:电机;将“电机”模块拖动到主程序下方,单击模块
“A”,设定电机选用 A 端口,单击“功率”输入 80,设定电机的功率为 80。然
后通过 USB 线连接计算机和控制器,下载程序到控制器,运行程序,实现目 标。
3、模块介绍
3.1 动作模块库 动作模块库包含了所有执行器模块,其中有反转电机、电机、电机停止、
显示、指示灯、电磁铁、声音共八大模块。
模块名称
|
模块图
|
控制端 口
|
解读
|
反转电机
|
|
电机口
A~D
|
需放置在需要反转的电
机模块之前,将之后的 电机转向置反
|
设置电机
|
|
电机口
A~D
|
控制电机转动,功率范 围为-100~100(亦可通 过变量控制)。高级模块
|
|
|
|
可控制电机转动时间或 者移动距离(1600 表示 电机转动约 360°)
|
关闭电机
|
|
电机口
A~D
|
勾选后对应端口的电机 将停止转动
|
指示灯
|
|
I/O 口
1~5
|
控制对应(可多选)指
示灯的亮灭
|
电磁铁
|
|
I/O 口
1~5
|
控制对应(可多选)电
磁铁的吸合与断开
|
声音
|
|
/
|
将对应声音通过扬声
器发出
|
LED 阵列-
表情
|
|
I/O 口
1~4
|
选择并显示表情,需要
同时连接两个 LED 阵列
|
关闭 LED
阵列-表情
|
|
I/O 口
1~4
|
关闭表情显示,需要同
时连接两个 LED 阵列
|
LED 阵列-
符号
|
|
I/O 口
1~4
|
选择并显示符号
|
LED 阵列-
自定义
|
|
I/O 口
1~4
|
可以显示自己绘制的符
号
|
关闭 LED
阵列
|
|
I/O 口
1~4
|
关闭 LED 阵列的显示
|
读数
|
|
I/O 口
1~5
|
讲设置值和传感器的状
态转换为数值,通过扬 声器播放出来
|
3.2 传感器模块库
传感器模块库包含了所有能够采集外部环境数据的模块,对应传感器实体 使用,可将采集到的数据赋值给对应变量。本模块库含有亮度、温度等 11 大模 块。
模块名
称
|
模块图
|
控制端
口
|
解读
|
环境
光
|
|
I/O 口
1~5
|
将对应端口亮度传
感器的检测值赋值 到亮度变量上
|
温度
|
|
I/O 口
1~4
|
将对应端口温度传
感器的检测值赋值 到温度变量上
|
湿度
|
|
I/O 口
1~4
|
将对应端口湿度传
感器的检测值赋值 到湿度变量上
|
地面灰
度
|
|
I/O 口
1~5
|
将对应端口地面灰
度传感器的检测值 赋值到灰度变量上
|
火焰
|
|
I/O 口
1~5
|
将对应端口火焰传
感器的检测值赋值 到火焰变量上
|
红外测
距
|
|
I/O 口
1~5
|
将对应端口红外传
感器的检测值赋值 到红外测距变量上
|
触碰开
关
|
|
I/O 口
1~5
|
将对应端口触动开
关传感器的检测值 赋值到开关变量上
|
磁敏
|
|
I/O 口
1~5
|
将对应端口磁敏传
感器的检测值赋值 到磁敏变量上
|
集成
灰度
|
|
I/O 口
5
|
将对应端口集成灰
度传感器的某一个 通道检测值赋值到 灰度变量上。
|
计时器
|
|
/
|
将当前系统时间
(程序从开始到当 前运行的时间)赋 值到时间变量上
|
时钟复
位
|
|
/
|
将当前系统时间
置零
|
3.3 控制模块库 在用户程序中,读取各端口传感器的返回值一般有两种用途:储存和判
断,其中用于判断的情况居多。在软件中提供了 while 语句、if…else
…语句、for 语句三种判断方式的流程图模块,它们都在控制模块库中。
模块名称
|
模块图
|
解读
|
条件判断
|
|
C 语言中的 if(条件)…else…语句,用户可以
设置变量、传感器、参数来控制条件。如果条件 满足执行上部语句,否则执行下部语句
|
条件判断
|
|
C 语言中的 if(条件)…else…语句,用户可以
设置变量、传感器、参数来控制条件。如果条件 满足执行内部语句
|
条件循环
|
|
C 语言中的 while(条件)语句,用户可以设置变
量、传感器、参数来控制条件。如果条件满足执 行循环体语句,否则跳出当前循环体
|
多次执行
|
|
C 语言中的 for 语句,用户可以通过参数或者引
用变量来设置循环次数。循环次数代表当前循环 体内语句重复执行次数
|
循环直到
|
|
C 语言中的 while(条件)语句,用户可以设置变
量、传感器、参数来控制条件。如果条件不满足 执行循环体语句,否则跳出当前循环体
|
重复执行
|
|
C 语言中的 while(true)语句,表示当前循环体
内语句一直重复执行
|
循环中断
|
|
C 语言中的 break 语句,位于循环体内,当循环
体内语句执行到此模块时跳出当前循环体
|
等的直到
|
|
等待条件满足才会执行下一条程序,否则一
直处于等待状态
|
等待
|
|
用户通过设置时间将当前程序状态保持一定
时间
|
3.4 程序模块库
模块名称
|
模块图
|
解读
|
新建任务
|
|
在用户程序中添加一个进程,相当于控制器同一
时间在做多个任务,而且这些任务是并列执行的
|
新建函数
|
|
将多个模块的程序打包成一个模块用以缩减主程
序的长度。可以通过该模块调用其他程序的子程 序,也可以通过更改参数或者引用变量来修改子 程序内部参数
|
3.5 运算模块库
模块名称
|
模块图
|
解读
|
加法
|
|
将用户填写的参数或者引用的变
量进行加法运算后所得到的结果 赋值到整型变量或者其他变量
|
减法
|
|
将用户填写的参数或者引用的变
量进行减法运算后所得到的结果 赋值到整型变量或者其他变量
|
乘法
|
|
将用户填写的参数或者引用的变
量进行乘法除运算后所得到的结 果赋值到整型变量或者其他变量
|
除法
|
|
将用户填写的参数或者引用的变
量进行除法运算后所得到的结果 赋值到整型变量或者其他变量
|
比较-大
于
|
|
将用户填写的参数或者引用的变
量进行大于比较运算后所得到的 结果赋值到整型变量或者其他变 量
|
比较-小
于
|
|
将用户填写的参数或者引用的变
量进行小于比较运算后所得到的 结果赋值到整型变量或者其他变 量
|
比较-等
于
|
|
将用户填写的参数或者引用的变
量进行等于比较运算后所得到的 结果赋值到整型变量或者其他变 量
|
比较-不
等于
|
|
将用户填写的参数或者引用的变
量进行不等于比较运算后所得到 的结果赋值到整型变量或者其他 变量
|
逻辑运算
-与
|
|
将两个逻辑变量进行逻辑运算。
“&&”运算时就是两个逻辑变量 都成立时则该逻辑成立
|
逻辑运算
-或
|
|
将两个逻辑变量进行逻辑运算。
“‖”运算时就是两个逻辑变量 中至少有一个成立时则该逻辑成 立
|
逻辑运算
-非
|
|
将逻辑变量进行逻辑运算。“!”
运算时就是将反向逻辑变量赋值
|
取余数
|
|
将用户填写的参数或者引用的变
量进行除以输入的参数或引用变 量运算后取余数所得到的结果赋 值到整型变量或者其他变量
|
四舍五入
|
|
将用户填写的参数或者引用的变
量四舍五入所得到的结果赋值到 整型变量或者其他变量
|
数学运算
|
|
将用户填写的参数或者引用的变
量进行数学函数运算所得到的结 果赋值到整型变量或者其他变量
|
随机数
|
|
定义随机数变量。参数为随机数
产生区间,取值范围 0~99999。 不对应执行器实物
|
3.6 变量模块库 变量是数据的两种表现形式之一。变量代表一个有名字的、具有特定属性
的一个存储单元。用来存放数据。如:将地面灰度传感器的检测值赋值到灰度
变量。
模块名称
|
模块图
|
解读
|
数字输入
|
|
将对应端口数字传感器的检测值赋值
到数字变量上,所有数字量传感器都 可用此模块替代
|
3.6 高级模块库
模块名称
|
模块图
|
解读
|
数字输入
|
|
将对应端口数字传感器的检测
值赋值到数字变量上,所有数 字量传感器都可用此模块替代
|
模拟输入
|
|
将对应端口模拟传感器的检测
值赋值到模拟变量上,所有模 拟量传感器都可用此模块替代
|
数字输出
|
|
控制对应(可多选)数字执行
器的开与关。所有开关量执行 器都可用此模块替代
|
读 EEPROM
|
|
读取控制器中 EEPROM 的某一地
址(0~99)的数值并赋值给
EEPROM 变量
|
写 EEPROM
|
|
将需要的参数或者引用的变量
写入控制器 EEPROM 里的某一个
地址下(0~99)
|
3.7 巡线模块库
详细介绍见第五章,巡线入门
四、C 语言与 Python 语言编辑界面介绍
在流程图编辑界面下按照如图所示点击代码转换界面里的“切换到 C 代码编辑”。
在流程图编辑界面下按照如图所示点击代码转换界面里的“切换到 Python 代码编辑”。
1、 C 语言界面介绍
函数及变量显示
菜单栏
多功能提示窗口 程序编辑窗口
C 语言编程界面如上图所示,主要包含 4 个窗口:菜单栏、函数及变量显 示窗口、程序编辑窗口和多功能提示窗口。其中上面右侧较大为程序编辑窗 口。
2、 Python 语言界面介绍
菜单栏 多功能提示窗口
程序编辑窗口
Python 语言编程界面如上图所示,主要包含 3 个窗口:菜单栏、程序编辑 窗口和多功能提示窗口。其中中间部分为程序编辑窗口。
第四章 编程示例
一、触碰传感器控制电机停转
连接触碰传感器和电机到控制器,使用条件循环控制电机停转,需用到电
机、触碰传感器、重复执行、判断、运算-小于、关闭电机、循环中断模块,程 序如上图;注意:地面灰度传感器模块与外接传感器选择端口一致,循环条件
中使用的变量为触碰传感器对应变量,电机模块和电机停止模块中勾选的端口 与电机外接端口一致。
二、红外传感器检测
连接红外传感器和电机到控制器,使用条件循环控制电机反向
2 秒后停 转,需用到电机、红外传感器、重复执行、判断、运算-小于、反转电机、等
待、关闭电机和循环中断模块,程序如上图;注意:地面灰度传感器模块与外 接传感器选择端口一致,循环条件中使用的变量为触碰传感器对应变量,电机
模块和电机停止模块中勾选的端口与电机外接端口一致。
第五章 巡线入门
巡线模块库是针对巡线类机器人竞赛开
发的一个专门模块库,此模块库应用 PID 算 法使得机器人可以准确巡线、定位路口、精 确转弯,可满足大部分巡线类比赛需要。巡
线模块库包含初始化、黑白检测、巡线路 口、巡线计时、转弯、计时启动电机、计距 启动电机、灰度通道启动电机、按钮九个模
块,下面做简单介绍(小车接线如右图所 示,具体参考产品使用手册)。
1. 初始化:
设定巡线小车的电机、传感器相应接口和相关参数。
模块解读:整个巡线模块库初始设置模块,必须放置在巡线程序的起始位 置,一般放在主程序之后。
电机属性:左电机默认接电机通道
A,右电机默认接电机通道 B;功率数值 代表百分数,小车实际运行速度为巡线速度乘此百分数,可根据小车实际运行
情况调整功率,使左、右电机速度相同时小车沿直线前进;若巡线时小车原地 旋转,则将小车旋转方向一侧的电机功率设定为负(例:若小车向左转,则将
左侧电机功率设置为负)。
地面灰度通道:集成灰度传感器必须连接 5 号 I/O 接口,默认地面灰度传 感器从左至右分别对应集成灰度传感器的 1-5 通道上。
2. 黑白检测:
标定场地上的黑线和白底。
模块解读:必须和初始化模块一起组成完整程序下载到控制器中使用,更 换场地或环境光线改变需要重新进行黑白检测。
检测方法:运行程序按照提示进行检测(当提示
BLACK LINE 或 WHITE GROUND 时灰度传感器必须全部放置于黑线或者白底上)。检测完成后,控制器
屏幕会显示检测数值,黑线对应数值均大于 2000,白底对应数值均低于 400, 若检测值不在此范围内,则需要重新检测。
3. 巡线路口:
以一定速度巡线通过某一类型的路口,通过路口后继续前进一段时间后停 止。
路口类型:
勾选左侧
勾选右侧
勾选 T 字/十字路口
勾选左侧或右侧,不可勾选 T 字/十字路口 模块解读:巡线路口模块多用于转弯模块之前,小车运行到某一路口后停
止,为转弯做好准备;必须用在初始化模块之后。
巡线速度:实际速度=巡线速度 X 功率%(初始化模块设定)
冲过路口时间:小车灰度传感器经过对应路口(黑线)后,继续前行的时 间;冲过路口时间长短直接影响小车转弯结束时与黑线的位置关系。
4. 巡线计时:
以一定速度巡线一定时间后停止。
模块解读:多用于小车巡线前进时需停止在某一没有路口的位置;受摩擦 力影响较大,不能精确控制。
5. 转弯:
小车以一定的速度向某一方向旋转,直到勾选的灰度传感器检测到黑线 时,小车停止。
模块解读:用于改变小车当前方向;结束位置的三个选项代表小车前方处 于中间位置的三个灰度传感器,勾选某一个选项,转弯过程中对应位置的灰度 传感器检测到黑线时小车停止;当一侧电机速度设置为负时,则小车向该侧旋 转。
6. 启动电机-时间:
以时间来控制电机运转使小车产生位移。
模块解读:多用于没有黑线区域的小车移动; 时间控制:小车左右轮以一定速度移动一定的时间。
7. 启动电机-距离:
以距离来控制电机运转使小车产生位移。 模块解读:多用于没有黑线区域的小车移动;
距离控制:小车左右轮以一定的速度移动一定的距离(移动距离以电机速 度快的一侧为准)。
8. 启动电机-传感器控制:
以传感器来控制电机运转使小车产生位移。 模块解读:多用于没有黑线区域的小车移动;
传感器控制:小车左右轮以一定的速度移动,直到所选传感器反馈值满足 条件,小车停止。
9. 按钮启动:
程序执行到此模块时进入循环,直到按下控制器按键,程序跳出循环,继 续向后执行。
按钮启动多用于初始化模块后,可让小车在运行程序后不会立即启动,给 参赛选手调整时间。