当前位置:   article > 正文

开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴_远程遥控车代码

远程遥控车代码

发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜。如果觉得此文对您有帮助的话帮忙点个赞,感谢!!!

哔哩哔哩网址:开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴_哔哩哔哩_bilibili

开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴-02_哔哩哔哩_bilibili

博客网址:公羽兴

公羽兴的博客_CSDN博客-领域博主

阿里云盘免费共享文件:ArduinoESP32、ESP8266、点灯科技安装包/库文件/APP等资源

阿里云盘分享

实物图片:

介绍:单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制。

物料清单:

1.ESP32(Arduino开发板:ESP32 Dev Module)两块    15.5元/块

2.摇杆  一个   1.32元

3.双H桥步进电机迷你L298N  一个      0.57元

4.电机  两个  0.5元/个

5.LED灯  一个   0.58元

软件介绍:请看我第一篇文章

连线介绍:看细节图或哔哩哔哩视频

代码:

ESP-NOW单摇杆远程遥控小车的程序代码做到最简化,删除了多余指令,方便大家理解和增加新的功能,期间也填了很多坑,希望可以帮助到大家。

ESP32发送端(发送端中的MAC地址需要填入接收端的MAC地址,获取教程请百度搜索,我会附上MAC地址获取代码)

  1. #include <esp_now.h>
  2. #include <WiFi.h>
  3. uint8_t broadcastAddress[] = {0x7C, 0x87, 0xCE, 0x2D, 0x87, 0xC4};
  4. //ESP32不带天线接口MAC地址:7C:87:CE:2D:87:C4
  5. int k0_x,k0_y;
  6. // 发送结构体类型
  7. typedef struct struct_message {
  8. int LX;
  9. int LY;
  10. } struct_message;
  11. struct_message myData;// 创建一个结构体变量
  12. void setup() {
  13. Serial.begin(9600); // 初始化串口波特率
  14. WiFi.mode(WIFI_STA); // 设置WIFI模式为STA模式,即无线终端
  15. // 初始化ESP-NOW
  16. if (esp_now_init() != ESP_OK) {
  17. Serial.println("Error initializing ESP-NOW");
  18. return;
  19. }
  20. // 注册通信频道
  21. esp_now_peer_info_t peerInfo;
  22. memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  23. peerInfo.channel = 0; //通道
  24. peerInfo.encrypt = false;//是否加密为False
  25. if (esp_now_add_peer(&peerInfo) != ESP_OK){
  26. Serial.println("Failed to add peer");
  27. return;
  28. }
  29. }
  30. void loop() { //循环结构体
  31. k0_x=analogRead(32); //摇杆RX通道对应ESP32_GPIO32,读取摇杆实时数据
  32. k0_y=analogRead(33); //摇杆RY通道对应ESP32_GPIO33,读取摇杆实时数据
  33. if(k0_x>1024&&k0_x<3072) k0_x=2048; //根据摇杆输入信号,判断k0_x、k0_y的值
  34. else if(k0_x<1024) k0_x=0;
  35. else if(k0_x>3072) k0_x=4095;
  36. if(k0_y>1024&&k0_y<3072) k0_y=2048;
  37. else if(k0_y<1024) k0_y=0;
  38. else if(k0_y>3072) k0_y=4095;
  39. myData.LX = k0_x; //将k0_x、k0_y的值写入LX、LY
  40. myData.LY = k0_y;
  41. Serial.print("myData= "); //打开工具-串口监视器可查看,即将发送的LX、LY值
  42. Serial.print(myData.LX);Serial.print(" - ");Serial.println(myData.LY);
  43. Serial.print(" k0= ");
  44. Serial.print(k0_x);Serial.print(" - ");Serial.println(k0_y);
  45. //delay(500); //减缓LX、LY信号发送间隔,方便串口查看调整代码
  46. //发送信息到指定ESP32上
  47. esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
  48. delay(100);
  49. }
  50. //博客网址:公羽兴:https://blog.csdn.net/weixin_52850743?type=blog
  51. //ESP-NOW单摇杆远程遥控小车的程序代码做到最简化,删除了多余指令
  52. //方便大家理解和增加新的功能,期间也填了很多坑,希望可以帮助到大家

ESP32接收端

  1. #include <esp_now.h>
  2. #include <WiFi.h>
  3. int L_X,L_Y;
  4. typedef struct struct_message {
  5. int LX;
  6. int LY;
  7. } struct_message;
  8. //创建结构体变量
  9. struct_message myData;
  10. //创建一个回调函数作为接收数据后的串口显示
  11. void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  12. memcpy(&myData, incomingData, sizeof(myData));
  13. //打开工具-串口监视器可查看,接收的LX、LY值
  14. Serial.print("myData.LX: "); Serial.print(myData.LX);
  15. Serial.print("myData.LY: "); Serial.println(myData.LY);
  16. //接收LX、LY数据,将接收数据写入L_X、L_Y
  17. L_X = myData.LX;
  18. L_Y = myData.LY;
  19. if(L_X==0&&L_Y==2048) { //判断接收数据值,执行电机前进、后退及转弯操作
  20. FF(); //前进
  21. }
  22. else if(L_X==4095&&L_Y==2048) {
  23. BB(); //后退
  24. }
  25. else if(L_X==2048&&L_Y==0) {
  26. FL(); //左转
  27. }
  28. else if(L_X==2048&&L_Y==4095) {
  29. FR(); //右转
  30. }
  31. else if(L_X==2048&&L_Y==2048) {
  32. MM(); //停止
  33. }
  34. }
  35. void MM()//停止
  36. {
  37. digitalWrite(32, 0);
  38. digitalWrite(33, 0);
  39. digitalWrite(25, 0);
  40. digitalWrite(26, 0);
  41. digitalWrite(5, 0);
  42. digitalWrite(17, 0);
  43. digitalWrite(16, 0);
  44. Serial.println(" MM ");
  45. }
  46. void FF()//前进
  47. {
  48. digitalWrite(32, 1);
  49. digitalWrite(33, 0);
  50. digitalWrite(25, 1);
  51. digitalWrite(26, 0);
  52. digitalWrite(5, 1);
  53. digitalWrite(17, 0);
  54. digitalWrite(16, 0);
  55. Serial.println(" FF ");
  56. }
  57. void BB()//后退
  58. {
  59. digitalWrite(32, 0);
  60. digitalWrite(33, 1);
  61. digitalWrite(25, 0);
  62. digitalWrite(26, 1);
  63. digitalWrite(5, 0);
  64. digitalWrite(17, 1);
  65. digitalWrite(16, 0);
  66. Serial.println(" BB ");
  67. }
  68. void FL()//左转
  69. {
  70. digitalWrite(32, 1);
  71. digitalWrite(33, 0);
  72. digitalWrite(25, 0);
  73. digitalWrite(26, 1);
  74. digitalWrite(5, 0);
  75. digitalWrite(17, 0);
  76. digitalWrite(16, 1);
  77. Serial.println(" FL ");
  78. }
  79. void FR()//右转
  80. {
  81. digitalWrite(32, 0);
  82. digitalWrite(33, 1);
  83. digitalWrite(25, 1);
  84. digitalWrite(26, 0);
  85. digitalWrite(5, 1);
  86. digitalWrite(17, 1);
  87. digitalWrite(16, 1);
  88. Serial.println(" FR ");
  89. }
  90. void setup() {
  91. //初始化窗口
  92. Serial.begin(9600); // 初始化串口波特率
  93. pinMode(32, OUTPUT); //电机GPIO口
  94. pinMode(33, OUTPUT);
  95. pinMode(25, OUTPUT);
  96. pinMode(26, OUTPUT);
  97. digitalWrite(32,LOW); //电机GPIO口低电平
  98. digitalWrite(33,LOW);
  99. digitalWrite(25,LOW);
  100. digitalWrite(26,LOW);
  101. pinMode(5, OUTPUT); //灯光GPIO口
  102. pinMode(17, OUTPUT);
  103. pinMode(16, OUTPUT);
  104. digitalWrite(5,LOW); //灯光GPIO口低电平
  105. digitalWrite(17,LOW);
  106. digitalWrite(16,LOW);
  107. // 初始化 ESP-NOW
  108. WiFi.mode(WIFI_STA);
  109. Serial.print("ESP32 RC RX MAC Address: ");
  110. Serial.println(WiFi.macAddress());
  111. if (esp_now_init() != 0) {
  112. Serial.println("Error initializing ESP-NOW");
  113. return;
  114. }
  115. // 设置接收数据回调函数
  116. esp_now_register_recv_cb(OnDataRecv);
  117. }
  118. void loop() { //循环结构体
  119. }
  120. //博客网址:公羽兴:https://blog.csdn.net/weixin_52850743?type=blog
  121. //ESP-NOW单摇杆远程遥控小车的程序代码做到最简化,删除了多余指令
  122. //方便大家理解和增加新的功能,期间也填了很多坑,希望可以帮助到大家

MAC地址获取代码:(先打开串口调试器,再将代码上传至接收端的ESP32中即可获得MAC地址)

  1. #include "WiFi.h"
  2. void setup(){
  3. Serial.begin(115200);
  4. WiFi.mode(WIFI_MODE_STA);
  5. Serial.print("MAC地址为:");
  6. Serial.println(WiFi.macAddress());
  7. }
  8. void loop(){
  9. Serial.print("MAC地址为:");
  10. Serial.println(WiFi.macAddress());
  11. delay(2000);
  12. }

单摇杆远程遥控小车,ESP-NOW,ESP32实现小车控制

发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜。如果觉得此文对您有帮助的话帮忙点个赞,感谢!!!如果有什么意见或建议欢迎各位联系我。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/417037
推荐阅读
相关标签
  

闽ICP备14008679号