Kidsblock(Scratch)教程#

软件安装教程#

Windows 系统 Kidsblock 软件安装:

  1. 获取软件方式

  2. 下载完后,双击“KidsBlock.exe”image1

  3. 先选中“Anyone who uses this computer(all users)”,再点击“Next”。

image2

  1. 先点击“Browse…”,选择安装的位置(我这里选择安装在C盘,你也可以选择安装在电脑的其他盘),再点击“Install”。这样,软件就在安装过程中。

image3

image4

  1. 安装完成。点击“Finish”就可以打开安装好的Kidsblock软件。

image5

  1. 如果出现电脑安全警报窗口,点击“Allow access”。这样就可以打开Kidsblock软件页面。

image6


MacOS系统 Kidsblock 软件安装:

  1. 下载Kidsblock软件安装包,下载链接: http://xiazai.keyesrobot.cn/KidsBlock.dmg

image7

  1. 下载完成后,双击KidsBlock的图标,出现下图,然后按住鼠标左键将KidsBlock Desktop拖动到Applications里。

image8

  1. 等待安装,安装完成后在启动台中可以看到如下安装好的KidsBlock图标。

image9

软件使用教程#

以下是以Windows系统为例,MacOS系统可以参考

按钮功能示意图:

image10


语言切换

点击image11可以语言“English”或“简体中文image12


安装开发板驱动程序

注意:如果电脑已经安装了驱动程序,则不需要再安装驱动;如果没有,则需要进行以下操作

  • 点击image13,点击“Install driver”。

image14

  • 在“设备驱动程序安装向导”页面点击“Next”。

image15

  • 过一会儿,点击“Finish”。

image16

  • 点击“Next”。

image17

  • 点击“Finish”。

image18

  • 如果出现安全页面,选择点击“Allow”即可,然后点击“Install”。如果出现安装提示,点击“Install”。

image19

  • 过一会儿,点击“Finish”。

image20

  • 点击“Extract”。

image21

  • 点击“Next”。

image22

  • 点击“I accept this agreement”后,再点击“Next”。.

image23

  • 点击“Finish”。

image24

  • 过一会儿,选择点击“INSTALL”。

image25

  • 过几秒钟后,驱动安装完成,点击“OK”即可。

image26


开发板选择

选择开发板和串口

  • 驱动安装完后,点击右上角image27进入选择主控板页面。

  • 选择套件,选择Beetlebot,传感器都集成在套件中,不需要额外添加。

    image28

  • 点击套件后,会弹出一个串口选择,我们选择正确的开发板串口,点击连接即可连接。

    image29

  • 点击Go to Editor

    image30

  • 主界面:

    image31


断开当前连接

  • 如果要断开端口,先点击image32

  • 再点击断开连接,即可断开当前连接。

    image33


kidsblock软件界面工鞥呢示意图 2:

image34


添加传感器模块(可以跳过)

注意:这一步操作本套件已经集成好了不需要添加了,如果是要加套件上没有的传感器模块则参考这一步骤

  • 点击右下角的扩展包

    image35

  • 传感器/模块扩展库

    image36

  • 如需要添加无源蜂鸣器模块,点击无源蜂鸣器模块image37

  • 未加载”变成“已加载”,说明“无源蜂鸣器”模块添加成功。

    image38image39

  • 点击image40,可以回到代码编辑器界面,在模块区可以看到添加的“无源蜂鸣器”指令方块。

    image41

  • 如果需要删除“无源蜂鸣器”模块,只需要点击image42再次进入传感器/模块扩展库界面,点击“无源蜂鸣器”模块image43,“Loaded”变成“Not loaded”,则说明“无源蜂鸣器”模块删除成功。

    image44image45


如何打开代码文件

  1. 方法一:

    • 软件没有打开的情况下,鼠标左键双击SB3类型文件,这样就可以打开SB3类型文件。例如:需要打开image46文件,则只需要左键双击image47文件就可以直接打开,注意打开后要与开发板进行连接。

      image48

  2. 方法二:

    • 打开Kidsblock软件,先点击“file”,然后选择点击“Load from your computer”,

      image49

    • 在电脑上选中需要打开的SB3类型文件(img/an47.png)文件)

      image50

      image51


上传代码与设置波特率

上传代码

  • 将代码文件image52添加到Kidsblock软件中。

  • 将开发板连接到电脑(如果没有显示端口则需要安装驱动,请查看“Kidsblock 软件使用教程”中的第3点),选择好端口,点击image53

    image54

  • 然后等待上传完成。

    image55


选择对应的波特率

  • 如果没有右边的打印框,则需要通过右上角的这三个按键image56,设置打印框的大小.

    • 小型打印框image57

    • 大型打印框image58

    • 没有打印框image59

  • 右下角点击设置image60,再选择对应的波特率即可.

image61


设置好对应波特率后,右下角会打印“Hello KidsBlock

image62

特别提醒:如果在Arduino教程中已经把小车原生态实物安装好了,下面的小车安装步骤可以直接跳过。

小车原生态实物安装步骤#

在安装过程中,会有烧录代码的过程,请先安装软件部分,如果已经完成,接下来就开始实物的安装吧。一共分为20个小步骤,可分为椴木板安装和开发板接线两大类,还请拿出100%的精神,集中注意力,尽情享受动手创造的快乐吧!


image63

步骤1


1.1

image64


1.2

image65


1.3

完成

image66


步骤2


2.1

image67


2.2

image68


2.3

image69


步骤3


3.1

image70


3.2

image71


3.3

image72


步骤4


4.1

image73


4.2

image74


4.3

image75


步骤5


5.1

image76


5.2

模块

接口

左边电机

(L) 2.54mm端子

右边电机

(R) 2.54mm端子

接线时,请注意区分线材颜色,传感器S接黄色,V接红色,G接黑色

image77


5.3

将8*8点阵,通过杜邦线连接PCB底板。

所需线材

4P 杜邦母对母连拼 100mm (黑红蓝绿线)

image78

8*8点阵接线表:

8*8点阵模块

PCB底板

G(黑色)

G(黑色)

5V(红色)

5V(红色)

SDA(蓝色)

SDA(蓝色)

SCL(绿色)

SCL(绿色)

然后将电机、8*8点阵屏用连接线,连接上下两块 PCB板,如下。

image79


5.4

image80


5.5

image81


步骤6


6.1

image82


6.2

image83


6.3

image84


步骤7


7.1

image85


7.2

image86


7.3

image87


步骤8


8.1

image88


8.2

image89


8.3

image90


步骤9


9.1

image91


9.2

image92


安装舵机前,舵机角度调节到90度,通过烧录代码进行调节,通过arduino编译器进行。

  • 用舵机连接到小车的扩展板,连接扩展板上的引脚S1(D9)。

image93

  • 我们提供的示例代码的路径如下:

Img

  • KidsBlock打开180_Servo_Angle_initialization.sb3,并上传至NANO开发板。

    image94

  • 舵机将会调整到90度。


9.3

开始安装舵机

image95


9.4

image96


9.5

image97


步骤10


10.1

image98


10.2

image99


10.3

image100


10.4

此步骤需要使用杜邦线,连接超声波传感器。

模块

线材

超声波传感器

4PIN (黑红蓝绿)

image101

  • 先接超声波模块,接线时,请注意区分线材颜色,Vcc接红色,Trig接蓝色,Echo接绿色,Gnd接黑色,

    请务必要接线正确,否则发生短路,会烧坏超声波传感器!!

    image102

    超声波线另一端,接小车扩展板上。

    image103

    image104

10.5

此步骤需要使用杜邦线,连接两个光敏传感器。

模块

线材

光敏传感器

3PIN

image105

  • 先连接光敏传感器,请注意,黄色线连接S,红色线连接V,黑色线连接G

    image106

  • 再把传感器连接到小车扩展板,请注意,黄色线连接S,红色线连接V,黑色线连接G

    image107

    image108


步骤11


11.1

所需零件

image109


11.2

image110


11.3

image111


11.4

image112


步骤12


12.1

使用缠绕管,把线全部整理起来。

image113


image114


完成

image115


项目教程#

Project 01: LED Blinking#

实验简介

在前面的准备工作中,知道我们Arduino Nano主板上有个板载LED(L),而且我们已经知道这个LED是连接在Arduino Nano主板上的D13,在本实验中,我们让这个LED闪烁起来。LED闪烁对于学习Arduino的爱好者而言,是最基础的实验项目,也是新手必须经历的一个练习。


元件知识

**板载LED:**LED是一种被称为“发光二极管”的半导体,是一种由半导体材料(硅、硒、锗等)制成的电子器件。它的控制方法非常简单,通过控制Arduino Nano主板上IO口(D13)的高低电平,来使LED灯亮灭。

image116


实验代码

image117

实验现象

将实验代码上传至Arduino Nano主板上,利用USB线上电后,Arduino Nano主板上的板载LED就闪烁起来。

Project 02: 6812 RGB#

image118

实验简介

小车扩展板上有4个RGB LED,RGB LED属于简单的发光模块,可以通过调节色彩调出不同颜色的灯效,可广泛应用于建筑物、桥梁、道路、花园、庭院、地板等领域的装饰照明与会场布置、圣诞节、万圣节、情人节、复活节、国庆节等节日期间烘托气氛等场景。在本实验中,使小车扩展板上的4个RGB实现各种灯光效果。


元件知识

SK6812RGB: 小车扩展板上有4个RGB LED,从原理图中可以看出,这4个RGBLED都是串联起来的,在电压电流充足的情况下可以接几百个RGB LED,都可以用一根信号线控制任意一个RGB LED,并且让它显示任意一种颜色。每一颗RGBLED都是一个独立的像素点,每个像素点都是由R、G、B三基色颜色组成,可实现256级亮度显示,完成16777216种颜色的全真色彩显示,同时像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还内置信号整形电路,有效保证了像素点光的颜色高度一致。

image119


实验代码

image120

实验现象

将实验代码上传至Arduino Nano主板上,利用USB线上电后,小车PCB板上的4个RGB LED实现各种灯光效果。

Project 03: 演奏音乐#

实验简介

小车扩展板上有个喇叭功放元件,它常用来播放音乐,作为一些音乐播放设备的外接扩音设备。

在本实验中,我们利用喇叭功放元件来播放一首音乐。


元件知识

*喇叭功放元件:* 喇叭功放元件(原理相当于无源蜂鸣器),其内部不带震荡电路,控制时需要在元件正极输入不同频率的方波,负极接地,从而控制喇叭功放元件响起不同频率的声音。


实验代码

image121

实验现象

将实验代码上传至Arduino Nano主板上,利用USB线上电后,小车PCB板上的喇叭功放元件就开始播放一首音乐。

Project 04: 8*8点阵#

实验简介:

image-20230701141308990

8*8点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,88 点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏、银行窗口屏、叫号屏以及停车系统等等。在本实验中,将使用88 点阵屏来显示图案。


元件知识

8*8点阵屏: LED点阵屏按照LED发光颜色可分为单色、双色、三色灯等,可显示红、黄、绿甚至是真彩色。根据LED的数量又分为4×4、8×8、16×16等不同类型。这里我们通过单色8×8点阵屏来了解其原理。

不同点阵屏封装不同,8×8点阵屏由8行8列共64个LED灯组成,其内部结构如下图:

image122

每个LED放置在行线和列线的交叉点上,当对应的某一行电平拉高,某一列电拉低,则对应交叉点的LED就会点亮。8×8点阵屏有16个管脚,将有丝印的一边朝下,逆时针编号为1-8,9-16。

image123

其对应内部管脚定义如下如所示:

image124

比如我们要点亮第一行第一列LED灯,则对应将点阵屏的第9脚拉高,第13脚拉低,其他LED控制以此类推即可。

HT16K33:8X8点阵驱动模块:上面介绍了88点阵的原理,想控制88点阵需要多达16个单片机的引脚。这样既浪费资源也浪费时间。这里用了一个驱动点阵屏的芯片:HT16K33。HT16K33是一款内存映射和多功能LED控制器驱动芯片。利用HT16K33芯片驱动1个8*8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。下图是HT16K33 芯片工作原理图。

image125

我们基于以上原理设计了一个8X8点阵驱动模块,从上图我们可以看出,我们只要通过I2C 通讯利用单片机的2个引脚就可以很好的控制点阵显示。

8X8点阵模块的参数:

  • 工作电压: 5V

  • 额定输入频率: 400KHZ

  • 输入功率: 2.5W

  • 输入电流: 500mA

取模工具的使用说明:

点阵和驱动的原理都已经介绍完了,那点阵上显示的内容是怎么来的呢,有没有比较简便的方法?这里给大家介绍一款点阵取模工具,这块工具使用的是在线版,链接:http://dotmatrixtool.com/#

现在就一起看看怎么使用吧。

①打开链接如下图:

image126

②我们的点阵是8*8的,所以调整高度为8,宽度为8,如下图:

image127

③在****Byte order**** 这里选择****Row major**** 这个模式

image128

④将图案生成16进制的数据

如下图,按鼠标左键选中,右键取消,画好自己想要的图案,点击****Generate****,就会生成我们所需要的十六进制的数据了,

image129

这个生成的十六进制的代码(0x00, 0x66, 0x00, 0x00, 0x18, 0x42, 0x3c, 0x00)就是我们需要显示的内容,我们先保存好,等一下需要放到程序里面。

实验接线:

8*8点阵

小车PCB板

G

G

5V

5V

SDA

SDA

SCL

SCL

实验代码

image130

实验现象

将实验代码上传至Arduino Nano主板上,利用USB线上电后,小车前的8*8点阵屏显示“笑脸”图案。

image131

Project 05: 舵机转动#

实验简介:

小车上有两个舵机,这里以接在引脚D9的舵机为例,舵机是一种可以非常精确地旋转的电机。目前已广泛应用于玩具车、遥控直升机、飞机、机器人等领域。在这个项目中,我们将使用Nano主板控制舵机转动。

元件知识:

image132

****舵机:****舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0度到180 度。

控制舵机的脉冲周期为20ms,脉冲宽度为0.5ms ~ 2.5ms,对应位置为-90°~ +90°。下面是以一个180°角的舵机为例:

image133

伺服电机有多种规格,但它们都有三根连接线,分别是棕色、红色、橙色(不同品牌可能有不同的颜色)。棕色为GND,红色为电源正极,橙色为信号线。

image134

实验接线:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S1(D9)

实验代码

image-20230703090359838

实验现象

将实验代码上传至Arduino Nano主板,利用USB线上电后,舵机塑料臂将以0°、45°、90°、135°、180°的角度转动。循环进行!!

Project 06: 电机驱动和调速#

实验简介:

驱动电机的方法有很多,我们这个小车用到的是最常用的DRV8833电机驱动芯片,该芯片为玩具、打印机及其它电机一体化应用提供了一款双通道桥式电动驱动器解决方案。

在本实验中,我们使用扩展板上的DRV8833电机驱动芯片驱动小车的两个直流电机,通过编写代码实现小车分别向前,向后,向左,向右行走的效果。

元件知识:

**DRV8833电机驱动芯片:**具有电流控制功能的双H桥电机驱动器,可以驱动两个直流电机、一个双极步进电机、电磁阀或其他电感负载。每个H桥的输出驱动器块由N沟道功率MOSFET组成,配置为H桥以驱动电机绕组。每个H桥包括调节或限制绕组电流的电路。

带有故障输出引脚的内部停机功能是用于过大电流保护、短路保护、欠压锁定和超温。还提供了低功耗睡眠模式。我们来看一下DRV8833电机驱动芯片驱动两个直流电机的电路图和示意图:

image135

image136

规格参数:

逻辑部分输入电压:DC 5V

驱动部分输入电压:DC 5V

逻辑部分工作电流:<30mA

驱动部分工作电流:<2A

最大耗散功率:10W(T=80℃)

电机转速:5V 200 rpm / min

电机驱动形式:双路H桥驱动

控制信号输入电平:高电平2.3V<Vin<5V ,低电平-0.3V<Vin<1.5V

工作温度:-25~130℃

驱动小车运行原理:

根据上面电机驱动板的电路图和示意图,我们知道左电机的方向引脚在D4,调速引脚在D6;右电机的方向引脚在D2,调速引脚在D5,按照以下表格的运动逻辑,就可以知道如何通过控制数字口,PWM口控制2个电机转动,从而实现智能小车的行走。其中PWM值范围为0-255,设置数字越大,电机转动越快。

功能

D4

D6(PWM)

左电机

D2

D5(PWM)

右电机

前进

LOW

200

正转

LOW

200

正转

后退

HIGH

50

反转

HIGH

50

反转

左转

HIGH

200

反转

LOW

200

正转

右转

LOW

200

正转

HIGH

200

反转

停止

LOW

0

停止

LOW

0

停止

实验代码

image-20230703090434643

实验现象

将实验代码上传到Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,小车前进2秒,后退2秒,左转2秒,右转2秒,停止2秒,循环。

调速说明

image137HIGH相当于PWM值255,50是PWM值,是可以调整的。此代码中的差值是200,上下差值越大,电机转速越快,我们可以通过调整PWM值达到调节电机转速。如果将50调为0,上下差值就变成255,电机转速达到最大;如果将50调为255时,上下差值就变成0,电机转速为0,电机就不转动了。上下差值为正值时,电机反转。

image138LOW相当于PWM值0,200是PWM值,是可以调整的。此代码中的差值是200,上下差值越大,电机转速越快,我们可以通过调整PWM值达到调节电机转速。如果将200调为100,上下差值就变成100,电机转速减慢;如果将200调为255时,上下差值就变成255,电机转速达到最大;如果将200调为0时,上下差值变为0,电机就不转动了。上下差值为负值时,电机正转。

Project 07:超声波测距#

小车上有个超声波传感器,超声波传感器是一种非常实惠的距离传感器,它可以检测前方是否存在障碍物,并且检测出传感器与障碍物的详细距离。它的原理和蝙蝠飞行的原理一样,就是超声波传感器发送出一种频率很高的超声波信号,通常正常人耳朵的听力的声波范围是20Hz~20kHz,人类无法听到。这些超声波的信号若是碰到障碍物,就会立刻反射回来,在接收到返回的信息之后,通过判断发射信号和接收信号的时间差,计算出传感器和障碍物的距离。超声波传感器主要用于各种机器人项目中的物体躲避和测距,也常被用于水位传感,甚至作为一个停车传感器。在本章中,我们将学习超声波传感器测距原理及应用。

实验简介

在本实验中,我们使用超声波传感器来测量距离,并将数据打印在串口监视器上。

元件知识

*HC-SR04超声波传感器:* 像蝙蝠一样使用声纳来确定与物体的距离,它提供了精准的非接触范围检测,高精度和稳定的读数。它的操作不受阳光或黑色材料的影响,就像精密的照相机(在声学上像布料这样比较软的材料很难被探测到)。它带有超声波发射器和接收器。

image139

在超声波传感器的前面是两个金属圆筒,这些是转换器。转换器将机械能转换成电信号。在超声波传感器中,有发射转换器和接收转换器。发射转换器将电信号转换为超声波脉冲,接收转换器将反射的超声波脉冲转换回电信号。如果你看超声波传感器的背面,你会看到的发射转换器后面有一个IC。这是控制发射转换器的IC。在接收转换器后面也有一个IC,这是一个四运算放大器,它将接收转换器产生的信号放大成足以传输到Arduino的信号。

*时序图:*

下面图示是HC-SR04的时序图,为了开始测量,SR04的Trig必须接受至少10us的高(5V)脉冲,这将启动传感器将发射出8个周期的40kHz的超声波脉冲,并等待反射的超声波脉冲。当传感器从接收器检测到超声波时,它将设置回波引脚为高(5V)和延迟一个周期(宽度),与距离成比例。为了获得距离,测量Echo引脚的宽度。

image140

时间=回波脉冲宽度,单位为us(微秒)

距离(厘米)=时间/ 58

距离(英寸)=时间/ 148

image141

HC-SR04超声波传感器有四个引脚:Vcc、Trig、Echo和GND。Vcc引脚提供产生超声波脉冲的电源,接Vcc/+5V。GND引脚接地/GND。Trig引脚是Arduino发送信号来启动超声波脉冲的地方。Echo引脚是超声波传感器向Arduino控制板发送关于超声波脉冲行程持续时间的信息的地方。

实验接线:

超声波传感器

小车PCB板

Vcc

5V

Trig

S2(D8)

Echo

S1(D7)

Gnd

G

实验代码

超声波传感器的Trig引脚是由Arduino Nano主板的IO口D8控制,Echo引脚是由Arduino Nano主板的IO口D7控制。

image-20230703090706455

实验现象

将实验代码上传到Arduino Nano主板,利用USB线上电后,再打开串口监视器,设置波特率为9600,当把一个物体放在超声波传感器前面移动时(远近),它会检测到物体的距离,该值将显示在串口监视器上。

image-20230703090737299

Project 08: 跟随我#

实验简介:

img-20230518083845

在上面实验中,我们已经了解了8*8点阵、电机驱动和调速、超声波传感器、舵机等硬件知识,那么在本实验中,我们将结合它们打造一款跟随小车! 在电路设计过程中,我们可以利用超声波传感器来检测小车与前方物体的距离。通过测量距离控制电机的旋转,从而控制小车的运动状态,使小车跟随物体运动。

工作原理:

检测

检测前方物体的距离

距离(单位:cm)

条件1

距离<8

状态

小车后退(设置PWM 为100)

条件2

8≤距离<13

状态

小车停止

条件3

13≤距离<35

状态

小车前进(设置PWM 为100)

条件3

距离≥35

状态

小车停止

流程图:

image142

实验代码

image143

实验现象

将实验代码上传到Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,小车可以随着前方障碍物的移动而移动(只能在一条线直上,不能转弯)。

Project 09: 躲避障碍物#

实验简介:

img-20230518083634

在上一实验中,我们制作了一个超声波跟随小车。实际上,利用同样硬件,我只需要更改一个测试代码就可以将跟随小车变为避障小车。那超声波避障小车,是怎么实现的呢?当然也是通过超声波传感器的测距来实现的。通过超声波传感器检测机器人前方障碍物,然后根据这一个数据获得机器人运动方向。

工作原理:

初始设定

8*8点阵清屏

设置舵机90°

循环进行

检测前方障碍物的距离:距离(单位: cm)

条件 1

状态

0<距离<10

小车停止

8*8点阵显示“停止”图案

设置舵机 180°

离障碍物的距离:a1(单位:cm)

设置舵机0°

离障碍物的距离:a2(单位:cm)

条件2

状态

a1<a2

小车向右转(设置PWM为 200)

8*8点阵显示“向右” 图案

设置舵机 90°

a1≥a2

小车向左转(设置PWM为 200)

8*8点阵显示“向左” 图案

设置舵机 90°

距离≥10

8*8点阵显示“向前” 图案

前进(设置PWM为200)

流程图:

image144

实验代码

image145

实验现象

将实验代码上传到Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,小车可以可以自动避障。

Project 10: 红外循迹读值#

实验简介:

在本实验中,我们使用ST188L3红外对管来检测黑白线,并将数据打印在串口监视器上。

元件知识:

*红外循迹:* 红外循迹有1对ST188L3红外对管,ST188L3红外对管具有一个高发射功率红外发射二极管和一个高灵敏度红外接收管。当红外发射二极管发射红外信号,红外信号经白色物体反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平(0);当红外发射二极管发射红外信号,红外线信号被黑色物体吸收后,将输出高电平(1),从而实现了通过红外线检测信号的功能。

image-20230701141513611

警告: 反射式光学传感器(包括红外循迹)应避免在阳光等有红外干扰的环境中使用。阳光中含有许多不可见光,如红外线和紫外线。在强光环境下,反射式光学传感器不能正常工作。

下表给出了小车上的红外循迹检测不同颜色物体的所有情况下的数值。其中检测到黑色物体或无物体代表1,检测到白色物体代表0。

值(二进制)

0

0

00

0

1

01

1

0

10

1

1

11

实验代码

小车PCB板上的左边红外循迹是由Arduino Nano主板的IO口D11控制,右边红外循迹是由Arduino Nano主板的IO口D10控制。

image-20230703092608271

实验现象

将实验代码上传到Arduino Nano主板,利用USB线上电后,再打开串口监视器,设置波特率为9600,在小车的红外循迹下面放个黑色的东西,移动它,你会看到不同的指示灯亮起来,同时在串口监视器上看到红外循迹读取的值。旋转电位器可调节灵敏度,将指示灯调节至亮与不亮的临界点时,灵敏度最高。

image-20230703092630369

Project 11: 循线行走#

实验简介

img-20230518082944

在前面的项目中,我们详细的介绍了在上面实验中,我们已经了解了电机驱动和调速、红外循迹等硬件知识。在本实验中,小车会根据红外循迹传送的数值做出不同的动作。

工作原理

值(二进制)

动作

0

0

00

停止

0

1

01

向右转

1

0

10

向左转

1

1

11

向前移动

流程图

image146

实验代码

image147

实验现象

将实验代码上传到Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,然后把小车放在循迹轨道(我们提供的)上,小车就开始根据红外循迹传送的数值做出不同的动作。

Project 12: 读取光敏传感器的值#

我们都知道人类可以通过自己的眼睛在黑暗中寻找光源,那么机器人是怎样完成这项任务呢?让机器人完成这项任务首先需要给机器人安装上能看见光亮的眼睛,即光敏传感器,这样就能让机器人通过光源的强弱来寻找光源。

我们的小车上左右各装有1个光敏传感器,当外界环境光线的强、弱发生变化的时候,光敏传感器的电阻也跟随发生相应的改变,并把这种变化传输给小车上的Nano主板,Nano主板就像人的大脑一样可以判断和思考,指挥着小车寻找光线。两个光敏传感器不停的检测是否有光线,检测到光线后就判断左、右两边哪个方向的光线较强,最后就指挥小车向着光线强的方向前进。

实验简介:

在本实验中,我们将了解光敏传感器的工作原理。

元件知识:

**光敏传感器:**它主要采用光敏电阻元件,该电阻元件电阻大小随着光照强度的变化而变化。传感器信号端连接单片机模拟口,当光线越强时,模拟口电压越大,即单片机的模拟值也大;反之,光照强度越弱时,模拟口电压越小,即单片机的模拟值也小。这样,就可以利用光敏传感器读取对应的模拟值来反映环境光线强度。

实验接线:

通过前面的安装接线知道,两个光敏传感器的信号脚位已经接到了Nano主板的A6和A7,下面我们就利用接到A6的光敏传感器来完成下面的实验,首先我们来读取模拟值。

左边光敏传感器

小车PCB板

G

G

V

V

S

S(A6或者A7)

img-20230508101729img-20230508101203


实验代码

左边光敏传感器是由Arduino Nano主板的IO口A6控制。

image-20230703093809732

实验现象

将实验代码上传到Arduino Nano主板,利用USB线上电后,再打开串口监视器,设置波特率为9600,当光线增强时,串口监视器显示的模拟值增大;反之,串口监视器显示的模拟值减小。

image-20230703093826287

Project 13: 寻光车#

实验简介

img-20230518083512

前面实验已经了解过光敏传感器的工作原理、电机驱动与调速,在本实验中,我们利用光敏传感器检测光线强弱来实现小车寻光效果,哪边光敏传感器接收到的光线较强,小车就往那边走。

工作原理

左光敏传感器的模拟值

右光敏传感器的模拟值

功能

大于500

大于500

向前移动

大于500

小于等于500

向左移动

小于等于500

大于500

向右移动

小于500

小于500

停止

实验接线

流程图

image148

实验代码

左边光敏传感器是由Arduino Nano主板的IO口A6控制,右边光敏传感器是由Arduino Nano主板的IO口A7控制。

image149

实验现象

将实验代码上传至Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,寻光车能够跟随着光移动。

Project 14: 红外遥控和接收#

红外遥控在日常生活中随处可见,它被用来控制各种家电,如电视、音响、录影机和卫星信号接收器。红外遥控是由红外发射和红外接收系统组成的,也就是一个红外遥控器、红外接收器和一个能解码的单片机组成的,小车上有个红外接收器。在本章中,将介绍红外遥控器和红外接收器,并制作一辆红外遥控小车。

实验简介

在本实验中,使用红外接收器和红外遥控器相结合,读取红外遥控器上的按键值并将按键值打印在串口监视器上。

元件知识

*红外(IR)遥控器:* 是一种具有一定数量按钮的设备。按下不同的按钮会使位于遥控器前端的红外发射管以不同的编码发送红外信号。红外遥控技术应用广泛,如电视、空调等。因此,在当今科技发达社会,红外遥控技术使你切换电视节目和调节空调温度都很方便。

我们使用的遥控器如下所示:

该红外遥控器采用NEC编码,信号周期为110ms。

image150

*红外(IR)接收器:* 它是一种元件,可以接收红外光,所以可以用它来检测红外遥控器发出的红外光信号。红外接收器解调接收到的红外光信号,并将其转换回二进制,然后将信息传递给微控制器。

红外信号调制过程图:

image151

*NEC红外通信协议:*

*NEC 协议*

据我所知,我在这里描述的协议是由NEC(现在的瑞萨)开发的。我在互联网上看到过非常类似的协议描述,那里的协议被称为日本格式。

我承认,我不知道到底是谁开发的。我所知道的是,它被用于我的晚期录像机,由三洋公司生产,以Fisher的名义销售。NEC生产了遥控IC。

这段描述取自我的录像机的维修手册。在那些日子里,服务手册上充满了有用的信息!

*特点*

  • 8位地址和8位命令长度。

  • 可使用扩展模式,使地址大小加倍。

  • 地址和命令传输两次,以保证可靠性。

  • 脉冲距离调制。

  • 载波频率为38kHz。

  • 位时间为1.125ms或2.25ms。

*调制*

image152

NEC协议使用脉冲距离编码的比特。每个脉冲是一个560µs长的38kHz载波突发(约21个周期)。一个逻辑 “1 “需要2.25ms的传输时间,而一个逻辑 “0 “只有一半,为1.125ms。推荐的载波占空比是1/4或1/3

*协议*

image153

上图显示了NEC协议的一个典型脉冲序列。在这个协议中,LSB首先被传送。在这种情况下,地址59和命令16被传送。一个信息由一个9ms的AGC脉冲开始,它被用来设置早期红外接收器的增益。这个AGC突发之后是一个4.5ms的空格,然后是地址和命令。地址和命令被传送两次。第二次所有的位都是反转的,可以用来验证所收到的信息。总的传输时间是恒定的,因为每个比特都以其倒置的长度重复传输。如果你对这种可靠性不感兴趣,你可以忽略倒置的值,或者你可以将地址和命令扩展到每个16位

请记住,为了能够确定最后一个比特的值,在信息的最后还必须有一个额外的560µs的突发。

image154

一个命令只传送一次,即使遥控器上的键一直按着。每隔110ms就会传输一个重复代码,只要按键不动。这个重复代码只是一个9ms的AGC脉冲,然后是一个2.25ms的空间和一个560µs的脉冲。

image155

*扩展的NEC协议*

NEC协议被广泛使用,很快所有可能的地址都用完了。通过牺牲地址冗余,地址范围从256个可能的值扩展到大约65000个不同的值。这样,地址范围从8位扩展到16位,而不改变协议的任何其他属性。

通过这种方式扩展地址范围,总的信息时间不再是恒定的。现在它取决于消息中1和0的总数。如果你想保持总的消息时间不变,你就必须确保地址栏中1的数量是8(这自动意味着0的数量也是8)。这将使不同地址的最大数量减少到只有13000左右。

命令的冗余仍然被保留下来。因此,每个地址仍然可以处理256个不同的命令。

image156

请记住,扩展协议的256个地址值是无效的,因为它们实际上是正常的NEC协议地址。只要低字节与高字节完全相反,就不是一个有效的扩展地址。

实验代码

image-20230703094242477

实验现象

将实验代码上传到Arduino Nano主板,利用USB线上电后,再打开串口监视器,设置波特率为9600,

按下红外遥控器上的一个按钮,你会在串口显示器上看到一个代码。多次按下相同的按钮以确保你拥有该按钮的正确代码。如果看到FFFFFFFF,请忽略它。

image-20230703094352313

写下红外遥控器与每个按钮相关联的代码,因为你稍后将需要这些信息。

image157

Project 15: 红外遥控车#

实验简介:

img-20230518082547

在上面实验中,我们已经了解了8*8点阵、电机驱动和调速、红外接收器和红外遥控器等硬件知识,在本实验中,我们将使用红外遥控器和红外接收器来控制小车做一些动作。

工作原理:

按键

按键代码

功能

image158

FF629D

前进

点阵屏显示“前进”图案

image159

FFA857

后退

点阵屏显示“后退”图案

image160

FF22DD

向左转

点阵屏显示“左转”图案

image161

FFC23D

向右转

点阵屏显示“右转”图案

image162

FF02FD

停止

点阵屏显示“停止”图案

流程图:

image163

实验代码

image164

实验现象

上传实验代码至Arduino Nano主板,小车安上电池,并且将电源开关拨到ON端,上电后,按下红外遥控器对应按键,小车跟着遥控器按下的按键做出相应的动作。

Project 16: APP控制8x8点阵#

实验简介:

ESP8266串口WIFI ESP-01模块,它是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。

并且ESP8266串口WIFI ESP-01模块通过WIFI测试代码得到相关的WIFI信息。那么在这个实验中,我们将使用ESP8266串口WIFI ESP-01模块通过APP和WIFI来控制小车上的8*8点阵。

实验元件

|imag e-20230703134457324|

|imag e-20230703134509941|

|imag e-20230703134518072|

ESP8266串口WIFI ESP-01*1

USB转ESP-01S WIFI 模块串口测试扩展板*1

USB线*1

image167 |imag e-20230703134532685|

|imag e-20230703134538720|

智能手机/IPad*1

Beetlebot小车*1

元件知识

image168

*USB转ESP-01S WIFI模块串口测试扩展板:* 适用于ESP-01S WiFi模块,扩展板的拨动开关打到flash boot端,直插于电脑USB口,用安信可串口调试助手测试AT指令。

扩展板的拨动开关打到Uart Download 端,直插于电脑USB口,ESP-01模块处于下载模式,通过安信可固件下载软件可下载固件到ESP-01模块中。

image169

ESP8266串口 WIFIESP-01: ESP8266串口WIFI ESP-01是一款超低功耗的UART-WiFi 透传模块,ESP8266串口WIFI ESP-01可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。

产品特性

** 支持无线802.11 b/g/n 标准

** 支持STA/AP/STA+AP 三种工作模式

** 内置TCP/IP协议栈,支持多路TCP Client连接

** 支持丰富的Socket AT指令

** 支持UART/GPIO数据通信接口

** 支持Smart Link 智能联网功能

** 支持远程固件升级(OTA)

** 内置32位MCU,可兼作应用处理器

** 超低能耗,高集成度的 Wi-Fi 芯片,适合电池供电应用

** 超宽工作温度范围:-40°C 至 +125°C

** 3.3V 单电源供电

模块基本参数

  • 模块

    型号

    主芯片

    ESP8266-01

    ESP8266

  • 无线参数

    无线标准*

    频率范围*

    发射功率*

    接 收灵敏度

    天线形式*

    IEEE 802.11b/g/n

    2.412G Hz-2.484GHz

    802.11b: +16 +/-2dBm (@11Mbps)

    802.11b: -93 dBm (@11Mbps ,CCK)

    外置: 邮票孔接口

    802.11g: +14 +/-2dBm (@54Mbps)

    802.11g: -85dBm (@54Mbps, OFDM)

    外置:I-PEX 连接器、SMA 连接器

    802.11n: +13 +/-2dBm (@HT20, MCS7)

    802.11n: -82dBm (@HT20, MCS7)

    内 置:板载PCB 天线

  • 硬件参数

    硬件接口

    UART,IIC,PWM,GPIO,ADC

    工作电压

    3.3V

    GPIO驱动能力

    Max:15ma

    工作电流

    持续发送下=>平均值:~70mA,峰值: 200mA正常模式下=>平均: ~12mA,峰值: 200mA待机:<200uA,

    工作温度

    -40℃~125℃

    存储环境

    温度:<40℃,相对湿度:<90%R.H.

    尺寸

    板载PCB天线:14.3mm24.8mm1mm;

  • 串口透传.

    传输速率

    TCP Client

    110-921600bps

    5个

  • 软件参数

    无线网络类型

    STA/AP/STA+AP

    安全机制

    WEP/WPA-PSK/WPA2-PSK

    加密类型

    WEP64/WEP128/TKIP/AES

    固件升级

    本地串口,OTA远程升级

    网络协议

    IPv4, TCP/UDP/FTP/HTTP

    用户配置

    AT+指令集, Web 页面 Android/iOS 终端, Smart Link 智能配置APP

硬件介绍:

ESP8266硬件接口丰富,可支持UART,IIC,PWM,GPIO,ADC等,适用于各种物联网应用场合。

引脚

功能

说明

1

URXD

1)UART_RXD,接收;2)General Purpose Input/Output:GPIO3;

2

UTXD

1)UART_TXD,发送;2)General Purpose Input/Ou tput:GPIO1;3)开机时禁止下拉;

5

RESET(GPIO 16)

外部Reset信号 ,低电平复位,高电平工作(默认高);

6

GND

GND

8

VCC

3.3V,模块供电;

9

ANT

WiFi Antenna

11

GPIO0

1)默认WiFi Status:WiFi工作状 态指示灯控制信号;2)工作模式选择: 悬空:Flash Boot,工作模式; 下拉:UART Download,下载模式;

12

ADC

ADC,输入范围:0V-1V;

13

GPIO15

下拉:工作模式;

14

CH_PD

1) 高电平工作;2)低电平模块供电关掉;

15

GPIO2

1)开机上电时必须为高电 平,禁止硬件下拉;2)内部默认已拉高

功耗

模式

最小值

通常

最大值

单位

传送802.11b,CCK 1Mbps,Pout=+19.5dBm

215

mA

传送802.11b,CCK 11Mbps,Pout=+18.5dBm

197

mA

传送802.11g,OFDM54 Mbps,Pout=+16dBm

145

mA

传送802.11n,MCS7,Pout=+14dBm

135

mA

接收802.11b,包长1024字节,-80dBm

100

mA

接收802.11g,包长1024字节,-70dBm

100

mA

接收802.11n,包长1024字节,-65dBm

102

mA

系统待机模式

70

mA

关机

0.5

μA

下列功耗数据是基于3.3V的电源、25°的环境温度下测得。

1.所有测量均在天线接口处完成。

2.所有发射数据是基于 90% 的占空比,在持续发射的模式下测得的。

射频指标:

以下数据是在室内温度下,电压为3.3V时测得。

描述

最小值

通常

最大值

单位

输入频率

2412

2484

MHz

输入电阻

50

Ω

输入反射

-10

dB

72.2Mbps下,PA的输出功率

14

15

16

dBm

802.11b模式下,PA的输出功率

17.5

18.5

19.5

dBm

灵敏度

CCK 1Mbps

-98

dBm

CCK 11Mbps

-91

dBm

6Mbps(1/2BPSK)

-93

dBm

54Mbps(3/4 64-QAM)

-75

dBm

HT20,MCS7(65Mbps,72.2Mbps)

-71

dBm

邻频抑制

OFDM,6Mbps

37

dB

OFDM,54Mbps

21

dB

HT20,MCS0

37

dB

HT20,MCS7

20

dB

注: 1. 72.2Mbps是在802.11n模式下,MCS=7,GI=200uS时测得;

  1. 802.11b模式下最高可达+19.5dBm的输出功率。

功能描述

*A.主要功能*

ESP8266可以实现的主要功能包括:串口透传,PWM 调控,GPIO控制。

※串口透传:数据传输,传输的可靠性好,最大的传输速率为:460800bps。

※PWM 调控:灯光调节,三色LED 调节,电机调速等。

※GPIO控制:控制开关,继电器等。

*B.工作模式*

ESP8266模块支持STA/AP/STA+AP 三种工作模式。

❊STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。

image170

❊AP 模式:ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。

❊STA+AP 模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。

image171

*C.应用领域*

✭✮串口CH340 转Wi-Fi;

✭✮工业透传DTU;

✭✮Wi-Fi 远程监控/控制;

✭✮玩具领域;

✭✮彩色LED 控制;

✭✮消防、安防智能一体化管理;

✭✮智能卡终端,无线POS 机,Wi-Fi 摄像头,手持设备等

将WIFI模块串口测试扩展板插入电脑的USB口:

A. 将ESP8266串口WIFI ESP-01模块正确方向插入USB转ESP-01S WIFI模块串口测试扩展板上。

image172

B. 先将USB转ESP-01S WIFI模块串口测试扩展板上的拨码开关拨到UartDownload端,再将USB转ESP-01S WIFI模块串口测试扩展板插入电脑的USB口。

image173

添加ESP8266主控板:

点击image-20230703102539467进入主控板页面,可以选择需要添加的设备(控制板),本项目需要选择ESP8266主控板。先点击ESP8266主控板所处区域,后点击“*连接*”。这样ESP8266主板已连接上,点击“*返回编辑器*”回到代码编辑器。这样,我们会发现image-20230703103305405变成image-20230703103216430,同时image-20230703103236895变成image174,说明ESP8266主板和端口(COM) 都已经连接上了。

image-20230703102753862

image175

image-20230703102722717

image176

image-20230703102952533

image177

image-20230703103009690

image178

image-20230703103057989

添加Beetlebot wifi 模块:

这里需要添加Beetlebot wifi 模块,先点击image179图标进入传感器/模块扩展界面,然后找到并点击 “Beetlebot wifi” 区域 ,“未加载”会变成“已加载”。这样,Beetlebot wifi 模块就添加成功,点击image180返回代码编辑器界面,就可以看到添加的Beetlebot wifi 模块。

image-20230703132125286 image181image-20230703131901487 image182image-20230703131929026 image183image-20230703132002666

image-20230703132051579

ESP8266 代码:

注意: 如果家里没有WIFI,需要打开手机热点共享WIFI.

image-20230703132208975

特别注意: 需要将ESP8266代码image184

中的Wifi名称和Wifi密码改成你们自己的Wifi名称和Wifi密码。

A. Wifi名称和Wifi密码修改后,确保USB转ESP-01S WIFI模块串口测试扩展板上的拨码开关已经拨到Uart Download 端,并且也确定USB转ESP-01S WIFI模块串口测试扩展板已经插入电脑的USB口,然后点击kidsblock软件上的“上传” 按钮 。将ESP8266代码上传到ESP8266串口WIFI ESP-01模块上,上传成功。(注意:如果上传失败,在板型和COM口没问题下,将USB转ESP-01S WIFI模块串口测试扩展板从电脑的USB口拔下来再次插到电脑的USB口)

image185

B. ESP8266代码上传成功后,先将USB转ESP-01S WIFI模块串口测试扩展板从电脑的USB口拔下来,再将ESP8266串口WIFI ESP-01模块从USB转ESP-01S WIFI模块串口测试扩展板上拔下来。

USB线连接电脑和Arduino Nano主板:

image186

Beetlebot页面设置:

更换开发板,点击image-20230703133342925进入设备选择页面,点击 “套件”,选中 Beetlebot 3in1 Robot for Arduino ,单击“连接”。

image-20230703133422037

image187

image-20230703133451215

Arduino Nano实验代码:

image188

实验现象:

点击kidsblock软件上的“*上传*” 按钮将Arduino Nano实验代码上传至Arduino Nano主板。Arduino Nano实验代码上传成功后,再将ESP8266串口WIFI ESP-01模块插入小车PCB板上的WiFi插口。(注意:USB线不要拔下来,否则读取不了COM端口)

image189

点击串口监视器窗口中的image190,将波特率设置为9600。这样,串口监视器就显示此时你们WIFI的IP地址。(WIFI的IP地址有时候会改变,如果原来的IP地址不行,需要重新检测WIFI的IP地址)

image191

安卓系统设备(手机/平板)APP:

现将文件夹中的Beetlebot.apk文件转移到安卓系统手机或平板上,点击Beetlebot.apk文件进入安装页面,点击“*ALLOW*”按钮,然后再点击“*INSTALL*”按钮,安装完成后点击“*OPEN*”按钮就可以进入APP界面。

image192

image193

image194

image195

image196

image197

image198

image199image200

先在WIFI按钮前面的文本框中输入检测到的WIFI IP地址(例如,上面串口监视器检测到的IP地址:192.168.1.126),再切换WIFI按钮来连接WiFi(白色WIFI按钮变成绿色WIFI按钮),同时WIFI IP地址前的文本框中会显示对应的WIFI IP地址“192.168.1.134”。这样,就说明APP已经连接上了WIFI。

image201

IOS系统设备(手机/iPad)APP

a.打开App Store。

image202

b.在搜索框输入Beetlebot,点击搜索,出现下载界面,点击“image203”,就可以下载安装Beetlebot的APP。接下来的操作和安卓系统类似的,可以参考上面安卓系统的步骤进行操作。

注意: 点击APP上的按钮,ESP8266串口WIFI ESP-01模块上的蓝色指示灯会闪烁,说明APP已经连接上WIFI。

APP已经连接上了WIFI之后,开始进行如下操作:

点击APP上的按钮,串口监视器窗口打印一些对应的控制字符,如下图所示:

image204

APP上各个按钮(控件)对应的功能,如下图所示:

image205

此代码实验APP操作及现象:

点击image206按钮,小车前面的88点阵显示“笑脸”图案;点击img按钮,小车前面的88点阵显示“十”图案;点击image207按钮,小车前面的8*8点阵显示“❤”图案。

Project 17: WiFi控制多功能小车#

img-20230518083704

学习前面的课程,我们学完了控制Beetlebot小车的所有模块的功能。前面学的每样功能都要烧录一次对应的代码,我们想玩其它功能时就比较麻烦。现在我们编写个代码,将多个功能集合到一起,通过APP来切换功能,这样就会比较方便的玩多种功能了。

1. ESP8266wifi的代码和上一课一样,修改好自己的WiFi密码。(如果上一课已经烧录过了,就不需要重复烧录)

image-20230703134316557

  1. 给Beetlebot的主控Arduino Nano主板烧录代码,代码在如下图文件夹中。

image-20230703134327848

image208

  1. APP操作,如下图。

可实现小车前、后、左、右电机控制,控制蜂鸣器鸣叫和播放音乐,控制RGB灯、点阵功能,控制小车循迹、避障、寻光和跟随等功能。

2023-07-01_140100