利用吃灰的钓鱼利器做一个手机远程遥控小车

2019 年 9 月 5 日 FreeBuf

前言

在FB看了不少关于ESP8266钓鱼测试的文章,这么低成本的玩法,我心动了。在一次买了两个烧录数次Copy过来的代码后就一直吃灰,想必各位也有类似的经历。那么本着“废物”利用的原则,今天来打造一个手机遥控的玩具小车,使用WiFi接入,当设备和手机在同一个局域网中,为局域网通信,其余情况,使用MQTT远程通信。

思路:nodemcu接入wifi同时根据指令控制舵机,通过给电机驱动板不同的高低电平,使舵机驱动板驱动马达。

假设 A1 A2为输入口,D1 D2为输出口(接电机。) 给驱动板供电以后,假设利用Nodemcu使A1为高电平,A2为低电平,则电机正转,相反,A2高电平,A1低电平,那么电机反转,A1 A2都为低电平,则电机不转。

准备工作

需要的设备

废弃玩具遥控车、淘汰手机旧电池、吃灰的钓鱼玩具ESP8266、9.9包邮舵机一个、小车里拆下来的线材、航模马达一个、灵巧的一双手。

使用Arduino IDE来对Nodemcu(就是esp8266+4M的flask,即你们吃灰的那个)编程。所以需要先简单的配置一下arduino。

安装软件|添加esp8266支持

首先从Arduino 官网下载最新版本的Arduino IDE软件并安装。

安装完成以后,进入首选项(Preferences),找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

之后点击工具-开发板-开发板管理器,进入开发板管理器界面:

下载并安装blinker Arduino库

点击下载https://github.com/blinker-iot/blinker-library/archive/master.zip

Windows:将下载好的blinker库解压到我的电脑>文档>Arduino>libraries文件夹中

Mac OS:将下载好的blinker库解压到文稿>Arduino>libraries文件夹中

在app中添加设备,获取Secret Key

APK地址:http://blinker.clz.me/blinker-2.2.4.apk

进入App,点击右上角的“+”号,然后选择添加设备

点击选择Arduino>WiFi接入

选择要接入的服务商

复制申请到的Secret Key

DIY一个炫酷的界面

在设备列表页,点击设备图标,进入设备控制面板

首次进入设备控制面板,会弹出向导页

在向导页点击载入示例,即可载入示例组件

拆解并改装小车:

以前大概这样?

改装转弯模块

拆掉华丽的外表,并用烙铁在如图位置开个方形洞:

把多余的部件清理掉,余下转动装置

清理干净,电池盒的盖子什么的掀飞。不平的地方用烙铁抹平。

将舵机的舵把用螺丝固定,舵把在合适的位置拧上一个长螺丝钉,但是不要太长以免无法合盖。舵把的螺丝钉扣住玩具小车转向装置中间的洞。舵机牵拉,便可达到一个转弯的效果。

刚才打孔的地方就是固定舵机的地方。

组装好,再用螺丝压紧。

改装动力模块

更换电机:把右边的垃圾小机机改为左边的老式航模电机。

由于航模电机长了一节,是不可能盖严了,把盖住电机屁股的那一块用烙铁抹掉。

盖住以后传动丝滑流畅,虽然丑了点,但是强行装上电机了。

编写程序

值得一提的是,你需要用哪个口直接填写即可。例如 你使用gpio5 接一个小灯泡。声明变量时填写 int led = D1; 即可

#define BLINKER_PRINT Serial#define BLINKER_WIFI

#include <Blinker.h>#include <Servo.h>Servo myservo;
//向右转void right(){ int pos = 0; //舵机端口号 myservo.attach(D1); for(pos = 0; pos <= 180; pos += 3){ myservo.write(pos); delay(10); } myservo.write(180); delay(200); }

//向左转void left(){ int pos=100; myservo.attach(D1); for(pos = 100; pos >= 0; pos -= 3){ myservo.write(pos); delay(10); } myservo.write(0); delay(200);}//复位void rest(){ myservo.attach(D1); myservo.write(100); delay(200); }

char auth[] = "b8b8d0568edb";char ssid[] = "LookCos";char pswd[] = "123456789";

// 前进后退,左转右转BlinkerButton Button1("btn-qj");BlinkerButton Button2("btn-ht");BlinkerButton Button3("btn-zz");BlinkerButton Button4("btn-yz");//方向复位按键BlinkerButton Button5("btn-rest");//停车BlinkerButton Button6("btn-stop");BlinkerNumber Number1("num-abc");

int counter = 0;

// 前进void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(D3, HIGH); digitalWrite(D2, LOW); }// 后退void button2_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(D2, HIGH); digitalWrite(D3, LOW); }// 左转void button3_callback(const String & state) { BLINKER_LOG("get button state: ", state); left();}// 右转void button4_callback(const String & state) { BLINKER_LOG("get button state: ", state); right();}// 方向复位void button5_callback(const String & state) { BLINKER_LOG("get button state: ", state); rest();}//停车void button6_callback(const String & state) { BLINKER_LOG("get button state: ", state); rest(); digitalWrite(D2, LOW); digitalWrite(D3, LOW); }

// 如果未绑定的组件被触发,则会执行其中内容void dataRead(const String & data){ BLINKER_LOG("Blinker readString: ", data); counter++; Number1.print(counter);}

void setup() { // 初始化串口 Serial.begin(115200); int QQ_GROUP = 8805926; #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif pinMode(D2, OUTPUT); pinMode(D3, OUTPUT); // 初始化blinker Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); //前后左右 Button1.attach(button1_callback); Button2.attach(button2_callback); Button3.attach(button3_callback); Button4.attach(button4_callback); //方向复位 Button5.attach(button5_callback); //停车 Button6.attach(button6_callback);}

void loop() { Blinker.run();}

烧录程序(直接USB插上即可):

一般的Nodemcu 如何选择即可。

组装好,调试:

第一次用这个东西画图,画的不太好,而且我的电机驱动模块没有找到。就找了一个(绿色的那个)代替。

如图,我使用外置5V电源来驱动舵机与马达,值得注意的是,舵机要与Nodemcu共地(地线接一块)才能控制舵机。

下面那个电池(iPhone 5S原装电池)专门用来驱动Nodemcu 3.3V与5V皆可。

亲测,局域网环境,延迟很低。

成了,放到地面跑还是很快的。圆了儿时梦想。

参考资料

https://blinker.app/doc

https://www.arduino.cc

*本文原创作者:中华隐士家族,本文属于FreeBuf原创奖励计划,未经许可禁止转载

精彩推荐


登录查看更多
0

相关内容

Arduino 是一个开源的控制平台,其简单的输入输出接口和控制命令简化了元器件的控制,使工程师可以迅速将电子控制应用到其它领域中。
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
MIT新书《强化学习与最优控制》
专知会员服务
270+阅读 · 2019年10月9日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
后渗透利用msf关闭防火墙
黑白之道
8+阅读 · 2019年8月24日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
Risk-Aware Active Inverse Reinforcement Learning
Arxiv
7+阅读 · 2019年1月8日
Arxiv
135+阅读 · 2018年10月8日
Arxiv
8+阅读 · 2018年7月12日
Arxiv
3+阅读 · 2018年4月5日
VIP会员
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
后渗透利用msf关闭防火墙
黑白之道
8+阅读 · 2019年8月24日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
Top
微信扫码咨询专知VIP会员