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

这篇具有很好参考价值的文章主要介绍了开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

博客网址:公羽兴

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

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

阿里云盘分享

实物图片:

esp32小车,开源

介绍:单摇杆远程遥控小车,基于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:C4

int 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-NOW
  if (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;//是否加密为False
  if (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、LY
    myData.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_Y
   L_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-NOW
  WiFi.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实现小车控制

发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜。如果觉得此文对您有帮助的话帮忙点个赞,感谢!!!如果有什么意见或建议欢迎各位联系我。文章来源地址https://www.toymoban.com/news/detail-744135.html

到了这里,关于开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JimuReport积木报表 v1.6.2 版本正式发布—开源免费的低代码报表

    项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。 秉承“简单、易用、专业”的产品理念,极大的降低报表

    2024年02月03日
    浏览(46)
  • XCharts——Unity上最好用的免费开源图表插件!(二)进阶用法——结合代码的超强XCharts

    上一篇基本介绍:XCharts——Unity上最好用的免费开源图表插件!(一)基本介绍 本期介绍的是XCharts的 进阶 用法—— 结合代码的超强XCharts 只将重点!!! 目录 一、Legend(组别分类提示) 二、百分比类型显示 三、对应数据显示 四、特殊数据类型(下次一定) 不过这个 legend 是需要

    2024年02月06日
    浏览(49)
  • 分享一套国内功能齐全的开源MES/免费试用MES/MES源代码

    一、系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES、好看的数字大屏。 1. 万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理,计划管理,物料控制,生产执行,质量管理

    2024年04月08日
    浏览(50)
  • 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)。 要从图像、照片中提取文本吗?是否刚刚拍了讲义的照片并想将其转换为文本?那么您将需要一个可以通过 OCR(光学字符识别)识别文本的应用程序。 图

    2024年02月01日
    浏览(121)
  • ESP8266从点灯到遥控小车(三)——组装小车,0代码开发APP控制小车

    ESP8266开发板 已配置好的Arduino IDE环境(配置传送门) 数据线 L298N电机驱动模块 12V电池组(电源) 充电宝 小车车身及零件(传送门) 1.ESP8266-NodeMCU 开发板 ESP8266 是一款适用于物联网和家庭自动化项目的 Wi-Fi 模块。 ​ ESP8266-NodeMCU是一个开源硬件开发板,由于它允许您像使用

    2024年01月17日
    浏览(52)
  • 免费的AI代码生成工具

    title: 免费的AI代码生成工具 date: 2023-08-13 categories: AI tags: AI CodeWhisperer是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。 在编写代码时,它会自动根据我们现有的代码和注释生成建议。从单行代码建议到完整的函数,它可为我们提供各种大小和范围

    2024年02月02日
    浏览(53)
  • c++简单大乱斗源代码(免费复制)

     #include iostream #include windows.h using namespace std; char s[100];  int main(int argc, char** argv) {     int xl1,xl2;     int gj1,gj2;     cout\\\"请创造昵称(英文名):\\\";     cins[10];     Sleep(1000);     cout\\\"你好\\\"s[10]\\\"!\\\"endl;     Sleep(1000);     cout\\\"请选择战士:\\\"endl;     Sleep(1000);     cout\\\"1.蔡徐坤

    2024年02月11日
    浏览(43)
  • 无极低代码,免费工具在线实用工具分享

      在当今数字化的时代,我们需要尽可能地减少手动操作,提高工作效率。这就是为什么我们需要一些在线工具来帮助我们完成一些繁琐的任务。以下是一些无极低代码网集成的在线工具,可以帮助您更快、更轻松地完成任务。 项目周期计算 :可以帮助您计算项目周期,以

    2024年02月16日
    浏览(56)
  • 免费的 AI 代码辅助工具-codeium

    几天之前 GitHub 发布了  GitHub Copilot X,这是一款基于 OpenAI 的 GPT-4 模型开发的 AI 代码辅助工具。看介绍应该是和 Microsoft 365 Copilot 很像的产物,属于是特别为我们程序员准备的辅助工具。 通过观看视频介绍,感觉好厉害。但是只有一个缺点,就是这个工具和 GitHub Copilot 一样

    2024年02月14日
    浏览(51)
  • 无需翻墙,免费AI代码生成网站

    AI Code Converter | AI Code Translator | AI Code Generator 推荐还是转成python吧,代码量毕竟比较少而且可以一个文件搞定 界面如:    

    2024年02月04日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包