|
本帖最后由 handsome 于 2021-3-10 12:52 编辑
功能测试了步进电机控制部分。。能用。。快门部分应该也没问题吧。。
NODEMCU代码部分。。
buf=后面的内容是html代码 希望有大佬能把页面做漂亮一点。里面的步进电机转速内容是很早以前的减速机构的值 没有任何参考性 需要根据自己赤道仪或者步进电机构做测试。
然后追下面 脉冲生成部分 我是用引脚模拟的脉冲。。因为PWM脉冲我不会用。。希望有大佬能够改进脉冲部分。。
print("run ok")
wifi.setmode(wifi.SOFTAP)
cfg={}
cfg.ssid="无线名称"
cfg.pwd="设置密码"
wifi.ap.config(cfg)
--print(wifi.sta.getip())
led1 = 4
led2 = 0
ysyj = 01
gpio.mode(ysyj, gpio.OUTPUT)
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
gpio.write(ysyj, gpio.LOW)
gpio.write(led1, gpio.HIGH)
gpio.write(led2, gpio.HIGH)
local a
if (srv~=nil) then
srv:close()
end
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = ""
print(request)
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP")
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP")
end
local _mode, _time, t
if (vars ~= nil)then
_, _, _mode, _time = string.find(vars, "(%w+)=(%d+)&*")
end
if(_mode == "m1")then
_, _, a = string.find(vars, "&*ZS=(%d+)")
t=_time*1000
print(t,a)
print("mode1")
tmr.stop(0)
tmr.alarm(0,t,tmr.ALARM_AUTO,AlarmMode1)
elseif(_mode == "m2")then
print("mode2")
t=_time*1000
print(t)
tmr.stop(0)
gpio.write(led1, gpio.LOW)
tmr.delay(100000)
gpio.write(led2, gpio.LOW)
tmr.alarm(0,t,tmr.ALARM_SINGLE,AlarmMode2)
elseif(_mode == "stop1")then
print("stop1")
tmr.stop(1)
gpio.write(ysyj, gpio.LOW)
elseif(_mode == "cd")then
print("CD")
print(_time)
t=_time
tmr.alarm(1,t,tmr.ALARM_AUTO,AlarmMC)
elseif(_mode == "stop")then
print("stop")
tmr.stop(0)
gpio.write(led1, gpio.HIGH)
gpio.write(led2, gpio.HIGH)
end
buf = buf.."<h1> Hello, NodeMcu.</h1>"
buf = buf.."延时<form><input type=\"text\" name=\"m1\" value=\"1\" pattern=\"[0-9]{1,4}\">秒(不小于3秒) <input type=\"text\" name=\"ZS\" value=\"\" pattern=\"[0-9]{1,4}\">张 <input type=\"submit\" value=\"延时\" ></form>"
buf = buf.."<form><input type=\"text\" name=\"m2\" value=\"2\" pattern=\"[0-9]{1,4}\">秒<input type=\"submit\" value=\"B门\" ></form>"
buf = buf.."<form><dir style=\"display: none;\"><input name=\"stop\" value=\"1\"></dir><input type=\"submit\" value=\"停止延时\" ></form>"
buf = buf.."<form><input type=\"text\" name=\"cd\" value=\"2\" pattern=\"[0-9]{1,4}\">毫秒<input type=\"submit\" value=\"赤道仪\" >典型值34.1264毫秒,小就转得快大就转得更慢</form>"
buf = buf.."<form><dir style=\"display: none;\"><input name=\"stop1\" value=\"1\"></dir><input type=\"submit\" value=\"停止赤道仪\" ></form>"
client:send(buf)
end
)
conn:on("sent", function (c) c:close() end)
end)
function AlarmMode1()
gpio.write(led1, gpio.LOW)
tmr.delay(100000)
gpio.write(led2, gpio.LOW)
tmr.delay(1000)
gpio.write(led1, gpio.HIGH)
gpio.write(led2, gpio.HIGH)
a=a-1
print(a)
if(a==0)then
tmr.stop(0)
end
end
function AlarmMC()
gpio.write(ysyj, gpio.HIGH)
tmr.delay(70)
gpio.write(ysyj, gpio.LOW)
end
function AlarmMode2()
gpio.write(led1, gpio.HIGH)
gpio.write(led2, gpio.HIGH)
tmr.stop(0)
end
以上保存为。lua文件 上传到nodemcu就可以用了。
打样已经收到。。犯了个重复严重错误。。
只检查了引脚顺序 没有检查封装尺寸。。导致板子拿回来焊完才发现。。特么窄了:mad:
然后我还注册了捷配白嫖了免费打样 结果还是之前那个窄了的那个文件打样的。。
然后这个封装 A1的尺寸如何改成27.86mm呢》? 测量淘宝卖的模块焊盘中心是27.86mm。。现在不知道如何改封装距离
@ewhz
特别感谢@ewhz 大佬的热心帮忙。
目前已经定型pcb 并且下单完成 等待发货收到并测试!赞一下!5元包邮真香。。话说去年第一次做pcb好像花了30多还是50多。。也是嘉立创做的。。
https://lceda.cn/editor#id=5536aa16eea8422992da113a7ad57830
整个模块拼凑起来 功能是控制步进电机与相机快门用的。。
实现功能:手机(电脑浏览器也行) 通过web控制相机快门线 达到延时摄影或者B门长曝光等功能。
快门线插入音频插孔 由D0和D4 分别控制对焦按钮和快门按钮。
同时可以控制步进电机,实现电动云台 电动滑轨 以及赤道仪电跟踪功能。
目前用模块飞线搭棚 软硬件都已经测试完毕。。但是搭棚的产品体积巨大而且走线混乱。。
程序采用LUA脚本编写 等PCB打板回来测试没问题 将完全公开。。不需要步进电机控制的话 可以当作手机遥控快门用。
100% 新手。。根据自己搭的电路(乱七八糟一坨) 画了pcb https://lceda.cn/editor#id=40318170aa934327b0e8876250276d5e
连线关系无误。。
然后芯片都是直插的 打算用2.54的排针座 代替芯片座(方便飞线啥的。。)
最左边步进电机座(也留排针孔就行了)
然后遇到不会弄的部分 就是 我想把芯片供电的5V电源从 步进电机的12v上面取电(反正也是外部12V电池供电)
现在不知道改用啥原件或者模块 来提供5v 也不知道该如何接入连线。。
希望哪位大佬帮忙弄下。。。
我好打样回来测试。。
其实之前打样了图上的这个pcb 但是因为没有电源部分 所以外接5V模块 加上之前有几根线走错了又飞线 导致变成很大一坨模块和模块之间还得做绝缘隔离。。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|