麦步社区-论坛
标题: 麦步手表+ESP8266玩小车控制 [打印本页]
作者: 沧海笑1122 时间: 2017-5-30 21:08
标题: 麦步手表+ESP8266玩小车控制
本帖最后由 沧海笑1122 于 2017-5-30 21:30 编辑
【麦步手表+ESP8266玩小车控制】
【麦步手表是什么】
是一块国产智能手表,墨水屏,超长待机,通过蓝牙与手机连接。并且提供http方式与单片机通信并且传递数据。手表搭载三轴传感器。并且有四个按键作为用户对话。
[attach]8004[/attach]
【整体想法】
本身这个玩具的想法来自于麦步手表的一篇评测文。用麦步手表+ARDUINO UNO(及以太网卡)控制LED灯。
既然是以太网卡可以,那么我想,esp8266当然也可以。既然是LED可以(写数字口嘛),那么我想,小车控制也可以(数字口通过电机驱动板嘛)。。。所以就有了这个小玩具。
[attach]8003[/attach]
基本思路:在esp8266上建立一个简单的httpserver,通过wifi---手机---(BLE)---maibu手表,将手表按键的控制参数传至esp8266,从而控制小车。
看看定妆照。
[attach]8002[/attach]
【硬件】
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,一些设计想法镶嵌在注释里面,希望对大家有所帮助吧】
- /*CODE FROM:https://github.com/beadone/webserver_esp-12
- * 修改内容:用于maibu 手表控制小车
- * date:2017-05-22
- * by:沧海笑1122
- */
- #include <ESP8266WiFi.h>
- //wifi设置
- const char* ssid = "your ssid";
- const char* password = "yourpsw ";
- //小车驱动设置
- /*
- int redPin = 15; //GPIO15
- int greenPin = 12; //GPIO12
- int bluePin = 13; //GPIO13
- */
- int DEFAULT_SPEED = 200 ;//默认速度,max=255
- int inA = D8;
- int inB = D6;
- int pwmA = D7;
- int pwmB = D5;
- //小车反馈字头
- int carzt;//反馈到客户端的小车字头
- WiFiServer server(80);
- void setup() {
- Serial.begin(115200);
- delay(10);
- //小车控制pin设置
- pinMode(inA, OUTPUT);
- pinMode(inB, OUTPUT);
- pinMode(pwmA, OUTPUT);
- pinMode(pwmB, OUTPUT);
- /*
- pinMode(redPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
- pinMode(bluePin, OUTPUT);
- */
- // Connect to WiFi network
- Serial.println();
- Serial.println();
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- // Start the server
- server.begin();
- Serial.println("Server started");
- // Print the IP address
- Serial.print("Use this URL to connect: ");
- Serial.print("http://");
- Serial.print(WiFi.localIP());
- Serial.println("/");
- }
- void loop() {
- int carzt=0;
- // Check if a client has connected
- WiFiClient client = server.available();
- if (!client) {
- return;
- }
- // Wait until the client sends some data
- Serial.println("new client");
- while(!client.available()){
- delay(1);
- }
- // Read the first line of the request
- String req = client.readStringUntil('\r');
- Serial.println(req);
- client.flush();
- // Match the request
- if (req.indexOf("/F") != -1) {
- goForward();
- carzt = 1; //小车前进
- }
- if (req.indexOf("/B") != -1) {
- goBackward();
- carzt = 2; //小车后退
- }
- if (req.indexOf("/S") != -1) {
- stop();
- carzt = 0; //小车停止
- }
- // Return the response
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: application/json");
- client.println();
- client.println("{");
- // int sensorReading = analogRead(1);
- client.print("\"car");
- client.print("\": ");
- client.print(carzt);
- client.println("\n}");
- // break;
- delay(1);
- Serial.println("Client disonnected");
- Serial.println("");
- }
- void goForward()//小车前进
- {
-
- digitalWrite(inA,HIGH);
- digitalWrite(inB,HIGH);
- analogWrite(pwmA,DEFAULT_SPEED);
- analogWrite(pwmB,DEFAULT_SPEED);
-
- }
- void goBackward()//小车后退
- {
- digitalWrite(inA,LOW);
- digitalWrite(inB,LOW);
- analogWrite(pwmA,DEFAULT_SPEED);
- analogWrite(pwmB,DEFAULT_SPEED);
- }
- void stop()//小车停止
- {
- /*disable the enble pin, to stop the motor. */
- digitalWrite(inA,LOW);
- digitalWrite(inB,LOW);
- analogWrite(pwmA,0);
- analogWrite(pwmB,0);
- }
复制代码
视频参考:
【小结】
使用智能手表+wifi网络+手机(作为服务器)与单片机通信,以驱动小车平台。是一种有趣的玩法。可惜目前只有四个键,所以小车转向的问题留待下一步研究。
本来有设想,将手表的三轴数据送下来,解析后控制小车转向,因为我在测试蓝宙altar平台时做过一个体感遥控器,有一定的技术积累。可惜看了手册后,遇到了与其他师兄同样的问题,手表发出web请求的最小间隔是5秒,这样我的想法可能就没法实现了。只好换一种思路来考虑。
本文是抛砖引玉的玩具,在试验过程中原先考虑用esp32来驱动小车,可惜开了几路gpio后就出现崩溃,可能还需要对esp32进行进一步学习和了解。相比之下esp8266的资料就丰富得多,所以建立一个http server后,很方便地用手表---手机---路由器来访问esp8266,传送各个控制命令,从而驱动小车前进、后退和停止。
http://player.youku.com/player.php/sid/XMjc5NDUyNDk5Ng==/v.swf
下一步希望能够和治电小白菜师兄一样,进行一些物联网有趣的玩法。
【感谢】
感谢版主Automan师兄,提供了麦步控制led的全部代码,这个小玩具就是建立在师兄们的代码上。
感谢arduino.cn社区的孝肃师兄。
端午安康。
沧海抱拳。
文后附上手表端的代码。
[attach]8007[/attach]
作者: tghtom 时间: 2017-5-30 21:23
牛人
作者: qs100371 时间: 2017-5-30 21:31
动手能力挺强的。
作者: 色熊猫_eiPK7 时间: 2017-5-30 22:31
牛人!
这样强大的动手能力,我还扶什么过马路的老奶奶?就服你!
作者: 色熊猫_eiPK7 时间: 2017-5-30 22:34
@不贰小 这才是麦步的高阶玩法,彰显“极客”精神,应该加精。
麦步正是因为拥有拓展性才显得和小黑3之类不同,也是我们购买麦步的终极原因。
作者: tda8361 时间: 2017-5-30 22:58
厉害了我的哥!
作者: 细川玉木 时间: 2017-5-31 00:39
不懂帮顶
作者: reerayxia 时间: 2017-5-31 07:58
总算见到个像样的东西了。。。
作者: doming1020 时间: 2017-5-31 08:08
本帖最后由 doming1020 于 2017-5-31 08:10 编辑
顶,还有2个红外测距的,把返回数据显示表上还要好看些~。怎么不利用表的陀螺仪来控制小车?
作者: 多情的男人 时间: 2017-5-31 09:38
有这么好的编程能力,不知道是否可以做个彩屏手表的模拟器出来啊?感觉对大家来说更实用些。
作者: 沧海笑1122 时间: 2017-5-31 10:20
谢谢。我刚开始就想过用麦步的三轴传感器遥控,我自己以前也写过一个体感遥控器,可是麦步web请求最小间隔是5S,这样的间隔控制小车就不可行了。可能我对麦步的认识还不够深,也期待得到大家的指导。
作者: niuniumm 时间: 2017-5-31 10:26
好帖,赞一个,顶楼主
作者: cw2549 时间: 2017-5-31 10:48
感觉高大上
作者: 雪山飞狐 时间: 2017-5-31 13:07
赞大神
作者: 机器猫 时间: 2017-5-31 15:36
牛人啊,不明觉厉
作者: mrj频道 时间: 2017-5-31 15:50
这就牛叉了
作者: mark 时间: 2017-5-31 18:19
牛的一塌糊涂
作者: sure 时间: 2017-6-1 11:36
牛叉!!
作者: zzes0312 时间: 2017-6-9 18:57
其实一直想搞到arduino的esp8266库。。。
作者: 灿烂的浮夸 时间: 2017-6-10 20:51
麦步收了他吧
作者: 沧海笑1122 时间: 2017-6-12 10:23
esp8266的玩法很多,目前我认为比较容易上手的就是把它当做一片arduino玩,也就是用arduino ide for esp8266,而不是把它当做一个串口通信模块。
作者: zzes0312 时间: 2017-6-12 10:42
好吧 我以为你是当串口模块用的0,0 嘿嘿
作者: mtlsc 时间: 2017-7-28 17:37
牛人,麦步可以考虑招人了
作者: wonderfarm 时间: 2017-7-31 12:16
卧槽!膜拜大神~
作者: reerayxia 时间: 2017-8-28 12:36
牢骚几句。
家里有控制终端的话,如果是直接手表来控制设备,大家可能考虑麦步的可能性会多一点
现在,中间加一个麦步APP,需要一部手机,很是尴尬。
再次PS一下,麦步手表内部的API,尤其是图形API很一般,季克门看不上吧。
作者: 兵人阿里 时间: 2019-10-4 21:52
神人啊66666
欢迎光临 麦步社区-论坛 (http://bbs.maibu.cc/) |
Powered by Discuz! X3.2 |