| 使用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) |