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

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

3天内不再提示

如何使用基于ESP8266的NodeMCU原型板和电机控制板来控制两种类型的电机

454398 来源:网络整理 作者:佚名 2019-11-08 11:06 次阅读

第1步:使用的项目

对于这个教练,我使用了Gearbest的以下项目:

2 x NodeMCU 1.0(又名v2) - http://www.gearbest.com/transmitters-receivers-mod 。. 。

2 x ESP-12E电机护罩 - http://www.gearbest.com/boards-shields/pp_340732.h.。.

2 x直流减速电机 - http ://www.gearbest.com/development-boards/pp_7099 。..

1 x 28BYJ步进电机 - http://www.gearbest.com/other-accessories/pp_23115.。.

一句警告。确保你得到NodeMCU 1.0。 Gearbest还销售NodeMCU 0.9(又名v1)。它不适合电机护罩(我有第一手经验)。

第2步:电机护罩

如何使用基于ESP8266的NodeMCU原型板和电机控制板来控制两种类型的电机

特色电机护罩由深圳智能科技博士(我喜欢这个名字)制造。虽然董事会非常可靠而且很好但我发现文档缺乏。该板通常捆绑在一个WiFi机器人车载套件中,可以使用该软件。该软件是我使用的而不是文档。但是,我找不到与步进电机一起使用驱动器的任何信息。希望这个教练可以解决这个问题。

Motor Shield文档

WiFi机器人汽车源

本质上,电机屏蔽功能:

由NodeMCU IO 1,2,3和4控制的四个供电输出

电机和NodeMCU的可选双电压

所有相关引脚的便利性突破

电机电源引脚标记为A-,A +,B-和B +。 nodemcu和Arduino GPIO的映射不相同。如果您尝试在Arduino IDE中将D1引脚用作io-pin 1,它将无法工作。在Arduino中你必须使用D1(这是5或5的别名。引脚映射如下:

Board pin |NodeMCU GPIO |Arduino IDE

A -15或D1

A +30或D3

B -24或D2

B +42或D4

第3步:ESP-12E(NodeMCU)

NodeMCU 1.0(又名v2)是一个非常好用的板。我使用过的其他ESP8266板需要3.3v,还需要特殊的接线用于闪存.NodeMCU有一个板载3.3v电压调节器所以它可以通过用于编程的相同microusb电缆供电。它还具有用于闪存模式和复位的板载按钮。

NodeMCU板可以提供不同的固件。对于这个Instructable我选择使用NodeMCU Lua固件。你可以用Arduino IDE实现同样的功能。它可以b知道即使Lua固件是为NodeMCU板开发的,它也可以用于任何ESP板。 Lua是一种脚本语言,功能强大且功能强大。 NodeMCU Lua环境还具有文件系统。固件中有很多模块,但您可能需要使用Arduino IDE才能利用某些特定的库。

假设您有一块没有Lua固件的电路板:

在此下载ESP8266flasher

在此处下载Lua固件。或者你可以在这里自己做饭。

解压缩二进制文件并使用ESP8266flasher刷新fimware。按住闪光灯按钮然后重置以将设备置于闪光模式。如果遇到麻烦,可以在之前的链接中找到更多信息。

从此处下载并安装NodeMCU Lua IDE ESPlorer

此处可找到固件和模块文档。

在lua上可以找到一般的Lua语言文档.org。

步骤4:驱动直流电机

A +引脚(D1)控制第一个DC的PWM输出电机和A-(D3)引脚控制方向。 PWM输出驱动电机并允许速度控制。例如,50%的占空比实际上产生较低的输出电压。它与脉冲计数无关。 A方向控制简单地变为低或高,有效地反转电压并且因此电机的旋转方向。请注意,通过将电机电源连接到VM并将NodeMCU电源连接到VIN,您可以使用单独的电源(通常更高的电压)驱动电机。 重要提示:如果您使用两个电源,请移除连接VM和VIN的跳线。

要试用它,请执行以下操作:

将电机的( - )(通常为黑色)导线连接到A-

将电机的(+)(通常为红色)导线连接到A +

将电机B连接到同样的方式

使用ESPlorer,上传init.lua(下方)

上传后,重置并观察电机的转动,反转和停止。要重复,请再次按重置。很明显,除了演示目的之外,这种特殊行为并不是非常有用。应该通过wifi控制电机,但这是针对这种指示的第二部分。加载/运行文件后,您可以通过调用电机功能e来控制ESPlorer命令linte中的电机。 G。

》 motor_a(FWD,100)

--motordrive: init.lua pin_a_speed = 1

pin_a_dir = 3

pin_b_speed = 2

pin_b_dir = 4 FWD = gpio.HIGH

REV = gpio.LOW duty = 1023 --initiate motor A

gpio.mode(pin_a_speed,gpio.OUTPUT)

gpio.write(pin_a_speed,gpio.LOW)

pwm.setup(pin_a_speed,1000,duty) --PWM 1KHz, Duty 1023

pwm.start(pin_a_speed)

pwm.setduty(pin_a_speed,0)

gpio.mode(pin_a_dir,gpio.OUTPUT) --initiate motor B

gpio.mode(pin_b_speed,gpio.OUTPUT)

gpio.write(pin_b_speed,gpio.LOW)

pwm.setup(pin_b_speed,1000,duty) --PWM 1KHz, Duty 1023

pwm.start(pin_b_speed)

pwm.setduty(pin_b_speed,0)

gpio.mode(pin_b_dir,gpio.OUTPUT) -- speed is 0 - 100

function motor(pin_speed, pin_dir, dir, speed)

gpio.write(pin_dir,dir)

pwm.setduty(pin_speed, (speed * duty) / 100)

end function motor_a(dir, speed)

motor(pin_a_speed, pin_a_dir, dir, speed)

end

function motor_b(dir, speed)

motor(pin_b_speed, pin_b_dir, dir, speed)

end

------------------------------------------------- --start motors 100% speed forward

motor_a(FWD, 100)

motor_b(FWD, 100) --reverse motors after 4s

tmr.register(0, 4000, tmr.ALARM_SINGLE, function()

motor_a(REV, 100)

motor_b(REV, 100)

end)

tmr.start(0) --turn motors off after 8s

tmr.register(1, 8000, tmr.ALARM_SINGLE, function()

motor_a(FWD, 0)

motor_b(FWD, 0)

end)

tmr.start(1)

步骤5:驱动步进电机

对于本演示,我使用了标准的单极(5线)28BYJ-48齿轮式步进电机。阅读更多关于步进器的信息。

连接电线

蓝色 - 》 A-

粉红色 - 》 A +

黄色 - 》 B-

橙色 - 》 B +

红色 - 》 VM

使用ESPlorer,上传init。 lua和stepper.lua

上传后,重置并观察电机转半圈(2048步),反转并停止。要重复,请再次按重置。至于直流电机,对于大多数项目,步进电机应该通过wifi控制。您可以使用step_move函数从命令行运行步进器。

init.lua

--init.lua

--

dofile(“stepper.lua”)

--

FWD=1

REV=-1

--

ROTATION_FULL=4096 --One revolution, 28BYJ-48 geared stepper motor

ROTATION_HALF=ROTATION_FULL / 2

--

step_move(ROTATION_HALF,FWD,1)

tmr.register(0, 5000, tmr.ALARM_SINGLE, function()

step_move(ROTATION_HALF,REV,1)

end);

tmr.start(0);

stepper.lua (信用:wakenils http://www.esp8266.com/viewtopic.php?f=19&t=2326)

-- stepper.lua

-- code from: http://www.esp8266.com/viewtopic.php?f=19&t=2326

-- simple stepper driver for controlling a stepper motor with a

-- l293d driver

-- nodemcu pins: 0 5 6 7

stepper_pins = {1,3,2,4} -- (A-)blue, (A+)pink, (B-)yellow, (B+)orange

-- half or full stepping

step_states4 = {

{1,0,0,1},

{1,1,0,0},

{0,1,1,0},

{0,0,1,1}

}

step_states8 = {

{1,0,0,0},

{1,1,0,0},

{0,1,0,0},

{0,1,1,0},

{0,0,1,0},

{0,0,1,1},

{0,0,0,1},

{1,0,0,1},

}

step_states = step_states8 -- choose stepping mode

step_numstates = 8 -- change to match number of rows in step_states

step_delay = 20 -- choose speed

step_state = 0 -- updated by step_take-function

step_direction = 1 -- choose step direction -1, 1

step_stepsleft = 0 -- number of steps to move, will de decremented

step_timerid = 4 -- which timer to use for the steps

-- setup pins

for i = 1, 4, 1 do

gpio.mode(stepper_pins[i],gpio.OUTPUT)

end-- turn off all pins to let motor rest

function step_stopstate()

for i = 1, 4, 1 do

gpio.write(stepper_pins[i], 0)

end

end-- make stepper take one step

function step_take()

-- jump to the next state in the direction, wrap

step_state = step_state + step_direction

if step_state 》 step_numstates then

step_state = 1;

elseif step_state 《 1 then

step_state = step_numstates

end

-- write the current state to the pins

for i = 1, 4, 1 do

gpio.write(stepper_pins[i], step_states[step_state][i])

end

-- might take another step after step_delay

step_stepsleft = step_stepsleft-1

if step_stepsleft 》 0 then

tmr.alarm(step_timerid, step_delay, 0, step_take )

else

step_stopstate()

end

end-- public method to start moving number of ‘int steps’ in ‘int direction’

function step_move(steps, direction, delay)

tmr.stop(step_timerid)

step_stepsleft = steps

step_direction = direction

step_delay = delay

step_take()

end -- public method to cancel moving

function step_stop()

tmr.stop(step_timerid)

step_stepsleft = 0

step_stopstate()

end

步骤6:结论

花了一些时间来弄清楚如何将电机驱动板与NodeMCU一起使用。文档非常糟糕。但是,既然我知道如何使用组合,我肯定会将它用于更多项目。希望这个教师共享的信息能够帮助其他人开始。我非常喜欢类似Arduino的插件屏蔽组合。我希望更多的制造商开始为NodeMCU制作防护罩。
责任编辑:wv

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

    关注

    142

    文章

    8898

    浏览量

    144962
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44779
  • NODEMCU
    +关注

    关注

    13

    文章

    289

    浏览量

    21280
收藏 人收藏

    评论

    相关推荐

    专为吸尘器定制的电机控制板方案:创新与突破

    在科技飞速发展的今天,吸尘器已经成为我们日常生活中不可或缺的清洁工具。而在吸尘器的核心组件中,电机控制板方案的优劣直接决定了其性能和使用体验。今天,我们就来深入探讨一下专为吸尘器应用设计的电机
    的头像 发表于 10-21 17:55 198次阅读
    专为吸尘器定制的<b class='flag-5'>电机</b><b class='flag-5'>控制板</b>方案:创新与突破

    电机控制器原理是什么?类型有哪些?

    器原理和类型的介绍: 电机控制器原理 电力电子技术 :电机控制器通过电力电子器件(如晶体管、MOSFET、IGBT等)
    的头像 发表于 10-21 13:48 198次阅读

    ESP8266 太空人动画的 OLED 显示

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

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

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

    esp32和esp8266代码共用吗

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

    esp8266esp32区别是什么

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

    esp8266不烧录可以使用吗

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

    esp8266wifi模块怎么连接手机

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

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

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

    如何在ESP8266上获取并刷写最新固件?

    我刚购买了一块 nodeMCU 原型板,我想安装最新的乐鑫固件。从遵循指南来看,似乎缺少一些信息。 我按照新手入门指南的链接操作,并从中获取了 RTOS SDKhttps://github.com
    发表于 07-19 06:04

    请问esp8266如何扩展pwm到8路?

    里面描述,demo 中提供 4 路 PWM(用户可自⾏扩展至 8 路),可用 控制彩灯,蜂鸣器器,继电器器及电机等。 请问,esp8266如何扩展pwm到8路?
    发表于 07-09 06:13

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

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

    步进电机控制器电路图 步进电机控制器的分类及其特点

      步进电机控制器是一种专门用于控制步进电机的设备,它通过发出脉冲信号驱动步进电机,实现对
    的头像 发表于 06-24 17:12 2658次阅读
    步进<b class='flag-5'>电机</b><b class='flag-5'>控制</b>器电路图 步进<b class='flag-5'>电机</b><b class='flag-5'>控制</b>器的分类及其特点

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

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 1149次阅读
    国产低成本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模块的控制是通过AT指令的形式控制
    的头像 发表于 05-10 08:20 1705次阅读
    使用Wi-Fi <b class='flag-5'>ESP8266</b>方案模组接入云平台