blinker控制小车1.0附源码-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5909|回复: 11

[分享] blinker控制小车1.0附源码

[复制链接]
发表于 2020-10-14 20:15 | 显示全部楼层 |阅读模式
本帖最后由 lslcxlsl 于 2020-10-14 21:18 编辑

小车硬件配置:WeMos(esp8266主板),
L298N电机控制板,
一个2路继电器,
小蚁摄像头,
移动充电宝,
一个12v电池,
履带车底盘

接线方法:esp82266 上D5,D6,D7,D8 接到L298N的控制接口上,56,78 两组成对接,
esp82266 上D2,D4 接继电器的两路控制接口上
小车配置了一个小蚁网络摄像头,可以用手机观看视频和对讲,可以用来看家,代码定义了8个按钮,其中 4,5是控制摄像头电源和led电源,应为摄像头不是夜视的,晚上需要加个灯
接电的方法是我是先接L298N然后通过它的5v输出接esp8266,虽然可以12v直接接esp8266我怕长时间用减少主板寿命。然后接了一个继电器,控制摄像头,和led灯这样摄像头电路和主板电路分开保证电源稳定,用L298N输出5v电源带不起来摄像头。下面是我代码

  1. #define BLINKER_WIFI

  2. #include <Blinker.h>

  3. char auth[] = "8bb519c05ee0";
  4. char ssid[] = "abc";
  5. char pswd[] = "chenxu123";

  6. // 新建组件对象
  7. BlinkerButton Button1("btn-a");
  8. BlinkerButton Button2("btn-l");
  9. BlinkerButton Button3("btn-r");
  10. BlinkerButton Button6("btn-p");
  11. BlinkerButton Button7("btn-ll");
  12. BlinkerButton Button8("btn-rr");
  13. BlinkerNumber Number1("num-abc");
  14. BlinkerButton Button4("btn-led");
  15. BlinkerButton Button5("btn-led1");

  16. int counter = 0;
  17. #define L_DIR_PIN       D5
  18. #define L_PWM_PIN       D6
  19. #define R_DIR_PIN       D7
  20. #define R_PWM_PIN       D8
  21. #define TIME_TAP       100

  22. #define LED0_PIN       D2
  23. #define LED1_PIN       D4

  24. void blinker_car_init()
  25. {
  26.     pinMode(L_DIR_PIN, OUTPUT);
  27.     pinMode(L_PWM_PIN, OUTPUT);
  28.     pinMode(R_DIR_PIN, OUTPUT);
  29.     pinMode(R_PWM_PIN, OUTPUT);
  30.     pinMode(LED0_PIN, OUTPUT);
  31.     pinMode(LED1_PIN, OUTPUT);
  32.     digitalWrite(L_DIR_PIN, LOW);
  33.     digitalWrite(L_PWM_PIN, LOW);
  34.     digitalWrite(R_DIR_PIN, LOW);
  35.     digitalWrite(R_PWM_PIN, LOW);
  36.     digitalWrite(LED0_PIN, LOW);
  37.     digitalWrite(LED1_PIN, LOW);
  38. }
  39. // 按下按键即会执行该函数
  40. void button1_callback(const String & state) {
  41.     BLINKER_LOG("get button state: ", state);
  42.     if(state=="tap"){
  43.       digitalWrite(L_DIR_PIN,HIGH);
  44.       digitalWrite(R_DIR_PIN,HIGH);
  45.     //  digitalWrite(LED0_PIN,HIGH);
  46.       delay(TIME_TAP);
  47.       digitalWrite(L_DIR_PIN,LOW);
  48.       digitalWrite(R_DIR_PIN,LOW);
  49.    //   digitalWrite(LED0_PIN,LOW);
  50.     }
  51.     if(state=="press"){
  52.       digitalWrite(L_DIR_PIN,HIGH);
  53.       digitalWrite(R_DIR_PIN,HIGH);
  54.     //  digitalWrite(LED0_PIN,HIGH);      
  55.     }
  56.     if(state=="pressup"){
  57.       digitalWrite(L_DIR_PIN,LOW);
  58.       digitalWrite(R_DIR_PIN,LOW);
  59.      // digitalWrite(LED0_PIN,LOW);      
  60.     }   
  61. }

  62. void button6_callback(const String & state) {
  63.     BLINKER_LOG("get button state: ", state);
  64.     if(state=="tap"){
  65.       digitalWrite(L_PWM_PIN,HIGH);
  66.       digitalWrite(R_PWM_PIN,HIGH);
  67.     //  digitalWrite(LED0_PIN,HIGH);
  68.       delay(TIME_TAP);
  69.       digitalWrite(L_PWM_PIN,LOW);
  70.       digitalWrite(R_PWM_PIN,LOW);
  71.    //   digitalWrite(LED0_PIN,LOW);
  72.     }
  73.     if(state=="press"){
  74.       digitalWrite(L_PWM_PIN,HIGH);
  75.       digitalWrite(R_PWM_PIN,HIGH);
  76.     //  digitalWrite(LED0_PIN,HIGH);      
  77.     }
  78.     if(state=="pressup"){
  79.       digitalWrite(L_PWM_PIN,LOW);
  80.       digitalWrite(R_PWM_PIN,LOW);
  81.      // digitalWrite(LED0_PIN,LOW);      
  82.     }   
  83. }

  84. void button7_callback(const String & state) {
  85.     BLINKER_LOG("get button state: ", state);
  86.     if(state=="tap"){
  87.       digitalWrite(L_PWM_PIN,HIGH);
  88.       delay(TIME_TAP);
  89.       digitalWrite(L_PWM_PIN,LOW);
  90.     }
  91.     if(state=="press"){
  92.       digitalWrite(L_PWM_PIN,HIGH);     
  93.     }
  94.     if(state=="pressup"){
  95.       digitalWrite(L_PWM_PIN,LOW);
  96.     }   
  97. }

  98. void button8_callback(const String & state) {
  99.     BLINKER_LOG("get button state: ", state);
  100.     if(state=="tap"){
  101.       digitalWrite(R_PWM_PIN,HIGH);
  102.       delay(TIME_TAP);
  103.       digitalWrite(R_PWM_PIN,LOW);
  104.     }
  105.     if(state=="press"){
  106.       digitalWrite(R_PWM_PIN,HIGH);
  107.     }
  108.     if(state=="pressup"){
  109.       digitalWrite(R_PWM_PIN,LOW);
  110.     }   
  111. }

  112. void button2_callback(const String & state) {
  113.     BLINKER_LOG("get button state: ", state);
  114.     if(state=="tap"){
  115.       digitalWrite(L_PWM_PIN,HIGH);
  116.       digitalWrite(R_DIR_PIN,HIGH);
  117. //     digitalWrite(LED1_PIN,HIGH);
  118.       delay(TIME_TAP);
  119.       digitalWrite(L_PWM_PIN,LOW);
  120.       digitalWrite(R_DIR_PIN,LOW);
  121.    //   digitalWrite(LED1_PIN,LOW);      
  122.     }
  123.     if(state=="press"){
  124.       digitalWrite(L_PWM_PIN,HIGH);
  125.       digitalWrite(R_DIR_PIN,HIGH);
  126.      // digitalWrite(LED1_PIN,HIGH);      
  127.     }
  128.     if(state=="pressup"){
  129.       digitalWrite(L_PWM_PIN,LOW);
  130.       digitalWrite(R_DIR_PIN,LOW);
  131.      // digitalWrite(LED1_PIN,LOW);      
  132.     }   
  133. }
  134. void button3_callback(const String & state) {
  135.     BLINKER_LOG("get button state: ", state);
  136.     if(state=="tap"){
  137.       digitalWrite(L_DIR_PIN,HIGH);
  138.       digitalWrite(R_PWM_PIN,HIGH);
  139.       delay(TIME_TAP);
  140.       digitalWrite(L_DIR_PIN,LOW);
  141.       digitalWrite(R_PWM_PIN,LOW);
  142.     }
  143.     if(state=="press"){
  144.       digitalWrite(L_DIR_PIN,HIGH);
  145.       digitalWrite(R_PWM_PIN,HIGH);
  146.     }
  147.     if(state=="pressup"){
  148.       digitalWrite(L_DIR_PIN,LOW);
  149.       digitalWrite(R_PWM_PIN,LOW);
  150.     }   
  151. }
  152. void button4_callback(const String & state) {
  153.     BLINKER_LOG("get button state: ", state);
  154.     if (state=="on") {
  155.         digitalWrite(LED0_PIN, HIGH);
  156.         // 反馈开关状态
  157.         Button4.print("on");
  158.     } else if(state=="off"){
  159.         digitalWrite(LED0_PIN, LOW);
  160.         // 反馈开关状态
  161.         Button4.print("off");
  162.     }
  163. }
  164. void button5_callback(const String & state) {
  165.     BLINKER_LOG("get button state: ", state);
  166.     if (state=="on") {
  167.         digitalWrite(LED1_PIN, HIGH);
  168.         // 反馈开关状态
  169.         Button5.print("on");
  170.     } else if(state=="off"){
  171.         digitalWrite(LED1_PIN, LOW);
  172.         // 反馈开关状态
  173.         Button5.print("off");
  174.     }
  175. }

  176. // 如果未绑定的组件被触发,则会执行其中内容
  177. void dataRead(const String & data)
  178. {
  179.     BLINKER_LOG("Blinker readString: ", data);
  180.     counter++;
  181.     Number1.print(counter);
  182. }

  183. void setup() {
  184.     // 初始化串口
  185.     Serial.begin(115200);

  186.     BLINKER_DEBUG.stream(Serial);

  187.     // 初始化有LED的IO
  188.     blinker_car_init();
  189.     pinMode(LED_BUILTIN, OUTPUT);

  190.     // 初始化blinker
  191.     Blinker.begin(auth, ssid, pswd);
  192.     Blinker.attachData(dataRead);
  193.     Button1.attach(button1_callback);
  194.     Button2.attach(button2_callback);
  195.     Button3.attach(button3_callback);
  196.     Button4.attach(button4_callback);
  197.     Button5.attach(button5_callback);
  198.     Button6.attach(button6_callback);
  199.     Button7.attach(button7_callback);
  200.     Button8.attach(button8_callback);
  201. }

  202. void loop() {
  203.     Blinker.run();
  204. }
复制代码






2.jpg
1.jpg
小车电路图.png

blinker0.rar

1.17 KB, 下载次数: 62

小车源码

发表于 2020-10-14 21:11 | 显示全部楼层
好赞,周末整一个玩玩
发表于 2020-10-15 11:34 | 显示全部楼层
这,底盘去哪整的?
 楼主| 发表于 2020-10-15 14:47 | 显示全部楼层
steve_liu 发表于 2020-10-15 11:34
这,底盘去哪整的?

在淘宝上买的
发表于 2020-10-16 01:50 | 显示全部楼层
电机板的 5V 输出,被 LZ 接在了开发板的 VIN (9-12V)插座上,LZ是认真的么
 楼主| 发表于 2020-10-17 15:23 | 显示全部楼层
t3486784401 发表于 2020-10-16 01:50
电机板的 5V 输出,被 LZ 接在了开发板的 VIN (9-12V)插座上,LZ是认真的么

我是这么接的
发表于 2020-10-22 20:50 | 显示全部楼层
本帖最后由 lqcsg 于 2020-10-22 20:58 编辑

最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮,正在研究超声波测距,自动刹车
Screenshot_20201022_205125.jpg
052d0c1f95cad1c858d7873e703e6709c93d511a.jpg
 楼主| 发表于 2020-10-25 12:17 | 显示全部楼层
lqcsg 发表于 2020-10-22 20:50
最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮,正在研究超声波测距,自动刹车 ...

厉害!厉害!厉害!你那个速度控制是怎么做的?
发表于 2020-11-3 11:09 来自手机 | 显示全部楼层
lslcxlsl 发表于 2020-10-25 12:17
厉害!厉害!厉害!你那个速度控制是怎么做的?

pwm调速
发表于 2021-1-9 00:05 | 显示全部楼层
lqcsg 发表于 2020-10-22 20:50
最近也在做远程移动监控小车。360°旋转云台+对讲监控摄像头,4驱麦轮,正在研究超声波测距,自动刹车 ...

能分享一下代码?主要是那个控制车速的滑条在blinker里面pwm是怎么对应
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 13:36 , Processed in 0.092789 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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