16690浏览
查看: 16690|回复: 13

桌面级植物宠物机器人扩比原型机初稿

[复制链接]
项目简介:通过将电子宠物与智能花盆相结合,不仅给机器人本身赋予了生命的特征,同时也能将植物无声的情感通过机器人来表达,以猫为原型,试图用猫的动作来表现植物的状态,并使用户与植物之间有更多交互的方式。
56bdeb43034047caa7df0b982f619e39.gif 6c9fd09d89db4c868d08418855263204.gif
核心功能介绍:一.喂水。当土壤湿度传感器检测到植物缺水时,NEKO会用realsense自己找人,并把水盆“叼”到用户面前,同时会通过耳朵和尾巴等肢体语言向用户传达缺水的信息,让主人用水壶倒水。二.追光。平时NEKO会自己在桌面上有阳光的地方呆着,用户可以用专门的小手电来逗他,他会追着光照的地方跑去。三.充电。NEKO有一个自己的小房子,每天晚上会自己回去充电。并且如果某天光照不足,小房子里装有紫外线灯,会自动给植物补充光照。
展示1.jpg
传感器及控制器清单:模拟光线传感器*4,防跌落传感器*4,切诺基平台*1,舵机*5,迷你水泵*1,人体红外传感器*1,磁力传感器*1,土壤湿度传感器*1,Intel®RealSense (SR300) *1

模型制作:
建模:
微信图片_20170707100238.jpg
先来个立方体

微信图片_20170707100235.jpg
细节加点再

结构图1

结构图1
微信图片_20170707100231.jpg

然后把东西塞进去

打印1

打印1

打印2

打印2

切割打印

微信图片_20170707100412.jpg 微信图片_20170707100415.jpg 微信图片_20170707100409.jpg
拼粘上腻子

微信图片_20170707100405.jpg
喷漆上光油

微信图片_20170707100350.jpg 微信图片_20170707100341.jpg 微信图片_20170707100402.jpg
半组装(组装传感器)

1.jpg 2.jpg
传感器调试

IMG_20170701_190727.jpg
传感器+驱动系统调试

IMG_20170702_201928.jpg IMG_20170702_201907.jpg IMG_20170703_022437.jpg
整机测试

IMG_20170703_025342.jpg
组装

追光程序
光敏传感器位置(目前只用了三个,第四个用于降低误差,没有写入)
微信图片_20170707122040.png
  1. //pin脚
  2. int lgSP1=2;    //1号光敏
  3. int lgSP2=3;    //2号光敏
  4. int lgSP3=4;    //3号光敏
  5. //小车控制pin脚
  6. int speedPin_M1 = 5;     //M1 Speed Control
  7. int speedPin_M2 = 6;     //M2 Speed Control
  8. int directionPin_M1 = 4;     //M1 Direction Control
  9. int directionPin_M2 = 7;     //M1 Direction Control
  10. //光敏读数
  11. int lgS1;
  12. int lgS2;
  13. int lgS3;
  14. int LR;
  15. int FB;
  16. //环境光初始值
  17. int lgS10=0;
  18. int lgS20=0;
  19. int lgS30=0;
  20. //其他参数
  21. int threshold=100;//阙值
  22. int thresholdLR=200;
  23. int thresholdFBMin=100;
  24. int thresholdFBMax=300;
  25. int state=1;
  26. int advanceSpeed=200;
  27. int backSpeed=150;
  28. int turnSpeed=250;
  29. int moveState=0;//状态参数
  30. int period=30000;
  31. unsigned long time0;
  32. unsigned long time1;
  33. //*********************主程序*************************
  34. void setup() {
  35.   // put your setup code here, to run once:
  36.   pinMode(lgSP1,INPUT);
  37.   pinMode(lgSP2,INPUT);
  38.   pinMode(lgSP3,INPUT);
  39.   //环境光初始化
  40.   for(int i=0;i<20;i++){
  41.     lgS10=analogRead(lgSP1)+lgS10;
  42.     lgS20=analogRead(lgSP2)+lgS20;
  43.     lgS30=analogRead(lgSP3)+lgS30;
  44.     delay(10);
  45.   }
  46.   lgS10=lgS10/10;
  47.   lgS20=lgS20/10;
  48.   lgS30=lgS30/10;
  49.   //设置通信
  50.   Serial.begin(9600);
  51. }
  52. void loop() {
  53.   carStop();
  54.   
  55.   if(lgS1<threshold&&lgS2<threshold&&lgS3<threshold){//隔一段时间常态下更新光值
  56.     resetLight();
  57.   }
  58.   
  59.   //读取环境光值
  60.   lgS1=analogRead(lgSP1)-lgS10;
  61.   lgS2=analogRead(lgSP2)-lgS20;
  62.   lgS3=analogRead(lgSP3)-lgS30;
  63.   printLR();
  64.   printFB();
  65.   Serial.println("    无光");
  66.   while(lgS1>threshold||lgS2>threshold||lgS3>threshold){//环境光值变化大于阙值
  67.     delay(100);
  68.    
  69.     lgS1=analogRead(lgSP1)-lgS10;      //测量值减初始值
  70.     lgS2=analogRead(lgSP2)-lgS20;
  71.     LR=lgS1-lgS2;                      //左右光值差
  72.     //print0();printLR();printFB();
  73.     if(abs(LR)>thresholdLR){//左右光值差大于阙值
  74.       swerve();
  75.       moveState=1;          //行驶状态参数
  76.     }else{
  77.       carStop();
  78.       moveState=0;
  79.       printLR();
  80.       Serial.println("    左右正常");
  81.     }
  82.    
  83.     lgS1=analogRead(lgSP1)-lgS10;
  84.     lgS3=analogRead(lgSP3)-lgS30;
  85.     FB=lgS1-lgS3;
  86.     if(abs(FB)>thresholdFBMin&&abs(FB)<thresholdFBMax){//前后光值差大于阙值
  87.       walk();
  88.     }else if(moveState==1){
  89.       Serial.println("    转弯中");
  90.     }else
  91.       carStop();
  92.       printFB();
  93.       Serial.println("    前后正常");
  94.     }
  95.   }
  96.   
  97. //*********************函数*************************
  98. //-----------------环境光初始函数-----------------
  99. void resetLight(){
  100.   if(state==1){
  101.     time0= millis();
  102.     state=0;
  103.   }
  104.   time1=millis()-time0;//间隔一段时间
  105. //  Serial.print("time0=");
  106. //  Serial.print(time0);
  107. //  Serial.print("time1=");
  108. //  Serial.print(time1);
  109. //  Serial.println();
  110.   if(time1>period){//间隔一段时间后初始环境光
  111.       for(int i=0;i<10;i++){
  112.       lgS10=analogRead(lgSP1)+lgS10;
  113.       lgS20=analogRead(lgSP2)+lgS20;
  114.       lgS30=analogRead(lgSP3)+lgS30;
  115.       delay(10);
  116.       }
  117.       lgS10=lgS10/10;
  118.       lgS20=lgS20/10;
  119.       lgS30=lgS30/10;
  120.       state=1;
  121.       print0();
  122.       Serial.println(" success");
  123.     }
  124. }
  125. //-----------------打印函数-----------------
  126. void print0(){
  127.   Serial.print("lgS10=");
  128.   Serial.print(lgS10);
  129.   Serial.print(" ");
  130.   Serial.print("lgS20=");
  131.   Serial.print(lgS20);
  132.   Serial.print(" ");
  133.   Serial.print("lgS30=");
  134.   Serial.print(lgS30);
  135. }
  136. void printLR(){
  137.   Serial.print("lgS1=");
  138.   Serial.print(lgS1);
  139.   Serial.print(" ");
  140.   Serial.print("lgS2=");
  141.   Serial.print(lgS2);
  142.   Serial.print(" ");
  143.   Serial.print("LR=");
  144.   Serial.print(LR);
  145. }
  146. void printFB(){
  147.   Serial.print("lgS1=");
  148.   Serial.print(lgS1);
  149.   Serial.print(" ");
  150.   Serial.print("lgS3=");
  151.   Serial.print(lgS3);
  152.   Serial.print(" ");
  153.   Serial.print("FB=");
  154.   Serial.print(FB);
  155. }
  156. //-----------------光判断函数-----------------
  157. void swerve(){//转向判断函数
  158.   if(LR>10){
  159.     printLR();
  160.     Serial.println("  左转");
  161.     carTurnRight(turnSpeed,turnSpeed);
  162.     }else if(LR<-10){
  163.     printLR();
  164.     Serial.println("  右转");
  165.     carTurnLeft(turnSpeed,turnSpeed);
  166.   }
  167. }
  168. void walk(){//前进判断函数
  169.   if(FB>0){
  170.     printFB();
  171.     Serial.println("  前进");
  172.     carAdvance(advanceSpeed,advanceSpeed);
  173. //    isCliff=analogRead(distLPin);
  174. //    isCliff=analogRead(distRPin);
  175.   }else if(FB<0){
  176.     printFB();
  177.     Serial.println("  后退");
  178.     carBack(backSpeed,backSpeed);
  179.   }
  180. }
  181. //-----------------车运动函数-----------------
  182. void carStop(){                 //  Motor Stop
  183.   digitalWrite(speedPin_M2,0);
  184.   digitalWrite(directionPin_M2,LOW);   
  185.   digitalWrite(speedPin_M1,0);   
  186.   digitalWrite(directionPin_M1,LOW);   
  187. }   
  188. void carAdvance(int leftSpeed,int rightSpeed){         //Move FORkward
  189.   analogWrite (speedPin_M2,leftSpeed);              //PWM Speed Control
  190.   digitalWrite(directionPin_M2,LOW);   
  191.   analogWrite (speedPin_M1,rightSpeed);   
  192.   digitalWrite(directionPin_M1,HIGH);
  193. }
  194. void carBack(int leftSpeed,int rightSpeed){       //Move BACKrward
  195.   analogWrite (speedPin_M2,leftSpeed);
  196.   digitalWrite(directionPin_M2,HIGH);   
  197.   analogWrite (speedPin_M1,rightSpeed);   
  198.   digitalWrite(directionPin_M1,LOW);
  199. }
  200. void carTurnLeft(int leftSpeed,int rightSpeed){      //Turn Left
  201.   analogWrite (speedPin_M2,leftSpeed);
  202.   digitalWrite(directionPin_M2,HIGH);   
  203.   analogWrite (speedPin_M1,rightSpeed);   
  204.   digitalWrite(directionPin_M1,HIGH);
  205. }
  206. void carTurnRight(int leftSpeed,int rightSpeed){      //Turn Right
  207.   analogWrite (speedPin_M2,leftSpeed);
  208.   digitalWrite(directionPin_M2,LOW);   
  209.   analogWrite (speedPin_M1,rightSpeed);   
  210.   digitalWrite(directionPin_M1,LOW);
  211. }
复制代码

主程序:
微信截图_20170707121038.png
微信截图_20170707121006.png
微信截图_20170707121026.png
微信截图_20170707120906.png


总结:目前正在进一步完善初稿的程序和debug,有些传感器还没写入代码里,模型正在进一步缩小以更贴近初始尺寸,多舵机使用是一定要注意电压问题!这是从植物开始的生物义肢,希望大家可以喜欢我们的项目。



微信图片_20170707100430.jpg
微信图片_20170707100338.jpg
微信图片_20170707100353.jpg

luna  初级技神

发表于 2017-7-7 15:07:57

好萌!好可爱啊!!!!刚看到的完成品的时候还好奇是什么做的?最后发现是切诺基!从来没见过切诺基这么可爱~~太棒了!!!
回复

使用道具 举报

dsweiliang  初级技神

发表于 2017-7-8 10:37:35

luna 发表于 2017-7-7 15:07
好萌!好可爱啊!!!!刚看到的完成品的时候还好奇是什么做的?最后发现是切诺基!从来没见过切诺基这么可 ...

切诺基是谁?
回复

使用道具 举报

爱国者一号  初级技匠

发表于 2017-7-9 10:36:57

好有创意。机器人好可爱
回复

使用道具 举报

luna  初级技神

发表于 2017-7-11 10:26:24

切诺基是这个小车的学名啊~~就是这货啊~~
回复

使用道具 举报

NNN904  见习技师

发表于 2017-7-30 16:18:20

好可爱啊,有创意
回复

使用道具 举报

好奇吖斌  高级技师

发表于 2017-8-5 14:46:24

好萌,我喜欢:lol
回复

使用道具 举报

bingo925  学徒

发表于 2017-8-18 00:54:16

怎么样子可以联系到你们呢 想合作这款产品
回复

使用道具 举报

xiaobudian  见习技师

发表于 2017-10-24 02:40:04

萌宠。叫花精灵。自动化了,期待见到成品。
回复

使用道具 举报

一只人  学徒

发表于 2017-12-7 16:06:45

可以,功能很全,造型也可以
回复

使用道具 举报

苏苏苏  学徒

发表于 2018-10-11 22:11:50

你好,请问NEKO如何与水盆进行通信呢?获取水盆位置的方式? 谢谢!
回复

使用道具 举报

DFHk-Iek-iD  学徒 来自手机

发表于 2020-11-29 17:44:41

稀饭 发表于 2017-7-7 12:26
项目简介:通过将电子宠物与智能花盆相结合,不仅给机器人本身赋予了生命的特征,同时也能将植物无声的情感 ...

想要建模图纸,方便提供一下吗?
回复

使用道具 举报

DFHyn4_Aym  学徒

发表于 2021-3-10 15:43:20

太可了,(*╹▽╹*)。建模图纸和材料可以在你那儿购买么?
回复

使用道具 举报

DFHyn4_Aym  学徒

发表于 2021-3-10 16:17:16

可以使用mind+编程软件进行编程么?
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

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

硬件清单

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

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

mail