0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用Arduino和ESP8266模块通过网页控制伺服电机

454398 来源:工程师吴畏 2019-08-01 11:48 次阅读

Arduino UNO连接到ESP8266

/b》

网络控制伺服电路图

首先,将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更改Arduino代码中的Wi-Fi名称和密码-Fi名称和密码。然后上传代码。打开串口监视器,它将显示IP地址,如下图所示:

在网页上指定的空白处输入此IP地址。现在,当您移动滑块时,伺服电机将移动。

代码

#include

#include

SoftwareSerial esp8266(2,3);

#define DEBUG true

#define sg90_pin 8

Servo sg90;

int current_position = 170;

int vel = 10;

int minimum_position = 20;

int maximum_position = 160;

void setup()

{

sg90.attach(sg90_pin);

sg90.write(maximum_position);

sg90.detach();

Serial.begin(9600);

esp8266.begin(9600);

esp8266Data(“AT+RST ”, 2000, DEBUG); //reset module

esp8266Data(“AT+CWMODE=1 ”, 1000, DEBUG); //set station mode

esp8266Data(“AT+CWJAP=\”Tenda_31BC98\“,\”barcelona\“ ”, 2000, DEBUG); //connect wifi network

while(!esp8266.find(“OK”)) { //wait for connection

}

esp8266Data(“AT+CIFSR ”, 1000, DEBUG);

esp8266Data(“AT+CIPMUX=1 ”, 1000, DEBUG);

esp8266Data(“AT+CIPSERVER=1,80 ”, 1000, DEBUG);

}

void loop()

{

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();

if (DEBUG) {

Serial.println(command);

Serial.println(value);

}

delay(100);

//move servo1 to desired angle

if(command == “sr1”) {

//limit input angle

if (value 》= maximum_position) {

value = maximum_position;

}

if (value 《= minimum_position) {

value = minimum_position;

}

sg90.attach(sg90_pin); //attach servo

while(current_position != value) {

if (current_position 》 value) {

current_position -= 1;

sg90.write(current_position);

delay(100/vel);

}

if (current_position 《 value) {

current_position += 1;

sg90.write(current_position);

delay(100/vel);

}

}

sg90.detach(); //dettach

}

}

}

}

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;

}

}

if (debug)

{

Serial.print(response);

}

return response;

}

代码说明

首先,包括软件序列和伺服的库。软件串行库将帮助我们在Arduino的其他引脚上使用TX和RX通信。伺服库将帮助我们轻松移动伺服。之后,我们定义了从ESP8266连接RX和TX的引脚,然后我们定义了连接伺服电机的引脚。

之后,我们定义了从ESP8266连接RX和TX的引脚,然后我们定义了连接伺服电机的引脚。

#include

#include

SoftwareSerial esp8266(2,3);

#define DEBUG true

#define sg90_pin 8

然后在设置功能中,我们告诉Arduino我们将伺服电机连接到哪个引脚,我们将电机移动到最大位置。然后我们设置串行通信的波特率和esp8266的波特率9600.根据esp8266的波特率设置esp8266的波特率。您的esp8266可能具有不同的波特率。

然后我们设置串行通信的波特率和ESP8266的波特率为9600.您需要根据ESP8266的波特率设置ESP8266的波特率。您的ESP8266可能具有不同的波特率。

sg90.attach(sg90_pin);

sg90.write(maximum_position);

sg90.detach();

Serial.begin(9600);

esp8266.begin(9600);

以下命令将ESP8266连接到Wi-Fi网络,并将网络服务器设置为IP地址和端口。它将在上传代码后在串行监视器中显示。

esp8266Data(“AT+RST ”, 2000, DEBUG); //reset module

esp8266Data(“AT+CWMODE=1 ”, 1000, DEBUG); //set station mode

esp8266Data(“AT+CWJAP=\”Tenda_31BC98\“,\”barcelona\“ ”, 2000, DEBUG); //connect wifi network

while(!esp8266.find(“OK”)) { //wait for connection

}

esp8266Data(“AT+CIFSR ”, 1000, DEBUG);

esp8266Data(“AT+CIPMUX=1 ”, 1000, DEBUG);

esp8266Data(“AT+CIPSERVER=1,80 ”, 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;

}

}

可下载代码

jquery.js webservo.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    85

    文章

    2047

    浏览量

    57859
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187038
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44990
收藏 人收藏

    评论

    相关推荐

    ESP8266 太空人动画的 OLED 显示

    ESP8266 太空人动画的 OLED 显示
    的头像 发表于 10-08 15:06 278次阅读
    <b class='flag-5'>ESP8266</b> 太空人动画的 OLED 显示

    ESP8266 通过 MQTT 协议实现 LED 的远程控制

    本文简要介绍了搭建 EMQX 服务器实现基于 MQTT 协议远程控制 NodeMCU ESP8266 板载 LED 的解决方案。
    的头像 发表于 09-25 09:11 2005次阅读
    <b class='flag-5'>ESP8266</b> <b class='flag-5'>通过</b> MQTT 协议实现 LED 的远程<b class='flag-5'>控制</b>

    arduino(1)--ESP8266配置

    硬件准备 首先需要准备一个开发板,这里我准备的是淘宝购买的兼容arduinoESP8266模块arduino配置 我使用的是arduino
    发表于 09-06 11:00

    esp32和esp8266代码共用吗

    本文将介绍ESP32和ESP8266两款流行的微控制器在代码共用性方面的可能性与差异性。 一、引言 随着物联网技术的飞速发展,越来越多的智能设备开始进入我们的生活。其中,ESP32和
    的头像 发表于 08-19 18:23 1150次阅读

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理器和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理器,属于Xtensa架构。 ESP32 :使
    的头像 发表于 08-19 18:16 5387次阅读

    esp8266不烧录可以使用吗

    ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。然而,如果不进行烧录,ESP8266将无法正常工作。 1. ESP8266简介
    的头像 发表于 08-19 17:28 803次阅读

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现: 通过路由器连接(STA模式)和直接作为热点连接(AP模式) 。以下是两种连接方式的步骤: 一、
    的头像 发表于 08-19 17:27 2791次阅读

    Arduino Nano 和 NodeMCU ESP8266 读取 DHT11 环境温湿度数据及 OLED显示

    Arduino Nano 和 NodeMCU ESP8266 读取 DHT11 环境温湿度数据及 OLED显示
    的头像 发表于 08-13 18:04 1168次阅读
    <b class='flag-5'>Arduino</b> Nano 和 NodeMCU <b class='flag-5'>ESP8266</b> 读取 DHT11 环境温湿度数据及 OLED显示

    ESP-12 ESP8266如何通过I2C将SSID和RSSI信息发送到RPi / Arduino

    我正在寻找我的 ESP-12 ESP8266,以便通过 I2C 将 SSID 和 RSSI 信息发送到 RPi / Arduino。关于如何进行的任何建议? 我查看了文档,不禁注意到
    发表于 07-22 07:36

    使用ESP8266arduino连接到thinkspeak云,无法将其连接到任何网页,为什么?

    我正在尝试使用 ESP8266arduino 连接到 thinkspeak 云。所以我能够将 esp 模块连接到我的家庭 wifi,但我无法将其连接到任何
    发表于 07-16 07:43

    ESP8266为什么不响应Arduino

    我是这个 wifi 芯片的新手。我的问题是,当我将其与 arduino mega 连接时,我无法从 esp8266 获得响应。 像许多在线教程一样,我按照说明进行操作,但仍然无法得到任何回应
    发表于 07-16 06:39

    为什么安卓手机无法显示从ESP8266发送的网页

    以下网页ESP8266发送到 WinXP PC ( 但是,当我想从我的 Android 手机上查看相同的网页时 显示以下错误
    发表于 07-12 07:17

    开源项目!ESP8266 DIY会爬墙的无人机

    。如果你告诉它往前走,飞行控制器将调整后部电机的转速,使它往前走。 ESP8266模块 为了与无人机通信,我们需要蓝牙或WIFI连接,所以我们使用E
    发表于 07-04 09:22

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 1338次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    使用Wi-Fi ESP8266方案模组接入云平台

    ESP8266模块芯片是基于无线通信协议的UARTWi-Fi透传模块芯片,支持802.11b/g/n的无线标准,并带有三种可选择的工作模式。ESP8266
    的头像 发表于 05-10 08:20 1852次阅读
    使用Wi-Fi <b class='flag-5'>ESP8266</b>方案模组接入云平台