加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

嵌入式外设:ESP32-CAN(局域图传+STM32通信)

04/23 09:48
5810
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
    • 前言
    • 一、环境配置
    • 二、资料获取
    • 三、代码展示
    • 四、相关项目与资料
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

前言

这里就是介绍一下我使用ESP32-CAN的使用心得,并且附带使用流程,环境搭建以及代码供大家使用和查看,希望对大家有所帮助咯~~

一、环境配置

我们开发的每款芯片都离不开环境的配置,工欲善其事,必先利其器啦,这里我介绍使用两种方式去开发我们的ESP32系列

Arduino IDE

Arduino的环境我之前有提到和配置过,这里我就直接附上连接,安装教程配置即可

Arduino IDE 使用安装以及ESP32库的导入(离线)icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135296814?spm=1001.2014.3001.5501

PlatformIO IDE

PlatformIO IDE是使用到了 VScode 的插件功能,首先我们需要去下载 VScode的编译器,然后使用他的插件功能去下载

可以参考下面教程

VSCode 使用 Keil5 插件推荐 附带Keil5安装教程icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135296814?spm=1001.2014.3001.5501

如图,搜索 PlatformIO 点击VScode的插件部分即可

 安装完成界面

二、资料获取

关注微信公众号--星之援工作室 发送关键字(ESP32-CAN)

➡️➡️

 资料说明

 Arduino和PlatformIO使用到的代码是一致的,只是打开的方式不同,命名及为项目

三、代码展示

接下来以Arduino为例演示,使用到了一些外部配置文件,都放到了我们的项目文件夹下了

选择开发芯片

编译通过

上传代码

首先需要进入下载模式

 选择好连接的端口以后直接上传即可

 本代码涵盖了视频流数据以及串口转发,可以直接与STM32进行通信

#include "esp_camera.h"
#include <WiFi.h>

// Select camera model
// #define CAMERA_MODEL_WROVER_KIT
// #define CAMERA_MODEL_ESP_EYE
// #define CAMERA_MODEL_M5STACK_PSRAM
// #define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

#include "camera_pins.h"

const char *ssid = "WIFI_For";
const char *password = "12345678";
const IPAddress ip(192, 168, 4, 1);
const IPAddress gateway(192, 168, 4, 1);
const IPAddress subnet(255, 255, 255, 0);

void cameraBegin();      // 相机初始化
int startCameraServer(); // 启动相机服务
void setWifi();
WiFiServer server(8000); // 申明AP对象

void setup()
{
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println("开机");
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH); // 闪光灯
  cameraBegin();
  setWifi();                      // 设置wifi
  int prot = startCameraServer(); // 开启相机服务并得到服务端口
  IPAddress myAddress = WiFi.localIP();
  Serial.println(myAddress);
  Serial.print("请在浏览器中输入:");
  Serial.print(WiFi.softAPIP());
  delay(1000);
  digitalWrite(4, LOW); // 闪光灯
}

void loop()
{
  String msgs = "", onDeng = "";
  WiFiClient client = server.available();
  boolean receiveFlag = false; // 是否接到消息标志位
  if (client)
  {
    while (client.connected())
    {
      while (Serial.available() > 0)
      {
        char c = Serial.read();
        receiveFlag = true; // 接到来自小车的串口消息
        msgs += c;
      }

      while (client.available() > 0)
      {
        char c = client.read();
        Serial.write(c); // 向串口发送消息
        onDeng += c;
      }

      if (onDeng == "DENG_ON")
      {
        digitalWrite(4, HIGH); // 闪光灯
      }
      else if (onDeng == "DENG_OFF")
      {
        digitalWrite(4, LOW); // 闪光灯
      }
      if (receiveFlag)
      {
        receiveFlag = false;
        client.write(&msgs[0]); // 向客户端发送消息
        msgs = "";
      }
      onDeng = "";
    }
    client.stop();
  }
  else
    delay(500);
}

/**
 * @brief 配置wifi
 */
void setWifi()
{
  WiFi.mode(WIFI_AP);                     // 设置wifi模
  WiFi.softAPConfig(ip, gateway, subnet); // 配置网络信息
  WiFi.softAP(ssid, password);            // 配置wifi名称及密码
  Serial.println("开启网络....等待连接.....");
  delay(500);
  server.begin();
  delay(500);
}
/**
 * @brief 相机初始化
 *
 */
void cameraBegin()
{
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;
  // 用高规格初始化来预分配更大的缓冲区
  if (psramFound())
  {
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    config.fb_count = 2;
  }
  else
  {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // 相机初始化
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK)
  {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t *s = esp_camera_sensor_get();
  // 最初的传感器垂直翻转,颜色有点饱和
  if (s->id.PID == OV3660_PID)
  {
    s->set_vflip(s, 0);       // 反转
    s->set_brightness(s, 1);  // 将暗处调高
    s->set_saturation(s, -2); // 降低饱和度
  }
  // drop down frame size for higher initial frame rate
  s->set_framesize(s, FRAMESIZE_QVGA);

#if defined(CAMERA_MODEL_M5STACK_WIDE)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif
}

四、相关项目与资料

一篇文章足够你学习ESP32,提供史上最全的ESP32教程icon-default.png?t=N7T8https://blog.csdn.net/XiaoXiaoPengBo/article/details/123952643?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170718720216800182123332%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170718720216800182123332&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-2-123952643-null-null.nonecase&utm_term=ESP32&spm=1018.2226.3001.4450

物联网毕设 -- 图像小车(局域网+环境检测+GPS)icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135073514物联网毕设 -- 养殖场的智能环境监测(STM32+WiFi+局域图传)icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135671916?spm=1001.2014.3001.5501

联系方式 微信号:13648103287

  • 联系方式.docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
NC7SZ175P6X 1 Fairchild Semiconductor Corporation D Flip-Flop, LVC/LCX/Z Series, 1-Func, Positive Edge Triggered, 1-Bit, True Output, CMOS, PDSO6, 1.25 MM, EIAJ, SC-88, SC-70, 6 PIN
$0.35 查看
PCA9546APW,118 1 NXP Semiconductors PCA9546A - 4-channel I2C-bus switch with reset TSSOP 16-Pin

ECAD模型

下载ECAD模型
$2.15 查看
SP000063858 1 Avago Technologies FIBER OPTIC TRANSMITTER, 630-685nm, THROUGH HOLE MOUNT, ROHS COMPLIANT, PLASTIC PACKAGE

ECAD模型

下载ECAD模型
$18.82 查看

相关推荐

电子产业图谱

方案定制,程序设计方案、单片机程序设计与讲解、APP定制开发。本公众号致力于向读者传递关于程序设计和开发的相关知识,并分享一些关于软件开发的最佳实践。如果您有什么问题或建议,请随时联系我们。我们将竭诚为您服务