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

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

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

博客网址:公羽兴

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

阿里云盘免费共享文件:Arduino、ESP32、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地址获取代码)

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

ESP32接收端

#include <esp_now.h>
#include <WiFi.h>int L_X,L_Y;typedef struct struct_message {int LX;int LY;
} struct_message;//创建结构体变量
struct_message myData;//创建一个回调函数作为接收数据后的串口显示
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {memcpy(&myData, incomingData, sizeof(myData));//打开工具-串口监视器可查看,接收的LX、LY值Serial.print("myData.LX: "); Serial.print(myData.LX);Serial.print("myData.LY: "); Serial.println(myData.LY);//接收LX、LY数据,将接收数据写入L_X、L_YL_X = myData.LX;L_Y = myData.LY;if(L_X==0&&L_Y==2048) {            //判断接收数据值,执行电机前进、后退及转弯操作FF();                             //前进}else if(L_X==4095&&L_Y==2048) {BB();                             //后退}else if(L_X==2048&&L_Y==0) {FL();                             //左转}else if(L_X==2048&&L_Y==4095) {FR();                             //右转}else if(L_X==2048&&L_Y==2048) {MM();                             //停止}
}void MM()//停止
{digitalWrite(32, 0);digitalWrite(33, 0);digitalWrite(25, 0);digitalWrite(26, 0);digitalWrite(5, 0);digitalWrite(17, 0);digitalWrite(16, 0);Serial.println(" MM ");
}
void FF()//前进
{digitalWrite(32, 1);digitalWrite(33, 0);digitalWrite(25, 1);digitalWrite(26, 0);digitalWrite(5, 1);digitalWrite(17, 0);digitalWrite(16, 0);Serial.println(" FF ");
}
void BB()//后退
{digitalWrite(32, 0);digitalWrite(33, 1);digitalWrite(25, 0);digitalWrite(26, 1);digitalWrite(5, 0);digitalWrite(17, 1);digitalWrite(16, 0);Serial.println(" BB ");
}
void FL()//左转
{digitalWrite(32, 1);digitalWrite(33, 0);digitalWrite(25, 0);digitalWrite(26, 1);digitalWrite(5, 0);digitalWrite(17, 0);digitalWrite(16, 1);Serial.println(" FL ");
}
void FR()//右转
{digitalWrite(32, 0);digitalWrite(33, 1);digitalWrite(25, 1);digitalWrite(26, 0);digitalWrite(5, 1);digitalWrite(17, 1);digitalWrite(16, 1);Serial.println(" FR ");
}void setup() {//初始化窗口Serial.begin(9600);     // 初始化串口波特率pinMode(32, OUTPUT);    //电机GPIO口pinMode(33, OUTPUT);pinMode(25, OUTPUT);pinMode(26, OUTPUT);digitalWrite(32,LOW);   //电机GPIO口低电平digitalWrite(33,LOW);digitalWrite(25,LOW);digitalWrite(26,LOW);pinMode(5, OUTPUT);     //灯光GPIO口pinMode(17, OUTPUT);pinMode(16, OUTPUT);digitalWrite(5,LOW);    //灯光GPIO口低电平digitalWrite(17,LOW);digitalWrite(16,LOW);// 初始化 ESP-NOWWiFi.mode(WIFI_STA);Serial.print("ESP32 RC RX MAC Address:  ");Serial.println(WiFi.macAddress());if (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}// 设置接收数据回调函数esp_now_register_recv_cb(OnDataRecv);
}void loop() {        //循环结构体}
//博客网址:公羽兴:https://blog.csdn.net/weixin_52850743?type=blog
//ESP-NOW单摇杆远程遥控小车的程序代码做到最简化,删除了多余指令
//方便大家理解和增加新的功能,期间也填了很多坑,希望可以帮助到大家

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

#include "WiFi.h"void setup(){Serial.begin(115200);WiFi.mode(WIFI_MODE_STA);Serial.print("MAC地址为:");Serial.println(WiFi.macAddress());
}void loop(){Serial.print("MAC地址为:");Serial.println(WiFi.macAddress());delay(2000);
}

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

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

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

  1. 开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令、ESP-01S接收指令,通过ESP-01S继电器实现LED灯开关控制_公羽兴

    发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令.ESP-0 ...

  2. 开源免费,快速部署。远程桌面软件Rustdesk自建服务器设置详细教程

    Rustdesk简要介绍 RustDesk是一款免费的远程桌面软件,它支持跨平台操作系统,包括Windows.macOS和Linux.它的主要优点包括以下几个方面: 跨平台支持:RustDesk不仅支 ...

  3. phpemspro模拟考试无试题_GitHub - BoobooWei/phpems: 基于开源免费的PHP无纸化模拟考试系统phpems 6.0优化,适配php7.3。...

    开源免费的PHP无纸化模拟考试系统,基于 PHPEMS v6.0 优化.本版本重点修复BUG(包括所有非 E_NOTICE 级别错误提示),并根据需要优化新增一些功能.如果要使用旧版本请参考 PHPE ...

  4. 开源免费的HTML5游戏引擎

    青瓷引擎的成长 青瓷引擎自2015年4月项目启动开始,7月首次亮相2015年ChinaJoy,便得到业界的极大关注,随后开启限量测试,收到数百个开发者团队的试用申请及反馈,期间经历了18个内测版本,完 ...

  5. 51单片机智能远程遥控温控PWM电风扇系统红外遥控温度速度定时关机

    实践制作DIY- GC0033-智能远程遥控温控 一.功能说明: 基于51单片机设计-智能远程遥控温控 功能介绍: STC89C51单片机+LCD1602显示器+红外遥控器(接收和发射)+5V风扇+D ...

  6. Riot-IM:是一个开源免费的即时通讯聊天协作工具,功能丰富且跨平台——Riot-IM

    Riot-IM 介绍  Riot-IM ,一个新型的协作平台,可以在 iOS.Android.Web 端运行,完全由自身控制的通用安全聊天应用程序.支持多大25种语言(支持中文),且还在不断地增加!可 ...

  7. 开源免费的HTML5游戏引擎——青瓷引擎(QICI Engine) 1.0正式版发布了!

    http://www.cnblogs.com/qici/p/5047464.html 青瓷引擎的成长 青瓷引擎自2015年4月项目启动开始,7月首次亮相2015年ChinaJoy,便得到业界的极大关注 ...

  8. 免费开源低代码拖拽开发_资料来源:面向开源开发人员的免费代码搜索工具

    免费开源低代码拖拽开发 开源代码的金矿可供程序员使用,但是选择正确的库并了解如何使用它可能很棘手. Sourcegraph创建了一个搜索引擎和代码浏览器,以帮助开发人员找到更好的代码并更快地构建软件. ...

  9. 开源免费 低代码平台开源_行动透明:免费代码营现已开源

    开源免费 低代码平台开源 by freeCodeCamp 通过freeCodeCamp 行动透明:免费代码营现已开源 (Transparency in Action: Free Code Camp i ...

最新文章

  1. windows7 64位机上CUDA7.0配置及在VS2010中的简单使用举例
  2. STM32 资料整理贴(更新到10年1月)[转]
  3. 安装Terminator和快捷键使用
  4. RequestAnimationFrame知多少?
  5. sudoers 用户权限配置_Linux 用户注意!针对Sudo 被曝漏洞,厂商已发布最新版本...
  6. matlab生成图像路径列表和标签,打乱顺序
  7. MySQL高级最左前缀法则
  8. 李超:WebRTC传输与服务质量
  9. 软件工程第一次结对编程
  10. 一种C/S架构下的 RSA + AES 组合加密方案业务流程
  11. 用python写一个除法的函数_2、Python基础--除法、常用数学函数
  12. 【js】pagination分页(支持首页,末页,跳转)
  13. Java微服务面试题
  14. sox 音频采样率转换
  15. 那么多北漂程序员,到了35岁以后该怎么选择往后的路?
  16. H266 ISP 帧内子划分
  17. shiro安全框架扩展教程--如何扩展realm桥接器并退出自动清空角色资源缓存
  18. h5超简单大转盘抽奖效果(概率可控)
  19. python编写淘宝秒杀脚本
  20. “团队奖金包”让年终奖更公平

热门文章

  1. 华硕B85主板使用PCI-E阵列卡
  2. inquirer.js_如何使用Inquirer.js
  3. Linux源码目录结构和Linux文件系统目录结构
  4. 全媒舍:溯源媒体宣传方式和普通宣传方式有一定差别
  5. Redis数据实战之GEO在LBS中应用与自定义新数据类型
  6. 书评Python神经网络编程——相当友好的入门书
  7. SWUST OJ 696: Soldiers
  8. 金三银四面试真题(必看)
  9. 面向全栈的技术管理(多图)
  10. 阿里云上传图片视频基本步骤