专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

基于Boa-web服务器的远程机器人控制(网络篇)

作者:佚名   来源:本站原创   点击数:  更新时间:2012年11月19日   【字体:
    

本人秉着对智能机器人的热爱在上个学期选修了智能机器人这门课,尽管最后因为没及时把作业交上去就挂了这门选修课,o(︶︿︶)o 唉(ps:老师呀,要是你看到我写的这篇文章后,你就发发慈悲就把我的成绩改过来哈)、

记得上这门课的老师先是讲诉了单片机的基本应用和单片机编程,然后课程结束的时候给我们介绍了下tiny6410开发板。后来我去查阅了相关资料,觉得用这这块板做个远程控制的机器人是可行的,因此哥儿最近刚入手了友善之臂的tiny6410开发板(ps:这可花了我600大洋,老师呀 怎么你也得把我成绩改及格撒),关于这块开发板的详细信息可以参照附件或者友善之臂的官方网发布的相关文档。

硬件资源

首先,我们先看下tiny6410在接口方面哪些接口:


 

 从tiny6410的布局可以看出它所提供的硬件资源是相当多的。

    软件资源

    接着,我们来看下tiny6410的软件资源。

Tiny6410可以搭载linux,安卓,winCE系统,下面是linux系统的简单介绍。


 

开发之路--网络篇

一、开发思路

如果提起linux,很多人会联想到嵌入式开发和linux下的网络服务器。可是,嵌入式开发对于一般学电子的人来说是有一定的难度的,因此我们可以利用linux下的网络服务器做一些开发。

Linuxweb服务器有HapdThttpdBoa,其中Boa服务器源代码开放、性能优秀、支持CGI通用网关接口技术,比较适合做web开发。Boa服务器可以通过CGI与外部应用程序和脚本之间进行交互,根据客户端浏览器在请求时所采用的方法,服务器会搜集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序,CGI扩展程序进行信息处理并将结果返回给服务器,然后服务器对信息进行分析,并将结果发送回客户端在浏览器上显示出来。其实这就是 B/S(浏览器/服务器)模式,可以用下图来表示


 

这个模式将是本次基于Boa-web服务器的远程机器人控制开发的主要模式,下面是对这个模式的说明!!!

如图:

1、浏览器可以是windows下的浏览器,也可以是手机上的浏览器,控制端只是一个html网页而已。

2、Web服务器就是linux下的Boa服务器。基于Boa服务器,可以建立一个动态的网站,通过这个网站可以进行嵌入式设备和用户的之间进行信息交互。

3、CGI部分。CGI是一种脚本语言,可以和perl,PHP,C语言一起用,为了方便动态网站的搭建,本次开发主要以PHP+CGI为主。

4、应用程序部分。其实在本次开发中,应用程序就是一个个CGI程序。这个一个个CGI程序处理由用户通过Boa服务器传递过来的信息,然后通过硬件的驱动程序调用开发板的硬件设备。

二、Boatftp服务器的搭建

   BOA服务器是要运行于ARM嵌入式设备上的,因此需要对BOA源文件进行交叉编译。编译工具使用arm-linux-gcc-4.3.2交叉编译工具链,拷贝文件arm-lin-ux-gcc-4.3.2.tgz到目录/tmp下,执行命令cd/tmp;tar zxvfarm-linux-gcc- 4.3.2.tgz-C/.这样交叉编泽工具就安装到/usr/local/arm/4.3.2目录下面。为确保在打开终端后能直接应用交叉编译工具链,要在/root/.bashrc文件中把编译器路径加入到系统环境变量。运行命令gedit/root/.bashrc编辑文件/root/.bashrc。在文件的最后添加export PATH=$PATH:/usr/local/arm/4.3.2/bin。保存退出。接着执行source/root/.bashrc命令使设置生效。最后检测交叉编译工具是否安装成功,命令为在终端中输入arm-linux-gcc-v;若能在输出的信息中看到arm-linux-gcc版本号4.3.2,说明安装成功。

  其次,交叉编译BOA源码,拷贝BOA源码包boa-0.94.13.tar.gz到/tmp目录下,解压缩掩码包tar zxvf boa- 0.94.13.tar.gz;解压后在Linux终端进入BOA所在目录,首先执行命令./con-figure生成Makefile文件,然后打开文件夹,找到Makefile文件,用文本编辑器打开,找到CC=gcc,CPP=gcc-E两行,分别将其设置成上一步生成的交叉编译工具路径 CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc和 CPP=/usr/local/arm/4.3.2/bin/arm-linux-gcc-E,然后将Makefile保存后退出,回到终端执行make 命令,进行交叉编译得到可执行程序BOA,它就是能够运行在arm嵌入式设备上的执行文件。可通过命令fileboa查看文件信息。拷贝此BOA文件到目标板/bin目录中。

  再次,配置boa服务器。配置BOA主要是为了使其能够支持CGI程序的执行。在文件系统的/etc目录下mkdir boa建立一个BOA目录,拷贝 BOA源码目录中的boa.conf文件到文件系统目录/etc/boa目录下,然后根据嵌入式BOA的需求在此配置文件的基础上进行修改。在修改此配置文件时需要注意保证其他文件和设置必须与配置文件相一致,否则嵌入式Web服务器BOA就不能正常运行。

搭建Boa服务器完成后,可以在linux文件管理中的根目录会出现www文件夹,这个文件夹就是前面提到的动态网站系统的存放目录。如果要对这个网站系统的文件进行读写,这时候就要用到tftp服务器了,通过tftp服务,我们可以轻松的对文件夹www中的动态网站系统的文件进行读写。关于搭建tftp服务器的搭建在这里就不做介绍了。

三、Boa服务器移植测试

从tiny6410的硬件资源可以看到,开发板提供了四个LED,我们简单地编个程序来测试一下通过Boa服务器远程控制开发板上的LED。

程序如下:

    <input type=“radio”name=“speed”value=“show”checked>慢速

  <input type=“radio”name=“speed”value=“normal”>中速

  <input type=“radio”name=“speed”value=“rast”>高速

  <input type=“submit”value=确定“name=”submit

  其中leds.cgi程序如下:

  #! /bin/sh

  Period=1+case$QUERY-STRING in

  *slow*

  period=0.25

  ;;

  * normal *)

  period = 0.125

  ;;

  fast *

  period=0.0625+;;

  *fast * ) + period =0.0626

  ;;

  esac

  /bin/echo $ period ? /tmp/led-control//通过Query_String的环境变量传递给应用程序。

  echo “Content-type:texe/htmlcharset=gb2312”

  echo

  /bin/cat led =result.template

  exit 0

其中led-control是编译好的可执行的应用程序,通过led驱动来实现对LED的控制。这些硬件资料可以在友善之臂提供PDF文件中会有介绍,如果用到开发板的其他的硬件设备可以查阅相关数据后进行对其他硬件设备的调用。

接着,假设开发板的IP为192.198.1.230,那么直接访问http://192.198.1.230就可以访问Boa服务器的网页了,通过这个网页可以控制开发板上LED的闪烁速度。这次测试暂时就不上图了,想看的话可以到我寝室来,嘿嘿。

结束语

         基于Boa-web服务器的远程机器人控制(网络篇)的介绍暂时到这里吧,下次做下调用其他硬件的测试。 比如做个开发底板控制电机的转动,一个远程控制的机器人就可以走动了。(*^__^*) 好了,先到这了,加油.......
关闭窗口

相关文章