汇文毕业项目--好多鱼

  2015.9.10.时间跨度为一年多的是汇文培训终于结束了,在这一年里,感觉自己真的学到了很多,很多在大学里没有学到过的东西,而这些也是对于我以后工作中基础中的基础,C,C++,Linux,Qt,ARM等等这些,因为在大二结束的时候就已经想好了放弃考研,选择就业,因为自己比较喜欢硬件和软件结合的东西,自然而然,嵌入式这个行业就很适合我了。在汇文培训完之后,自己对未来的方向有了一个更加明确的方向,那就是驱动,虽然驱动已经很接近底层了,也是比较难的,但是我相信,只要我能够在接下来的5年里,好好努力,在专业方面会有所收获的。

  接下来,我讲讲我汇文毕业的项目的内容吧。我们4个人一个小组,打算做一个智能鱼缸,而我们小组的名称也叫作“好多鱼”。

  我们需要完成 的主要功能就是:

1具体鱼类知识的了解(将大部分鱼的资料,存客户端本地的txt中)
2温度控制(使用温度传感器检测温度,客户端可根据检测温度进行控制)
3含氧量控制(使用溶氧传感器检测温度,客户端可根据检测含氧量进行控制)
4食物控制(主人从移动端视频看出鱼饿了,就控制舵机喂食)

5视频数据采集(使用摄像头,通过网络将视频数据传输到客户端)

6养鱼心得的分享

  总体上,还是使用了C/S结构,因为涉及到了养鱼心得的分享,所以我们使用了如下的结构:


  这样通过数据处理服务器就可以实现不同客户端的交流。既然要通信当然需要在两个服务器和客户端之间定制协议,并且涉及了数据的访问和更改,也就要使用需要使用数据库的操作,这次我使用的是MySQL。这是我们自己制定的协议枚举体和数据库中应该存放的内容:

//数据处理服务器,客户端,数据采集服务器之间的协议
enum{
REGISTER1,REGISTER2,LOGIN,FORGETPASS1,FORGETPASS2,ADD,
VIDEOON_U,VIDEOON_T,VIDEOOFF_U,VIDEOOFF_T,
TEMPER_U,TEMPER_T,OXYGEN_U,OXYGEN_T,FEED_U,FEED_T,TANK_T,
SHARE,CHANGENAME_U,CHANGENAME_T,TANKINFO_U,TANKINFO_T,
REGISTER_USRERR,REGISTER_CODEERR,REGISTER_OK,
LOGIN_USRERR,LOGIN_PASSERR,LOGIN_OK,LOGIN_FIRST,
LOGIN_TANKERR,
FORPASS_USRERR,FORPASS_OK,
VIDEOON_ERR,VIDEOON_OK,
VIDEOOFF_ERR,VIDEOOFF_OK,
TEMPER_ERR,TEMPER_OK,
OXYGEN_ERR,OXYGEN_OK,
FEED_ERR,FEED_OK,
CHANAME_TANKERR,CHANAME_TANKEXIST,CHANAME_OK,
SHARE_ERR,SHARE_OK,
ADD_TANKERR,ADD_OK,ADD_TANKOFFLINE,ADD_TANKEXIST,
FEED_SET,TANK_USRERR,TANK_OK,EXIT
};

//MySQL
//鱼的信息
CREATE TABLE fish(usrno CHAR PRIMARY KEY NOT NULL,phone VARCHAR(11),passwd VARCHAR(20),fishname VARCHAR(20),tankname VARCHAR(20),food VARCHAR(4),fd VARCHAR(20));

//鱼缸的信息
CREATE TABLE tank(tankno CHAR PRIMARY KEY,tankname VARCHAR(20),fd VARCHAR(20),online CHAR,phone VARCHAR(20),ip VARCHAR(20),fishname VARCHAR(20));

  至于对于鱼缸的硬件控制部分,因为真正的含氧量检测和改变需要的价格太高,只能通过电位器输入和Led的PWM显示输出,其他的部分则在上课的时候都有提到过,GPIO控制,Linux下的串口应用编程,Mjpeg-Streamer开源的视频应用,还有就是Linux下的驱动编写和将编写好的驱动静态编译成Linux内核,开机后自动创建设备节点和相关文件操作函数的绑定。


  因为客户端和服务器之间是通过socket进行通信的,而我们现在的能力也只能到局域网之间进行连接,所以这在实际中有一定的局限性。

  所以我们还使用了另外一种结构:

       

  我使用申请的app id号向leancloud发送相应的POST请求,就可以得到一个新的id号,这是一个新的对象号,再发送一个GET请求,就能得在云端存储的键所对应的值,如果发送一个PUT请求就能够改变在云端中的键所对应的值。这样两个不同的鱼缸和客户端之间就能够实现控制和显示。同时也解决的上一个结构只能本地局域网之间的信息交互的不足,可很方便。

  完成这次小项目,花了差不多10时间,虽然总体的功能还是实现了,其中学到了很多,但是也发现了很多不足的地方,只要是一下几点:

1.硬件的控制能力欠缺(DS18B20)

我们花了将近两天的时间来对DS18B20分析,知道了这种单总线器件的发送和接收信号的时序,但是,每次初始化返回给的信号是正确的,但是收到的温度信号却每次都是错误的,都返回给我们‘1’。

2.问题的分析能力欠缺(蓝牙)

两个程序是一模一样的,就是打开的文件不相同,一开始两边都使用minicom进行数据交流都是正常的,但是当一边使用自己写的串口程序,另一边使用minicom进行测试的时候有一个串口程序是对的,而另外一个总是无法发送内容给mincom也不知道为什么。

3.结构设计不够合理(蓝牙)

一开始第一个结构的鱼缸数据采集服务器和数据转发服务器是通过蓝牙进行通信的,但是每当一个鱼缸连接数据转发服务器的时候,不能够自动产生一个新的文件描述符,就不能自动的进行数据的读写了,这也是一开始在设计这个结构的一个错误吧。

4.想象力欠缺(项目)

可能大家想到智能鱼缸,也都只能想到这些功能了,我们现在还不能想出一个能够触碰到大众痛点的颠覆性的产品,当然这是我们自己的天赋和能量力不够,可是如果我们真的能够想出这么一款产品,凭我们现在的实战能力也不乏完成吧。

  答辩这天是教师节,真的蛮感谢我的老师--宋德锋老师的,每次我有问题的时候,他都会不厌其烦的教我,我也不是一个善于表达自己的人,但是我的内心真的是要对老师说一声谢谢!教师节快乐!

  还有呢,马上我就要开始寻找实习了,希望能够找到一份令自己满意的工作吧,最好是驱动方面的,天道酬勤,我一直相信,我知道我这么的努力是值得的,会有回报的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值