沧海笑1122 发表于 2017-5-30 21:08:57

麦步手表+ESP8266玩小车控制

本帖最后由 沧海笑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.json2、maibu手表的程序文件 maibu_esp8266_car_0522.mai3、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社区的孝肃师兄。端午安康。沧海抱拳。

文后附上手表端的代码。

tghtom 发表于 2017-5-30 21:23:31

牛人

qs100371 发表于 2017-5-30 21:31:48

动手能力挺强的。

色熊猫_eiPK7 发表于 2017-5-30 22:31:20

牛人!
这样强大的动手能力,我还扶什么过马路的老奶奶?就服你!

色熊猫_eiPK7 发表于 2017-5-30 22:34:57

@不贰小 这才是麦步的高阶玩法,彰显“极客”精神,应该加精。
麦步正是因为拥有拓展性才显得和小黑3之类不同,也是我们购买麦步的终极原因。

tda8361 发表于 2017-5-30 22:58:59

厉害了我的哥!

细川玉木 发表于 2017-5-31 00:39:51

不懂帮顶

reerayxia 发表于 2017-5-31 07:58:50

总算见到个像样的东西了。。。

doming1020 发表于 2017-5-31 08:08:30

本帖最后由 doming1020 于 2017-5-31 08:10 编辑

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

多情的男人 发表于 2017-5-31 09:38:54

有这么好的编程能力,不知道是否可以做个彩屏手表的模拟器出来啊?感觉对大家来说更实用些。
页: [1] 2 3
查看完整版本: 麦步手表+ESP8266玩小车控制