Android手机通过WIFI控制数码管

来源:互联网 发布:公司销售网络介绍 编辑:程序博客网 时间:2024/06/02 12:07

Android通过WIFI控制“数码管”

一、 硬件平台

1)     MINI6410开发板;

2)     Android手机一部;

3)     无线路由器一台;

4)     自制“一位数码管”显示板;

二、 简介

本示例是通过TCP协议进行通讯的,MINI6410运行TCP服务器程序,Android手机运行客户端程序,“客户端”通过WIFI将“按键信息”传递给“服务器端”,“服务器端”通过解析收到的“按键信息”来控制“数码管”,本示例包含:“数码管硬件的制作”,“linux下数码管的驱动代码”,“linuxTCP服务器代码”,“Android客户端控制程序”,文末将贴出链接。

三、 控制效果

1)     Android控制界面

2)     整体控制照片

四、 自制“一位数码管”显示板

1)     原理图

2)     说明

a)       数码管采用的是“共阳”接法,当GPIO端口“拉低”时,即可点亮数码管;

b)       MINI6410的“GPIO PORT”不是“2.54mm”标准接插件,而是“2.0mm”的接插件,可以考虑在“淘宝”购买“一端是2.54mm的,另一端是2.0mm”的“杜邦线”;

c)       VDD_IO串入了一个R=100欧姆的电阻,是为了防止电流过大烧毁数码管。

五、 Linux下数码管的驱动

1)     复制文件

a)       复制“Android通过WIFI控制数码管\linux数码管驱动代码\seg_leds.c”到“/opt/FriendlyARM/mini6410/linux/linux-2.6.36/drivers/char/”文件夹;

b)       复制“Android通过WIFI控制数码管\linux数码管驱动代码\gpio-bank-m.h”到“/opt/FriendlyARM/mini6410/linux/linux-2.6.36/arch/arm/mach-s3c64xx/include/mach”文件夹;

注意:如果没有复制该文件,编译内核时会报如下错误:

 

CC     drivers/char/seg_leds.o

drivers/char/seg_leds.c:30:30:fatal error: mach/gpio-bank-m.h: No such file or directory

compilationterminated.

make[2]: ***[drivers/char/seg_leds.o] Error 1

make[1]: ***[drivers/char] Error 2

make: *** [drivers] Error 2

 

2)     修改配置文件KconfigMakefile

a)       进入“/opt/FriendlyARM/mini6410/linux/linux-2.6.36/drivers/char”文件夹;

b)       在终端中输入“gedit Kconfig”;

c)       110行左右,找到:

config MINI6410_LEDS

      tristate "LED Support for Mini6410GPIO LEDs"

      depends on CPU_S3C6410

      default y

      help

      Thisoption enables support for LEDs connected to GPIO lines

on Mini6410 boards.

在其前面加入如下代码:

config SEG_LED_DISPLAY

      tristate "SEG_LED_DISPLAY Support forMini6410 GPIO SEG_LEDs"

      depends on CPU_S3C6410

      default y

      help

      Thisoption enables support for SEG_LEDs connected to GPIO lines

 onDIY boards.

 

提示:可以先复制一份“config MINI6410_LEDS”,在此基础上修改成

config SEG_LED_DISPLAY”。

d)      在终端中输入“gedit Makefile”;

e)       110行左右,找到:

obj-$(CONFIG_MINI6410_LEDS)+= mini6410_leds.o

在其前面加入如下代码:

obj-$(CONFIG_SEG_LED_DISPLAY)  += seg_leds.o

六、 配置编译内核

1)     配置内核

a)       进入“/opt/FriendlyARM/mini6410/linux/linux-2.6.36”文件夹;

b)       在终端中输入“cp config_mini6410_n43 .config”;

c)       若有“cp: overwrite`.config'?”提示,输入:“y”;

d)      在终端中输入“make menuconfig”;

e)       调整“光标上下键”à选中“DeviceDriversà回车;

f)        调整“光标上下键”à选中“Characterdevicesà回车;

g)       调整“光标上下键”à选中“SEG_LED_DISPLAYSupport for Mini6410 GPIO SEG_LEDsà“空格键”切换到“<*>”状态;

h)       调整“光标左右键”à选中“<Exit>à“回车”退出à出现如下界面时à选中“<yes>à“回车”保存退出;

 

2)     编译内核

a)       进入“/opt/FriendlyARM/mini6410/linux/linux-2.6.36”文件夹;

b)       在终端中输入“make”;

c)       待终端出现如下信息时,编译完成;

       OBJCOPY arch/arm/boot/zImage

       Kernel:arch/arm/boot/zImage is ready

       Building modules, stage 2.

 MODPOST 20modules

d)      进入“/opt/FriendlyARM/mini6410/linux/linux-2.6.36/arch/arm/boot”文件夹复制“zImage”到SD卡中的“images\Linux”文件夹下并重命名为“zImage_n43”;

e)       修改SD卡中“images”文件夹下的“FriendlyARM”文件OS=Linux

f)        插入SD卡,选择“SD启动”,打开“MINI6410”电源,安装Linux

g)       待安装完成,断电,切换到“flash”启动,重新开机;

h)       打开“MINI6410的超级终端”,输入“ls /dev”,可以看到“seg_leds”设备驱动。

 

七、 linuxTCP服务器代码

1)     复制文件

a)       复制“Android通过WIFI控制数码管\linux数码管驱动代码\seg_leds_tcp_server.c”到fedora下;

2)     交叉编译

a)       在终端中输入“arm-linux-gccseg_leds_tcp_server.c -o seg_leds_tcp_server.o”;

b)       成功编译后,在当前目录下会生成“seg_leds_tcp_server.o”文件;

3)     通过ftp将文件传到“MINI6410

a)       连接“MINI6410”到无线路由器上;

b)       连接PC到相同的无线路由器上

c)       PC终端中输入“ftp192.168.1.108”;

d)      输入“用户名”“plg”,密码“plg”;

e)       输入bin”设置以“二进制”的方式传输;

f)        输入“putseg_leds_tcp_server.o”将“seg_leds_tcp_server.o”文件传到“MINI6410”的“/home/plg”目录下;

g)       输入bye”退出ftp连接;

4)     修改权限和运行

a)       打开“MINI6410”的“超级终端”,输入“cd /home/plg”;

b)       在终端中输入“chmod 777 seg_leds_tcp_server.o”修改权限;

c)       在终端中输入“./ seg_leds_tcp_server.o”运行服务器代码;

d)      服务器代码会打印“客户端的IP地址”,以及收到的“字符”和“字符的长度”。

八、 android控制程序

1)     安装应用程序

a)       打开“Android通过WIFI控制数码管\Android客户端程序”文件夹;

b)       安装davis_seg_leds.apk

c)       安装时可能会提醒是否允许操作硬件,请允许,该程序只操作手机震动!

2)     使用说明

a)       打开手机的WIFI

b)       连接手机到“连接有MINI6410”的无线路由器上;

c)       打开应用程序;

d)      键盘0~9:数码管显示按键的数字;

e)       键盘*:数码管关闭所有的显示;

f)        键盘#:数码管打开所有的显示;

g)       控制成功,手机会震动提醒,控制失败以Toast方式提醒;

h)       程序退出时会关闭数码管显示。

九、 代码附件

               Android通过WIFI控制数码管.rar