返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 35994|回复: 25
打印 上一主题 下一主题

[表盘讨论] 麦步手表+ESP8266玩小车控制

[复制链接]

2

主题

8

帖子

432

麦力

精华
1
阅读权限
20
在线时间
14 小时

跳转到指定楼层
楼主
发表于 2017-5-30 21:08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 沧海笑1122 于 2017-5-30 21:30 编辑

【麦步手表+ESP8266玩小车控制】
【麦步手表是什么】
是一块国产智能手表,墨水屏,超长待机,通过蓝牙与手机连接。并且提供http方式与单片机通信并且传递数据。手表搭载三轴传感器。并且有四个按键作为用户对话。
【整体想法】
    本身这个玩具的想法来自于麦步手表的一篇评测文。用麦步手表+ARDUINO UNO(及以太网卡)控制LED灯。
    既然是以太网卡可以,那么我想,esp8266当然也可以。既然是LED可以(写数字口嘛),那么我想,小车控制也可以(数字口通过电机驱动板嘛)。。。所以就有了这个小玩具。
    基本思路:在esp8266上建立一个简单的httpserver,通过wifi---手机---BLE---maibu手表,将手表按键的控制参数传至esp8266,从而控制小车。

    看看定妆照。
【硬件】
1、D1 MINI(wemos esp8266)   1 片
2、D1 MINI 电源扩展板    1片
3、L293D电机驱动板  1块
4、小车平台  1套(含上面板、减速电机2只、底盘等)
5、maibu手表   1只

【软件】
1、maibu的配置文件appinfo.json
2、maibu手表的程序文件 maibu_esp8266_car_0522.mai
3、maibu手表的程序源码(C语言)maibu_esp8266_car_0522.c

推荐一篇文章,可以详细描述麦步手表如何通过http与单片机通信。
1、
搭建简易的物联网服务端和客户端-网络控制(二十)(作者:治电小白菜 )
2、arduino.cn社区的原文:
麦步手表加 Arduino 实现 led 开关的实验


【小车端代码基于esp8266,一些设计想法镶嵌在注释里面,希望对大家有所帮助吧】

复制代码
  1. /*CODE FROM:https://github.com/beadone/webserver_esp-12
  2. * 修改内容:用于maibu 手表控制小车
  3. * date:2017-05-22
  4. * by:沧海笑1122
  5. */

  6. #include <ESP8266WiFi.h>
  7. //wifi设置
  8. const char* ssid     = "your ssid";
  9. const char* password = "yourpsw ";

  10. //小车驱动设置
  11. /*
  12. int redPin = 15;  //GPIO15
  13. int greenPin = 12;  //GPIO12
  14. int bluePin = 13;  //GPIO13
  15. */
  16. int DEFAULT_SPEED = 200 ;//默认速度,max=255
  17. int inA = D8;
  18. int inB = D6;
  19. int pwmA = D7;
  20. int pwmB = D5;

  21. //小车反馈字头
  22. int carzt;//反馈到客户端的小车字头

  23. WiFiServer server(80);

  24. void setup() {
  25. Serial.begin(115200);
  26. delay(10);

  27. //小车控制pin设置
  28.    pinMode(inA, OUTPUT);
  29.    pinMode(inB, OUTPUT);
  30.    pinMode(pwmA, OUTPUT);
  31.    pinMode(pwmB, OUTPUT);
  32. /*
  33. pinMode(redPin, OUTPUT);
  34. pinMode(greenPin, OUTPUT);
  35. pinMode(bluePin, OUTPUT);
  36. */

  37. // Connect to WiFi network
  38. Serial.println();
  39. Serial.println();
  40. Serial.print("Connecting to ");
  41. Serial.println(ssid);

  42. WiFi.begin(ssid, password);

  43. while (WiFi.status() != WL_CONNECTED) {
  44. delay(500);
  45. Serial.print(".");
  46. }
  47. Serial.println("");
  48. Serial.println("WiFi connected");

  49. // Start the server
  50. server.begin();
  51. Serial.println("Server started");

  52. // Print the IP address
  53. Serial.print("Use this URL to connect: ");
  54. Serial.print("http://");
  55. Serial.print(WiFi.localIP());
  56. Serial.println("/");

  57. }

  58. void loop() {
  59. int carzt=0;

  60. // Check if a client has connected
  61. WiFiClient client = server.available();
  62. if (!client) {
  63. return;
  64. }

  65. // Wait until the client sends some data
  66. Serial.println("new client");
  67. while(!client.available()){
  68. delay(1);
  69. }

  70. // Read the first line of the request
  71.   String req = client.readStringUntil('\r');
  72.   Serial.println(req);
  73. client.flush();

  74. // Match the request

  75. if (req.indexOf("/F") != -1) {

  76. goForward();
  77. carzt = 1; //小车前进
  78. }
  79. if (req.indexOf("/B") != -1) {


  80. goBackward();
  81. carzt = 2; //小车后退
  82. }
  83. if (req.indexOf("/S") != -1) {

  84. stop();
  85. carzt = 0; //小车停止
  86. }

  87. // Return the response
  88. client.println("HTTP/1.1 200 OK");
  89. client.println("Content-Type: application/json");
  90. client.println();
  91. client.println("{");
  92.             //  int sensorReading = analogRead(1);
  93. client.print("\"car");
  94. client.print("\": ");
  95. client.print(carzt);
  96. client.println("\n}");
  97. // break;


  98. delay(1);
  99. Serial.println("Client disonnected");
  100. Serial.println("");

  101. }

  102. void goForward()//小车前进
  103. {

  104.     digitalWrite(inA,HIGH);
  105.     digitalWrite(inB,HIGH);
  106.     analogWrite(pwmA,DEFAULT_SPEED);
  107.     analogWrite(pwmB,DEFAULT_SPEED);
  108.    
  109.   }

  110. void goBackward()//小车后退
  111. {
  112.     digitalWrite(inA,LOW);
  113.     digitalWrite(inB,LOW);
  114.     analogWrite(pwmA,DEFAULT_SPEED);
  115.     analogWrite(pwmB,DEFAULT_SPEED);
  116. }


  117. void stop()//小车停止
  118. {
  119.      /*disable the enble pin, to stop the motor. */
  120.     digitalWrite(inA,LOW);
  121.     digitalWrite(inB,LOW);
  122.     analogWrite(pwmA,0);
  123.     analogWrite(pwmB,0);
  124.   }

复制代码

视频参考:


【小结】
     使用智能手表+wifi网络+手机(作为服务器)与单片机通信,以驱动小车平台。是一种有趣的玩法。可惜目前只有四个键,所以小车转向的问题留待下一步研究。
     本来有设想,将手表的三轴数据送下来,解析后控制小车转向,因为我在测试蓝宙altar平台时做过一个体感遥控器,有一定的技术积累。可惜看了手册后,遇到了与其他师兄同样的问题,手表发出web请求的最小间隔是5秒,这样我的想法可能就没法实现了。只好换一种思路来考虑。
    本文是抛砖引玉的玩具,在试验过程中原先考虑用esp32来驱动小车,可惜开了几路gpio后就出现崩溃,可能还需要对esp32进行进一步学习和了解。相比之下esp8266的资料就丰富得多,所以建立一个http server后,很方便地用手表---手机---路由器来访问esp8266,传送各个控制命令,从而驱动小车前进、后退和停止。


    下一步希望能够和治电小白菜师兄一样,进行一些物联网有趣的玩法。
【感谢】
感谢版主Automan师兄,提供了麦步控制led的全部代码,这个小玩具就是建立在师兄们的代码上。
感谢arduino.cn社区的孝肃师兄。
端午安康。
沧海抱拳。


文后附上手表端的代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1麦力 +100 收起 理由
不贰小 + 100 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信 WeiboWeibo
收藏收藏1 分享分享 顶7 踩

5

主题

260

帖子

4071

麦力

精华
0
阅读权限
50
在线时间
187 小时

沙发
发表于 2017-5-30 21:23:31 来自手机 | 只看该作者
牛人

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

板凳
发表于 2017-5-30 21:31:48 | 只看该作者
动手能力挺强的。

1

主题

136

帖子

4796

麦力

精华
0
阅读权限
50
在线时间
273 小时

地板
发表于 2017-5-30 22:31:20 | 只看该作者
牛人!
这样强大的动手能力,我还扶什么过马路的老奶奶?就服你!

1

主题

136

帖子

4796

麦力

精华
0
阅读权限
50
在线时间
273 小时

5#
发表于 2017-5-30 22:34:57 | 只看该作者
@不贰小 这才是麦步的高阶玩法,彰显“极客”精神,应该加精。
麦步正是因为拥有拓展性才显得和小黑3之类不同,也是我们购买麦步的终极原因。

26

主题

792

帖子

1万

麦力

精华
1
阅读权限
100
在线时间
691 小时

麦步手表用户麦步工业测评协会

6#
发表于 2017-5-30 22:58:59 | 只看该作者
厉害了我的哥!

23

主题

1532

帖子

9071

麦力

精华
0
阅读权限
80
在线时间
103 小时

7#
发表于 2017-5-31 00:39:51 | 只看该作者
不懂帮顶
回复

使用道具 举报

5

主题

174

帖子

2456

麦力

精华
2
阅读权限
50
在线时间
187 小时

8#
发表于 2017-5-31 07:58:50 | 只看该作者
总算见到个像样的东西了。。。

6

主题

54

帖子

1436

麦力

精华
1
阅读权限
30
在线时间
51 小时

9#
发表于 2017-5-31 08:08:30 | 只看该作者
本帖最后由 doming1020 于 2017-5-31 08:10 编辑

顶,还有2个红外测距的,把返回数据显示表上还要好看些~。怎么不利用表的陀螺仪来控制小车?

166

主题

867

帖子

9515

麦力

精华
3
阅读权限
80
在线时间
465 小时

10#
发表于 2017-5-31 09:38:54 | 只看该作者
有这么好的编程能力,不知道是否可以做个彩屏手表的模拟器出来啊?感觉对大家来说更实用些。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-4-25 19:56 , Processed in 0.107352 second(s), 26 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

快速回复 返回顶部 返回列表