5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
标题: 【花雕动手做】OTTO 机器人---体验DIY的乐趣(待续) [打印本页]
作者: eagler8 时间: 2020-11-15 20:41
标题: 【花雕动手做】OTTO 机器人---体验DIY的乐趣(待续)
本帖最后由 eagler8 于 2020-11-17 10:26 编辑
OTTO机器人是什么?
OTTO是完全开源的,任何人都可以做的交互式机器人。她与Arduino控制系统兼容,其主要外观材料可以直接3d打印而来,甚至可以说她是为培养人们学习机器人的热情而建造的。通过输入已有的程序,OTTO现在可以步行,跳舞,唱歌等等,他还可以通过超声波感应躲开障碍物。 OTTO的灵感来源于另一个称为Zowi 的两足机器人。OTTO在硬件和软件上都是真正的开源,鼓励世界上任何人发明创造出自己的,具有更多功能和特性版本的OTTO。
(, 下载次数: 35)
作者: eagler8 时间: 2020-11-16 10:25
本帖最后由 eagler8 于 2020-11-16 10:48 编辑
OTTO能做什么?
(, 下载次数: 22)
作者: eagler8 时间: 2020-11-16 10:51
OTTO机器人官方网址:www.ottodiy.com
https://ottodiycn.mystrikingly.com/
体验制作相关文件,点击此处下载链接:
https://pan.baidu.com/s/1EEkDRCdqNryFFHClZclkvg
提取码:okck
(, 下载次数: 37)
作者: eagler8 时间: 2020-11-16 11:02
(, 下载次数: 34)
作者: eagler8 时间: 2020-11-16 11:17
OTTO机器人组件清单
1.Arduino控制器 (Arduino Nano microcontroller)
2.Arduino扩展板(Arduino NANO Shield I/O Extension Board Expansion XD-212)
3.USB数据线 (大部分Arduino套件都有)
4.HC-SR04超声波传感器(HC-SR04 Ultrasound sensor)
5.4个舵机(Mini servo SG90 9g),每一个舵机应当配备2个尖头螺丝和1个小螺丝。
6.5V蜂鸣器
7.6根母母头面包板跳线(Female to Female breadboard connectors cable,10cm)
8.5号电池盒
9.4个5号电池(1.5V)
10.十字型螺丝刀,磁化的最好。
11. 超声波传感器
12. 尖头螺丝,短螺丝
13. 3D打印头,身体,两只腿,左右脚
备选项:电烙铁(如果要安装电池就需要用到)
(, 下载次数: 35)
作者: eagler8 时间: 2020-11-16 12:04
(, 下载次数: 43)
作者: eagler8 时间: 2020-11-16 12:07
(, 下载次数: 32)
作者: eagler8 时间: 2020-11-16 12:08
(, 下载次数: 30)
作者: eagler8 时间: 2020-11-16 12:08
(, 下载次数: 35)
作者: eagler8 时间: 2020-11-16 12:09
(, 下载次数: 35)
作者: eagler8 时间: 2020-11-16 13:03
(, 下载次数: 29)
作者: eagler8 时间: 2020-11-16 13:04
(, 下载次数: 34)
作者: eagler8 时间: 2020-11-16 13:05
(, 下载次数: 29)
作者: eagler8 时间: 2020-11-16 13:06
(, 下载次数: 23)
作者: eagler8 时间: 2020-11-16 13:07
(, 下载次数: 31)
作者: eagler8 时间: 2020-11-16 13:07
(, 下载次数: 25)
作者: eagler8 时间: 2020-11-16 13:08
(, 下载次数: 26)
作者: eagler8 时间: 2020-11-16 13:09
(, 下载次数: 28)
作者: eagler8 时间: 2020-11-16 13:10
(, 下载次数: 37)
作者: eagler8 时间: 2020-11-16 13:10
(, 下载次数: 42)
作者: eagler8 时间: 2020-11-16 17:19
OTTO的小实验场景
(, 下载次数: 139)
作者: eagler8 时间: 2020-11-16 18:38
OTTO外观打印件的说明
你可以从这里下载3d打印机的源文件自行打印,也可以找3d打印商进行打印机购买。如果自行打印,其打印设置要求:精度-0.15mm, 填充密度-20%。
源文件下载链接:https://pan.baidu.com/s/1Ei_NzV5RR84f2g58HHAnkA
(, 下载次数: 133)
作者: eagler8 时间: 2020-11-16 18:40
线路连接
准备好杜邦线及及蜂鸣器,根据图形所示的连接方法将各处引针连接完毕
(, 下载次数: 134)
作者: eagler8 时间: 2020-11-16 19:42
下载并安装Arduino IDE软件(目前版本 V1.8.13)
Arduino IDE 是Arduino官方提供的开发环境,支持windows、Mac OS、linux等系统。点击下载链接后,会看到多个版本,建议下载最新版。
官方下载地址:https://www.arduino.cc/en/Main/Software
(, 下载次数: 136)
作者: eagler8 时间: 2020-11-16 20:37
开发板选择——Arduino Nano
处理器选择——ATmega328P
端口选择——COM3(各个电脑不相同,随机)
注意
在Nano板上传代码时,如果碰到以下avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x36错误,可以尝试在Arduino IDE上尝试以下操作以下菜单:'工具- 处理器 - ATmega328P(Old Bootloader)'应该可以解决。
(, 下载次数: 138)
作者: eagler8 时间: 2020-11-16 20:39
- /*
- 【花雕动手做】OTTO 机器人---体验DIY的乐趣
- 1、安装库:IDE—工具—管理库—搜索“Servo”—安装
- 2、实验之一:通过IO9口,逐一测试四只舵机
- */
- #include <Servo.h>
- Servo myservo;
- int pos = 0;
- void setup() {
- myservo.attach(9);
- }
- void loop() {
- for (pos = 0; pos <= 180; pos += 1) {
- // in steps of 1 degree
- myservo.write(pos);
- delay(15);
- }
- for (pos = 180; pos >= 0; pos -= 1) {
- myservo.write(pos);
- delay(15);
- }
- }
复制代码
作者: eagler8 时间: 2020-11-17 09:48
安装库:IDE—工具—管理库—搜索“servo”—安装
作者: eagler8 时间: 2020-11-17 09:57
Servo库
允许Arduino / Genuino开发板控制各种伺服电机(舵机)。 该库可以控制大量的伺服器。它仔细使用了计时器:该库仅使用1个计时器就可以控制12个伺服器。在Arduino Due上,最多可以控制60个伺服器。
该库与avr,megaavr,sam,samd,nrf52,stm32f4,mbed 架构兼容。要使用此库,请在Arduino IDE中打开库管理器,然后从那里安装它。
该库允许Arduino开发板控制RC(业余)伺服电机。伺服系统具有集成的齿轮和可精确控制的轴。标准伺服器允许将轴以各种角度定位,通常在0到180度之间。连续旋转伺服器允许将轴的旋转设置为各种速度。
伺服库在大多数Arduino板上最多支持12个电机,在Arduino Mega上最多支持48个电机。在Mega以外的板上,使用该库会禁用analogWrite()引脚9和10上的(PWM)功能,无论这些引脚上是否有Servo。在Mega上,最多可以使用12个伺服器,而不会影响PWM功能。使用12到23个电机将禁用引脚11和12上的PWM。
要使用此库:
#include <Servo.h>
伺服电机(舵机)有三根电线:电源线,地线和信号线。电源线通常为红色,应连接至Arduino板上的5V引脚。接地线通常为黑色或棕色,应连接至Arduino板上的接地引脚。信号引脚通常为黄色,橙色或白色,应连接至Arduino板上的数字引脚。请注意,伺服器消耗的功率很大,因此如果需要驱动一两个以上,则可能需要使用单独的电源(即,不是Arduino上的+ 5V引脚)为它们供电。确保将Arduino的接地和外部电源连接在一起。
作者: eagler8 时间: 2020-11-17 09:58
使用Servo库
1、Servo-attach()函数(连接)
将伺服变量附加到引脚上。请注意,在Arduino 0016及更早版本中,Servo库仅在两个引脚上仅支持舵机:9和10。
句法
servo.attach(pin)
servo.attach(pin, min, max)
参量
伺服:类型变量Servo
pin:伺服器连接的引脚号
min(可选):脉冲宽度(以微秒为单位),对应于伺服器上的最小(0度)角度(默认为544)
最大(可选):脉冲宽度(以微秒为单位),对应于伺服器上的最大(180度)角度(默认为2400)
例
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop() {}
2、Servo-write(x)函数(写入)
将值写入伺服器,从而相应地控制轴。在标准伺服器上,这将设置轴的角度(以度为单位),将轴移动到该方向。在连续旋转伺服系统(360度舵机)上,这将设置伺服系统的速度(0表示一个方向的全速,180表示另一方向的全速,而90左右的值表示无运动)。
句法
servo.write(angle)
参量
伺服:伺服类型的变量
angle:写入伺服的值,从0到180
例
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.write(90); // set servo to mid-point
}
void loop() {}
作者: eagler8 时间: 2020-11-17 09:58
3、Servo-writeMicroseconds()函数(精确控制)
以微秒(uS)为单位写入一个值,从而相应地控制轴。在标准伺服系统上,这将设置轴的角度。在标准伺服器上,参数值1000完全是逆时针方向,2000完全是顺时针方向,中间是1500。
请注意,某些制造商并未非常严格地遵循此标准,因此,伺服器通常会对700到2300之间的值做出响应。可以随意增加这些端点,直到伺服器不再继续增加其范围为止。但是请注意,尝试将伺服驱动器驱动通过其端点(通常由嘶嘶声表示)是高电流状态,应避免使用。连续旋转伺服器将以类似于写入功能的方式响应writeMicrosecond功能。
句法
servo.writeMicroseconds(uS)
参量
伺服:伺服类型的变量
us:参数值(以微秒为单位)(int)
例
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.writeMicroseconds(1500); // set servo to mid-point
}
void loop() {}
4、Servo-read()函数(读取)
读取伺服器的当前角度(该值传递给对write()的最后一次调用)。
句法
servo.read()
参量
伺服:类型变量Servo
反馈
伺服角度为0到180度。
5、Servo-Attached()函数(附加)
检查是否将Servo变量附加到引脚上。
句法
servo.attached()
参量
伺服:类型变量Servo
反馈
true如果伺服系统连接到引脚上;false除此以外。
6、Servo-detach()函数(分离)
从其引脚上拆下伺服变量。如果所有伺服变量均已分离,则可以使用AnalogWrite()将引脚9和10用于PWM输出。
句法
servo.detach()
参量
伺服:类型变量Servo
作者: eagler8 时间: 2020-11-17 10:18
- /*
- 【花雕动手做】OTTO 机器人---体验DIY的乐趣
- 1、安装库:IDE—工具—管理库—搜索“Servo”—安装
- 2、实验之二:使用9#与10#口,同时测试腿部或脚部的二只舵机
- */
- #include <Servo.h>
- Servo servo1; //建立舵机对象servo1
- Servo servo2; //建立舵机对象servo2
- int pos = 0;
- void setup() {
- servo1.attach(10); //servo1对象接在扩展板10#端口。
- //servo1端口是由Arduino的10号引脚来控制的。
- servo2.attach(9); //servo2对象接在扩展板9#端口。
- //servo2端口是由Arduino的9号引脚来控制的。
- }
- void loop() {
- //以下程序将控制servo1输出轴左右旋转180度
- for (pos = 0; pos <= 180; pos += 1) {
- servo1.write(pos);
- delay(15);
- }
- for (pos = 180; pos >= 0; pos -= 1) {
- servo1.write(pos);
- delay(15);
- }
-
- //以下程序将控制servo2输出轴左右旋转180度
- for (pos = 0; pos <= 180; pos += 1) {
- servo2.write(pos);
- delay(15);
- }
- for (pos = 180; pos >= 0; pos -= 1) {
- servo2.write(pos);
- delay(15);
- }
- }
复制代码
欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com/) |
Powered by Discuz! X3.3 |