LEGO 拓展教程#

1. 足球机器人#

足球机器人形态安装步骤#

安装1

先将两个光敏传感器拆下: Img

安装所需零件: Img

安装: Img

完成: Img

安装2

安装所需零件: Img

安装: Img

完成: Img

安装3

安装所需零件: Img

安装: Img

完成: Img

安装4

安装所需零件: Img

安装: Img

完成: Img

安装5

安装所需零件: Img

安装: Img

完成: Img

安装6

安装所需零件: Img

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

Img

完成: Img

安装7

安装所需零件: Img

安装: Img

完成: Img

安装8

安装所需零件: Img

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

完成: Img

安装9

安装所需零件: Img

注意:在安装前需要先调节舵机角度为180度。

将舵机的线接到PCB上板的S2接口:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img

Arduino 代码:

#include <Servo.h>
Servo lgservo;  // 创建舵机对象来控制舵机

void setup() {
  lgservo.attach(3);  // 将舵机接到引脚G3上
}

void loop() {
  lgservo.write(180); // 舵机转到对应角度位置
}

上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置: Img

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

Img

完成: Img

安装10

安装所需零件: Img

安装: Img

完成: Img

安装11

安装所需零件: Img

安装: Img

完成: Img

足球机器人形态完成 Img

足球机器人形态接线图

灰色乐高乐高舵机接线图:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img

Img

足球门安装步骤#

安装1

安装所需零件: Img

安装: Img

完成: Img

安装2

安装所需零件: Img

安装: Img

完成: Img

安装3

安装所需零件: Img

安装: Img

完成: Img

足球机器人课程#

Img

1.实验简介:#

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

2.足球机器人造型搭建:#

Img

3.实验代码:#

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

特别注意:需要先将“ESP8266_Code”中的用户Wifi名称和用户Wifi密码Img改成你们自己的Wifi名称和Wifi密码。

“ESP8266_Code”上传完后,再上传对应的实验代码“football_robot”位置如下图: Img

#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上的Img按钮使夹子夹住小足球,同时操作小车方向按钮Img使足球机器人把小足球送到离足球门一小段距离处再松开按钮Img。这样,小足球掉在地上且往前滚,看看小足球是否会滚进足球门里?如果没有,就反复上面的操作,使小足球最终进入足球门里。

3.如果你们小伙伴们也拥有这款足球机器人,可以和小伙伴们一起进行足球比赛,每一个足球机器人都夹着小足球,大家都操作各自的APP上的小车方向按钮,看看谁能最终把足球送到足球门里。

2. 投石攻城车#

投石攻城车形态安装步骤#

安装1

安装所需零件: Img

安装: Img

完成: Img

安装2

安装所需零件: Img

安装: Img

完成: Img

安装3

安装所需零件: Img

安装: Img

完成: Img

安装4

安装所需零件: Img

安装: Img

完成: Img

安装5

安装所需零件: Img

安装: Img

完成: Img

安装6

安装所需零件: Img

安装: Img

完成: Img

安装7

安装所需零件: Img

安装: Img

完成: Img

安装8

安装所需零件: Img

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

Img

完成: Img

安装9

安装所需零件: Img

安装: Img

完成: Img

安装10

安装所需零件: Img

安装: Img

完成: Img

安装11

安装所需零件: Img

安装: Img

完成: Img

安装12

安装所需零件: Img

安装: Img

完成: Img

安装13

安装所需零件: Img

安装: Img

完成: Img

安装14

安装所需零件: Img

安装: Img

完成: Img

安装15

安装所需零件: Img

安装: Img

完成: Img

安装16

安装所需零件: Img

安装: Img

完成: Img

安装17

安装所需零件: Img

安装前需调节舵机角度为0°。

将舵机的线接到PCB上板的S2接口:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img

Arduino 代码:

#include <Servo.h>
Servo lgservo;  // 创建舵机对象来控制舵机

void setup() {
  lgservo.attach(3);  // 将舵机接到引脚G3上
}

void loop() {
  lgservo.write(0); // 舵机转到对应角度位置
}

上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置: Img

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

完成: Img

安装18

安装所需零件: Img

安装: Img

完成: Img

投石攻城车完成#

Img

投石攻城车形态接线图#

灰色乐高舵机接线图:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img Img

投石攻城车课程#

Img

1.实验简介:#

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

2.投石攻城车造型搭建:#

Img

3.实验代码:#

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

#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上的小车方向Img按钮使投石攻城车正对目标物A一段距离,按住按钮Img,舵机转动一定角度带动齿轮升起长臂把乐高积木块抛出去;松开按钮Img,舵机转动带动齿轮把长臂向后推。看看乐高积木块是否打击到目标物A?如果没有,就反复操作小车方向按钮Img、按住或松开按钮Img,调整投石攻城车与目标物A之间的距离,使抛出去的乐高积木块刚好可以打击到目标物A。

3.打击目标物B,C,D,E的操作方法和上面的一样。按住按钮Img,舵机转动一定角度带动齿轮升起长臂把乐高积木块抛出去。

3. 搬运机器人#

搬运机器人形态安装步骤#

安装1

将超声波云台拆下: Img

安装所需零件: Img

安装: Img

完成: Img

安装2

安装所需零件: Img

安装: Img

完成: Img

安装3

安装所需零件: Img

安装: Img

完成: Img

安装4

安装所需零件: Img

安装: Img

完成: Img

安装5

安装所需零件: Img

安装: Img

完成: Img

安装6

安装所需零件: Img

安装: Img

完成: Img

安装7

安装所需零件: Img

安装: Img

完成: Img

安装8

安装所需零件: Img

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

Img

完成: Img

安装9

安装所需零件: Img

安装前需调节舵机角度为180°。

将舵机的线接到PCB上板的S2接口:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img

Arduino 代码:

#include <Servo.h>
Servo lgservo;  // 创建舵机对象来控制舵机

void setup() {
  lgservo.attach(3);  // 将舵机接到引脚G3上
}

void loop() {
  lgservo.write(180); // 舵机转到对应角度位置
}

上面的Arduino代码在资料中有提供,打开舵机的调整代码并烧录到Beetlebot的Raspberry Pi Pico主板,上传完成。代码如下图位置: Img

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

Img

完成: Img

安装10

安装所需零件: Img

安装1: Img

安装2: Img

安装2完成: Img

安装3: Img

完成: Img

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

Img

搬运机器人形态接线图#

灰色乐高舵机接线图:

舵机

小车PCB板

棕线

G

红线

5V

橙黄线

S2(G3)

Img Img

搬运机器人课程#

Img

1. 实验简介:#

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

2.搬运机器人造型搭建:#

Img

3.实验代码:#

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

特别注意:需要先将“ESP8266_Code”中的用户Wifi名称和用户Wifi密码Img改成你们自己的Wifi名称和Wifi密码。

“ESP8266_Code”上传完后,再上传对应的实验代码“handling_robot”位置如下图: Img

#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上的小车方向按钮Img使搬运机器人移动到散落满地的乐高积木旁。

3.用手拣一些小的乐高积木块放到铲斗上,操作APP上的小车方向按钮Img使搬运机器人把乐高积木搬运到原始位置。按住按钮Img,舵机转动一定角度带动齿轮使铲斗升起,这样,运送的乐高积木块就掉下来。

4.重复上面的操作方法,把所有的乐高积木块都搬运到原始位置。