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

第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步:电机护罩
特色电机护罩由深圳智能科技博士(我喜欢这个名字)制造。虽然董事会非常可靠而且很好但我发现文档缺乏。该板通常捆绑在一个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制作防护罩。


什么是饱和变压器?饱和变压器的特点和应用场景有哪些?
XADC内嵌在PS端的使用
百度飞桨登顶图神经网络权威榜单3项榜首,重磅推出UniMP
云计算的3种服务形式
分享一个开源的QT的串口示波器
如何使用基于ESP8266的NodeMCU原型板和电机控制板来控制两种类型的电机
如何在PCB板设计中增强电磁兼容性
Axino:基于Semtech LoRa技术的集成智能制冷解决方案
运用VC++和VB编程实现低成本CMOS摄像头的数字化监控系统设计
N8900蓝牙芯片在跑步机上的应用
压电技术在TDLAS气体检测中的应用
用Python实现十大经典排序算法(附动图)
关于块写周期时序图的应用
TMS320F2812在无极变速器中的原理应用及流程图
超级电容器的原理是什么,简单分析一下
机载光学全谱段遥感林火监测
国芯思辰|芯北科技线性稳压器CN88L025替代TI的LM1084车载快充充电器应用
AGM推出AGM H2手机,搭配虎贲T310芯片与前置扬声器
如何选购cpu风扇
STC单片机内部扩展RAM的应用