Android通过WIFI控制“数码管”


一、 硬件平台


1)     MINI6410开发板;


2)     Android手机一部;


3)     无线路由器一台;


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


二、 简介


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


三、 控制效果


1)     Android控制界面

android 忘记wifi密码 命令_android

android 忘记wifi密码 命令_Android_02

2)     整体控制照片

android 忘记wifi密码 命令_ANDROID_03

android 忘记wifi密码 命令_android 忘记wifi密码 命令_04


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


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)     修改配置文件Kconfig和Makefile


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”à回车;


android 忘记wifi密码 命令_Android_05


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


android 忘记wifi密码 命令_android_06


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


android 忘记wifi密码 命令_android 忘记wifi密码 命令_07


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


 

android 忘记wifi密码 命令_Android_08



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”设备驱动。

 

android 忘记wifi密码 命令_Android_09



七、 linux下TCP服务器代码


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