首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DIY制作:SMC远程控制小车

DIY制作:SMC远程控制小车

先说一下本作品的作用,有兴趣的往下看:
  可以实现远程无线遥控,只要有网络的地方,都可以做控制端或者被控制端,例如,你在北京,我在广州,你就可以控制这个小车的动作,在SMC盒子上接上摄像头,完全实现无线遥控控制。
  用途吗,你把它放家里可以当安防,你把它放到工厂,可以当保安,你把它放到战场它可以做机器战士(一点都不夸张),呵呵,继续想象吧
  总的来说嘛,SMC就是一个可以跨越距离的你PC后面的串口。
  我的作品,先上图 再来

  

    

  

  

  

  


  嘿嘿,说起来挺简单的,简单一点的说:PC控制SMC盒子,盒子里面用Debian系统,系统控制SMC串行端口,端口控制51单片机,单片机控制车体,OK!!!
  先说一下本作品的作用,有兴趣的往下看:
  可以实现远程无线遥控,只要有网络的地方,都可以做控制端或者被控制端,例如,你在北京,我在广州,你就可以控制这个小车的动作,在SMC盒子上接上摄像头,完全实现无线遥控控制。
  用途吗,你把它放家里可以当安防,你把它放到工厂,可以当保安,你把它放到战场它可以做机器战士(一点都不夸张),呵呵,继续想象吧
  总的来说嘛,SMC就是一个可以跨越距离的你PC后面的串口。
  我的作品,先上图 再来

  

  

  

  



  

  

  


  嘿嘿,说起来挺简单的,简单一点的说:PC控制SMC盒子,盒子里面用Debian系统,系统控制SMC串行端口,端口控制51单片机,单片机控制车体,OK!!!
  详细一点,往下来看:
  1,先往SMC盒子安装Debian系统,详细请参考:lintel 的在SMC无线硬盘盒(MGB100)上运行Debian 地址:http://www.anywlan.com/bbs/thread-18052-1-1.html
  2,焊接盒子的串行接口线,请参考: lintel的SMC无线硬盘盒(MGB100) 研究之四 JTAG 地址:http://www.anywlan.com/bbs/thread-18012-1-1.html
  只需要焊接1 3 6号脚就可以,我焊接的一般就不上图了(如果经常用串行接口的话,可以去掉一个USB中间两根线,改接这两根RX ,TX ,嘿嘿,反正两个USB呢,也用不着那么多,个人观点哦,根据自己实际情况定。)
  3,焊接受控制电路板。以下以51单片机为例(有串口了,其他还不好说吗!),我的如下:
  特别注意的,如果有51单片机编程器的话就不用焊RS232了,这个盒子串口是TTL电平,51也是,绝配!记得RX--TX TX--RX哦。
  当然没有编程器,那就多费点劲,想偷懒,就找个老式的COM口数据线,嘿嘿,那个一般都是RS232,具体接法百度吧!
  4,51单片机再接个L298N,接法如下,详情百度,多如牛毛。
  硬件一切就绪,接下来,软件
  1,先说一下SMC盒子串口的控制,用minicom控制,具体如下
  debian安装OK后
  apt-get install minicom
  一路Y,安装完成。
  minicom -s
  配置串口,出现配置菜单:选serial port setup
  进入串口配置
  输入A配置串口驱动为/dev/ttyS0
  输入E配置速率为9600 8N1
  输入F将 Hardware Flow Control 设 为 NO
  回车 退出
  由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and dialing, 将Init
  string, Reset string, Hang-up string设置为空。 设置完成后选择Save setup as
  dfl将当前设置保存为默认设置。
  在配置菜单 选Save setup as df1保存(一定要记得这一步)
  选Exit退出
  下次在输入minicon 即可直接进入,按CTRL+A 再按shift+E 调出回显,OK完成。
  2,要远程控制,动态域名即可。
  3,单片机程序
  //Code by myasus 仅希望抛砖引玉
  //QQ:31495962
  #include< P>
  #include < P>
  sfr DC=0x90; //P1是电机接口,P1.0--A P1.1--BP 1.2--ENAB P1.3--ENCD P1.4--C P1.5--D A--GO B--BACK C--LEFT D--RIGHT
  //-------------------------取数据----------------------//
  char getData(void)
  {
  char c;
  while (!RI);
  c=SBUF;
  RI=0;
  return (c);
  }
  //------------------------串口定义-----------------------//
  void Init_Timer1_COM(void)
  {
  SCON=0x52;
  TMOD=0x20;//定时器1定时方式2
  TL1=0xfd;//baudRate:9600
  TH1=0xfd;
  TR1=1;//timer1 reset
  }
  //-----------------------主程序--------------------------//
  main()
  {
  char c;
  Init_Timer1_COM();
  while(1)
  {
  c=getData();
  switch (c)
  {
  case ‘w’:
  printf("GO n”); DC=0x05;
  break;
  case ‘s’:
  printf("BACK n”); DC=0x06;
  break;
  case ‘a’:
  printf("LEFT n”); DC=0x1d;
  break;
  case ‘d’:
  printf("RIGHT n”); DC=0x2d;
  break;
  case ‘z’:
  printf("LEFT BACK n”); DC=0x1e;
  break;
  case ‘c’:
  printf("RIGHT BACK n”); DC=0x2e;
  break;
  default:
  printf("You are wrong! n”); DC=0x00;
  break;
  }
  }
  }
返回列表