• 方案介绍
    • 前言
    • 一、环境配置
    • 二、资料获取
    • 三、代码展示
    • 四、相关项目与资料
  • 附件下载
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

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

2024/04/23
6080
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

联系方式.docx

共1个文件

前言

这里就是介绍一下我使用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模型 风险等级 参考价格 更多信息
SST39VF6401B-70-4I-EKE 1 Silicon Storage Technology Flash, 4MX16, 70ns, PDSO48, 12 X 20 MM, ROHS COMPLIANT, MO-142DD, TSOP1-48
$9.1 查看
AT24C02D-XHM-B 1 Atmel Corporation EEPROM, 256X8, Serial, CMOS, PDSO8, 4.40 MM, GREEN, PLASTIC, MO-153AA, TSSOP-8

ECAD模型

下载ECAD模型
$0.26 查看
ASEMPLV-100.000MHZ-LR-T 1 Abracon Corporation MEMS OSC XO 100.0000MHZ LVDS SMD
$4.89 查看
意法半导体

意法半导体

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.收起

查看更多

相关推荐