LEGO 拓展教程#
1. 足球机器人#
足球机器人形态安装步骤#
安装1
先将两个光敏传感器拆下:

安装所需零件:

安装:

完成:

安装2
安装所需零件:

安装:

完成:

安装3
安装所需零件:

安装:

完成:

安装4
安装所需零件:

安装:

完成:

安装5
安装所需零件:

安装:

完成:

安装6
安装所需零件:

安装: (注意舵机线的位置)

完成:

安装7
安装所需零件:

安装:

完成:

安装8
安装所需零件:

安装:
(注意调整夹爪角度,使其闭合朝前)

完成:

安装9
安装所需零件:

注意:在安装前需要先调节舵机角度为180度。
将舵机的线接到PCB上板的S2接口:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |

Arduino 代码:
#include <Servo.h>
Servo lgservo; // 创建舵机对象来控制舵机
void setup() {
lgservo.attach(3); // 将舵机接到引脚G3上
}
void loop() {
lgservo.write(180); // 舵机转到对应角度位置
}
上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置:

安装: (齿轮安装时保持夹爪为闭合朝前状态)

完成:

安装10
安装所需零件:

安装:

完成:

安装11
安装所需零件:

安装:

完成:

足球机器人形态完成

足球机器人形态接线图
灰色乐高乐高舵机接线图:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |


足球门安装步骤#
安装1
安装所需零件:

安装:

完成:

安装2
安装所需零件:

安装:

完成:

安装3
安装所需零件:

安装:

完成:

足球机器人课程#

1.实验简介:#
足球运动是一种大家非常喜爱的运动。让机器人去踢足球,听起来像天方夜谭似的。机器人也能去踢足球? 是的,足球机器人可以做到像我们人一样去组成团队进行踢足球比赛,比如:一年一度的RoboCup机器人世界杯—RoboCup足球赛等。在本实验中,我们利用乐高积木搭建了一款足球机器人,并且使用足球机器人把小足球送进足球门里。
2.足球机器人造型搭建:#

3.实验代码:#
需要先上传代码“ESP8266_Code”至ESP8266串口WIFI ESP-01模块中,其操作方法可以参照“Arduino C 教程”中的项目16或者项目17。

特别注意:需要先将“ESP8266_Code”中的用户Wifi名称和用户Wifi密码
改成你们自己的Wifi名称和Wifi密码。
“ESP8266_Code”上传完后,再上传对应的实验代码“football_robot”位置如下图:

#include <Servo.h>
Servo lgservo;
#define ML 15
#define ML_PWM 17
#define MR 14
#define MR_PWM 16
#define servo2 3
char val;
char wifiData;
void setup() {
Serial1.begin(9600);
pinMode(ML, OUTPUT);
pinMode(ML_PWM, OUTPUT);
pinMode(MR, OUTPUT);
pinMode(MR_PWM, OUTPUT);
lgservo.attach(3);
lgservo.write(180);
delay(1000);
lgservo.write(145);
}
void loop() {
if(Serial1.available() > 0)
{
val = Serial1.read();
Serial.print(val);
}
switch(val)
{
case 'F': car_forward(); break;
case 'B': car_back(); break;
case 'L': car_left(); break;
case 'R': car_right(); break;
case 'S': car_stop(); break;
case 'p': lgservo.write(180); break;
case 'x': lgservo.write(145); break;
}
}
void car_forward()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,127);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,127);
}
void car_back()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,127);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,127);
}
void car_left()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,150);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,105);
}
void car_right()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,105);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,150);
}
void car_stop()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,0);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,0);
}
4.实验场景:#
1.将足球门(乐高造型已搭好)放在地上某个固定的位置,APP连上WiFi。
2.将小足球放在足球机器人的夹子中间,按住APP上的
按钮使夹子夹住小足球,同时操作小车方向按钮
使足球机器人把小足球送到离足球门一小段距离处再松开按钮
。这样,小足球掉在地上且往前滚,看看小足球是否会滚进足球门里?如果没有,就反复上面的操作,使小足球最终进入足球门里。
3.如果你们小伙伴们也拥有这款足球机器人,可以和小伙伴们一起进行足球比赛,每一个足球机器人都夹着小足球,大家都操作各自的APP上的小车方向按钮,看看谁能最终把足球送到足球门里。
2. 投石攻城车#
投石攻城车形态安装步骤#
安装1
安装所需零件:

安装:

完成:

安装2
安装所需零件:

安装:

完成:

安装3
安装所需零件:

安装:

完成:

安装4
安装所需零件:

安装:

完成:

安装5
安装所需零件:

安装:

完成:

安装6
安装所需零件:

安装:

完成:

安装7
安装所需零件:

安装:

完成:

安装8
安装所需零件:

安装: (注意舵机线的位置)

完成:

安装9
安装所需零件:

安装:

完成:

安装10
安装所需零件:

安装:

完成:

安装11
安装所需零件:

安装:

完成:

安装12
安装所需零件:

安装:

完成:

安装13
安装所需零件:

安装:

完成:

安装14
安装所需零件:

安装:

完成:

安装15
安装所需零件:

安装:

完成:

安装16
安装所需零件:

安装:

完成:

安装17
安装所需零件:

安装前需调节舵机角度为0°。
将舵机的线接到PCB上板的S2接口:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |

Arduino 代码:
#include <Servo.h>
Servo lgservo; // 创建舵机对象来控制舵机
void setup() {
lgservo.attach(3); // 将舵机接到引脚G3上
}
void loop() {
lgservo.write(0); // 舵机转到对应角度位置
}
上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置:

安装: (安装姿态与下图保持一致)
完成:

安装18
安装所需零件:

安装:

完成:

投石攻城车完成#

投石攻城车形态接线图#
灰色乐高舵机接线图:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |

投石攻城车课程#

1.实验简介:#
投石攻城车在古代主要用于围攻和防守要塞,主要是用木头制作的,是利用配重物的重力发射,把石头抛出去。我们也制作了一款投石攻城车,是由车和乐高积木搭建而成的,车上装有舵机和齿轮,长臂末端有乐高搭建的凹槽是用于装投射物。发射时,舵机转动带动齿轮把长臂向后推,把投射物放入凹槽中,当舵机转动一定角度带动齿轮把长臂完全升起时,投射物从凹槽中飞出。
2.投石攻城车造型搭建:#

3.实验代码:#
需要先上传代码“ESP8266_Code”至ESP8266串口WIFI ESP-01模块中,其操作方法可以参照“Arduino C 教程”中的项目16或者项目17。。
特别注意:需要先将“ESP8266_Code”中的用户Wifi名称和用户Wifi密码
改成你们自己的Wifi名称和Wifi密码。
“ESP8266_Code”上传完后,再上传对应的实验代码“catapult”位置如下图:

#include <Servo.h>
Servo lgservo;
#define ML 15
#define ML_PWM 17
#define MR 14
#define MR_PWM 16
#define servo2 3
char val;
char wifiData;
boolean servo_flag = 1;
void setup() {
Serial1.begin(9600);
pinMode(ML, OUTPUT);
pinMode(ML_PWM, OUTPUT);
pinMode(MR, OUTPUT);
pinMode(MR_PWM, OUTPUT);
lgservo.attach(3);
lgservo.write(0);
}
void loop() {
if(Serial1.available() > 0)
{
val = Serial1.read();
Serial.print(val);
}
switch(val)
{
case 'F': car_forward(); break;
case 'B': car_back(); break;
case 'L': car_left(); break;
case 'R': car_right(); break;
case 'S': car_stop(); break;
case 'p': lgservo.write(85);servo_flag = 1; break;
case 'x': servo_down(); break;
}
}
void servo_down()
{
while( servo_flag == 1)
{
for(int i=55; i>0; i--)
{
lgservo.write(i);
delay(2);
}
servo_flag = 0;
}
}
void car_forward()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,255);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,255);
}
void car_back()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,0);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,0);
}
void car_left()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,150);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,105);
}
void car_right()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,105);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,150);
}
void car_stop()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,0);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,0);
}
4.实验场景:#
1.在场地用乐高积木搭建几个目标物(目标物A,B,C,D,E),目标物在投石攻城车前方且都隔一段距离。APP连上WiFi。
2.操作APP上的小车方向
按钮使投石攻城车正对目标物A一段距离,按住按钮
,舵机转动一定角度带动齿轮升起长臂把乐高积木块抛出去;松开按钮
,舵机转动带动齿轮把长臂向后推。看看乐高积木块是否打击到目标物A?如果没有,就反复操作小车方向按钮
、按住或松开按钮
,调整投石攻城车与目标物A之间的距离,使抛出去的乐高积木块刚好可以打击到目标物A。
3.打击目标物B,C,D,E的操作方法和上面的一样。按住按钮
,舵机转动一定角度带动齿轮升起长臂把乐高积木块抛出去。
3. 搬运机器人#
搬运机器人形态安装步骤#
安装1
将超声波云台拆下:

安装所需零件:

安装:

完成:

安装2
安装所需零件:

安装:

完成:

安装3
安装所需零件:

安装:

完成:

安装4
安装所需零件:

安装:

完成:

安装5
安装所需零件:

安装:

完成:

安装6
安装所需零件:

安装:

完成:

安装7
安装所需零件:

安装:

完成:

安装8
安装所需零件:

安装: (注意舵机线的位置)

完成:

安装9
安装所需零件:

安装前需调节舵机角度为180°。
将舵机的线接到PCB上板的S2接口:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |

Arduino 代码:
#include <Servo.h>
Servo lgservo; // 创建舵机对象来控制舵机
void setup() {
lgservo.attach(3); // 将舵机接到引脚G3上
}
void loop() {
lgservo.write(180); // 舵机转到对应角度位置
}
上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置:

安装: (安装姿势与下图一致)

完成:

安装10
安装所需零件:

安装1:

安装2:

安装2完成:

安装3:

完成:

搬运机器人形态安装完成#

搬运机器人形态接线图#
灰色乐高舵机接线图:
舵机 |
小车PCB板 |
|---|---|
棕线 |
G |
红线 |
5V |
橙黄线 |
S2(G3) |

搬运机器人课程#

1. 实验简介:#
在众多的工业机器人中,搬运机器人无疑是应用率较高的机器人之一,不管是在工业制造、仓储物流、烟草、医药、食品、化工等行业领域,还是在邮局、图书馆、港口码头、机场、停车场等场景,都可以见到搬运机器人的身影。在本实验中,我们也利用乐高积木搭建了一款搬运机器人来搬运东西。
2.搬运机器人造型搭建:#

3.实验代码:#
需要先上传代码“ESP8266_Code”至ESP8266串口WIFI ESP-01模块中,其操作方法可以参照“Arduino C 教程”中的项目16或者项目17。

特别注意:需要先将“ESP8266_Code”中的用户Wifi名称和用户Wifi密码
改成你们自己的Wifi名称和Wifi密码。
“ESP8266_Code”上传完后,再上传对应的实验代码“handling_robot”位置如下图:

#include <Servo.h>
Servo lgservo;
#define ML 15
#define ML_PWM 17
#define MR 14
#define MR_PWM 16
#define servo2 3
char val;
char wifiData;
void setup() {
Serial1.begin(9600);
pinMode(ML, OUTPUT);
pinMode(ML_PWM, OUTPUT);
pinMode(MR, OUTPUT);
pinMode(MR_PWM, OUTPUT);
lgservo.attach(3);
lgservo.write(180);
}
void loop() {
if(Serial1.available() > 0)
{
val = Serial1.read();
Serial.print(val);
}
switch(val)
{
case 'F': car_forward(); break;
case 'B': car_back(); break;
case 'L': car_left(); break;
case 'R': car_right(); break;
case 'S': car_stop(); break;
case 'p': lgservo.write(110); break;
case 'x': lgservo.write(180); break;
}
}
void car_forward()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,127);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,127);
}
void car_back()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,127);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,127);
}
void car_left()
{
digitalWrite(ML,HIGH);
analogWrite(ML_PWM,150);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,105);
}
void car_right()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,105);
digitalWrite(MR,HIGH);
analogWrite(MR_PWM,150);
}
void car_stop()
{
digitalWrite(ML,LOW);
analogWrite(ML_PWM,0);
digitalWrite(MR,LOW);
analogWrite(MR_PWM,0);
}
4.实验场景:#
1.在投石攻城车项目实验中,投石攻城车抛乐高积木块击打目标物A、B、C、D散落满地的一些乐高积木。
2.APP连上WiFi,操作APP上的小车方向按钮
使搬运机器人移动到散落满地的乐高积木旁。
3.用手拣一些小的乐高积木块放到铲斗上,操作APP上的小车方向按钮
使搬运机器人把乐高积木搬运到原始位置。按住按钮
,舵机转动一定角度带动齿轮使铲斗升起,这样,运送的乐高积木块就掉下来。
4.重复上面的操作方法,把所有的乐高积木块都搬运到原始位置。