这将是一个文章系列的第一篇,介绍基于MK802这类MiniPC的扩展开发,并展示他在计算机视觉、机器人控制方面的潜能
欢迎转载,但请保留原始作者信息(Shikai Chen, http://www.csksoft.net)一直指向本文原始出处的链接!
为了增加大家兴趣,首先将相关的演示视频贴出。他们的细节将在后续文章中介绍。
基于MK802,结合Arduino控制的人脸自动追踪云台
基于MK802和Arduino的光源追踪
基于MK802的摄像头画面前景学习和提取
基于MK802的网络带宽统计显示
简介
自从以树梅派(raspberry-pi)为代表的低成本微型电脑问世以来,市面上陆续的就有各种基于Cortex-A8 ARM的Android微型主机出现。其中比较典型的就是MK802,他是国内厂家推出的一款大小与u盘类似的迷你电脑。
图:MK802 MiniPC
虽然只有U盘大小,但是它具备了不错的配置: 1Ghz的cortex-A8 ARM处理器: Allwinner A10、最高达1Gb 的DDR3内存、2个usb 口可外接usb设备、内置WIFI网卡,并且使用HDMI接口可输出高达1080p画质的图像。使用的是Google Android 4.0的操作系统。
这样的配置已经和几年前的主流PC性能相仿,而且价格也不贵,一般几百块钱的成本即可买到。并且相比较树梅派来说性能也高出了一截(树梅派使用的是ARM11的处理器,主频仅为700Mhz)。
除了能够出色完成基本的上网、视频播放、游戏娱乐外,这样的配置允许这台U盘大小的机器运行许多以前只能在PC上进行的工作:比如基于OpenCV的计算机视觉运算、视频传输和处理、语言合成和识别、复杂的人工智能算法等等。并且爱好者也可以通过MK802上边的2个USB口以及WIFI与其他设备、传感器或者开发板进行交互,达到更多地功能。
因此它对于电子制作爱好者具有非常大的吸引力。很多方面MK802可以代替一台x86 PC,并且更小的体积/重量以及功耗使得这样的设备可以被航模、无人机、小型机器人这类对体积、重量、功耗非常敏感的设备所搭载,并且强大的运算能力足以胜任一些以前看似不可能再小型设备上进行的算法。
不过厂家推出他的初衷是作为连接电视机用的媒体播放器或者机顶盒使用,因此目前市面上大部分的应用还是围绕着如何用它进行多媒体播放或者日常上网娱乐展开的。鲜有介绍如何基于MK802这类小主机进行扩展开发、使用OpenCV进行视觉识别、与Arduino通讯实现功能扩展的文章。
因此在这个系列的文章中,我尝试结合自己的经验以及整理得到的网上各类有关于MK802的扩展开发的文章,为大家介绍如何基于MK802这类微型主机进行扩展的开发,以及如何与Arduino等开发板进行互连互动,并且使用OpenCV进行计算机视觉方面的应用。希望这个系列对大家能起到参考作用,期待大家充分挖掘出这类迷你PC的潜能,做出更多更有趣的东西。
当然,本文介绍的很多技巧和方法不仅仅适用于MK802,同样任何基于Linux系统的主机(包括PC)都将适用。因此这里提到的方法和代码,也可以在其他类似的迷你主机,例如树梅派、MK802的后续升级版本上使用。
图:本系列文章将介绍的例子:使用MK802结合Arduino,实现的人脸跟踪系统
本系列文章的将分为如下几大部分:
第一部分:MK802的系统自制
这部分将介绍如何自行编译Linux Kernel、uboot等核心软件达到对MK802硬件的完全控制和定制的能力,并且将推荐几个适合于MK802的Linux发行版本(主要是rootfs包)。
这将是对MK802进行二次开发和扩展的一个必要环节。
这部分的一些部分会需要读者具有Linux开发的一些背景知识,不过我也会介绍一些便捷的方式使用其他人预先制作的系统,为新手绕过这个步骤。当然凡事都有两面性,对于使用其他人现成的系统,将在后续的扩展开发中丧失一定的灵活性甚至会造成一定的阻碍。
第二部分:MK802的软/硬件修改和扩展
这部分将介绍一些hack小技巧,来对MK802的软硬件做出一些的改动达到自身的需求。例如引出调试串口信号,这将是对kernel调试非常重要的。这部分的内容相对后续部分独立,如果不感兴趣也可以跳过这部分。
第三部分:基于MK802的应用开发和相关的工具
这里将介绍如何在MK802的Linux系统上进行程序开发和开发工程中会用到的一些工具和技巧。
将介绍如何对MK802这类ARM设备在PC上进行交叉编译,如何部署到目标系统以及如何调试等内容。
这部分是对MK802进行扩展所必须的,不过由于篇幅和时间限制,这部分的介绍只是走马观花式的。其实质是基于Linux这类POSIX系统的开发技巧,以及对gcc工具链的使用知识,这些方面的知识还是需要读者能够参考相关的数据系统的进行学习。
第四部分:MK802与外部硬件设备的通讯
这部分将以Arduino为主要例子,介绍如何通过MK802经过usb口如何与Arduino设备进行互通。同时也会给出其他通讯方式的实现思路。
这部分末尾将介绍一个使用MK802与arduino通讯并驱动舵机云台的例子。
第五部分:在MK802上结合OpenCV库进行计算机视觉处理
这部分将介绍如何在MK802上扩展摄像头、交叉编译OpenCV库并进行使用的过程
这部分末尾将介绍如何通过MK802在一个128x64分辨率的VFD显示屏上显示摄像头画面的例子
第六部分:基于MK802、Arduino和OpenCV库的互动开发
这部分将为了本系列文章的几个配套实例的开发思路。包括人脸的跟踪、光源的跟踪、将路由器网络流量信息展示在于MK802连接的屏幕上。