DIY高大上!用STM32单片机搞定四旋翼无人机飞控

目前发现国内正儿八经机器人、无人机并且还能活跃地上网关注行业前沿动向、热爱写科普文章的研究人员原来越少。因此所有的研究回答里都没有人真正说明白无人机到底是什么,而理解无人机到底是什么才是回答这个问题的先决条件。
什么是无人机
首先,无人机就是不载人的飞行器,而说到飞行器,通常我们又可以把飞行器分为三类。
1、固定翼(fixed wing)。平时坐的波音747空客A380,还有F-16歼-15之类的都是固定翼飞机。顾名思义就是翅膀形状固定,靠流过机翼的风提供升力。动力系统包括桨和助推发动机。固定翼根据机翼尺寸的不同还有很多小的分类,在此不细说。固定翼飞行器的优点是在三类飞行器里续航时间最长、飞行效率最高、载荷最大,缺点是起飞的时候必须要助跑,降落的时候必须要滑行。
2、直升机(helicopter)。特点是靠一个或者两个主旋翼提供升力。如果只有一个主旋翼的话,还必须要有一个小的尾翼抵消主旋翼产生的自旋力。为了能往前后左右飞,主旋翼有极其复杂的机械结构,通过控制旋翼桨面的变化来调整升力的方向。动力系统包括发动机、整套复杂的桨调节系统、桨。直升机的优点是可以垂直起降,续航时间比较中庸,载荷也比较中庸。缺点是极其复杂的机械结构导致了比较高的维护成本。
3、多旋翼(multi-rotor)。四个或者更多个旋翼的直升机,也能垂直起降,但是通常只有直升机叫直升机,多旋翼就叫多旋翼,而不叫多旋翼直升机。四旋翼特别叫做quadrotor。多旋翼机械结构非常简单,动力系统只需要电机直接连桨就行。下图是直升机的动力系统结构,再下图是多旋翼的动力系统结构。不懂机械的人也能看出多旋翼简单得多。多旋翼的优点是机械简单,能垂直起降,缺点是续航时间最短,载荷也最小。
今天来给大家介绍下四旋翼无人机,看看怎么是真正的技术,吼吼吼……
DIY高大上!用STM32单片机搞定四旋翼无人机飞控
1.i2c通信方式;
因为我不是学电类专业,最开始对i2c这些是没有一点概念,最后通过Google了解了一些原理,然后发现STM32的开发库是带有i2c通信的相关函数的,但是我最后还是没有用这些函数。
我通过GPIO模拟i2c,这样也能获得mpu6050的数据,虽然代码多了一些,但是比较好的理解i2c的原理。
STM32库实现的模拟i2c代码(注释好像因为编码问题跪了):
DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控DIY高大上!用STM32单片机搞定四旋翼无人机飞控
2.PID控制算法;
由于简单的线性控制不可能满足四轴飞行器这个灵敏的系统,引入PID控制器来更好的纠正系统。
简介:PID实指“比例proportional”、“积分integral”、“微分derivative”,这三项构成PID基本要素。每一项完成不同任务,对系统功能产生不同的影响。
DIY高大上!用STM32单片机搞定四旋翼无人机飞控
以Pitch为例:
DIY高大上!用STM32单片机搞定四旋翼无人机飞控
error为期望角减去实时角度得到的误差;
iState为积分i参数对应累积过去时间里的误差总和;
if语句限定iState范围,繁殖修正过度;
微分d参数为当前姿态减去上次姿态,估算当前速度(瞬间速度);
总调整量为p,i,d三者之和;
这样,P代表控制系统的响应速度,越大,响应越快。
I,用来累积过去时间内的误差,修正P无法达到的期望姿态值(静差);
D,加强对机体变化的快速响应,对P有抑制作用。
PID各参数的整定需要综合考虑控制系统的各个方面,才能达到最佳效果。
输出PWM信号:
PID计算完成之后,便可以通过STM32自带的定时资源很容易的调制出四路pwm信号,采用的电调pwm格式为50Hz,高电平持续时间0.5ms-2.5ms;
我以1.0ms-2.0ms为每个电机的油门行程,这样,1ms的宽度均匀的对应电调的从最低到最高转速。
至此,一个用stm32和mpu6050搭建的飞控系统就算实现了。

MindCuber – 可以解开三阶魔方的乐高机器人

可以解开三阶魔方的乐高机器人
执行程序:
家庭版   v2p1 v2p0  v1p9 v1p8 v1p7 v1p6  v1p5  v1p4  v1p3  v1p1a
版本v1p1:下载  v1p0:下载
教育版   v2p1 v2p0    v1p9 v1p8 v1p7 v1p6  v1p5  v1p4  v1p3
增强固件:仅使用于v1p1和v1p0版,新版使用官方原版固件(1.06H、1.06E以上)
1.04M 下载            1.05M 下载
颜色传感器模块:下载
View Fullscreen

树莓派百度语音识别+图灵机器人对话聊天机器人

硬件

树莓派3B、USB声卡、麦克、USB音响

软件

python、百度语音识别API、图灵机器人、espeak

树莓派官方系统自带python环境。注册百度语音识别开发者账号,获取api key。

树莓派百度语音识别+图灵机器人对话聊天机器人

百度语音识别api

注册图灵机器人

树莓派百度语音识别+图灵机器人对话聊天机器人

接入图灵机器人

下来一个测试程序 测试一下图灵机器人正确接入。

在树莓派创建一个py文件:

|

# -*- coding: utf-8 -*-

import urllib

import json

def getHtml(url):

page = urllib.urlopen(url)

html = page.read()

return html

if __name__ == '__main__':

key = '你的api key'

api = 'http://www.tuling123.com/openapi/api?key=' + key + '& info='

while True:

info = raw_input('我: ')

request = api + info

response = getHtml(request)

dic_json = json.loads(response)

print '机器人: '.decode('utf-8') + dic_json['text']

|

保存之后运行 就可以文字对文字的聊天了。我们要的是对话。所以这里的文字输入要变成语音输入。那么我来调用百度语音api来帮我把文字从语音中提取。然后再把图灵机器人的回复的文字通过espeak通过音响说出来。

这里,树莓派自身是没有声卡的。还好有万能的某宝。找树莓派USB声卡。

树莓派百度语音识别+图灵机器人对话聊天机器人

当我们插上这个USB声卡,其实就可以使用了。因为树莓派上其实已经内置了当前流行的设备驱动。然后我们需要在树莓派上安装对应的录音程序。

1.##先更新软件包

2.sudo apt-get update

3.sudo apt-get upgrade

4.##安装必要的程序

5.sudo apt-get -y install alsa-utils alsa-tools alsa-tools-gui alsamixergui

这里安装了本次必要的录音工具,同时也安装了2个图形界面工具,这样就可以用图形界面来设置音量等,操作会比较方便。

安装完成后,就可以使用树莓派来录音了。来录个60秒试试:

1.arecord -D “plughw:1,0” -d 60 /tmp/test.wav

其中,这里的plughw:1,0就是外置声卡设备,-D表示指定设备。这里值得一提的是,如果后面没有设置输出文件的话,执行命令后录音产生的数据会直接显示在终端上……所以其实你也可以这样写:

1.arecord -D “plughw:1,0” -d 60 >/dev/test.wav

之后你也可以安装一个图形界面的audacity音频编辑软件,这样就可以在树莓派上编辑制作你的音乐专辑了~

1.apt-get -y install audacity

插上USB声卡,然后再启动audacity,你就可以在录音输入那看到你的USB声卡设备了。如果你想播放也从USB声卡播放在播放那选择USB设备即可~默认是从树莓派上播放的。

百度语音合成与识别

树莓派百度语音识别+图灵机器人对话聊天机器人

树莓派百度语音识别+图灵机器人对话聊天机器人

然后把图灵机器人回复的文字 语音播放

为了偷懒 我用的espeak软件。sudo apt-get install espeak

同学们安装好可以测试一下 终端运行 espeak -vzh 我是机器人

回车 树莓派会播放“我是机器人”

如果不是中文 直接 espeak hello world 即可。

树莓派百度语音识别+图灵机器人对话聊天机器人

做好的演示视频可以到我头条号主页找到 谢谢大家的关注与支持。代码整理后会打包放在评论区 大家继续关注树莓派百度语音识别+图灵机器人对话聊天机器人

原文始发于:树莓派百度语音识别+图灵机器人对话聊天机器人

|

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

使用Python进行超声距离测量 – 第1部分

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

  • 超声波传感器

    树莓派Python/C语言超声波测距以及利用超声波模块小车避障

LED,蜂鸣器和开关是人们尝试与Raspberry Pi相连接的最常见的项目。在某宝中发现的有点不同的是超声波测量模块。这允许您测量距离最近的墙壁或固体物体的距离。这些模块很容易买到,便宜而且比较直接的连接到GPIO头。

所以这里有一些关于我的超声测量模块和Python的实验的信息。在未来的项目中,我可以看到这些模块是向Pi动力机器人或汽车添加一些智能的好方法。

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

HC-SR04模块的成本约为3-4yuan,是一个匹配的大小。其设计由5V供电,具有1个输入引脚和1个输出引脚。该模块通过向空中发送超声波脉冲并测量反弹所需的时间来工作。该值可以用于计算脉冲行进的距离。

连接到Pi

为模块供电很简单。只需将+ 5V和Ground引脚连接到Pi的GPIO接头上的引脚2和引脚6。

模块上的输入引脚称为“触发”,用于触发发送超声波脉冲。理想情况下,它需要一个5V信号,但它与GPIO的3.3V信号工作正常。所以我将触发器直接连接到GPIO头上的引脚16(GPIO23)。

您可以在RPI上使用任何您喜欢的GPIO引脚,但您需要注意引用并相应地修改您的Python脚本。

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

模块的输出称为“回波”,需要更多思考。输出引脚为低电平(0V),直到模块进行距离测量。然后将此引脚设置为高电平(+ 5V),使脉冲返回相同的时间。所以我们的脚本需要衡量这个引脚保持高电平的时间。该模块对“高”使用+ 5V电平,但是对于仅适用于3.3V的GPIO头上的输入,该模块太高。为了确保Pi只能用3.3V命中,我们可以使用基本的分压器。这是由两个电阻组成。

如果R1和R2相同,则电压被分成两半。这将给我们2.5V。如果R2是R1的两倍,那么我们得到3.33V,这是很好的。所以理想情况下,您希望R2位于R1和R1 x2之间。在我的示例电路中,我使用了330和470欧姆的电阻。一个替代方案是使用1K和1K5值。如果不用也可以 ,但不保证不bug

这是我的最后一个电路图。我选择了GPIO23和GPIO24,但您可以使用GPIO头上的17个可用GPIO引脚中的任何一个。只要记住更新脚本。

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

超声波模块电路

这是我的电路照片。我用了一小块面包板和一些男对女跳线。

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

超声波传感器电路

Python脚本

现在脚本实际上要做一些测量。在这个例子中,我使用的是Python。为什么Python?这是Pi最喜欢的语言,所以我倾向于将它用于所有的实验,但是这里的技术很容易应用于C.

您可以直接使用此链接 或通过Pi上的命令行下载脚本:

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/ultrasonic_1.py

然后可以使用以下命令运行:

sudo python ultrasonic_1.py

声音的速度

用于找到距离的计算依赖于声音的速度。这随温度而变化。脚本根据预定义的温度计算要使用的正确值。如果需要,您可以更改此值,或者使用温度传感器动态测量该值。

相片

以下是我通过GPIO头连接到Raspberry Pi的超声波传感器的一些照片:

准确性

这里有一些关于准确性的一些观点:

  • 距离测量的精度取决于时间。Linux下的Python不适合精确的时序,但是对于一般的操作,它可以正常工作。为了提高准确性,您需要开始使用C代替。

  • 当配置GPIO时,模块需要一段时间才能完成第一次读取,所以我在脚本开始时添加了0.5秒的延迟。

  • 传感器具有广泛的灵敏度。在杂乱的环境中,由于对象在模块的侧面,您可能会读取更短的读数。

  • 测量时间可达2厘米左右。低于这个限度,结果可以给出奇怪的结果。

  • 如果超声波传感器接触任何东西,结果是不可预知的。

感谢这项技术,我现在知道从我的桌子到天花板的距离是155厘米。

如果不用上面的代码 可以复制如下代码进行测试。我是在树莓派3B上运行

|

#! /usr/bin/python

# -*- coding:utf-8 -*-

#本代码实现的是树莓派利用超声波模块测距

#使用超声波测距模块时,VCC接树莓派的5V,GND接树莓派GND。trig接树莓派38,echo接树莓派40.

#GPIO编码方式为BOARD!!!

import RPi.GPIO as GPIO

import time

def checkdist():

#发出触发信号

GPIO.output(38,GPIO.HIGH)

#保持10us以上(我选择15us)

time.sleep(0.000015)

GPIO.output(38,GPIO.LOW)

while not GPIO.input(40):

pass

#发现高电平时开时计时

t1 = time.time()

while GPIO.input(40):

pass

#高电平结束停止计时

t2 = time.time()

#返回距离,单位为厘米

return (t2-t1)*34000/2

GPIO.setmode(GPIO.BOARD)

GPIO.setup(38,GPIO.OUT,initial=GPIO.LOW)

GPIO.setup(40,GPIO.IN)

time.sleep(2)

try:

while True:

print 'Distance: %0.2f cm' %checkdist()

time.sleep(0.5)

except KeyboardInterrupt:

GPIO.cleanup()

|

下面为小车避障的代码 ,先定义小车前后左右的动作。然后进行距离判断进行相应的动作。

|

#!/home/pi/server

# coding=utf-8

#使用超声波测距模块时,VCC接树莓派的5V,GND接树莓派GND。trig接树莓派38,echo接树莓派40.

#GPIO编码方式为BOARD!!

import RPi.GPIO as GPIO

import time

def t_stop():

GPIO.output(11,False)

GPIO.output(12,False)

GPIO.output(15,False)

GPIO.output(16,False)

def t_up():

GPIO.output(11,True)

GPIO.output(12,False)

GPIO.output(15,True)

GPIO.output(16,False)

def t_down():

GPIO.output(11,False)

GPIO.output(12,True)

GPIO.output(15,False)

GPIO.output(16,True)

def t_left():

GPIO.output(11,False)

GPIO.output(12,True)

GPIO.output(15,True)

GPIO.output(16,False)

def t_right():

GPIO.output(11,True)

GPIO.output(12,False)

GPIO.output(15,False)

GPIO.output(16,True)

def bee():

GPIO.output(12,True)

time.sleep(0.5)

GPIO.output(12,False)

GPIO.output(15,True)

time.sleep(5)

GPIO.output(12,True)

GPIO.output(15,False)

def checkdist():

#发出触发信号

GPIO.output(38,GPIO.HIGH)

#保持10us以上(我选择15us)

time.sleep(0.000015)

GPIO.output(38,GPIO.LOW)

while not GPIO.input(40):

pass

#发现高电平时开时计时

t1 = time.time()

while GPIO.input(40):

pass

#高电平结束停止计时

t2 = time.time()

#返回距离,单位为厘米

return (t2-t1)*34000/2

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(38,GPIO.OUT,initial=GPIO.LOW)

GPIO.setup(40,GPIO.IN)

GPIO.setup(11,GPIO.OUT)

GPIO.setup(12,GPIO.OUT)

GPIO.setup(15,GPIO.OUT)

GPIO.setup(16,GPIO.OUT)

##time.sleep(2)

try:

while True:

dis = int(checkdistance())

print(dis)

if dis <= 30:

print"distance less than 0.30m and back"

t_stop()

time.sleep(0.1)

t_down()

time.sleep(0.5)

t_left()

elif dis >30:

print"forward"

time.sleep(0.1)

t_up()

except KeyboardInterrupt:

GPIO.cleanup()

|

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

此图与代码中定义是C语言的代码

如下为小车超声波避障的C代码

|

#include <stdio.h>

#include <stdlib.h>

#include <softPwm.h>

#include <unistd.h>

#include <errno.h>

#include <string.h>

#include <sys/types.h>

#include <time.h>

#include <wiringPi.h>

#define Trig28

#define Echo29

#define BUFSIZE 512

#define MOTOR_GO_FORWARD digitalWrite(1,HIGH); digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW)

#define MOTOR_GO_BACK digitalWrite(1,LOW); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,HIGH)

#define MOTOR_GO_RIGHT digitalWrite(1,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW)

#define MOTOR_GO_LEFT digitalWrite(1,LOW); digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW)

#define MOTOR_GO_STOP digitalWrite(1, LOW); digitalWrite(4,LOW); digitalWrite(5, LOW); digitalWrite(6,LOW)

void ultraInit(void)

{

pinMode(Echo, INPUT);

pinMode(Trig, OUTPUT);

}

float disMeasure(void)

{

struct timeval tv1;

struct timeval tv2;

long start, stop;

float dis;

digitalWrite(Trig, LOW);

delayMicroseconds(2);

digitalWrite(Trig, HIGH);

delayMicroseconds(10); //发出超声波脉冲

digitalWrite(Trig, LOW);

while(!(digitalRead(Echo) == 1));

gettimeofday(& tv1, NULL); //获取当前时间

while(!(digitalRead(Echo) == 0));

gettimeofday(& tv2, NULL); //获取当前时间

start = tv1.tv_sec * 1000000 + tv1.tv_usec; //微秒级的时间

stop = tv2.tv_sec * 1000000 + tv2.tv_usec;

dis = (float)(stop - start) / 1000000 * 34990 / 2; //求出距离

return dis;

}

int main(int argc, char *argv[])

{

float dis;

// char buf[BUFSIZE]={0xff,0x00,0x00,0x00,0xff };

int time=1;

/*RPI*/

wiringPiSetup();

/*WiringPi GPIO*/

pinMode (1, OUTPUT); //IN1

pinMode (4, OUTPUT); //IN2

pinMode (5, OUTPUT); //IN3

pinMode (6, OUTPUT); //IN4

printf("ok"); //

while(1){

dis = disMeasure();

printf("distance = %0.2f cmn",dis); //输出当前超声波测得的距离

if(dis<30){ //测得前方障碍的距离小于30cm时做出如下响应

MOTOR_GO_BACK;

delay(time * 300);

MOTOR_GO_LEFT;

delay(time * 300);

}

else{

MOTOR_GO_FORWARD; //无障碍时前进

delay(time * 10);

MOTOR_GO_STOP;

}

}

return 0;

}

|

树莓派Python/C语言超声波测距以及利用超声波模块小车避障

原文始发于:树莓派Python/C语言超声波测距以及利用超声波模块小车避障

|

用树莓派做款“六足行走机器人”

目前用树莓派做的飞行器、机器人不少,但是EDN小编还是第一次看到六足行走机器人的DIY。本文就分享一款在DIYhacking上由Roland Pelayo做的一个“六足行走机器人”。这个Raspberry Pi动力机器人能自主运行,自动避障,且也能实现手动模式由智能手机控制。 来具体看下过程。

树莓派只有信用卡大小,但视频、音频等功能通通皆有,因此自问世以来,受到了众多计算机发烧友和创客的追捧。

目前用树莓派做的飞行器、机器人不少,但是EDN小编还是第一次看到六足行走机器人的DIY。

本文就分享一款在DIYhacking上由Roland Pelayo做的一个“六足行走机器人”。

这个Raspberry Pi动力机器人能自主运行,自动避障,且也能实现手动模式由智能手机控制。

来具体看下过程。

用树莓派做款“六足行走机器人”

“六足行走”Hexapod Walker概念

这个六足行走者(Hexapod Walker)将遵循大多数动物和昆虫使用的三脚架步态。

三脚架步态如下图所示:

用树莓派做款“六足行走机器人”

*图片由NC州立大学提供 *

在六足行走者中有很多方法来使用这种步态。

平衡了价格和性能后,我选择构建一个三伺服电机版本。然后我添加了另一台伺服电机,用于安装机器人的“眼睛”。

机器人将有三个运动:前进,后退,右转,左转。

任何运动都会涉及机器人向右或向左倾斜,然后移动由倾斜抬起的腿部。

以下是运动的图表(腿上的灰色意味着机器人的重量在该腿上)。

用树莓派做款“六足行走机器人”

用树莓派做款“六足行走机器人”

用树莓派做款“六足行走机器人”

右转运动基本和左转运动相反。

为了使三伺服电动机设计成为可能,在第三伺服电机倾斜步行者的同时,前后相应的后腿需要互连。

这种六足步行者可以在两种模式下操作:

在第一种模式(自主)中,步行者可以自由漫游。如果它检测到障碍物,它将向后退两步,然后向右转。

第二种模式将允许用户使用连接到与机器人相同网络的任何智能电话来控制六足步行者的移动。

根据我的设计要求,我需要一个控制器,能够做到

1)可以同时控制四个伺服器

创建Arduino 六足步行者是诱人的也更容易,但要增加的无线连接成本,所以我决定用树莓派。

这是我设计的框架:

用树莓派做款“六足行走机器人”

所需材料

在决定要使用的控制器之后,需要选择其余的组件。

他们来了:

• 3 x Tower Pro SG-5010伺服电机(用于腿部和倾斜)

架构搭起来

这是一个可用于构建步行者身体的示例布局。我用亚克力板作为我的平台。腿的细节如下。

用树莓派做款“六足行走机器人”

1.搭建腿

这是一个腿的布局。我使用了1/2″ x 1/8 ″的铝条。

腿应该足够坚硬,以支撑六足步行者的重量。请不要塑料!

用树莓派做款“六足行走机器人”

这是倾斜的腿:

用树莓派做款“六足行走机器人”

2.安装树莓派和头

我在亚克力板上打了孔,然后用螺丝和螺母连接树莓派。

头部由超声波传感器和连接到电路板的微型伺服电机组成。我用热胶将微型伺服与传感器连接起来:

用树莓派做款“六足行走机器人”

看下腿部运动细节:

用树莓派做款“六足行走机器人”

走线连接

以下是我连接组件的方式:

用树莓派做款“六足行走机器人”

用树莓派做款“六足行走机器人”

因为树莓派的GPIO不能接受大于3.3V的电压,所以需要为树莓派的回波连接添加一个分压器。

我还添加了一个带有公头和母头的电路板,使接线更清洁。

这是全组合六足步行者:

用树莓派做款“六足行走机器人”

|

更多的软件和代码,https://diyhacking.com/hexapod-walker-raspberry-pi/#comments

|

原文始发于:用树莓派做款“六足行走机器人”

|

动手学arduino(一)点亮LED

在《动手学电子知识(一)搭建一个仿真电路》中,学会如何点亮LED

动手学arduino(一)点亮LED

电路元件至少要有LED、限流电阻和电池。

思考:红色LED,3V电池用68欧姆的限流电阻,如果改用5V的电池,限流电阻应选多少欧姆?

提示:计算工具在:http://www.21ic.com/calculator/LEDfaguang.htm


利用arduino也可以点亮一支LED。

什么是arduino?为什么要学arduino?

一句话:arduino是机器人的大脑,学arduino就是学如何做一个机器人。
arduino板13脚上有一个LED,只要13脚输出高电平,这个LED就会点亮。

什么是高电平?与电压什么关系?

简单说,电压是有各种数值,取值范围是实数;电平只有两种情况:高电平和低电平。在arduino输入口的电压2.8~5V算高电平,0~2.4V算低电平。如果输出高电平,电压就是5V,低电平就是0V。


arduino点亮LED

动手学arduino(一)点亮LED

  1. 从tinkercad的电路设计中拖arduino uno到设计区

动手学arduino(一)点亮LED

2.点击“code”,把动手学arduino(一)点亮LED扡到右边的代码区,把0修改为13

”0~13“表示arduino的0~13号引脚。这条命令的意思是设置13脚的电平为(HIGH)高电平(即5V)。

前面提到,13号脚高电平,arduino板上的LED就会亮。我们仿真看效果:

动手学arduino(一)点亮LED

图上arduino板上黑色线条框内的”L”LED点亮。

也可以点亮13脚外接LED:

动手学arduino(一)点亮LED

总结一下:arduino点亮LED要二步:

  1. 外接LED电路(要选择合适的限流电阻,答案是330欧姆,LED正负极不要接错)

  2. 编写代码,置接LED的引脚为高电平。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

  • 前言

 

这是一个轰轰烈烈的全民人工智能的时代。不说自己做了些和大数据、人工智能的工作都感觉有点不好意思说自己是干IT的。据说人工智能已经进入中小学标准教育大纲了。

 

Scratch中实现人脸识别刷脸?能够实现聊天机器人?能够教AI玩游戏(剪刀石头布、井字游戏)?是的,你没有看错。计划通过几次的人工智能课程,让小朋友了解人工智能能够干什么,有哪些应用,并且亲自尝试一下AI的应用,体验未来世界的智能性。

 

当然这还没有涉及到背后的人工智能的实现逻辑。我们只是在应用大厂家的人工智能算法和平台(鼎鼎大名的IBM沃森Watson)。因此这几个例子,也只能说是人工智能的应用,并不属于底层人工智能的研发。当然,市面上,也有不少通过调用通用平台AI功能的AI应用产品。人工智能算法和平台的发展很可能和云平台类似,最终由多个寡头企业主导,或者会逐渐走向开源和免费,成为免费的“水电”。

 

 

2. 目的

人脸识别是人工智能下图像识别的重要科目。大学人工智能专业中,估计有半数是和图像识别相关的。人脸识别非常重要,并且在将来的社会中应用会非常广泛。估计未来将将来全地球人的人脸数据。刷脸购买产品、车牌识别、乘车坐飞机,进入某个区域,都可能直接通过“刷脸”完成验证工作。“人脸”识别还能自动识别“好人”和“坏人”,提升社会的安全。例如在西单广场、交通入口处,设置一堆人脸识别的摄像头,如果发现“坏人”指数大于80%的人,允许警察提前进入警戒状态,甚至允许上前“盘问”。

 

今天的目的是使用人脸识别。在Scratch中拍照,然后系统会识别这是谁,是否允许进入某游戏或系统。当然在这之前,我们要先介绍一下这几个人工智能后面所用的IBM Watson人工智能平台系统,如何申请免费账号,如何培训系统,如何在Scratch中调用和使用这些人工智能的功能。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

(最终的应用截图,根据角色图片,能够识别这是谁,验证通过与否,同时播放声音。)

 

3. 免费注册IBM 沃森人工智能平台账号

 

IBM Watson人工智能属于IBM 云平台所提供的服务,属于人工智能的大厂家,其人工智能水平还是位于前列的。首先进入https://console.bluemix.net/注册IBM的云平台账号。

 

进入后,如果没有账号,可以在“Create Free Account”中创建免费账号。如果已经拥有账号,可以直接登录。IBM的这个云平台似乎还是在国外,访问比较慢。注册以后需要邮件确认,如果无法完成验证,就只能“翻墙”确认一下了。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
注册图像识别服务。
 

注册以后,要定于对应的AI服务,例如文本识别、图像识别、数字识别。我们这一次用到了图像识别,因此要注册“Visual Recognition”服务。可以在IBM平台中找到对应的服务,先创建API Key。在machinelearningforkids.co.uk也有链接地址,进入IBM云平台,注册相关的服务。

 

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
IBM图像识别服务按照调用次数收费,Lite的免费版一个月允许调用1000次。对于测试来说,这已经够了。

进入这个服务以后,“Create”创建账号。然后我们可以看到各种版本的收费标准。Lite版本是免费的,每月1000Calls

 

创建这个服务的账号以后,能够获取一个API Key,就是其他应用中访问IBM服务的API Key。会在后面的Scratch项目中用到。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
获取最关键的API Key。点击复制,复制该API Key,可以先复制到本地的文件中。
 

如果要订阅文本识别类的服务,选择“Watson Assistant(formerlyConversation)

 

微信订阅号:ABO_CRM

 

 

4. 注册MachineLearningForKids.co.uk

这是一个少儿机器学习网站,有十几个案例项目。这些项目都可以应用在Scratch中。这个网站使用的后台AI平台是IBMWatson,因此需要先注册IBMAI平台账号。

 

进入网址,https://machinelearningforkids.co.uk。第一次使用,申请账号。

 

 

 4.1 Worksheets-19AI示例应用

进入“Worksheets”,能够看见19AI的应用项目。随便打开一个,就进入下载页面了。

https://machinelearningforkids.co.uk/#!/worksheets

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

下载页面:下载学生手册和教师手册。

 

手册中有详细的操作步骤。当然手册了里面并没有告诉你如何申请IBM账号。

 

 

 

4.2 设置IBM API Key

 

先别着急创建Scratch项目,需要先申请、设置API Key进入Teacher>API Keys”. 这里有两个链接地址,可以引导我们进入IBMWatson平台,注册文本和图像识别服务。如果第三步没有提前注册,也可以在这里进入,注册。

 

Watson VisualRecognition:

https://www.ibm.com/watson/services/visual-recognition/

 

Watson Assistant:

https://www.ibm.com/watson/services/conversation/

 

这一次需要使用到图像识别。注册IBM图像识别服务以后,在这里”Add new API key”,添加API Key即可。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
Teacher>API Keys
 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
添加图像识别的IBM Watson API Keyes。

 

4.3 开始人工智能的Scratch项目

一)      新建AI项目

 

进入“Projects”,  新建项目“Add a new project,需要录入项目名称Project Name, 识别类型Recognizing,有文字、图形和数字。这里需要选择图形。注意,这里的项目名称依然不支持中文,只能使用英文。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

 二)      Train:培训计算机识别图形,进行图形分类识别

创建以后,进入项目。有三个功能:“训练Train”,“学习和测试Learn &

Test,”Scratch”

  • Train: 为系统提供需要识别的照片,可以在线拍照,作为素材,训练系统。识别这是谁,那是谁。系统分组识别,因此要分成几组。

  • Learn &

    Test: 系统进行抽取,学习。然后可以测试该模型的可靠性。

  • Scratch: 进入Scratch编程环境,在Scratch环境中调用这个AI模型。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
 

进入Train, 定义三个分组:Kang, Tong, Others,即为两个人,和其他人。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

每组拍10个照片,注意每个照片要更换一定的表情,例如做一下鬼脸之类的。最终目的是,根据所提供的照片,系统能够识别这是谁。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

 

三)      Learn &

Test:机器学习和测试

 

上载素材完毕以后,就可以进行机器学习和测试了。进入”Learn&

Test”,点击培训机器学习模型。这时候需要调用WatsonAPI,如果前面没有设置好API,这里就无法继续。

几分钟以后,系统就能建立模型。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
建立模型需要花费几分钟,可以返回项目,重新进来。学习完毕以后,还可以删除该模型,注意该模型只能保留一天。第二天来就需要重新学习了。
 

 

模型建立后,点击“Test withWebcam”,可以拍照测试模型。系统列出识别结果即该图属于哪一类的图片,即哪个人。提供给出可信度Confidence,例如91%的概率认为这是某人。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
 

如果图片正规一点,识别率会高一些。如果图形变化大,识别率可能会小一些。

 

四)      Scratch:进入Scratch环境,调用AI应用。

这里的Scratch环境并不是直接在MIT网上的,但功能类似。可以切换到中文版,但扩展的积木还是英文的。

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
 

进入后,点击菜单“Project Templates”,有17个模板项目,包括一些示例代码和角色图片。请复制浏览器URL,在新页签中打开,进入Project Templates少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

如果想省时间,就直接使用这些模板,下载模板中的角色图片,然后编写程序,上载角色。

 

下面开始制作程序:

  1. 首先查看“更多模块”,这里能够看见这个人工智能项目Face Lock的扩展,并且有一个绿色标志,说明这个扩展和AI模型是工作的。

  2. 进入舞台,导入4个舞台背景图片。这些背景图片是从示例项目中直接下载的。第一个是空手机、第二个是Scanning,说明在扫描图片;第三个是识别成功,绿色打钩的通过背景Granted;第四个是未能正确识别的红色锁定背景Denied

如果成功识别某个人,允许进入系统Granted,则使用背景3,否则使用背景4 Denied.

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)

3.  设置一个空白角色,什么都不要放。不过要进入造型,拍一些照片,也可以每次使用的时候拍摄。Scratch没有单独的拍照功能,这点很不好。因此需要一个空造型,在运行开始之前,先给这个造型启动WebCam拍照,才能进行后面的识别环节。

 

微信订阅号:ABO_CRM

 

4.    调用AI人脸识别:这段程序其实很简单。

  1. )点击的时候,先将背景切换到Scanning,显示正在扫描。其实Scratch是有摄像头扫描图片功能的,不过速度太慢了。

     

  2. )设置三个判断,Recognize image () = Kang,则切换背景为Granted;

    说一句话“This is Kang.;

    播放一段声音,自己录制一段声音,“我是Kang Kang。”。第二、三个判断类似,识别TongOthers

Image里面选择Costume Image,就是当前角色的图片。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
 

   3.)测试:先对角色拍照,可以一次拍多个照片,执行前,选择对应的照片。然后开始,系统会切换背景、说话、并且播放声音。系统的识别能力还是很不错的。

 

少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)
 

下一次试试剪刀石头布。和计算机一起玩剪刀石头布的游戏,我们出剪刀、石头或者布,计算机能够识别出来,并且出题,比对。

 

本程序的图片和Scratch都来自https://machinelearningforkids.co.uk,感谢这个网提供如此美好的AI体验。

原文始发于微信公众号( 艾博特 ):少儿编程Scratch第16讲:初试人工智能-人脸识别(IBM Watson)|

低成本多功能机械手DIY

近年来我国人力成本的不断提高,用工荒越来越严重,制造业的生存和发展遇到不小的困难。发展智能制造技术,尤其是工业机器人技术,显得更加重要。2014年中国新增机器人5.6万台,成为世界上最大的机器人市场。

作为电子爱好者,制作低成本的多功能机械手,不仅能够培养自己的专业兴趣,提高自己的专业知识,而且为迎接今后的自动化改造和机器人应用浪潮早做准备。

基于上述背景,本文介绍了“低成本多功能机械手”的制作方法,用百元成本,实现了机械手的“绘图”、“搬运”、“激光雕刻”功能,适合电子爱好者进行学习。

 
功能介绍

1.绘图功能

应用范畴:三维立体绘图、铣加工等。

绘图功能的整体外观如下图所示。

低成本多功能机械手DIY

绘图的功能整体外观

用旧的电脑光驱进行改造,作为该项目的X、Y 轴,另用一个微型步进电动机作为Z 轴,使其实现空间移动。画笔固定在Z 轴电机滑块上。如下图所示。

低成本多功能机械手DIY

Z轴画笔

2.搬运功能

应用范畴:搬运、装配、仓储等。

搬运功能的整体外观如下图所示。

低成本多功能机械手DIY

搬运功能整体外观

电磁铁、机械爪及电机如下图所示。

低成本多功能机械手DIY

电磁铁、机械爪及电机

机械爪的固定轴安装在托盘上,同时作为机械爪的杠杆支点。机械爪的运动轴安装在开合电机的滑块上。滑块上下运动带动机械爪闭合、张开。开合电机固定在托盘上。托盘可以被电磁铁带动,整体上下运动。

3.激光雕刻

应用范畴:激光雕刻、电火花加工、线切割加工等。

搬运功能的整体外观如下图所示。

低成本多功能机械手DIY

激光雕刻功能的整体外观

 

具体方案

1.电路部分

我们采用运行grbl固件的单片机,arduino pro atmega328p最小系统。CPU板和下载板的价格很便宜,都是十几元。选用以A3967为核心的电机驱动板。

CPU板、电机驱动板,以及X、Y、Z三轴电机的接线原理图,如下图所示。
 

低成本多功能机械手DIY

CPU板、电机驱动板,以及X、Y、Z三轴电机的接线原理图

 

2.硬件搭建

将两块旧的电脑光驱分别固定在两个塑料外壳上,并垂直安装,并用金属杆加固。如图1所示。利用光驱的步进电机作为该项目的X、Y轴。根据需要,安装Z轴微型步进电动机、电磁铁、机械爪、激光笔。电路板安装在塑料外壳背面。

3.软件使用

用Arduino Builder软件将grbl固件下载到arduino pro atmega328p。软件的具体使用方法,很简单,网上有详细介绍,这里就不多说了。

用ArtCAM软件来设计运动路径,并进行保存。如下图所示。
 

低成本多功能机械手DIY

ArtCAM设计运动路径

grbl controller上位机软件与嵌入了grbl软件的arduino单片机系统通信,解析数控代码。通过grbl controller打开已经保存好的刀路文件,并实时与单片机通讯和监控。如下图所示。

 

低成本多功能机械手DIY

grbl controller监控

如何构建一个树莓派六足机器人?

这个树莓派六足动力机器人将有一个独立运行的自主模式,避免障碍物和手动模式,还可以通过智能手机进行控制。有兴趣搞起来么?

如何构建一个树莓派六足机器人?

六足步行者概念

这个六足步行者将遵循大多数动物和昆虫使用三脚架步态三脚架的步态如下图所示:

如何构建一个树莓派六足机器人?

图片由NC州立大学提供

六足步行者有很多方法来使用这种步态。我选择了建立一个三个舵机的版本,我得找性价比高的, 某宝上随便搜9g 舵机。然后,我添加了另一个舵机,安装机器人的“眼睛”。

机器人将有三个动作:向前,向后,向右转,然后向左转。任何动作总是涉及将机器人向左或向右倾斜,然后移动通过倾斜举起的腿。下面是运动的图表(腿上的灰色意味着机器人的重量在该腿上)。

如何构建一个树莓派六足机器人?如何构建一个树莓派六足机器人?

如何构建一个树莓派六足机器人?

右转运动基本上是左转运动。

为了能够实现三个舵机设计,需要将前部和相应的后腿连接起来,而第三台舵机倾斜辅助行走。

这个六足步行者可以在两种模式下操作。在第一种模式(自主)中,步行者可以自由漫游。如果检测到障碍物,则向后两步,然后向右转。第二种模式将允许用户使用连接到与机器人相同的网络的任何智能手机来控制六足步行者的移动。

根据我的设计要求,我需要一个控制器,可以

1)同时控制四个舵机

2)从障碍探测传感器读取输入

3)连接到无线控制网络。

实际上,感觉这个东西用Arduino会更容易, 但是, 但是我就是想在树莓派上完成….

这是我设计的框架:

如何构建一个树莓派六足机器人?

所需材料

在决定使用哪个控制器之后,我选择其余的组件。他们来了:

  • 3台Tower Pro SG-5010舵机(用于腿和倾斜)
  • 1台Tower Pro SG-90微型舵机(头部)
  • 1个Raspberry Pi 2(带有USB无线网卡)或Raspberry Pi 3
  • HC-SR04超声波传感器 – 这是检测障碍物的传感器。
  • 9“x 3”亚克力板
  • 1/2“×1/8”铝棒
  • 螺丝和螺母
  • 电池, 舵机应该要独立供电。
  • 我的RPi运行主要靠一个充电宝供电。

构建指令

六足步行者有三个主要部分:身体/平台,腿和头。

建立身体

下面是一个可用于构建Walker主体的示例布局。我用亚克力板作为我的平台。腿的细节如下。

如何构建一个树莓派六足机器人?

建立腿

这是一个腿的布局。我使用了1/2“x 1/8”的铝棒。腿应该足够坚硬,以保持六足步行者的重量。比塑料的轻感觉, 如果你要用3D 打印机打印的话,也可以

如何构建一个树莓派六足机器人?

这是倾斜的腿:

如何构建一个树莓派六足机器人?

安装RPi和头

我在亚克力板上加了一些孔,然后用螺丝和螺母固定好了树莓派。头部由超声波传感器和贴在电路板上的微型舵机组成。我用热胶粘贴超声波传感器到小舵机上:

如何构建一个树莓派六足机器人?

更好的观察腿部动作:

如何构建一个树莓派六足机器人?

连线

以下是我如何连接组件:

倾斜舵机 - > GPIO4右腿 - > GPIO21左腿 - > GPIO6头 - > GPIO26HC-SR04传感器 - > GPIO23HC-SR04 Echo pin - > GPIO24

如何构建一个树莓派六足机器人?

接线切忌不要短路~!!! 

另外,我还添加了一个带有公头和母头的电路板,使接线看起来更清爽一些…(见下文)。

这里是全装配的六足步行者:

如何构建一个树莓派六足机器人?

软件

Pigpio舵机控制

我使用了预装在RPi上的Python来编码walker。您将需要一个名为pigpio的外部库来控制伺服电机。

使用SSH访问您的RPi并发出以下命令来安装pigpio库:

wget abyz.co.uk/rpi/pigpio/pigpio.zip unzip pigpio.zip cd pigpio  sudo make install

Pigpio使用一个称为pigpiod的守护进程,这意味着舵机控制会成为后台进程。在使用pigpio python库之前,您只需发出以下命令即可运行此守护程序:

pigpiod

不这样做会导致在我下面提出的Python代码中的错误。

为了让pigpiod每次运行Raspberry Pi 后自动启动,在终端下可以通过计划任务进行,也可以直接写入/etc/rc.local 开机启动:

sudo crontab -e

然后在结尾处添加以下行:

@reboot /usr/local/bin/pigpiod

用于Raspberry Pi服务器的Apache

接下来,你需要为Raspberry Pi安装Apache的WiFi控制功能:

sudo apt-get install apache2 -y

这将创建一个文件夹/var/www /html /它将包含我们刚刚设置的apache服务器上的所有页面。如果安装成功,您现在可以通过网络浏览器访问您的RPi的IP地址。

有两种方法来实现对WiFi的控制。一种更简单的方法是使用无线路由器,并使用与RPi连接在同一网络上的设备。第二种方法是使RPi成为接入点,就像我的RPi漫游者机器人一样

第一种方法有明显的延迟,特别是如果机器人远离了路由器。第二种方法不需要你有无线路由器,但会消耗你树莓派电源的很多电量。

我在这个项目中使用了第一种方法。

Python程序

下面是hexapod walker的python代码:

#!/usr/bin/python  import RPi.GPIO as GPIO import pigpio import time import sys import os import signal GPIO.setmode(GPIO.BCM') GPIO.setwarnings(False)  tilt = 4 br = 21 bl = 6 trig = 23 echo = 24 head = 26  GPIO.setup(trig, GPIO.OUT) GPIO.setup(echo, GPIO.IN)  pi = pigpio.pi() 
  def backward(): 	pi.set_servo_pulsewidth(tilt, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(bl, 800)   	 	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 2000) 	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 1500)  	time.sleep(0.15)  	pi.set_servo_pulsewidth(bl, 1500)    	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1500)    	time.sleep(0.15) 	return;

 def forward(): 	pi.set_servo_pulsewidth(tilt, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(bl, 1800)   	 	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 2000) 	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 1500)  	time.sleep(0.15)  	pi.set_servo_pulsewidth(bl, 1500)    	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1500)    	time.sleep(0.15) 	return;

 def left(): 	pi.set_servo_pulsewidth(tilt, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(bl, 1800)   	 	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 2000) 	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 1500)  	time.sleep(0.15)  	pi.set_servo_pulsewidth(bl, 1500)    	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1500)    	time.sleep(0.15) 	return;

 def right(): 	pi.set_servo_pulsewidth(tilt, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(bl, 800)   	 	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 2000) 	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 800)  	time.sleep(0.15) 	pi.set_servo_pulsewidth(tilt, 1500)  	time.sleep(0.15)  	pi.set_servo_pulsewidth(bl, 1500)    	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 1500)    	time.sleep(0.15) 	return;

	 def stop(): 	pi.set_servo_pulsewidth(tilt, 0)  	time.sleep(0.15)  	pi.set_servo_pulsewidth(bl, 0)    	time.sleep(0.15) 	pi.set_servo_pulsewidth(br, 0)    	time.sleep(0.15) 	 	return
  def obstacleDetected(): 	backward() 	backward() 	backward() 	backward() 	backward() 	right() 	right() 	right() 	 	return
  def turnHead(): 	pi.set_servo_pulsewidth(head, 700) 	time.sleep(0.5) 	pi.set_servo_pulsewidth(head, 2100) 	time.sleep(0.5) 	pi.set_servo_pulsewidth(head, 1500) 	time.sleep(0.5)  	return 
  def autoMode(): 	print ('Running in auto mode!')  	turnHead() 	 	time.sleep(0.5) 	GPIO.output(trig, 0) 	time.sleep(0.5) 	 	GPIO.output(trig,1) 	time.sleep(0.00001) 	GPIO.output(trig,0) 	 	while GPIO.input(echo) == 0: 		pulse_start = time.time() 	 	while GPIO.input(echo) == 1: 		pulse_end = time.time()  	pulse_duration = pulse_end - pulse_start 	 	distance = pulse_duration * 17150 	 	distance = round(distance, 2) 	 	if distance > 1 and distance

动手制作机器人,双足移动机器人DIY

直立行走的双足机器人

 

【知识】动手制作机器人,双足移动机器人DIY

 

首先要准备的材料主要有:

电机 x1、橡皮筋 x3、电源开关 x1、电池 x1、软吸管

竹签 、纸皮板冰淇淋棍 若干

 

需要用到的工具有:

裁纸刀、剪刀、圆规、502胶水和热熔胶枪

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY 

1

 

用裁纸刀在纸皮板上分别裁出两个长方形

两个长的长方形长宽比为12.5:2.5

在12cm处画条直线,在3cm、6cm和9cm处做记号点

两个段的长方形长宽比为3:2.5

两种长方形各制作两个

 

裁出后用锥子在长方形记号点处钻孔

有条件的也可以用小的钻机钻孔

空的大小大约是柔软吸管的直径

 
 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY 

 

2

 

在软吸管上剪6段,长度为1cm

然后插在上一步钻的几个孔中

滴点502胶水固定住

【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

 

3

 

在长方形画线的地方涂上热熔胶

然后粘上小长方形

另一边则是在顶端处涂热熔胶

同样也粘上小的长方形

 

在留空位的那一边涂上热熔胶

把电机粘上去,注意位置

 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY
 

4

 

用圆规画出半径为2cm的圆6个

半径1.8cm的3个半径0.5cm的4个半径0.3cm的1个

用竹签串连起来

 

两个大的夹着一个小的

用502胶水粘好固定

出来的效果如上图就可以了

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY 
【知识】动手制作机器人,双足移动机器人DIY 

4

 

用橡皮筋将上一步做好的轮轴和电机连接在一起
这个步骤用文字表达比较抽象
但是看视频却非常直接清晰
所以小瓦君就不多说了,点开下面的视频看吧!
 

之后将剩下的长方形条接上去
用502胶水封好四个边角位
中间位置多余的竹签剪去,两边要留着不要剪
 

机器人的身体部份就出来啦~
 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY

 

5

将冰淇淋棍剪成5cm的长度,如上图剪圆滑一点

两边1cm处开两个竹签大小的孔

在一个空插上4cm长的竹签,用502胶水固定好

如是制作4个

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY 
【知识】动手制作机器人,双足移动机器人DIY 

6

 

把上一步做好的零部件和机身的竹签接起来
用502胶水固定,然后剪去多余的竹签
 

注意看图,两边的方向不一样
一边向上,一边向下
 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY 

7

用电烙铁将电机和电池接起来

然后用热熔胶固定在底部
 

将电线穿过纸皮的空隙通到顶部
用热熔胶把电源开关固定在中间
再用电烙铁把开关和电线连接起来
 

连接好之后打开开关测试一下是否通电
 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY
 

8

接下来是制作机器人腿的部分

如图在纸皮板上剪出(两个圆圆的是眼睛)

长方形的纸皮板要在黑点处戳两个孔

并插上1cm长的软塑料管

 

在上面滴上几滴502胶水,盖多一层纸板
将中间两杠折起
放入长方形条,然后用502胶水固定好
 

如是制作两个
 

【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY
【知识】动手制作机器人,双足移动机器人DIY

【知识】动手制作机器人,双足移动机器人DIY
 

9

最后是将腿和身体组装起来啦

为了防止脱落,盖上两片小圈圈再用502固定住

剪一块T形纸板
将两个圆圆的大眼睛粘起来
贴在头顶的位置
 

这样整个机器人就大功告成啦!
 

【知识】动手制作机器人,双足移动机器人DIY
 

详细视频戳这里
↓