标签: esp32

esp32 https 服务器的 SSL 证书

我遇到了不安全的 SSL 证书问题。我的项目由两部分组成:

\n\n
    \n
  1. 带有 https 服务器的 ESP32 物联网设备
  2. \n
  3. VUE2 + Vuetify PWA Web 应用程序部署到 firebase 托管。
  4. \n
\n\n

想象一下,一位客户购买了我的物联网设备,并将其连接到电源。设备将以 AP 模式启动,创建 WiFi AP 网络。\n客户端登录到网络应用程序并想要添加他的新设备。因此,为此,物联网设备需要客户端 WiFi 凭据。\nWeb 应用程序向客户端询问他的 ssid 和密码,当客户端单击“配置设备”时,Web 应用程序向 esp32 服务器发送 https POST 请求,这就是问题...\n因为 SSL 证书esp32 服务器中使用的内容未经权威机构验证,Web 应用程序可以\xc2\xb4t 发出 POST 请求...

\n\n

如何为大量物联网设备获取有效的服务器 SSL 证书?我不知道如何处理这种情况...

\n\n

感谢大家!!

\n

ssl web-applications vue.js server esp32

4
推荐指数
1
解决办法
5955
查看次数

ESP32 - 软件串行库

我有一个 ESP32,需要使用更多串行端口,但我无法在 ESP32 中使用软件串行库,因为 Arduino IDE 无法识别该库。

我怎么能用它呢?

   #include <Arduino.h>
   #include <SoftwareSerial.h>

   SoftwareSerial SoftSerial(4, 5);

   void setup() 
   {
     Serial.begin(9600);
     SoftSerial.begin(115200); 
   }

   void loop() 
   {
     while (Serial.available())
     {
       SoftSerial.write("on");
     }
   }
Run Code Online (Sandbox Code Playgroud)

谢谢

arduino esp32

4
推荐指数
1
解决办法
5万
查看次数

如何增加 ESP32 库硬件串行(平台 IO)的 RX 串行缓冲区大小

我想将字符串从 USB(串行)发送到我的 esp32 微控制器(Arduino),该字符串大于实际 Arduino 明显默认的 64 字节限制或 esp32 [1] 明显的 256 字节限制。

我发现PlatformIO识别的命令[2]:

Serial.setRxBufferSize(1024);
Run Code Online (Sandbox Code Playgroud)

但一旦我输入这行代码(从 10 到 1000 的任何数字),以下代码就不再运行:

void serialEvent() 
{
 Serial.setRxBufferSize(64); // increasing buffer size ?
 while (Serial.available()) 
 {    
    char inChar = (char)Serial.read();
    inputString += inChar;

    if (inChar == '$') // end marker of the string 
    {
      inputStringPC = inputString;
      stringCompletePC = true;
      Serial.print(inputStringPC);
      inChar = '0';
      inputString = '0';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

希望任何人都知道出了什么问题。

谢谢!

[1] https://esp32.com/viewtopic.php?t=8589

[2] https://www.esp32.com/viewtopic.php?t=7730

c++ buffer serial-port arduino esp32

4
推荐指数
1
解决办法
2万
查看次数

MicroPython:OSError:[Errno 19] ENODEV

我尝试将 ESP32 连接到传感器 GY91(MPU9250 +BMP280)。我正在使用这个库:https ://github.com/tuupola/micropython-mpu9250

我使用了示例代码:

import utime
from machine import I2C, Pin
from mpu9250 import MPU9250

i2c = I2C(scl=Pin(22), sda=Pin(21))
sensor = MPU9250(i2c)

print("MPU9250 id: " + hex(sensor.whoami))

while True:
    print(sensor.acceleration)
    print(sensor.gyro)
    print(sensor.magnetic)
    print(sensor.temperature)

    utime.sleep_ms(1000)
Run Code Online (Sandbox Code Playgroud)

我将库(mpu6500、mpu9250、ak8963)导入到我的设备 ESP32 中。但是当我启动代码时出现这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 8, in <module>
  File "mpu9250.py", line 45, in __init__
  File "mpu6500.py", line 97, in __init__
  File "mpu6500.py", line 149, in whoami
  File "mpu6500.py", line 181, …
Run Code Online (Sandbox Code Playgroud)

python arduino micropython esp32 sensors

4
推荐指数
1
解决办法
1万
查看次数

ModuleNotFoundError:没有名为“machine”的模块

当我尝试使用 micropython 控制 esp32 微控制器时,出现以下错误:

  File "c:/Users/supre/Documents/Python Programme/micropython/blinktest.py", line 1, in <module>
    from machine import Pin
ModuleNotFoundError: No module named 'machine'
Run Code Online (Sandbox Code Playgroud)

我尝试测试基本的眨眼测试代码:

from machine import Pin
import time

led = Pin(12, Pin.OUT)
for n in range(1,30):
    led.value(0) #on
    sleep(1)
    led.value(1) #off
    sleep(1)
Run Code Online (Sandbox Code Playgroud)

我无法通过 pip 或 anaconda 安装此模块(当我尝试通过 pip 安装模块时,构建失败)

这个错误可能是因为我以错误的方式安装了 micropython 导致的吗?

因此,如果有人能帮助我解决这个问题,那就太好了。

python python-3.x micropython esp32

4
推荐指数
1
解决办法
2万
查看次数

ESP32 esp-idf sdkconfig.ci 文件是用来做什么的?

esp-idf 中的几个示例包含一个sdkconfig.ci文件(例如Examples/bluetooth/nimble/blehr)。

我了解 的用法,但在 Espressif构建系统 API 指南sdkconfig.defaults中找不到任何参考。sdkconfig.ci

何时应该.ci使用该文件以及在什么条件下应用其中的配置?

esp32 esp-idf

4
推荐指数
1
解决办法
1922
查看次数

ESP8266WiFi.h:没有这样的文件或目录

我怎样才能使WifiManager 库在 ESP32 板上工作?我正在使用 PlatformIO 来开发我的代码。

这是我的进口:

#include "esp_camera.h"
#include <Arduino.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <EEPROM.h>
#include <WiFiManager.h>

WiFiClient espClient;
PubSubClient client(espClient);

WiFiManager wifiManager;
Run Code Online (Sandbox Code Playgroud)

platformio.ini

[env:esp32cam]
platform = espressif32
board = esp32cam
framework = arduino
monitor_speed = 115200
build_flags = -DMQTT_MAX_PACKET_SIZE=36000
lib_deps = 
    espressif/esp32-camera@^1.0.0
    knolleary/PubSubClient@^2.8
    bblanchon/ArduinoJson@^6.18.5
    tzapu/WiFiManager@^0.16.0
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,我收到以下错误:

.pio\libdeps\esp32cam\WiFiManager/WiFiManager.h:16:25: fatal error: ESP8266WiFi.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

经过进一步研究,我发现 WiFiManager 使用 ESP8266WiFi.h,现在我想知道如何使这个库在我的 ESP32 上工作,或者是否有替代库?该项目的自述文件确实说它可以在 ESP32 上运行。

c++ arduino platformio esp32

4
推荐指数
1
解决办法
5697
查看次数

如何解决 ESP32 异步网络服务器 cors 错误

我正忙着在家里用 fastled 做一个项目。我有一个运行异步网络服务器的 esp32,我想通过反应网页向它发出请求。

当我单击按钮运行此代码时:

function EffectBasic () {

     function handleChangeEffect() {
         var xhttp = new XMLHttpRequest();
         xhttp.open("GET", "http://192.168.0.165/Rainbow", true);
         xhttp.setRequestHeader('Access-Control-Allow-Headers', '*');
         xhttp.setRequestHeader('Access-Control-Allow-Origin', '*');
         xhttp.send();
    }

    return(
        <div>
            <h1> Police </h1>
            <button onClick={handleChangeEffect()}>BTN</button>
        </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Access to XMLHttpRequest at 'http://192.168.0.165/Rainbow' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

GET http://192.168.0.165/Rainbow net::ERR_FAILED

Access to XMLHttpRequest at 'http://192.168.0.165/Rainbow' from origin 'http://localhost:3000' …
Run Code Online (Sandbox Code Playgroud)

reactjs esp32

4
推荐指数
1
解决办法
2122
查看次数

ESP32直接端口操作

亲爱的StackOverflowers,

我正在尝试将Adafruit的HX8357D 3.5“ TFT(链接)与esp32一起使用。TFT驱动程序具有两个接口:SPI和8位并行。Adafruit 的提供的库(链接)仅支持esp32上的SPI。我需要esp32具有更高的显示速度,所以我决定自己尝试添加对esp32的支持,虽然我完全没有这种编程经验,但是我喜欢挑战。

我通过对Arduino Uno / Mega支持进行反向工程来弄清楚8位接口是如何工作的。为了增加对esp32的支持,我需要一种直接操作控制esp32的gpio端口的寄存器的方法。我在互联网上四处张望,但是很少有如何执行此操作的示例。Espressif(link)的技术参考手册包含所有需要的信息,但是我不够熟练,无法弄清楚如何将其转换为代码。

要对esp32进行编程,我使用esp32 Arduino内核。本示例(链接)显示了如何将gpio引脚设置为输出,并直接使用寄存器将其设置为高电平和低电平。问题是我需要能够将8个引脚设置为输出,向它们写入数据,使其成为输入,然后从它们读取数据,所有这些都使用寄存器而不是使用pinMode,digitalRead和digitalWrite函数。

我知道它在Arduino Uno / Mega上的工作方式,其中有三个寄存器控制端口:

  • DDR *读/写
  • 端口*设置GPIO高/低
  • 如果gpio为INPUT,则PIN *读取HIGH / LOW。

但是,这在esp32上如何工作?如何使用寄存器创建这种8位并行通信?

如果有人在这个主题上比我有更多的专业知识,我将不胜感激。提前致谢。

c arduino display adafruit esp32

3
推荐指数
2
解决办法
3425
查看次数

将字符数组地址存储在新数组中

我在 Arduino 程序中有一个包含文件。MCU 是 ESP32。

包含的文件是:

const char bitmap_1587[] PROGMEM = {248,254,254,230,241,231,247,199};
const char bitmap_1604[] PROGMEM = {249,254,254,254,0,191};
const char bitmap_1575[] PROGMEM = {7};
const char* char_addr[] = {&bitmap_1587,&bitmap_1604,&bitmap_1575};
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,返回此错误:

无法在初始化时将 'const char (*)[6] 转换为 'char*'

无法在初始化时将“const char (*)[6]”转换为“char*”

无法在初始化时将“const char (*)[1]”转换为“char*”

请帮我。我如何将字符数组地址存储在另一个数组中。

c c++ arduino esp32 arduino-esp32

3
推荐指数
1
解决办法
76
查看次数