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

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

    关注

    82

    文章

    1838

    浏览量

    56295
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184857
  • ESP8266
    +关注

    关注

    50

    文章

    947

    浏览量

    43994
收藏 人收藏

    评论

    相关推荐

    nodemcu和esp8266是什么关系?

    是芯片在esp8266芯片加上4MB spi flash变成esp-12模块;再在esp-12模块加上底板,加上USB转串口就变成NodeM
    的头像 发表于 10-20 14:53 2306次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?

    带有Blynk和IR的Arduino ESP8266控制继电器

    电子发烧友网站提供《带有Blynk和IR的Arduino ESP8266控制继电器.zip》资料免费下载
    发表于 06-30 10:31 0次下载
    带有Blynk和IR的<b class='flag-5'>Arduino</b> <b class='flag-5'>ESP8266</b><b class='flag-5'>控制</b>继电器

    是否可以将ESP8266库与通过串行连接到Arduino Pro Mini的ESP-05一起使用?

    是否可以将 ESP8266 库(https://github.com/esp8266/Arduino)与通过串行连接到 Arduino Pr
    发表于 06-06 13:25

    ESP8266如何通过Xbee读取任何新到达的数据?

    我正在将我的 Xbee 收发器直接连接到我的 ESP8266 模块。这个 Xbee 将通过 RX 引脚向我的 ESP8266 发送模拟值。我只想知道: 1)RX pin 可以读取这些模
    发表于 06-06 13:10

    如何使用arduino nano通过at命令控制我的esp8266

    所以我使用 arduino nano 通过 at 命令控制我的 esp8266。但是 esp8266 没有响应 AT 命令。我检查了不同的波
    发表于 06-02 10:15

    ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    的且集成的国产WIFI模块,它有很多种型号,但是使用方法没什么太大的区别,也可以说没区别,有些看起来引脚比较多的ESP8266模块只是将这个芯片的IO口拓展出来了而已。还有 一种原因就是它采用的是Micropython编程的
    发表于 05-30 09:53 14次下载
    <b class='flag-5'>ESP8266</b>初次如何实现无线通信(基于电脑与<b class='flag-5'>ESP8266</b>)

    求分享ArduinoESP8266-12E的连接图和Arduino发送号码到网页的代码?

    我想将我的 Arduino uno 与 ESP8266-12E 连接,以将数字从 Arduino uno 发送到网页。 谁能给我Arduino
    发表于 05-29 07:00

    如何使用ESP8266登录网页

    我的 ISP 需要登录 ID 和密码才能访问互联网。该网页应始终保持打开状态,否则它会提示我再次登录,这在移动设备上使用时真的很痛苦,因为它一直在注销。我正在考虑 ESP8266
    发表于 05-24 07:49

    CC2530采用ESP8266与手机APP通信

    项目概述: 项目实现通过CC2530控制ESP8266将其配置成AP+TCP服务器模式,并通过手机APP连接到TCP服务器并完成数据传输。ESP82
    的头像 发表于 05-23 09:15 2867次阅读

    使用ESP8266作为Web服务器,如何将网页上传到SPIFFS?

    我希望这是一个宣布这个的好地方...... 我一直在使用 ESP8266 作为 Web 服务器,因此必须一直将我的网页上传到 SPIFFS。 我曾经使用 Arduino IDE 和 SPIFFS
    发表于 05-23 08:49

    如何使用ESP8266-01和Arduino IDE控制2个电机

    你好社区!我想用我的 ESP8266-01 制作一个电机控制器。我有 2 个电机,需要通过手机发送命令来
    发表于 05-23 06:31

    如何通过ESP8266获取公共IP?

    我想知道,如果我可以通过 ESP8266 获取路由器的公共 IP? ESP8266 连接 --> 路由器 --> ESP 获取公共 IP 并存储它。 是否有任何
    发表于 05-15 08:51

    如何使用ESP8266修复Arduino中的超时?

    我正在使用 Arduino Uno 和 ESP8266。 我将 ESP8266Arduino Uno 连接,并下载了 ESP8266
    发表于 05-08 08:13

    Arduino esp8266核心文件已过时要怎么解决?

    上的文件存在细微差别:https: //github.com/esp8266/Arduino/blob ... _digital.c有趣的是,最后的变化似乎有修复了我面临的问题(在附加/分离 ISR
    发表于 05-08 07:23

    基于arduinoesp8266和继电器实现小爱同学开关灯

    1.esp8266-01模块; 2. 配合使用的继电器3. esp8266的读写器5. 5v供电(在淘宝可以买220v转5v的电源模块)这里用uno板代替 硬件部分的搭建1.关于继电
    发表于 05-04 11:15 1次下载
    基于<b class='flag-5'>arduino</b>用<b class='flag-5'>esp8266</b>和继电器实现小爱同学开关灯