32692浏览
查看: 32692|回复: 4

[项目] 利用旧手机自制OpenBot

[复制链接]
本帖最后由 云天 于 2023-1-8 18:34 编辑

利用旧手机自制OpenBot图8

OpenBot是什么?
OpenBot利用智能手机作为低成本机器人的大脑。intel工程师设计了一款小型电动车,机器人车身的各种配件加一起售价约50美金。 同时开发了Android智能手机软件,支持先进的机器人功能,如人跟踪和实时自主导航。开源:https://github.com/isl-org/OpenBot
利用旧手机自制OpenBot图1

【项目设计】
利用旧手机自制OpenBot图9

我也有旧手机,当然我不会直接使用开源的代码来实现我的OpenBot,搞清楚它的工作原理后,我准备自制,包括编写手机端程序。

【OTG】

手机与Arduino使用OTG功能连接。

目前市面上的大部分手机都会具备OTG功能。OTG是USB On-The-Go的缩写,是近年发展起来的技术,2001年12月18日由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。手机OTG一般默认是关闭状态。在设置中的更多设置中找到。需要两个硬件:1、OTG转接头2、FT232 USB转TTL 串口线。
【OTG连接测试】

1、连接硬件
利用旧手机自制OpenBot图2


L289N外接电源,并与Arduino共地,E1接5(PWM引脚),M1接7,E2接6(PWM引脚),M2接4。

手机插OTG转接口,接USB转TTL 串口线,串口线红线(VCC)接Arduino板VIN引脚(给主板供电),黑线(GND)接GND引脚,绿线(TX)接0引脚(RX),白线接1引脚(TX)。

利用旧手机自制OpenBot图4

2、Arduino程序
  1. //定义一个comdata字符串变量,赋初值为空值
  2.     String comdata = "";
  3.     //numdata是分拆之后的数字数组
  4.     int numdata[4] = {0}, PWMPin[4] = { 5, 6, 7, 8}, mark = 0;
  5.     void setup()
  6.     {
  7.     //定义0~6脚是输出
  8.       for(int i = 0; i <4; i++) pinMode(PWMPin[i], OUTPUT);
  9.       Serial.begin(9600);
  10.     }
  11.      
  12.     void loop()
  13.     {
  14.     //j是分拆之后数字数组的位置记数
  15.       int j = 0;
  16.      
  17.       //不断循环检测串口缓存,一个个读入字符串,
  18.       while (Serial.available() > 0)
  19.       {
  20.       //读入之后将字符串,串接到comdata上面。
  21.         comdata += char(Serial.read());
  22.           //延时一会,让串口缓存准备好下一个数字,不延时会导致数据丢失,
  23.         delay(2);
  24.         //标记串口读过数据,如果没有数据的话,直接不执行这个while了。
  25.         mark = 1;
  26.       }
  27.      
  28.       if(mark == 1)  //如果接收到数据则执行comdata分析操作,否则什么都不做。
  29.       {
  30.       //显示刚才输入的字符串(可选语句)
  31.         Serial.println(comdata);
  32.           //显示刚才输入的字符串长度(可选语句)
  33.         Serial.println(comdata.length());
  34.      
  35.     /*******************下面是重点*******************/
  36.     //以串口读取字符串长度循环,
  37.         for(int i = 0; i < comdata.length() ; i++)
  38.         {
  39.         //逐个分析comdata[i]字符串的文字,如果碰到文字是分隔符(这里选择逗号分割)则将结果数组位置下移一位
  40.         //即比如11,22,33,55开始的11记到numdata[0];碰到逗号就j等于1了,
  41.         //再转换就转换到numdata[1];再碰到逗号就记到numdata[2];以此类推,直到字符串结束
  42.           if(comdata[i] == ',')
  43.           {
  44.             j++;
  45.           }
  46.           else
  47.           {
  48.              //如果没有逗号的话,就将读到的数字*10加上以前读入的数字,
  49.              //并且(comdata[i] - '0')就是将字符'0'的ASCII码转换成数字0(下面不再叙述此问题,直接视作数字0)。
  50.              //比如输入数字是12345,有5次没有碰到逗号的机会,就会执行5次此语句。
  51.              //因为左边的数字先获取到,并且numdata[0]等于0,
  52.              //所以第一次循环是numdata[0] = 0*10+1 = 1
  53.              //第二次numdata[0]等于1,循环是numdata[0] = 1*10+2 = 12
  54.              //第三次是numdata[0]等于12,循环是numdata[0] = 12*10+3 = 123
  55.              //第四次是numdata[0]等于123,循环是numdata[0] = 123*10+4 = 1234
  56.              //如此类推,字符串将被变成数字0。
  57.             numdata[j] = numdata[j] * 10 + (comdata[i] - '0');
  58.           }
  59.         }
  60.         //comdata的字符串已经全部转换到numdata了,清空comdata以便下一次使用,
  61.         //如果不请空的话,本次结果极有可能干扰下一次。
  62.         comdata = String("");
  63.      
  64.      
  65.         //循环输出numdata的内容,并且写到PWM引脚
  66.         analogWrite(PWMPin[0], numdata[0]);
  67.         analogWrite(PWMPin[1], numdata[1]);
  68.         digitalWrite(PWMPin[2], numdata[2]);
  69.         digitalWrite(PWMPin[3], numdata[3]);
  70.         for(int i = 0; i < 4; i++)
  71.         {
  72.           //Serial.print("Pin ");
  73.           //Serial.print(PWMPin[i]);
  74.           //Serial.print(" = ");
  75.           //Serial.println(numdata[i]);
  76.          
  77.           numdata[i] = 0;
  78.         }
  79.         //输出之后必须将读到数据的mark置0,不置0下次循环就不能使用了。
  80.         mark = 0;
  81.       }
  82.     }
复制代码
串口通信一次性传输四位数字中间用“,”分隔,如“255,255,1,1”,分别为“左轮PWM,右轮PWM,左轮正反转,右轮正反转”。
3、App Inventor2程序
利用旧手机自制OpenBot图5
利用旧手机自制OpenBot图6
源文件:
下载附件OTG.zip
4、测试演示视频


【OpenBot智能车】
利用旧手机自制OpenBot图3
1、使用了DF“履带机器人移动平台”
利用旧手机自制OpenBot图10
2、App Inventor2使用扩展
下载附件edu.mit.appinventor.ai.posenet.aix.zip
利用旧手机自制OpenBot图12
3、App Inventor2编程
利用旧手机自制OpenBot图13
下载附件OTG.zip
【演示视频】



三春牛-创客  初级技神

发表于 2023-1-10 12:35:17

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-1-10 12:37:55

回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-1-12 15:35:18

想用这个软件制作的网站,但是为什么要钱啊?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2023-1-12 15:44:23

三春牛-创客 发表于 2023-1-12 15:35
想用这个软件制作的网站,但是为什么要钱啊?

不使用它的VIP插件,就都是免费的,功能还是比较多的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail