超_市_存_包_柜,开源之。虽然将要商业应用,但是无所谓了,天天在这里学习,还是回馈一下
恩,这个控制器,应该也算门禁的一种吧。我要控制48个门呢,不过是储物柜上的小门。本次开源原理图与pcb,不是我不开源源程序,实在是因为还没有写完呢。
eagle画的哦ourdev_633350KGOYK8.zip(文件大小:162K) (原文件名:eagle.zip)
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_633351V2QA1A.png
左边的是控制电子锁的,右边的是主控 (原文件名:Screenshot.png)
恩,虽然是多年的嵌入式工作者了。
但是这是:第一次用stm32,第一次用eagle,第一次开源,几乎是第一次布线,恩很多第一次呢。
等把程序写完了,也发上来
对了,忘记介绍一下了:
板子是储物柜控制器,按存键,产生条码并打印,同时开一个门供存包。
在扫描器上扫描条码,就开门,简单。
对了,是在jlc打的板子,估计今天明天的就到了吧。布完线我才发现,几乎把stm32的所有资源都引出来了,这个板子甚至可以做个简单的开发板呢。
这是商业应用,不过呢,恩,没有什么不过,既然开源就不唧唧歪歪了。
我要去爬山遛狗去了,一会回来,欢迎大家交流,批评指正。不需打脸。 沙发 支持楼主 支持 MARK 支持 呵呵,支持。 请楼主同学传个PDF版本的吧,好像很多同学没有装eagle的说 按存键,产生条码并打印,同时开一个门供存包。
在扫描器上扫描条码,就开门,
这个部分很感兴趣噢,不知道是啥原理
总舵主
这个没源程序不知道能不能置酷阿,好像按照规矩要有图有码才可以好像? 支持! 支持LZ 顶顶更健康 支持,LZ在ubuntu下画的PCB? mark mark MARK,希望有PDF的 顶楼主,先占个位 顶 回复【11楼】jdh99
-----------------------------------------------------------------------
又见11楼 真细心哈哈。。。ubuntu下的PCB软件 怎么装 是不是用wine?!
楼主强人! 有兴趣 前排,学习ING 继续期待 只有在这里才有这样好的学习的气氛 响应大家要求,传pdf。另外,代码没有完成,就传一段ps/2协议读扫描枪的代码吧。
内含单片机主板和一个继电器控制板的pdf原理图与pcb图。同时含ps2代码ourdev_633361CQ6OHA.zip(文件大小:339K) (原文件名:eagle.zip)
细心的同学发现了,我用ubuntu。不用windows好多年了。呵呵,只是网络银行的时候,痛苦一些罢了。平时写代码,也是在ubuntu下,vim+gcc+openocd+insight。还是很好用的。(linux下和谐eagle,本网站就有帖子啊)
有没有更细心的同学发现我给出的图片是直接按下PrtScr键生成的呢?所以图片名字叫screenshot.png.
还有没有更细心的同学发现我配置了双屏,画图编程爽歪歪呢?
回7楼,说白了就是个密码锁,按存键,单片机产生密码,并以条码的形式打印出来。
而客户拿着条码扫描的时候,相当于输入密码,单片机控制开锁就是了。
回17楼,不用wine,我喜欢linux下原生的东东,wine是不用的。如果一个程序没有linux版本,我就不用。基本上。windows能干的事情,linux都能干,并且更好。
恩,上述观点是个人喜好,勿争执。 linux也能用的这么爽啊?感觉linux下可用的太少了! 学习~~~~~~~~ mark 楼主,没有源码没关系,其实说原理我觉得更好,毕竟大家来论坛都是学习了,抄作业这种事情还是少做,没钱途的.
我说说设备和原理你看看对不对
首先,来个人,
按1下存包键-MCU键盘扫描,这个很多例子了,经典例程参考马老的
MCU生成条码-这个用啥子搞好?当前时间+?????
控制小票打印机出凭条 - 打印机怎么驱动?没弄过
开门,同时保存此条码信息 这个要1个EEPROM之类的来弄吧?
取包
扫描枪扫描 - 这个相当于PS2键盘输入,读取输入值?是这样吧?
与EEPROM中信息比对,正确了开门,错误不管.
正确了还要删除这条信息,否则就重复开门了
大概就这样了吧??至于语音阿,LCD显示阿都是其次了
以上个人猜测,请楼主指正 mark 顶楼主,楼主做东西开源,用的系统和工具也是开源的,是一个开源爱好者了 不错。条码器有意思。 马克 回复【17楼】lang1437瘸腿狼
回复【11楼】jdh99
-----------------------------------------------------------------------
又见11楼 真细心哈哈。。。ubuntu下的pcb软件 怎么装 是不是用wine?!
楼主强人!
-----------------------------------------------------------------------
eagle的话,直接装,有linux版本 回复【26楼】skynet青青草原
楼主,没有源码没关系,其实说原理我觉得更好,毕竟大家来论坛都是学习了,抄作业这种事情还是少做,没钱途的.
我说说设备和原理你看看对不对
首先,来个人,
按1下存包键-mcu键盘扫描,这个很多例子了,经典例程参考马老的
mcu生成条码-这个用啥子搞好?当前时间+?????
控制小票打印机出凭条 - 打印机怎么驱动?没弄过
开门,同时保存此条码信息 这个要1个eeprom之类的来弄吧?
取包
扫描枪扫描 - 这个相当于ps2键盘输入,读取输入值?是这样吧?
与eeprom中信息比对,正确了开门,错误不管.
正确了还要删除这条信息,否则就重复开门了
大概就这样了吧??至于语音阿,lcd显示阿都是其次了
以上个人猜测,请楼主指正
-----------------------------------------------------------------------
还有个门的状态检测
非常赞同skynet的说法,开口就要源代码的人,我真的不怎么看得上眼。 门状态检测就用开关量信号就可以了,高或者低,不过那么多门,不能直接接GPIO了,用74HC之类的扩展1下了 mark一下,听课中、、、、 skynet 青青草原,说的太有道理了。原理就是你说的那个样子的。eeprom就不加了,直接用stm32的flash,并且只是在检测到系统掉电的时候保存密码和状态。其他时间都在内存里面。打印机驱动?简单,小票打印机都支持esc/pos指令。直接串口发指令。
门状态检测,我的锁上面直接带个开关的。相当于键盘。我没有扩74什么的,把所有的io都用上了。呵呵。所以我的板子把所有的io都引出来了,可以当开发扳用的说。jlc今天应该给我发板子了。
开源,必须的,说实话,我们还有什么可以藏着掖着的东西么?我们没有cpu(不要给我提什么中国芯),我们没有操作系统(别提麒麟了),我们没有toolchain,我们没有eda,我们只是做个application,应用级别的东西,还做不好。作为工程师,想想我们基础材料不过关,想想我们没有自己的好数控,想想,,,惭愧!不敢上天涯,看到那些负面的东西,就想移民。哥们现在住在山上,天天挖野菜吃!恩,过几天山上的野蘑菇就要出来了,我会准备个冰箱,储存我采下的野蘑菇。另外,手头代码完成,我就去买几只小鸡养着,房东已经答应他家的鸡棚借给我用。哈哈,越说越跑题了。。。 mark,一下:) mark LZ潇洒,住在世外桃源?
哥们现在住在山上,天天挖野菜吃!恩,过几天山上的野蘑菇就要出来了,我会准备个冰箱,储存我采下的野蘑菇。另外,手头代码完成,我就去买几只小鸡养着,房东已经答应他家的鸡棚借给我用。哈哈,越说越跑题了。。。 等待…… 回复【39楼】yyj_sd
-----------------------------------------------------------------------
呵呵,北京,香山。 对读条码和打印表示感兴趣 打印简单的很。。。。
#include <string.h>
#include <stdio.h>
#include "stm32f10x_conf.h"
#include "stm32f10x.h"
#include "printer.h"
#include "uart.h"
void prn_init()
{
USART1_Configuration();
uart1_send("\x1b\x40",2); //初始化打印机;
uart1_send("\x10\x14\x08\x01\x03\x20\x01\x06\x02\x08",10);//clear buffer
}
void prn_info(int cab,int box)
{
char temp;
sprintf(temp,"箱位:%d柜%d箱\x0a\x00",cab,box);
uart1_send(temp,strlen(temp));
}
void prn_barcode(const char *barcode,int len)
{
uart1_send("密码:",6);
//uart1_send("\x0a\x0a",2);
uart1_send(barcode,len);
uart1_send("\x0a",1);
//uart1_send("\x1b\x61\x01",3);//中间对齐
uart1_send("\x1d\x48\x02" , 3);
//uart1_send("\x1d\x66\x00" , 3);
uart1_send( "\x1D\x68\x52",3);
uart1_send("\x1d\x77\x03" , 3);
uart1_send("\x1d\x6b\x0" , 3);
uart1_send(barcode,len);
uart1_send("\x0a",1);
}
void prn_cutpaper(void)
{
uart1_send("\x0a\x0a",2);
uart1_send("\x0a\x0a",2);//进纸
uart1_send("\x1d\x56\x42\x00",4); //切纸指令
} 踩进来了 mark mark 原来打印就是向小票打印机发送ECP码阿,这个需要是串口的,有的小票打是并口的
还有需要MAX232转1下吧??? mark 好巧,这款也是偶们的产品之一。
LZ目前尚在商业化进程中。做设计和成熟的商业化产品中间还尚有一个过程。很多东西做设计的都能做出来。
看了下LZ的线路板图,那么多接线孔眼,自己做当然是没问题的,但是还是要考虑到生产上工人的便利性易操作性,布线的隐蔽性和美观性,以及产品以后的售后的易维护性,因为这个东西体积巨大,全国各地的都卖,出了问题,救火都来不及。
偶一开始就是因为使用了国产假冒的美信串口芯片,导致初始的很多产品在使用了数个月后出现与打印机的通信故障,还好当时力排众议,坚决一次性投入数万元,订做各种颜色的信号线,同一块线路板上尽量使用不同PIN数的端子座,实在避免不了的,譬如开锁的那些端口,接口排线都有不同颜色区分,再辅以详细点的接线图,所以客户维护更换也比较方便。
开锁那端偶是用的LM324做比较器,控制IRF530通断,偶用的是24V/1.5A的电磁铁,通电时间就半秒左右,一开始也加了二极管反向保护,其余的都是贴片代工了,就IRF530和反向二极管,后来看看焊接的工作量太大,就取消了,目前尚未发生过问题。目前申请了IRFR024的贴片装,因为电磁铁工作时间短,且电流也不大,过阵子试试看换参数小点的NMOS管有无问题,去年以来墨西哥原装进口的IR管子价格涨了不少。
另外这是机电结合类的产品,电控部分做的再好,机械加工那头如果没做好,那也够呛,这个箱子体积较大,一台2、300斤,好多喷涂厂先期除油,磷化时,都会把你的箱体弄伤,因为很多喷涂厂都是些老头老太负责产品的除油磷化等预处理工序,再加上晾晒,进喷房粉末喷涂,喷好后还要运输拉到你那,所以磕磕碰碰都很难免,千叮咛,万嘱咐都没用,所以现在这个工序偶们都是自己做。
商业化后还要考虑到回款问题,很多超市欠款蛮厉害的,尤其是一些新开的超市,很多都要你先押款,注意风险。另外柜子体积较大,物流运输很关键,一定要妥善解决箱子的包装,找一家比较可靠的物流商合作,初期偶也是吃了不少苦头。 mark 顶14楼的经验! 路过超市存物机时候还真想过看看它内部设计,呵呵。 请教50楼大侠,为什么在这个地方,控制继电器要用MOS呢,不能用三极管呢?或者达林顿阵列,这样成本不是低1点吗? 回复【50楼】maleon
-----------------------------------------------------------------------
顶热心的maleon。谢谢提醒呢。
对了,我用的电磁铁是12v,1.3a左右的。通电时间很短的呢。几十毫秒就可以了。我做了大量的实验的,虽然我原理图上标注的是irf530,其实我是用的小功率的mos管。你看pcb封装就知道了。我的磁铁上有个开关,门锁开的时候,开关闭合,我判断开关闭合后,就停止给磁铁供电了。
我的板子今天下午已经到了,很小的板子,你看pcb的尺寸就知道了。:)
回54楼,其实用三极管是可以的,成本还低。用mos管,是放大了设计余量的,用mos管,10a,8a的不是问题。 mark! LZ四川人吗?听口气像 学习先 回复【54楼】skynet 青青草原
-----------------------------------------------------------------------
用大电流的三极管,譬如TIP42C什么的也是可以的,当时偶的出发点考虑也是和LZ的差不多,余量放大点,另外偶测试的时候不是按照正常工作条件测试的,是按照比较苛刻的条件,周期为1秒那种的反复通断,后来还发现安装时固定螺丝会接触到电磁铁的外围线圈(现在通过重新开电磁铁的模具解决了),导致短路,偶在24V总电源那加了个TIP42C,通过程序来控制开锁时上电,然后再选通打开某一路的电磁铁。
另外密码存储在EEPROM里短期内是没问题的,但是EEPROM的擦写次数毕竟比较低,偶是用的铁电,每个对应箱号的固定存储密码的地址字节反复擦写数十亿次以上都是没问题的。 真的是好贴,顶一下! mark 回复【57楼】caep1986
-----------------------------------------------------------------------
楼主不是四川人,楼主老婆是四川人。:)
回复【59楼】maleon
-----------------------------------------------------------------------
我想铁电应该比较贵。
所以我的锁状态和密码是存在ram中的。只要不停电,无所谓啊。(不过要考虑看门狗复位的情况)
系统检测到掉电,才保存到flash中,我考虑到一般情况下,一年停电也没有几次,所以写flash的次数也不多。
另外,这种柜子,我有个可选项目,就是让客户加蓄电池了。停电了也能开柜子。
楼主调试电路中,正郁闷的不行。。。。上来逛逛。 读PS2条码枪,这个方法好,便宜呀。
搞个现成的模式,死贵
LZ这种锁 哪有卖的?一个大概多少钱 MARK ,满好玩的啊! 楼主是个好人 不错,值得学习。 MARK mark mark 学习 mark。。。。。。。 支持一下,呵呵。很不错。 超市那个柜子 每次看见都想原理 终于有人开源了 来看看 mark 这个有兴趣,谢谢楼主 mark 了解下,学习。 必须支持啊,lz加油! 谢谢楼主 good m 好! mark mark 无法下载 mark mark 标记下 mark之 顶楼主,学习下…… 顶楼主,学习下…… 对生成、打印条码的感兴趣 学习 标记 mark 必mark! 好贴,支持,必须要顶起 mark 看了这个帖子,深深的感觉到,楼主的那么多第一次就这样奉献出去了 好东西,学习了 嘛 mark,先学习了。 这个讨论帖很好,虽然不是完全懂,但还是学了一点东西。逛超市的时候也想过它的原理,嘿嘿。