第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制作防護罩。
責任編輯:wv
-
電機
+關注
關注
142文章
8940瀏覽量
145138 -
ESP8266
+關注
關注
50文章
962瀏覽量
44851 -
NODEMCU
+關注
關注
13文章
289瀏覽量
21313
發布評論請先 登錄
相關推薦
評論