在本篇文章中,我们将主要介绍如何使用ESP8266、电机驱动器和一些电池制作一款硬币大小的机器小车,并且能够通过物联网控制。
ESP8266是一款低成本的Wifi芯片,具有完整的TCP / IP堆栈和微控制器功能,由上海的制造商Espressif System生产。
我们使用的电机驱动器是一个名为MX1508的微型电机驱动器,它是L298N电机驱动器模块的较小替代品。为了控制机器人,我们使用的是Blynk移动应用平台。
所需的组件 ● ESP12E模块 ● ESP8266模块 ● 1个150 mAh电池组 ● MX1508电机驱动器 ● Android Blynk应用程序(Playstore) ● Arduino IDE
什么是Blynk? Blynk是一个基于iOS和Android的平台,可让您通过互联网与Arduino和Raspberry Pi交流。它是一个数字仪表板,您只需拖放小部件即可为移动应用程序项目构建图形界面。
请注意,虽然Blynk可以免费入门,但您可能需要支付额外的精力来构建更复杂的应用程序。当然,您无需额外购买即可运行本文的应用程序。
配置Blynk应用程序 首先注册Blynk。然后点击New Project,为项目命名,device选择“nodeMCU”以及连接类型选择“Wi-Fi”。点击“Create”。
点击Create后,Blynk将向您发送一封电子邮件,其中包含您要使用的项目身份验证令牌代码。创建项目后,点击“+”添加几个按钮。
添加按钮后,按照下面的屏幕截图所示进行配置。
为第一个按钮选择引脚Virtual> V0,并将按钮命名为“Forward”。
将第二个按钮命名为“Backward”并选择引脚Virtual> V4。如果要添加左右控件,可以重复这些步骤,但是现在,我们只添加了向前和向后控件进行测试。
上传源代码 对于初学者,请按照使用Arduino IDE编程ESP / NODEMCU中的步骤为该项目设置Arduino IDE。如果您只使用独立芯片组,我建议您使用ESP8266开发板上传源代码。
注意:在上传程序之前,请更改SSID、密码和身份验证代码以使您的程序适合源代码。更改源代码后,点击上传按钮。
连接ESP8266机器小车 上传源代码后,连接所有组件,如下图所示。 从车上取下太阳能板,用电池组装eSP8266和MX1508电机驱动模块。
我们只使用单个电机,因此机器人只能前进和后退。 您可以稍后再添加一个电机来制作差动驱动器。
接线后,打开您的Blynk应用程序。 选择Blynk项目,然后点击“Play”。 该项目将开始。 由于Blynk是物联网平台,因此可以使用移动应用程序通过互联网控制这款小型车。
以下是本文使用的完整代码: - #define BLYNK_PRINT Serial
- #include <ESP8266WiFi.h>
- #include <BlynkSimpleEsp8266.h>
- // 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();
- }
复制代码
|