编程原来如此简单—Makeblock教育机器人体验

nunulong老坛酸菜面 nunulong老坛酸菜面 2016-07-01 16:23

1.图形化编程,让孩子也能轻松掌握编程技巧; 2.arduino开源环境,和全世界小朋友一起分享创意玩法; 3.接线方便; 4.蓝牙,红外线无线多种控制,电池盒、充电池双电源供电; 5.图形化编程可自动转化成arduino语言。

1.arduino数据I/O口没有引出,需自行焊接; 2.传感器、rgb全彩led,电机、超声波、扬声器等接口在说明书中没有注明,采用arduino C语音编程时需要对代码进行解读。

Makeblock教育机器人和以往arduino开发板编程环境

前言:

​未来的世界离不开编程,人工智能、机器人、智能家居、智能手机、无人机……但凡不需要人参与的,带有芯片的产品,都需要编程将人的意志烧录其中并精准执行!

我们是幸运的,生活在万物互联的信息、知识共享时代!风靡全球的arduino开发板在全世界掀起了一股DIY浪潮,不同行业领域的爱好者通过arduino开发板制作出许多有创意的产品,小到led流水灯,含量高点的3D打印机,激光雕刻机,无人机,仿人机器人,大到人造mini卫星,都有arduino的身影。

本次体验的Makeblock教育编程机器人便源于arduino开发板​,融合了arduino的开源外,在接线易用性,编程图形化上更加适合儿童入门。

​Makeblock机器人清单:

MakeBlock教育机器人外包装盒

包装盒上除了印有安装好的MakeBlock机器人外,在下方更是罗列了MakeBlock产品五大特点:

1.接线简单化;

2.编程图形化;

3.兼容arduino C语言;

4.传感器模块化;

5.开源,分享更多创意。

MakeBlock主控制板mBot以及机器人支架+双电机
下层包含传感器,蓝牙收发模块,机器人备件

MakeBlock教育机器人备件

Makeblock教育机器人为组装件,根据产品说明书示意图进行安装,可以培养孩子的工程思维,小车结构为什么需要这样设计?固定控制板,车轮都需要何种螺丝钉?传感器如何接线,接哪个口?带着这样的疑问去组装,会有更多的收获。

Makeblock教育机器人的大脑-mBot控制板

祖先是如何编程的?

​说arduino开发板,Makeblock教育机器人适合初学者编程,是相对过去对单片机,芯片而言的。在硬件上实现编程,不像在电脑上编写C语言那么容易,需要考虑硬件寄存器中的资源,时钟响应速度,知己知彼方能百战不殆,将芯片功能发挥到极致!

arduino开发板用的atm单片机

stm32单片机

飞思卡尔智能车大赛用的单片机控制芯片

我们知道,在电子世界里,信息是通过1和0这两个量进行表达的。我们看到单片机有许多型号,不同型号之间在外形上很相似,都有许多引脚,这样的引脚简单理解成开关变量,通过烧录其中的程序也就是人们的思维,去控制这些触角,比如控制一盏灯的点亮,程序会自动控制其中的几个引脚,将芯片内部的开关打开,这是灯就被点亮了。

单片机工作一个指令周期,完成一系列代码的实现,与人的反应速度不同的是单片机的处理速度在微妙级甚至更快,所以单片机可以做出比人快得多的反应,同时反复重复枯燥的工作也是单片机的一大特性,这两点便是单片机的生命。

arduino开发板

​单片机在编程时对编程人员要求非常高,不仅需要掌握编程语言,熟悉编程环境,而且对单片机硬件也要有非常深厚的理解,寄存器、指令优先级、时钟中断等等……除此之外对电子电路也要熟练掌握,才能设计出低功耗,高可靠性的电子产品。

arduino开发板和1602液晶显示屏

而arduino开发板​将底层难于理解的代码进行封装,转化成易于理解和掌握的arduino语音进行编程,我们不需要知道寄存器的分区,也可以编程烧录程序,控制数字IO口制作有意思的产品。

arduino开发板编程接线

​arduino较传统单片机编程已经有非常大的进步了,在电路实现上仅需将电子元器件固定在面包板上,然后用杜邦线将其接入相应的IO口,烧录代码便可控制led灯的开关以及亮度了。

arduino开发板驱动1602液晶屏

​但是对于稍微复杂点的电子元器件,需要接许多跟杜邦线时,arduino就显得有些杂乱,对于马虎的人来说接错一根线程序便不能正常运行,这无疑增添了许多附加的问题,并因此扼杀了孩子喜爱编程的兴趣,也许就是一根接错的杜邦线,毁掉了一位斯诺登,乔布斯,比尔盖茨……

MakeBlock教育机器人接线

Makeblock教育机器人的出现从根本上改变了接线繁琐的缺陷,通过类似于网线的数据线,简单地将数字IO口与传感器进行链接,就实现了arduino开发板众多io插孔的接线,省时省力。

​说了这么多,相信大家已经初步了解我们的先辈是如何编写单片机程序以及通过Makeblock教育编程机器人学习编程都有哪些优势,接下来就一同深入了解这款神器的Makeblock教育机器人吧!​

组装MakeBlock​

组装好的MakeBlock正在进行超声波壁障模式

超声波壁障模式走迷宫

组装好的MakeBlock模型示意图

组装过程示意图

各部件组装位置示意图

安装电子轮子安装好的轮子,电机

安装电机,检测电机是否正常运行

mbot主控版接线示意图

固定电机

安装小轮皮带

安装电机和小轮以及巡线传感器的Makeblock

超声波模块安装

安装超声波模块
超声波模块

超声波模块相当于Makeblock机器人的眼睛,可以检测前方有无障碍物,在B模式超声波壁障模式下非常关键。

网口接线端

从mbot引出的超声波接线端

接超声波线

端口接线非常方便

接电池盒,蓝牙收发模块,mbot主控版

安装好的电池盒

安装好的mbot主控版及蓝牙收发模块

电池采用4节1.5V电池供电,也可采用备件中的3.7V为主控版供电。蓝牙收发模块支持2.0、4.0,方便与手机,平板进行连接通讯。这在ipad上编程控制MakeBlock机器人时非常方便。

遥控器控制模式

红外遥控器

红外遥控器同mbot主板上的红外收发二极管进行通信,实现控制小车前进、后退、左右转以及ABC三种运动模式。

出厂固定程序体验:

手动控制模式

按下遥控器A键,进入手动控制模式,可以通过遥控器控制小车前进,后退,左右转弯。在行进时Makeblock上的两颗RGB全彩led灯会有不同颜色指示。

C巡线模式

结合Makeblock底部光线传感器检测到Makeblock自带的黑色arduino logo “8”字图标进行自动循迹,编程原理时当小车偏离轨迹后向反方向旋转前行。

B超声波自动壁障

按下B后,在无人为干预时Makeblock也能实现避开障碍物的动作,这一编程思想在未来的无人驾驶

中会有广泛应用。

Ipad控制Makeblock

​通过ipad以及电脑,都可以对Makeblock进行编程。Makeblock还自带了一本编程入门书籍,不仅可以控制机器人,还可以通过Makeblock与电脑实现互动。

ipad编程控制Makeblock

下载Makeblock官网软件,开启蓝牙搜索Makeblock机器人

点击新建项目,或打开以往保存程序

 ipad编程界面

通过左侧的图形化指令进行拖拉式的编程,在文本框中输入数字,变量等即可实现顺序指令,循环指令,中断,逻辑运算,数学运算等控制。

我尝试制作了一个用ipad控制小车前进后退,并点亮RGB灯,同时让扬声器发声的程序。

添加滑条

当滑条移动并且平板电脑向左倾斜是,开启RGB灯

同时扬声器发声

还可以长按进入复制,这样制作一首曲目非常便捷。

制作好的歌曲

通过以上观察不难发现,当制作简单的程序时,图形化编程很实用,降低了入门的门槛,但对于复制的程序,图形化就显得过于繁琐了。

 将图形化编程转化为arduino代码

此时我们可以通过arduino 语音进行复杂程序的编写,这会极大提升编程速度,培养编程思维。

图形化编程过程

arduino编程界面

初次使用arduino编程界面需要安装驱动,而后进行COM口的选择,正确后方可烧录代码。

 Makeblock驱动led点阵

Makeblock驱动的led点阵动画

arduino驱动液晶显示器

Makeblock主控版mbot上预留了arduino数字io孔,方便自己焊接,arduino是开源共享的,也正是因为如此,才会越来越多的人喜欢上它。

下面上传上图的arduino程序代码,感谢新浪众测给予nunulong本次Makeblock教育机器人试用体!

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(12,11,2,3,4,5,6,7,8,9,10);   //1602数据io接线端口

// make some custom characters:   //制作心形点阵图案

byte heart[8] = {

  0b00000,

  0b01010,

  0b11111,

  0b11111,

  0b11111,

  0b01110,

  0b00100,

  0b00000

};

byte armsDown[8] = {

  0b00100,

  0b01010,

  0b00100,

  0b00100,

  0b01110,

  0b10101,

  0b00100,

  0b01010

};

byte armsUp[8] = {

  0b00100,

  0b01010,

  0b00100,

  0b10101,

  0b01110,

  0b00100,

  0b00100,

  0b01010

};

void setup() {

  // initialize LCD and set up the number of columns and rows: 

  lcd.begin(16, 2);    //设置显示行列范围

  // create a new character

  lcd.createChar(0, heart);     //创建自定义字库

  // create a new character

 

  lcd.createChar(3, armsDown);

  // create a new character

  lcd.createChar(4, armsUp);

  lcd.clear();

  lcd.setCursor(0,0);

  // Print a message to the lcd.

  lcd.print("I");   //显示 I

   lcd.write(byte(0));

  // when calling lcd.write() '0' must be cast as a byte

  lcd.print("MakeBlock! ");  

}

void loop() {

  // read the potentiometer on A0:

  lcd.setCursor(0, 1);

  // draw the little man, arms down:

  lcd.write(3);

  delay(200);

  lcd.setCursor(0, 1);

  // draw him arms up:

  lcd.write(4);

  delay(200);

  lcd.print(" XinLangZhongCe");  //显示  新浪众测  英文

}

------------------------------------------------------------------------------------------

HELLO XINLANGZHONGCE!

Thanks!​

(声明: 本文著作权归作者本人和新浪众测共同所有,未经许可不得转载。本文仅代表作者观点,不代表新浪众测立场。)
0 0
分享 商务合作 返回
微博 QQ空间 微信