5868|14

241

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

Helper2416-37——Linux下的第一个实际小应用 [复制链接]

本帖最后由 yuanlai2010 于 2014-8-28 21:49 编辑

Linux下的第一个实际小应用——统计房间人数
参与Helper2416开发板助学计划心得

学习Linux也有一段时间了,今天终于完成了一个有实际用处的小应用.虽然很简单,而且如果使用单片机来完成的话将会更简单,不过既然是基于Linux来实现的,对于学习Linux来说,还是具有较大的意义的.

应用简述:
该应用主要用于统计只有一个入口的房间里面的人数,靠的就是检测人的进出,有人进入,人数加1,有人出去则人数减1.应用开始运行的时候,默认此房间内的人数为0,所以如果在启动应用之前就已经有人在房间内的话,那么统计数目就会有误差,不过计数也不会变为负数的。

应用实现原理:
出入检测:使用两对M8毫米激光对射光电开关,按如下原理图安置,
安装结构示意图:

发射器实物图:

接收器实物图:

接收器在接收到激光时输出低电平,没有接收到激光时,输出高电平。当有人出入时,会挡住光源一段时间,挡住的那段时间输出的是高电平,随即人经过,重新接收到光源,输出低电平,把这个信号接到Herper2416的IO引脚上,利用那个下降沿信号来触发中断,

开发板底板原理图J14局部:

这里使用的是J14 的EINT5 和 EINT8(考虑到J14接口并不能直接使用标准的杜邦线),在驱动中注册这两个中断,根据中断号来判定是哪个引脚发生中断,然后让read函数返回特定的值,最终就是靠判断这两个引脚中断的先后顺序来判定是有人进还是有人出。

实际接口:黑色为GND、黄色接EINT5、绿色接EINT8:


统计人数:这个很简单,在应用程序中简单实现。比较可惜的是现在还不知道怎么写QT的UI程序,所以只能把统计信息打印在终端上了。

应用程序源码:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <fcntl.h>
  6. #include <sys/stat.h>

  7. void display(int number, int flag)
  8. {
  9.     system("clear");
  10.     printf("\n\n\n\n\n\n\n\n\n");
  11.     printf("                    ****************************************\n");
  12.     switch(flag){
  13.     case 0:
  14.             printf("                    *               Welcome !              *\n");
  15.             break;
  16.     case 1:
  17.             printf("                    *           Someone come in !          *\n");
  18.             break;
  19.     case -1:
  20.             printf("                    *           Someone come out !         *\n");
  21.             break;
  22.     case 2:
  23.             printf("                    *        !!! Ghost come out !!!        *\n");
  24.             break;
  25.     }
  26.     printf("                    *                                      *\n");
  27.     printf("                    *      %4d people in the room         *\n", number);
  28.     printf("                    ****************************************\n");
  29. }

  30. int main(int argc, char **argv)
  31. {
  32.         int fd;
  33.         int number = 0;
  34.     int key_value,i,flag = 0;

  35.         fd = open("/dev/button_driver", O_RDONLY);
  36.         if(fd < 0)
  37.         {
  38.                 perror("cannot open device button");
  39.                 exit(1);
  40.         }

  41.     display(number, flag);

  42.     while(1){
  43.         flag = 0;
  44.         for(i=0;i<2;i++){
  45.             read(fd, &key_value, sizeof(key_value));
  46.             flag = key_value;
  47.         }
  48.         if (flag == 1){
  49.             number++;
  50.             display(number, flag);
  51.         }
  52.         else{
  53.             number--;
  54.             if(number < 0){
  55.                 number = 0;
  56.                 flag = 2;
  57.             }
  58.             display(number, flag);
  59.         }
  60.     }
  61.         close(fd);
  62.         return 0;

  63. }
复制代码

驱动程序打包: test_irq_module.rar (2.04 KB, 下载次数: 4)

觉得比较遗憾的几点:
1没能做出一个界面来,只能后续慢慢学习咯。
2本来是用无线来做的,把检测装置用430+X-bee做,然后在Helper2416中用X-bee接收信号就好了,可是悲剧的是,昨天在测试X-Bee的时候,手贱去跟新了下X-Bee的固件,结果就悲剧咯。有一个X-Bee模块跟新失败,变成砖头了。我仅有这一对啊。


我将在二楼放上测试视屏,当然只是模拟了。以下为视屏截图。

论坛ID:yuanlai2010
发表时间:2014-08-28


最新回复

点赞啊。哥们你真心不错,都能去BOSS那实习了  详情 回复 发表于 2014-9-5 16:01
点赞 关注(1)

回复
举报

241

帖子

4

TA的资源

纯净的硅(初级)

沙发
 
本帖最后由 yuanlai2010 于 2014-8-28 21:54 编辑

视屏在这里,为了清晰的看到实验结果,请切换到超清全屏模式观看
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
赞一个!

赞赏

1

查看全部赞赏

 
 
 

回复

1158

帖子

2

TA的资源

版主

4
 
很厉害啊,点赞!

赞赏

1

查看全部赞赏

 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
不错啊,动手能力很强
不过好像51也可以啊,linux这么多人用是因为他的开源生态系统好,楼主多多发掘

点评

您说的是,本来是打算用430做节点的,结果无线模块被我毁掉了,所以就直接把这东西做在Linux下了,练练手,高级的东西都还不会玩,慢慢来~  详情 回复 发表于 2014-8-29 20:59

赞赏

1

查看全部赞赏

 
个人签名电工
 
 

回复

3028

帖子

0

TA的资源

五彩晶圆(初级)

6
 
从简单的开始坚持下去 楼主大有前途啊

点评

多谢鼓励!  详情 回复 发表于 2014-8-29 21:01

赞赏

1

查看全部赞赏

 
 
 

回复

554

帖子

0

TA的资源

版主

7
 
从简单到复杂,一步一步来的!非常不错!

点评

哈哈,现在也只能做点简单的事情,都没能发挥出Helper2416的性能出来。  详情 回复 发表于 2014-8-29 21:03

赞赏

1

查看全部赞赏

 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

8
 
lyzhangxiang 发表于 2014-8-29 09:14
不错啊,动手能力很强
不过好像51也可以啊,linux这么多人用是因为他的开源生态系统好,楼主多多发掘

您说的是,本来是打算用430做节点的,结果无线模块被我毁掉了,所以就直接把这东西做在Linux下了,练练手,高级的东西都还不会玩,慢慢来~

点评

楼主对裸机研究的很深入,带大家搞搞uboot啊  详情 回复 发表于 2014-8-29 21:11
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

9
 
凤凰息梧桐 发表于 2014-8-29 09:59
从简单的开始坚持下去 楼主大有前途啊

多谢鼓励!
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

10
 
spacexplorer 发表于 2014-8-29 10:34
从简单到复杂,一步一步来的!非常不错!

哈哈,现在也只能做点简单的事情,都没能发挥出Helper2416的性能出来。
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 
yuanlai2010 发表于 2014-8-29 20:59
您说的是,本来是打算用430做节点的,结果无线模块被我毁掉了,所以就直接把这东西做在Linux下了,练练手 ...

楼主对裸机研究的很深入,带大家搞搞uboot啊

点评

哈哈,让翔哥见笑了,上次玩的boot其实绕过了UBOOT的好多功能,uBoot的命令实现什么的我也没弄明白,直接是人为的给定了些启动参数来启动内核的。  详情 回复 发表于 2014-8-29 21:22
 
个人签名电工
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

12
 
lyzhangxiang 发表于 2014-8-29 21:11
楼主对裸机研究的很深入,带大家搞搞uboot啊

哈哈,让翔哥见笑了,上次玩的boot其实绕过了UBOOT的好多功能,uBoot的命令实现什么的我也没弄明白,直接是人为的给定了些启动参数来启动内核的。

点评

最近简单看下裸机,问题多多啊,有机会多多交流哈,打算后面学习uboot,那些个.S文件好多东西找不到官方的依据汇编好多,大家一起玩啊。 你那个yl-boot很好啊,我下载学习了  详情 回复 发表于 2014-8-29 21:26
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

13
 
yuanlai2010 发表于 2014-8-29 21:22
哈哈,让翔哥见笑了,上次玩的boot其实绕过了UBOOT的好多功能,uBoot的命令实现什么的我也没弄明白,直接 ...

最近简单看下裸机,问题多多啊,有机会多多交流哈,打算后面学习uboot,那些个.S文件好多东西找不到官方的依据汇编好多,大家一起玩啊。
你那个yl-boot很好啊,我下载学习了

点评

多谢支持,其实那么多汇编文件,真正编译到uBoot里面的没有几个,基本上都还是用C实现的。  详情 回复 发表于 2014-8-29 21:29
 
个人签名电工
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

14
 
lyzhangxiang 发表于 2014-8-29 21:26
最近简单看下裸机,问题多多啊,有机会多多交流哈,打算后面学习uboot,那些个.S文件好多东西找不到官方 ...

多谢支持,其实那么多汇编文件,真正编译到uBoot里面的没有几个,基本上都还是用C实现的。
 
 
 

回复

109

帖子

0

TA的资源

一粒金砂(中级)

15
 
点赞啊。哥们你真心不错,都能去BOSS那实习了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表