Arduino Spybot
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 4 | ||||
| × | 8 | ||||
| × | 2 | ||||
| × | 8 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
简短介绍
这是一款简单的四轮汽车,可通过蓝牙连接进行控制。汽车可以容纳任何可以用作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制造工艺