Required Hardware.png (280.34 KB, 下载次数: 8)
2019-9-5 14:23 上传
什么是Blynk?
Blynk是一个基于iOS和Android的平台,可让您通过互联网与Arduino和Raspberry Pi交流。它是一个数字仪表板,您只需拖放小部件即可为移动应用程序项目构建图形界面。
请注意,虽然Blynk可以免费入门,但您可能需要支付额外的精力来构建更复杂的应用程序。当然,您无需额外购买即可运行本文的应用程序。
配置Blynk应用程序
首先注册Blynk。然后点击New Project,为项目命名,device选择“nodeMCU”以及连接类型选择“Wi-Fi”。点击“Create”。
nodeMCU.png (64.62 KB, 下载次数: 4)
2019-9-5 14:27 上传
点击Create后,Blynk将向您发送一封电子邮件,其中包含您要使用的项目身份验证令牌代码。创建项目后,点击“+”添加几个按钮。
Tapping.png (105.21 KB, 下载次数: 8)
2019-9-5 14:28 上传
添加按钮后,按照下面的屏幕截图所示进行配置。
为第一个按钮选择引脚Virtual> V0,并将按钮命名为“Forward”。
Forward.png (89.97 KB, 下载次数: 10)
2019-9-5 14:30 上传
将第二个按钮命名为“Backward”并选择引脚Virtual> V4。如果要添加左右控件,可以重复这些步骤,但是现在,我们只添加了向前和向后控件进行测试。
Backward.png (88.34 KB, 下载次数: 10)
2019-9-5 14:30 上传
上传源代码
对于初学者,请按照使用Arduino IDE编程ESP / NODEMCU中的步骤为该项目设置Arduino IDE。如果您只使用独立芯片组,我建议您使用ESP8266开发板上传源代码。
注意:在上传程序之前,请更改SSID、密码和身份验证代码以使您的程序适合源代码。更改源代码后,点击上传按钮。
code.png (105.5 KB, 下载次数: 9)
2019-9-5 14:33 上传
连接ESP8266机器小车
上传源代码后,连接所有组件,如下图所示。 从车上取下太阳能板,用电池组装eSP8266和MX1508电机驱动模块。
我们只使用单个电机,因此机器人只能前进和后退。 您可以稍后再添加一个电机来制作差动驱动器。
diagram.png (117.72 KB, 下载次数: 11)
2019-9-5 14:34 上传
346.png (241.96 KB, 下载次数: 3)
2019-9-5 14:34 上传
接线后,打开您的Blynk应用程序。 选择Blynk项目,然后点击“Play”。 该项目将开始。 由于Blynk是物联网平台,因此可以使用移动应用程序通过互联网控制这款小型车。
以下是本文使用的完整代码:
#define BLYNK_PRINT Serial
#include
#include
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "--your authenticate code--";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "your wifi";
char pass[] = "your wifi password";
// These are used to set the direction of the bridge driver.
#define ENB D3 //ENB
#define MOTORB_1 D4 //IN3
#define MOTORB_2 D5 //IN4
// SETUP
void setup()
{
pinMode(ENB, OUTPUT);
pinMode(MOTORB_1, OUTPUT);
pinMode(MOTORB_2, OUTPUT);
// digitalWrite(ENA,LOW);
digitalWrite(ENB,LOW);
// Start serial communication
Serial.begin(9600);
// Connect Blynk
Blynk.begin(auth, ssid, pass);
}
// FORWARD
BLYNK_WRITE(V0) {
int button = param.asInt(); // read button
if (button == 1) {
Serial.println("Moving forward");
digitalWrite(ENB,HIGH);
digitalWrite(MOTORB_1,LOW);
digitalWrite(MOTORB_2,HIGH);
}
else {
Serial.println("Stop");
digitalWrite(ENB,LOW);
digitalWrite(MOTORB_1,LOW);
digitalWrite(MOTORB_2,LOW);
}
}
// BACKWARD
BLYNK_WRITE(V3) {
int button = param.asInt(); // read button
if (button == 1) {
Serial.println("Moving backward");
digitalWrite(ENB,HIGH);
digitalWrite(MOTORB_1,HIGH);
digitalWrite(MOTORB_2,LOW);
}
else {
Serial.println("Stop");
digitalWrite(ENB,LOW);
digitalWrite(MOTORB_1,LOW);
digitalWrite(MOTORB_2,LOW);
}
}
// MAIN CODE
void loop()
{
Blynk.run();
}复制代码