发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜。如果觉得此文对您有帮助的话帮忙点个赞,感谢!!!
哔哩哔哩网址:开源免费代码_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: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
发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜。如果觉得此文对您有帮助的话帮忙点个赞,感谢!!!如果有什么意见或建议欢迎各位联系我。文章来源地址https://www.toymoban.com/news/detail-744135.html
到了这里,关于开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!