esp8266+点灯科技(blinker)遥控小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4338|回复: 2

[分享] esp8266+点灯科技(blinker)遥控小车

[复制链接]
发表于 2021-8-18 21:03 | 显示全部楼层 |阅读模式
本帖最后由 353529281 于 2021-8-28 19:07 编辑

我是新手,欢迎大家指出错误和缺点,共同进步,谢谢。
QQ图片20210818210418.jpg
  1. /*
  2. WIFI小车项目 20201年7月31日

  3. 功能:
  4. 1、监测温度湿度
  5. 2、用点灯APP控制小车四方向
  6. 3、用点灯APP控制小车速度
  7. 4、前进超声波测距

  8. 材料:
  9. ESP8266
  10. DHT11温湿度模块
  11. L298N模块
  12. HC-SR04超声波模块
  13. 小车底盘双电机
  14. 电池1块电压(6-12V)


  15. 作者:九洲创客
  16. QQ:353529281
  17. */
  18. #define BLINKER_WIFI   
  19. //引用库
  20. #include <Blinker.h>    //点灯科技库
  21. #include <DHT.h>        //DHT库
  22. #include <HCSR04.h>     //超声波库


  23. //点灯KEY设置,WIFI账号密码  
  24. char auth[] = "key";
  25. char ssid[] = "ssid";
  26. char pswd[] = "password";


  27. //新建超声波对象
  28. UltraSonicDistanceSensor distanceSensor(D0, D1);

  29. // 新建点灯组件对象
  30. BlinkerNumber Humi("humi");     //湿度
  31. BlinkerNumber Temp("temp");     //温度
  32. BlinkerButton Car1("btn-up");   //前进
  33. BlinkerButton Car2("btn-down");   //后退
  34. BlinkerButton Car3("btn-left");   //左转
  35. BlinkerButton Car4("btn-right");   //右转
  36. BlinkerSlider Sudu("sudu");    //速度

  37. //小车方向4个IO脚
  38. #define CARPIN1 D5
  39. #define CARPIN2 D6
  40. #define CARPIN3 D7
  41. #define CARPIN4 D8
  42. int car_sudu=160;   //小车速度初始化为PWM100


  43. //DHT11设置
  44. #define DHTPIN D4       //读取IO脚
  45. #define DHTTYPE DHT11   //DHT版本
  46. DHT dht(DHTPIN, DHTTYPE);   //创建DHT对象
  47. int humi_read = 0, temp_read = 0;   //温湿度变量


  48. void scsr(){  //雷达检测
  49.   float distance;  
  50.   distance=distanceSensor.measureDistanceCm();  //检测前面距离
  51.   if(distance<25){  //当距离小于25CM时停止前进
  52.     car_stop();
  53.   }
  54.     else{
  55.       car_up();  //前进
  56.       }
  57. }


  58. //心跳函数
  59. void heartbeat()
  60. {
  61.     Humi.print(humi_read);    //点灯输出湿度
  62.     Temp.print(temp_read);    //点灯输出温度
  63. }


  64. //从点灯APP获取小车速度,方向按键状态

  65. void sudu_callback(int32_t value) //速度
  66. {
  67.     car_sudu =100+value*30;
  68. }

  69. void car1_callback(const String & state) //前进
  70. {   
  71.     if(state=="press"){   //当近下按键时
  72.        scsr();
  73.       }
  74.     else if(state == "pressup"){ //当松开按键时
  75.       car_stop();
  76.       }
  77. }
  78. void car2_callback(const String & state) //后退
  79. {
  80.      if(state=="press"){
  81.        car_down();
  82.       }
  83.    else if(state == "pressup"){
  84.       car_stop();
  85.       }
  86. }
  87. void car3_callback(const String & state) //左转
  88. {
  89.      if(state=="press"){
  90.        car_left();     
  91.       }
  92.     else if(state == "pressup"){
  93.       car_stop();
  94.       }
  95. }
  96. void car4_callback(const String & state) //右转
  97. {
  98.      if(state=="press"){
  99.        car_right();
  100.       }
  101.     else if(state == "pressup"){
  102.       car_stop();
  103.       }
  104. }



  105. //四个方向,停车函数
  106. void car_up(){  //前进
  107.   analogWrite(CARPIN1,car_sudu);
  108.   digitalWrite(CARPIN2,LOW);
  109.   analogWrite(CARPIN3,car_sudu);
  110.   digitalWrite(CARPIN4,LOW);
  111.   delay(100);
  112.   }
  113. void car_down(){  //后退
  114.   digitalWrite(CARPIN1,LOW);
  115.   analogWrite(CARPIN2,car_sudu);
  116.   digitalWrite(CARPIN3,LOW);
  117.   analogWrite(CARPIN4,car_sudu);
  118.   delay(100);
  119.   }
  120. void car_left(){    //左转
  121.   analogWrite(CARPIN1,car_sudu);
  122.   digitalWrite(CARPIN2,LOW);
  123.   digitalWrite(CARPIN3,LOW);
  124.   analogWrite(CARPIN4,car_sudu);
  125.   delay(100);
  126.   }
  127. void car_right(){   //右转
  128.   digitalWrite(CARPIN1,LOW);
  129.   analogWrite(CARPIN2,car_sudu);
  130.   analogWrite(CARPIN3,car_sudu);
  131.   digitalWrite(CARPIN4,LOW);
  132.   delay(100);
  133.   }
  134. void car_stop(){    //停车
  135.   digitalWrite(CARPIN1,LOW);
  136.   digitalWrite(CARPIN2,LOW);
  137.   digitalWrite(CARPIN3,LOW);
  138.   digitalWrite(CARPIN4,LOW);
  139.   delay(100);
  140.   }


  141. // 如果未绑定的组件被触发,则会执行其中内容
  142. void dataRead(const String & data)
  143. {
  144.     BLINKER_LOG("Blinker readString: ", data);
  145. }


  146. //初始化设置
  147. void setup()
  148. {
  149.     // 初始化串口
  150.     Serial.begin(115200);
  151.     BLINKER_DEBUG.stream(Serial);       //串口输出状态
  152.    
  153.     // 初始化小车控制IO
  154.     pinMode(CARPIN1,OUTPUT);
  155.     pinMode(CARPIN2,OUTPUT);
  156.     pinMode(CARPIN3,OUTPUT);
  157.     pinMode(CARPIN4,OUTPUT);
  158.    
  159.     // 初始化blinker
  160.     Blinker.begin(auth, ssid, pswd);    //WIFI设置
  161.     Blinker.attachHeartbeat(heartbeat);   //心跳包
  162.     Blinker.attachData(dataRead);   //提示
  163.     Sudu.attach(sudu_callback);   //速度组件
  164.     Car1.attach(car1_callback);   //前进组件
  165.     Car2.attach(car2_callback);   //后退组件
  166.     Car3.attach(car3_callback);   //左转组件
  167.     Car4.attach(car4_callback);   //右转组件
  168.     dht.begin();    //初始化DHT模块
  169.    
  170. }



  171. //运行设置
  172. void loop() {
  173.     Blinker.run();  //点灯科技运行

  174.     //DHT11读取设置
  175.     int h = dht.readHumidity();   //获取湿度
  176.     int t = dht.readTemperature();    //获取温度
  177.     if (isnan(h) || isnan(t)) //判断传感器有没有获取到数据
  178.     {
  179.         BLINKER_LOG("DHT传感器错误!");
  180.     }
  181.     else
  182.     {
  183.         humi_read = h;      //赋值湿度给点灯APP变量
  184.         temp_read = t;      //赋值温度给点灯APP变量
  185.     }
  186.    
  187.    
  188.     Blinker.delay(1000);
  189. }
复制代码

发表于 2022-1-4 16:15 来自手机 | 显示全部楼层
有做好的视频吗,看看
发表于 2022-5-11 12:30 | 显示全部楼层
感谢大佬无私奉献,还给代码这么详细的注释!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:34 , Processed in 0.081447 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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