|
使用Arduino和ESP8266模块通过网页控制伺服电机。
在本篇文章中,我们将实现通过网页控制伺服电机。网页将使用ESP8266模块创建,通过移动网页上的滑块,伺服电机将相应的进行移动。
将ESP8266连接到Arduino UNO开发板
网络控制伺服电路图
首先,将ESP8266与Arduino连接。我们使用适配器将esp8266连接到Arduino连接起来,这将使连接更加容易。该适配器具有5至3.3V稳压器,您无需连接任何外部电阻。 ● 将适配器的GND连接到Arduino的GND ● 将适配器的VCC连接到Arduino的5V ● 将RX从适配器连接到Arduino的引脚2 ● 将TX引脚从适配器连接到Arduino的引脚3
然后,将伺服电机与Arduino连接。将伺服电机与Arduino连接如下: ● 伺服电机的黑线连接到Arduino的GND引脚 ● 伺服电机的红线连接到Arduino的5V引脚 ● 伺服电机的黄线到Arduino的引脚8
制作网页 要通过网页控制伺服电机,我们必须使用HTML语言制作网页。我们为项目创建的HTML代码可以从本文末尾下载。如果要重命名文件,请更改文件名,但请确保其末尾有“.html”。
之后,下载JQUERY文件并将此文件放在放置HTML文件的同一文件夹中。之后,打开HTML,网页将如下所示:
现在,使用您的Wi-Fi名称和密码更改Arduino代码中的Wi-Fi名称和密码。然后上传代码。打开串行监视器,它将显示IP地址,如下图所示:
在网页上指定的空白处键入此IP地址。现在,当您移动滑块时,伺服电机将移动。
代码说明 首先,包括软件串口和伺服电机的库。软件串口库将帮助我们在Arduino的其他引脚上使用TX和RX通信。伺服电机库将帮助我们轻松移动伺服。之后,我们定义了从ESP8266连接RX和TX的引脚,然后定义了连接伺服电机的引脚。
之后,我们定义了从ESP8266连接RX和TX的引脚,然后定义了连接伺服电机的引脚。 - #include <SoftwareSerial.h>
- #include <Servo.h>
- SoftwareSerial esp8266(2,3);
- #define DEBUG true
- #define sg90_pin 8
复制代码
然后在setup()函数中,我们指示Arduino将伺服电机连接到哪个引脚,并将电机移动到最大位置。然后我们设置串行通信的波特率和ESP8266的波特率为9600。您需要根据ESP8266的波特率设置ESP8266的波特率。您的ESP8266可能具有不同的波特率。 - sg90.attach(sg90_pin);
- sg90.write(maximum_position);
- sg90.detach();
- Serial.begin(9600);
- esp8266.begin(9600);
复制代码以下命令将ESP8266连接到Wi-Fi网络,并将Web服务器设置为IP地址和端口。上传代码后,它将在串行监视器中显示。 - esp8266Data("AT+RST\r\n", 2000, DEBUG); //reset module
- esp8266Data("AT+CWMODE=1\r\n", 1000, DEBUG); //set station mode
- esp8266Data("AT+CWJAP="Tenda_31BC98","barcelona"\r\n", 2000, DEBUG); //connect wifi network
- while(!esp8266.find("OK")) { //wait for connection
- }
- esp8266Data("AT+CIFSR\r\n", 1000, DEBUG);
- esp8266Data("AT+CIPMUX=1\r\n", 1000, DEBUG);
- esp8266Data("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
复制代码Arduino将查看数据是否可用。如果移动了网页上的滑块,则ESP8266会根据移动的滑块将数据发送到Arduino。 Arduino根据ESP8266给出的值移动伺服电机。 - if (esp8266.available())
- {
- if (esp8266.find("+IPD,"))
- {
- String msg;
- esp8266.find("?");
- msg = esp8266.readStringUntil(' ');
- String command = msg.substring(0, 3);
- String valueStr = msg.substring(4);
- int value = valueStr.toInt();
复制代码以下函数将命令发送到ESP8266,并在串行监视器上打印ESP8266的响应。 - String esp8266Data(String command, const int timeout, boolean debug)
- {
- String response = "";
- esp8266.print(command);
- long int time = millis();
- while ( (time + timeout) > millis())
- {
- while (esp8266.available())
- {
- char c = esp8266.read();
- response += c;
- }
- }
复制代码
代码 本文创建的HTML代码:
webservo.rar
(682 Bytes, 下载次数: 171)
|