亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino Spybot

组件和用品

Arduino UNO
× 1
Arduino Proto Shield
您可以使用任何其他带有针头的可焊接面包板
× 1
Adafruit Motor/Stepper/Servo shield V2
× 1
SM-S4306R 连续旋转伺服
× 1
直流电机(通用)
× 4
汽车轮胎
× 4
跳线(通用)
电机需要这些
× 8
4xAA 电池座
× 2
AA 电池
× 8
手机
我在项目中使用了诺基亚 Lumia 520
× 1
手机支架
× 1
定制底盘
我用了一个简单的木板
× 1

应用和在线服务

Johnny-Five

关于这个项目

简短介绍

这是一款简单的四轮汽车,可通过蓝牙连接进行控制。汽车可以容纳任何可以用作IP摄像头的手机。我决定使用 javascript 使用节点网络服务器制作这个机器人,我可以在其中监控机器人的去向。

主要部分电路见图1。

运行服务器后,我得到一个屏幕,其中包含一些关于控制的介绍和一个用于摄像机视图的窗口(图 2)。

是的,这个布局是响应式的。

底盘

在这个版本的机器人中,我决定自己制作底盘。如果您没有钻孔机或者只是想要一个更简单的解决方案,您可以从各种塑料车身中购买。

我走上了自己制作底盘的道路,但这并不像看起来那么容易。最重要的规则是,如果您想在转弯时选择差速转向,则必须将轮胎彼此尽可能靠近。您可以在以下链接中阅读主要错误和基本物理规则:

http://www.rakeshmondal.info/4-Wheel-Drive-Robot-Design

另一个挑战是如何将直流电机连接到底盘上。在我的情况下,我没有任何特殊的部分,所以我决定选择一些电缆扎带 (150/3,5) 来完成这项任务。为了正确连接轮胎,我必须尽可能精确地钻孔,并为一台直流电机使用 2 个扎带。不幸的是,电机有可能不够直,当您控制前进和后退时,您的汽车可能会向左或向右移动一点。

电池

为了给电路板和电机供电,我决定选择一个直流电源来完成这项任务。机箱没有任何空间容纳 8 x AA 电池座,所以我必须进行一些定制,因此用 2 个螺钉将两个 4 x AA 电池座相互连接。为此,我还必须在塑料上钻孔。

供电

就我而言,我使用 8 节 AA 可充电电池为 Arduino Uno 板供电。这足以为电机屏蔽提供服务。该屏蔽上有一个可拆卸的跳线,因此您的电机屏蔽不会从 Arduino 获得任何电源。在这种情况下,您可以使用盾牌上的电源引脚单独为盾牌供电。您可以在以下链接中了解不同的供电选项:

https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/powering-motors

无线连接

我使用 HC-06 蓝牙模块在汽车和我的电脑之间建立连接。我想使用尽可能少的电缆,所以我决定通过将蓝牙模块放入并清空原型屏蔽来构建自定义 Arduino 屏蔽,在屏蔽下进行接线并焊接一些排针以获得正确的连接机制。您可以快速查看图 3 和图 4 中的结果。

好消息是您可以随时将蓝牙模块从屏蔽罩上断开,因为它没有焊接到板上。

要设置蓝牙模块,请按照本网站的说明进行操作:

https://github.com/rwaldron/johnny-five/wiki/Getting-Started-with-Johnny-Five-and-JY-MCU-Bluetooth-Serial-Port-Module

运动

机器人能够使用差动转向向前、向后和转弯。相机支架连接到连续旋转伺服系统,因此您可以在不移动汽车本身的情况下用手机环顾四周。您可以在以下视频中观看简短的演示。

手机

我使用诺基亚 Lumia 520 进行项目和 Win IP Camera 应用程序,您可以在商店中找到:

https://www.microsoft.com/en-us/store/p/win-ip-camera/9nblgggz4xb1

关于代码

作为一名 javascript 开发人员,我决定为控制页面创建一个节点 Web 服务器,并使用一些奇特的库来增强外观和代码语法。你可以在我的github页面和下一节看到完整的列表。

我决定在前端和后端都选择模块化。这是应用程序的入口点:

var boardModule =require('./src/boardModule'),servoModule =require('./src/servoModule'), motorModule =require('./src/motorModule'); boardModule.initBoard().then(function() { motorModule.initMotors();servoModule.initServo();}); 

在前端,我也对每个模块使用了分离:

import {moveWheels, stopWheels} from './wheelsControl';import {moveServo, stopServo} from './servoControl'; document.onkeydown =checkKeyDown;document.onkeyup =checkKeyUp;函数 checkKeyDown(e) { moveWheels(e.keyCode); moveServo(e.keyCode);} 函数 checkKeyUp(e) { stopWheels(e.keyCode); stopServo(e.keyCode);} 

对于完整的代码库,请检查上面我的 github 存储库。

Sortware 库

  • express.js - 增强我们的 Nodejs 应用程序
  • johnny-5 - 用于使用 Arduino Javascript 控制 API
  • socket.io- 用于使用网络套接字在后端和前端之间建立通信
  • susy - 用于创建布局和响应式设计
  • google material design - 用于使用材料元素
  • gulpJS - 用于任务自动化
  • BabelJS - 用于转译 EcmaScript 6
  • Browserify - 用于模块支持

最后的话

我是这个物联网世界的初学者,这是我的第一个项目。我不想说我使用了最佳解决方案,但希望您能从本指南中找到一些有用的信息。

代码

Github
https://github.com/dominikfilkus/arduino-spybot-V2

示意图

arduino-spybot.fzz

制造工艺

  1. ILI9341 TFT 触摸屏显示盾上的位图动画
  2. Web 操作的 DMX 控制器
  3. FlickMote
  4. 自制电视 B-Gone
  5. 主时钟
  6. HSVClock
  7. 使用 Raspberry Motor Shield 的 Android 控制玩具
  8. 找到我
  9. Arduino Power
  10. Tech-TicTacToe
  11. Arduino Quadruped
  12. BLUE_P:无线 Arduino 编程扩展板