Another exciting afternoon racing robots with friends. 😉
Taken by @vnsavitri
Taken by Ricky
]]>September 26th, 2011 § 0 comments § permalink
July 11th, 2011 § 0 comments § permalink
比赛赢家: Nelson Zhang (自主瓦力) and Michael Liao (遥控坦克)非常感谢 盛大创新院 赞助了2台电子书做为奖品!
感谢参赛者们的努力,你们是最棒的! 感谢盛大创新院慷慨的赞助! 感谢 TimeOut 杂志 报道这次的活动!感谢DFRobot 和 RoboticFans 参与(尤其是叶琛和Rocky)这次活动的筹备!感谢新单位帮忙做宣传!感谢昨天来围观的朋友们! 感谢那些没办法过来但是给我们精神支持的朋友们!感谢Andi 设计制作这次的活动海报与传单!感谢Paul 赞助海报印刷!感谢Bindy 帮忙翻译和贩卖饮料!感谢Michael 捐赠赢得的电子书作为下次的奖品和请参赛者们和饮料!感谢John 帮忙活动的筹备!感谢Airie 帮忙在人人网上做宣传!感谢旻琳负责整个活动的宣传、协调与筹备!感谢我们零距离家长论坛的j家长和孩子们的参观!
下一次的比赛预计会在8月底举办,敬请期待!
]]>July 8th, 2011 § 0 comments § permalink
欢迎有兴趣的朋友来围观!这里报名。 比赛分为两个部分: * 自动控制组 * 遥控组 ==>比赛细则<== 如果你的机器车也想参加比赛,请写邮件到: [email protected] 有兴趣赞助这个比赛请写邮件到:[email protected] 这里有上次的车赛花絮. 已报名的队伍: Team 1: Lauren Pan (Toy car modification robot) Team 2: Barry Xu (DIY robot) Team 3: Daniel (2WD Mobile robot kit) Team 4: Zhang Chen (Andriod control HCR) Team 5: Jiang Gui Long/Wu Tao/Zhang Jie ( Android Control HCR) Team 6: Rockets (Tank mobile robot) Team 7: Unknown (LEGO mobile robot) Team 8: Ricky Ye (HCR robot) Team 9: Ricky Ng-Adam (Autonomous robot toy car – ART) Team 10: Lutz Michaelis (Autonomous Beetleduino) Team 11: Paul Adams (Hoverbot Hubert) Team 12: Nelson Zhang (Autonomous Wall-E) Team 13: Lionello Lunesu (LEGO mobile robot) Team 14: David Li (Soccerbot) ]]>
June 8th, 2011 § 1 comment § permalink
Android Open Accessory Development Kit.
Android3.1平台(也向下移植到了Android2.3.4)引进了Android Open Accessory support,这使得外部USB硬件(An Android USB accessory)能够与Android设备在一个特殊的“accessory”模式下互相通信。当一个Android设备在这个accessory模式下时,接入的硬件作为一个USB host(为总线供电以及枚举设备),而Android设备作为一个USB设备来使用。Android USB附件是特别设计的,用以附加在支持Android平台的硬件设备上并且遵守一个简单的附件协议(Android accessory protocol)使他们能够侦测支持附件模式的Android硬件设备。工作坊是每周举行的(目前是英语教学)。我们将探索包括开发Android软件部分和单片机部分,涉及到的方面包括机器人的机械,电子以及软件工程学。 特别的,我们将一起研究那些兼容ADK的硬件开发板,比如Google IOIO board和Seeedstudio提供的新硬件。 付费的新车间会员可以免费参加。非会员需要支付50元/次。 更多的信息请查看“Android & Robots” wiki. 不要忘了做好准备工作以及加入我们的[email protected] mailing list!注意,这是一个需要大家合作的讨论会,我们希望每个人都能积极的参与和贡献自己的力量。 ]]>
May 25th, 2011 § 2 comments § permalink
May 9th, 2011 § 1 comment § permalink
周日的虫虫工作坊有13人参与,10个小朋友加上家长,很热闹,很愉快的周日下午!
]]>
May 6th, 2011 § 0 comments § permalink
遥控小车的改造 May 3rd, 2011
今天完成了遥控车的改造,这是自主控制的第一步。这辆车是在淘宝上买的,结构很简单,控制很简陋。方向就是将电机打死,这时候电流会非常大,而且对于将来的自主移动的精细控制带来不利因素。所以很早就想把它改成舵机控制的了,下面就是整个改造的过程。
这就是需要改造的部分。
先将需要改造的部分画下来,便于设计框架结构。我不是机械出身的,所以就画个大概吧。
结构图完成
在图纸上设计新的结构
根据设计切割材料
最后完成的样子,由于是临时电路,也就没固定,看上去有点像垃圾车-_-b
改造部分的特写
再来一张
这些只是机械部份,然后就是控制部份。由于舵机能够转动的角度范围到180度,而该车的转向轮仅能转动在30-40度之间。同时,自主移动机器人目标是在Arduino上面开发。所以我就一步到位,先用Arduino读取天地飞的pwm信号,然后经过转换,输出新的pwm信号给舵机,这样就不会因为卡住而损坏舵机了。
最后效果如下
http://v.youku.com/v_show/id_XMjYzOTc2NzA4.html
使用的程序非常简单,如下:
#include <Servo.h> //Author: HE Qichen //Date: 2011-5-3 //Website: http://gaishi.vicp.net //Email: heqichen(a)gaishi.vicp.net Servo directionServo; void setup() { pinMode(2, INPUT); directionServo.attach(3); } void loop() { int t, a; t = pulseIn(2, HIGH); a = map(t, 1000, 2000, 65, 115); directionServo.write(a); }]]>
May 6th, 2011 § 1 comment § permalink
Arduino读取g-sensor数据 May 2nd, 2011
在四轴飞行器上除了要有陀螺仪外,还要有个重要的传感器就是重力传感器。由于它们各自的误差,若使用单一的传感器会造成严重的精读问题,使飞行器丧失稳定性。所以要用两个传感器进行相互矫正。
现在重力传感器应用非常广,目前iphone等智能手机上都有重力传感器,包括笔者的一台山寨手机上都有重力传感器。
这次就是要用Android来读取重力传感器的数据。这个重力传感器模块是从淘宝购买的,模块非常简单,自己够买芯片来焊接也不成问题。根据它的datasheet,就能够知道如何使用这款重力加速度模块了。下面就进行详细的介绍
这个模块使用的芯片型号是MMA7260Q,(datasheet下载[PDF,229KB]),测试中的电路就是下面图片中的样子
控制的目标是通过重力传感器的数据来控制舵机的转动。但是发现会有少量的抖动,于是在程序中加入了一个简单的滤波器,阶数没有仔细调,但是基本上能够进行控制了。
http://v.youku.com/v_show/id_XMjYzNjIyODIw.html
下面是芯片的特写
下面是用到的代码
#include <Servo.h> //Author: HE Qichen //Email: heqichen(a)gaishi.vicp.net //Website: http://gaishi.vicp.net //Date: 2011-5-2 #define FILTER_LEVEL 3 class Filter { private: int buffer[FILTER_LEVEL]; public: Filter() { int i; for (i=0; i<FILTER_LEVEL; ++i) { buffer[i] = 0; } } int filter(int value) { int i; int sum; for (i=0; i<FILTER_LEVEL-1; ++i) { buffer[i] = buffer[i+1]; } buffer[FILTER_LEVEL-1] = value; sum = 0; for (i=0; i<FILTER_LEVEL; ++i) { sum += buffer[i]; } return sum / FILTER_LEVEL; } }; Servo testServo; Filter xFilter, yFilter, zFilter; void setup() { Serial.begin(9600); testServo.attach(2); } void loop() { int gx, gy, gz; gx = analogRead(A0); gy = analogRead(A1); gz = analogRead(A2); Serial.print("x: "); Serial.print(gx, DEC); Serial.print(" y: "); Serial.print(gy, DEC); Serial.print(" z: "); Serial.println(gz, DEC); int fgx, fgy, fgz; fgx = xFilter.filter(gx); fgy = yFilter.filter(gy); fgz = zFilter.filter(gz); Serial.print(" fx: "); Serial.print(fgx, DEC); Serial.print(" fy: "); Serial.print(fgy, DEC); Serial.print(" fz: "); Serial.println(fgz, DEC); testServo.write((fgz-100)/3); //delay(10); }]]>
May 6th, 2011 § 0 comments § permalink
嵌入之梦-圆梦小车开发 May 1st, 2011
今天看到一台嵌入之梦的小车,但是上电之后发了疯似的乱跑,所以刷之。但新车间却没有网络,没办法,自己一点一点试。。结果如下
CT1 接受pwm,控制速度 CT2 前进控制信号,高电位转动 CT3 后退控制信号,高电位转动
但是由于小车上的UNO与我的Ubuntu连接有问题,貌似只有Windows是好的,Mac OS有时也会出问题。所以最后车上改用了Mega 1280。
但是又发现一个问题,就是Arduino使用USB供电的时候很正常,然而,使用车上接出来的5V电源时,程序就会混乱,完全没有一点规律。猜测可能是由于电机转动导致整个系统的电压下降,无法提供足够的电压给Arduino的板子上。这大概也是之前uno不会发疯的原因。没办法,在小车上再接一块9V层叠式电池,作为Arduino的电源。最后终于行了。
后面程序的作用是往前走,遇到前方有物体是后退,打弯,然后继续往前,一个简单的壁障程序。没有用到速度控制。下面就是这个小车最后的样子,手机拍的,将就看吧
左侧照
右侧照
再来一张
http://v.youku.com/v_show/id_XMjYzMzY0NzA0.html用到的程序就是下面的
//Author: HE Qichen //Email: heqichen(a)gaishi.vicp.net //Website: http://gaishi.vicp.net //Date: 2011-5-1 int status; #define LEFT_SPEED 6 #define LEFT_FORWARD 7 #define LEFT_BACKWARD 8 #define RIGHT_SPEED 10 #define RIGHT_FORWARD 11 #define RIGHT_BACKWARD 12 #define ULTRASONIC_ECHO 3 #define ULTRASONIC_TRIG 4 #define NORMAL_SPEED 100 #define STOP_SPEED 0 void setup() { Serial.begin(9600); setupMove(); setupUltrasonic(); } void loop() { unsigned int d; moveForward(); d = readDistance(); Serial.println(d, DEC); if (d < 700) { moveBackward(); delay(500); turnLeft(); delay(200); } } void moveForward() { analogWrite(LEFT_SPEED, NORMAL_SPEED); digitalWrite(LEFT_BACKWARD, LOW); digitalWrite(LEFT_FORWARD, HIGH); analogWrite(RIGHT_SPEED, NORMAL_SPEED); digitalWrite(RIGHT_BACKWARD, LOW); digitalWrite(RIGHT_FORWARD, HIGH); } void moveBackward() { analogWrite(LEFT_SPEED, NORMAL_SPEED); digitalWrite(LEFT_BACKWARD, HIGH); digitalWrite(LEFT_FORWARD, LOW); analogWrite(RIGHT_SPEED, NORMAL_SPEED); digitalWrite(RIGHT_BACKWARD, HIGH); digitalWrite(RIGHT_FORWARD, LOW); } void turnLeft() { analogWrite(LEFT_SPEED, NORMAL_SPEED); digitalWrite(LEFT_BACKWARD, HIGH); digitalWrite(LEFT_FORWARD, LOW); analogWrite(RIGHT_SPEED, NORMAL_SPEED); digitalWrite(RIGHT_BACKWARD, LOW); digitalWrite(RIGHT_FORWARD, HIGH); } void turnRight() { analogWrite(LEFT_SPEED, NORMAL_SPEED); digitalWrite(LEFT_BACKWARD, LOW); digitalWrite(LEFT_FORWARD, HIGH); analogWrite(RIGHT_SPEED, NORMAL_SPEED); digitalWrite(RIGHT_BACKWARD, HIGH); digitalWrite(RIGHT_FORWARD, LOW); } void moveStop() { analogWrite(LEFT_SPEED, STOP_SPEED); digitalWrite(LEFT_BACKWARD, LOW); digitalWrite(LEFT_FORWARD, LOW); analogWrite(RIGHT_SPEED, STOP_SPEED); digitalWrite(RIGHT_BACKWARD, LOW); digitalWrite(RIGHT_FORWARD, LOW); } void setupMove() { pinMode(LEFT_SPEED, OUTPUT); pinMode(LEFT_FORWARD, OUTPUT); pinMode(LEFT_BACKWARD, OUTPUT); pinMode(RIGHT_SPEED, OUTPUT); pinMode(RIGHT_FORWARD, OUTPUT); pinMode(RIGHT_BACKWARD, OUTPUT); analogWrite(LEFT_SPEED, STOP_SPEED); digitalWrite(LEFT_FORWARD, LOW); digitalWrite(LEFT_BACKWARD, LOW); analogWrite(RIGHT_SPEED, STOP_SPEED); digitalWrite(RIGHT_FORWARD, LOW); digitalWrite(RIGHT_BACKWARD, LOW); } unsigned int readDistance() { int duration; digitalWrite(ULTRASONIC_TRIG, LOW); delayMicroseconds(2); digitalWrite(ULTRASONIC_TRIG, HIGH); delayMicroseconds(5); digitalWrite(ULTRASONIC_TRIG, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. duration = pulseIn(ULTRASONIC_ECHO, HIGH); return duration; } void setupUltrasonic() { pinMode(ULTRASONIC_TRIG, OUTPUT); pinMode(ULTRASONIC_ECHO, INPUT); digitalWrite(ULTRASONIC_TRIG, LOW); }]]>
April 30th, 2011 § 0 comments § permalink
Ricky just make an update on his quest to streaming video from Android.
element14: XinCheJian GGHC: XinCheJian coming out of the depths of video streaming from Android!: “”
]]>