这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 智能探测车

共8条 1/1 1 跳转至

智能探测车

菜鸟
2013-05-27 12:24:35     打赏

组名:极速梦想

我是一名大三学生,现在正在学习钳入式系统,一直以以来没有开发板做相关实验。现在钳入式已是主流,我迫切地想学习,所以特此申请此开发套件。

我想做的项目是:智能探测车。通过无线网络来控制小车,小车传回视频。

大体构想:


1, 网络用的是校园WIFI CMCC-EDU;

2, 我网购了一个小车开发平台,四轮驱动。

3,尝试用平板远程控制。


AT91SAM3S板学习进度表

日        期                         标      题                         链接             备            注
2013/5/27     申请AT91SAM3S开发板
    申请贴

2013/5/31     什么是uTenux
    跳转
准备考试
2013/6/24     AT91SAM3S电路的初步认识
    跳转

2013/6/26     LED和LCD两个例子的运行
    7楼

2013/6/26     01.task程序分析
    8楼







































关键词: 智能     探测    

菜鸟
2013-05-29 07:59:12     打赏
2楼

想法不错哦,有点像飞思卡尔智能车竞赛的感觉。

不错,还有几个问题需要确认下:

1、无线网络打算使用什么网络哦?

2、虽然可以申请到开发板,但车的机械和电机等部分,打算怎么解决哦?

3、打算使用什么设备通过无线网络控制小车?PC机还是手机或者其他的?

继续努力哦


菜鸟
2013-05-29 12:16:47     打赏
3楼

1, 网络用的是校园WIFI CMCC-EDU;

2, 我网购了一个小车开发平台,四轮驱动。

3,尝试用平板远程控制。

在此之前,就已经准备了很久这个设计,也非常想实现这个设计,所以请您考虑一下我这个想法,谢谢了



菜鸟
2013-05-29 21:07:33     打赏
4楼

1, 网络用的是校园WIFI CMCC-EDU;

2, 我网购了一个小车开发平台,四轮驱动。

3,尝试用平板远程控制。

在此之前,就已经准备了很久这个设计,也非常想实现这个设计,所以请您考虑一下我这个想法,谢谢了


菜鸟
2013-05-31 10:47:10     打赏
5楼
想法不错,尤其是CMCC-EDU的网络覆盖校园,小车可以跑很远,都不会脱离控制,不过,WIFI的功耗也比较大,加上本次活动提供的开发板尺寸有点大,对于放到小车上可能会有难度,还需要想办法解决。
初审结论:恭喜你,通过了

 


菜鸟
2013-05-31 10:56:12     打赏
6楼
这一点也确实是个问题,不过有学校的电信院和计算机院做后盾,我相信我能解决。

菜鸟
2013-06-26 20:46:36     打赏
7楼

今天JLINK到手,立马运行两个例子.

LED运行结果:


LCD运行结果:


菜鸟
2013-07-10 19:02:14     打赏
8楼

                                                      01task的分析


#include "TaskSample.h"
void TaskSampleTaskA(W stacd,VP exinf);
void TaskSampleTaskB(W stacd,VP exinf);
void TaskSampleTaskC(W stacd,VP exinf);

static ID TaskID_A;        /定义TaskID_A,TaskID_B,TaskID_C三个ID型局部变量**/
static ID TaskID_B;
static ID TaskID_C;

ER TaskSample( void)
{
    ER ercd=E_OK;   //初始化ercd
    T_CTSK ctsk;     //定义一个T_CTSK型的结构体;


    tm_putstring((UB*)"Task sample create step 1-Create Task A;\n");   //输出:Task sample create step 1-Create Task A;
    ctsk.exinf = (VP)NULL;   //扩展信息为空;
    ctsk.tskatr = TA_HLNG|TA_RNG0;     //任务属性为高级语言, 保护级别为0;
    ctsk.task = TaskSampleTaskA;         //任务服务函数为TaskSampleTaskA;
    ctsk.itskpri = 24;                   //任务优先级为24;
    ctsk.stksz = 512*4;           //任务大小为512*4;
    TaskID_A = tk_cre_tsk(&ctsk);     //创建任务A,把返回值给TaskID_A;
    if(TaskID_A < E_OK) {       /*如果TaskID_A小于E_OK,返回TaskID_A*/
    ercd=TaskID_A;
        return ercd;
    }
    
    tm_putstring((UB*)"Task sample create step 2-Create Task B;\n");    //输出:Task sample create step 2-Create Task B;
    ctsk.exinf = (VP)NULL;       //扩展信息为空;
    ctsk.tskatr = TA_HLNG|TA_RNG0;        //任务属性为高级语言, 保护级别为0;
    ctsk.task = TaskSampleTaskB;      //任务服务函数为TaskSampleTaskB;
    ctsk.itskpri = 26;         //任务优先级为26;
    ctsk.stksz = 512*4;     //任务大小为512*4;
    TaskID_B = tk_cre_tsk(&ctsk);     //创建任务B,把返回值给TaskID_B;
    if(TaskID_B < E_OK) {
    ercd=TaskID_B;            /*如果TaskID_B小于E_OK,返回TaskID_B*/
        return ercd;
    }
    
    tm_putstring((UB*)"Task sample create step 3-Create Task C;\n");      //输出:Task sample create step 3-Create Task C;
    ctsk.exinf = (VP)NULL;    //扩展信息为空;
    ctsk.tskatr = TA_HLNG|TA_RNG0;        //任务属性为高级语言, 保护级别为0;
    ctsk.task = TaskSampleTaskC;         //任务服务函数为TaskSampleTaskC;
    ctsk.itskpri = 28;              //任务优先级为28;
    ctsk.stksz = 512*4;             //任务大小为512*4;
    TaskID_C = tk_cre_tsk(&ctsk);       //创建任务C,把返回值给TaskID_C;
    if(TaskID_C < E_OK){
    ercd=TaskID_C;             /*如果TaskID_C小于E_OK,返回TaskID_C*/
        return ercd;
    }


    tm_putstring((UB*)"Task sample create step 4-Start Task B;\n");   //输出:Task sample create step 4-Start Task B;
    tk_sta_tsk(TaskID_B,5);    //启动任务B;


    return E_OK;

 
 
void TaskSampleTaskA(W stacd,VP exinf)         //任务A的服务函数;
{


    for(;;) {
    tm_putstring((UB*)"Task A will be sleeping;\n");     //输出:Task A will be sleeping;
    tk_slp_tsk(1000);         //任务A进入休眠;
    }
    tm_putstring((UB*)"task A will Exit ;\n");       //输出: task A will Exit ;
    tk_ext_tsk();    //任务A退出, 任务A处于静止状态;
}

 
void TaskSampleTaskB(W stacd,VP exinf)         //任务B的服务函数;
{
B c;
    B s[3]="0\n";


if(stacd>0){            /*如果sracd大于0,则sracd累加于s[0]中,
s[0]+=stacd;
tm_putstring((UB*)"Task B parameter stacd is ");
tm_putstring((UB*)s);                                         输出:Task B parameter stacd is  , 输出*/


   tm_putstring((UB*)"Task B will start task C;\n");      //输出:Task B will start task C;
        tk_sta_tsk(TaskID_C,0);         //任务C启动;
    
   tm_putstring((UB*)"Task B will start task A;\n");    //输出:Task B will start task A;
        tk_sta_tsk(TaskID_A,0);         //启动任务A; 
}
    for(;;) {
    tm_putstring((UB*)"Task B is running,input Command(e=exit):\n");     /*输出:Task B is running,input Command(e=exit):  
    c = tm_getchar(0);
    if(c=='e') {
    break;
    }
    tm_putstring((UB*)"Task B will be sleeping;\n");
    tk_slp_tsk(500);                                                  如果输入e,则跳出循环, 然后任务B进入睡眠状态*/
    }


tm_putstring((UB*)"Task B will terminate&delete task A;\n");    //输出:Task B will terminate&delete task A;
    tk_ter_tsk(TaskID_A);        //任务A进入暂停, 并删除任务A; 
    tk_del_tsk(TaskID_A);
tm_putstring((UB*)"Task B will terminate&delete task C;\n");         //输出:Task B will terminate&delete task C;
    tk_ter_tsk(TaskID_C);         //任务C进入暂停,并删除任务C;
    tk_del_tsk(TaskID_C);
tm_putstring((UB*)"Task B will terminate&delete self;\n");     //输出:Task B will terminate&delete self;
    tk_exd_tsk();        //任务B退出;
}


void TaskSampleTaskC(W stacd,VP exinf)      //任务C的服务函数;
{
UB i;


    for(;;) {
    tm_putstring((UB*)"****************************************\n");       //输出:****************************************
    for(i=0;i<200;i++);        //延时运作;
    }
    
    tm_putstring((UB*)"task C will Exit ;\n");       //输出:task C will Exit ;
    tk_ext_tsk();     任务C退出; 
}


输出结果:

        Task sample create step 1-Create Task A;

        Task sample create step 2-Create Task B;

        Task sample create step 3-Create Task C;

        Task B  parameter stacd is 5

        Task  B will start task C;

        Task  B will start task A;

        Task A will be sleeping;

        Task B is running,input Command(e=exit): 

        分析:先是创建任务A, B, C;创建的任务处于静止态;然后任务B先启动,执行服务于B的函数;

进入函数TaskSampleTaskB. 函数启动了任务A,由于任务A的优先级别任务B高,进而任务A处于运行态;

转而执行服务于任务A的函数;然后任务A进入睡眠状态;转过来执行TaskSampleTaskB, 输入e, 跳出

for循环;然后接着输出:Task B will terminate&delete task A;  任务A被删除;

                                  Task B will terminate&delete task C;  任务C被删除; 

                                  Task B will terminate&delete self;       任务B退出;


如果没有输入e:

     则输出:Task B will be sleeping;  //任务B进入睡眠状态;然后任务C运行;

                 ****************************************

            然后任务C进入睡眠




共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]