毕业十年063-ARDUINO应用

在2016年的12月份,发生了两件做梦都没想到的事情,第一件是之前公司的一个项目,现在客户计划把那套系统转交给西安的建银旗下的一个子公司,他们需要我抽出周末的两天时间帮忙给西安过来的两个人通讲下系统的具体功能,有偿的,然后我就在周末的两天时间里再次驻场到了客户公司,花了两天时间,通讲第二天的下午,当所有的功能点都讲完后,我们还到外滩那边逛了一圈,吃了个便饭。

第二件就是到了2016年的12月下旬,做梦都没有想到自己有天会写Arduino的代码,而且是在公司中使用,这项工作的起因还是来源于公司里的一个交通信号灯设备。在公司的系统中我们有很多面向前端页面的API服务,为了监控这些服务的运行,我们有另外一个基于Windows服务开发的监视系统,这个系统会定时向各个API服务发送心跳测试,而心跳测试的结果则会反馈到这个交通信号灯设备上,正常情况下信号灯设备上的三个灯都是绿色的,当有某个API服务挂掉的时候,这个情况会被监视系统捕捉到并改变信号灯的颜色为红色,所以当看到红色信号灯被点亮时,就意味着某个服务挂掉了,需要开发人员介入修复。现在的问题是介于监视系统和交通信号灯设备中间的连接设备坏掉了,然后开发经理把这个任务很光荣的分配到了我的身上。

为了解决这个问题,我们决定使用Arduino电路板和继电器来完成,具体设备连接的解决方案就是把Arduino电路板通过USB接口连接到系统主机上,根据约定好的数据协议,监视系统发送信号数据到电路板,编写Arduino程序并烧制到电路板用来解析传过来的数据,Arduino电路板的输出端连接继电器,通过Arduino中解析出来的数据发送信号给继电器用以控制继电器的开关,然后继电器连接交通信号灯控制信号灯的颜色。归纳起来信号的传输就是监视系统->Arduino电路板->继电器->交通信号灯这样的一个顺序。

具体实现起来,第一步就是给监视系统添加功能与Arduino进行串口通信,在.NET中有一个串口类System.IO.Ports.SerialPort可以很好的实现这个功能,SerialPort的参数对应的就是电脑上的端口号,在Windows系统的设备管理器界面上可以看到当前可用的端口号列表。第二步则是编写Arduino程序,Arduino的代码风格更像是C语言那样的,在官网上可以查到具体的定义好的方法,比如read、write、print,可读可写;第三步则是继电器的连线,这点还要感谢隔壁组的S同学,他来自于山东济南市,在硬件方面还是很有造诣的,为了保证连线的正确不短路,S同学还从家里带来了万用表。当一切就绪后已经是2017年的1月份了,很幸运的,在我跟S同学的合作下,最终这个新的的程序顺利上线了,欢呼!

做过了硬件方面的编程,再跟单纯的编写软件代码比起来,似乎多了一些成就感,毕竟你可以实际看到你的代码真的让某个设备工作起来了。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注