查看: 5406|回复: 3

【麦步手表+FireBeetle Board-ESP32】控制LED灯

[复制链接]
  • TA的每日心情
    开心
    2018-11-28 10:20
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2017-5-30 22:04 | 显示全部楼层 |阅读模式
    本帖最后由 沧海笑1122 于 2017-5-30 22:07 编辑

    【麦步手表+FireBeetle Board-ESP32】控制LED灯
    今天晚上发了一个分享帖:麦步手表+ESP8266玩小车控制
    关于本文的所有软硬件情况、玩具的原理请参见上帖。

    ESP32.jpg

    这不是一篇水帖,其实在此之前,我是先用esp32进行了测试,并且希望直接驱动小车,可惜在测试过程中,发生cpu崩溃。说明我对esp32的学习了解还不够。但是,同样的原理驱动led是没有问题的。所以这篇小文是一个桥梁,希望详细了解控制原理的玩家,请参考原贴。

    基本思路:在esp32上建立一个基于wifi的简单的http server,通过esp32(wifi)--路由器---手机---(BLE)---maibu手表,将手表按键的控制参数传至esp32,从而控制led灯。


    直接上代码吧:[kenrobot_code]/*
      WiFi Web Server LED Blink

    A simple web server that lets you blink an LED via the web.
    This sketch will print the IP address of your WiFi Shield (once connected)
    to the Serial monitor. From there, you can open that address in a web browser
    to turn on and off the LED on pin 5.

    If the IP address of your shield is yourAddress:
    http://yourAddress/H turns the LED on
    http://yourAddress/L turns it off

    This example is written for a network using WPA encryption. For
    WEP or WPA, change the Wifi.begin() call accordingly.

    Circuit:
    * WiFi shield attached
    * LED attached to pin 5

    created for arduino 25 Nov 2012
    by Tom Igoe

    ported for sparkfun esp32
    31.01.2017 by Jan Hendrik Berlin

    根据此示例改编了小车控制程序。
    date:2017-05-20http://192.168.0.144/F led--d2(gpio25)
    http://192.168.0.144/B led--d3(gpio26)
    http://192.168.0.144/S led--d4(gpio27)
    */

    #include <WiFi.h>

    const char* ssid     = "your ssid";
    const char* password = "your psw";


    WiFiServer server(80);

    void setup()
    {
        Serial.begin(115200);
        delay(10);
        // We start by connecting to a WiFi network

        Serial.println();
        Serial.println();
        Serial.print("Connecting to ");
        Serial.println(ssid);
        delay(10);
        WiFi.begin(ssid, password);

        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
        }

        Serial.println("");
        Serial.println("WiFi connected");
        Serial.println("IP address: ");
        Serial.println(WiFi.localIP());
       
        server.begin();

        pinMode(D2, OUTPUT);      // led红,
        pinMode(D3, OUTPUT);      // led绿,
        pinMode(D4, OUTPUT);      // led蓝,
      
       
    }

    //int value = 0;

    void loop(){
      int carzt=0;
    WiFiClient client = server.available();   // listen for incoming clients

      if (client) {                             // if you get a client,
        Serial.println("new client");           // print a message out the serial port
        String currentLine = "";                // make a String to hold incoming data from the client
        while (client.connected()) {            // loop while the client's connected
          if (client.available()) {             // if there's bytes to read from the client,
            char c = client.read();             // read a byte, then
            Serial.write(c);                    // print it out the serial monitor
            if (c == '\n') {                    // if the byte is a newline character

              // if the current line is blank, you got two newline characters in a row.
              // that's the end of the client HTTP request, so send a response:
              if (currentLine.length() == 0) {
                // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
                // and a content-type so the client knows what's coming, then a blank line:
               client.println("HTTP/1.1 200 OK");
               client.println("Content-Type: application/json");
               client.println();
               client.println("{");
               client.print("\"car");
               client.print("\": ");
               client.print(carzt);
               client.println("\n}");
              break;
              } else {    // if you got a newline, then clear currentLine:
                currentLine = "";
              }
            } else if (c != '\r') {  // if you got anything else but a carriage return character,
              currentLine += c;      // add it to the end of the currentLine
            }

            // Check to see if the client request was "GET /F" 、 "GET /B"or"GET /S"
            if (currentLine.endsWith("GET /F")) {
             
              digitalWrite(25, HIGH);               // 点亮
              delay(1000);
              digitalWrite(25, LOW);               // 熄灭
             
          
              carzt=1;
            }
            if (currentLine.endsWith("GET /B")) {
             
              digitalWrite(26, HIGH);               // 点亮
              delay(1000);
              digitalWrite(26, LOW);               // 熄灭
             
            
              carzt=2;
            }
            if (currentLine.endsWith("GET /S")) {
             
              digitalWrite(27, HIGH);               // 点亮
              delay(1000);
              digitalWrite(27, LOW);               // 熄灭
             
            
              carzt=0;
            }
          }
        }
        // close the connection:
        client.stop();
        Serial.println("client disonnected");
      }
    }

    [/kenrobot_code]

    【感谢】
    感谢dfrobot,感谢arduino.cn。这段时间沧海在社区参与了多个产品的评测,结识了很多优秀的玩家,感谢大家对我的支持和关注。我也向社区、向大家学习了很多东西。
    祝社区越办越好,祝dfrobot事业蒸蒸日上。
    沧海抱拳!端午安康。。

    ESP32_1.PNG
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2018-6-16 16:25
  • 签到天数: 777 天

    [LV.10]以坛为家III

    发表于 2017-6-1 07:17 | 显示全部楼层
    驱动小车确实有点小马拉大车的感觉。希望后续有关麦步手表经蓝牙传输图片到单片机SD卡或者返向过程,最近在研究蓝牙图片传输到手机,如果传到麦步手表就更好了
  • TA的每日心情
    开心
    2018-1-15 23:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-1-15 23:44 | 显示全部楼层

    感谢您的分享!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    关于arduino编译问题
    关于arduino编译问题
    编译示例程序老是这个问题,换了电脑都不行
    莫名乱码 —— Arduino+RFID-RC522 读写实验
    莫名乱码 —— Arduino+RF
    目标:想把自己房间门改成感应门锁 器材:Arduino Uno (淘宝七星虫LY-F2)、RFID-RC
    [blinker开发实战2]数据反馈
    [blinker开发实战2]数据反
    [md] ### 添加DIY组件 在编辑模式下,点击按键进入编辑组件页面,可以看到 **按键
    用Arduino控制PS2无线手柄为什么一直连接不上
    用Arduino控制PS2无线手柄
    用Arduino UNO板 连接PS2手柄接收器,为什么指示灯已经显示对接上了,但是打开串口监
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表