问题标签 [esp8266wifi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
300 浏览

php - 调试 POST 请求 ESP8266 PHP

我使用 Postman 调试我的 PHP POST API,它可以工作(忽略 json 与非 json 输入)。

但是,客户端需要是一个监控不同位置环境的 ESP8266 模块。我一直在努力完成这项工作,但调试让我感到困惑。无论我在客户端显示什么,它看起来都不错。但它似乎从未真正进入网页。我将代码放在网页中以“回显”确认,但客户端中没有显示任何内容。调试此设置的最佳方法是什么:

这是串行输出的片段:

0 投票
1 回答
350 浏览

c++ - 问题,ESP8266WebServer::on(const char [6],)'

我正在学习如何在 C++ 中使用“类”,当我试图从我的类中调用一个函数时,我收到了这个错误:

错误 C:\Users\Mateus\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\libraries\ESP8266WebServer\src/ESP8266WebServer.h:90:8: 注意:void ESP8266WebServer::on(const String&, HTTPMethod , ESP8266WebServer::THandlerFunction, ESP8266WebServer::THandlerFunction)

void on(const String &uri, HTTPMethod 方法, THandlerFunction fn, THandlerFunction ufn);

C:\Users\Mateus\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0\libraries\ESP8266WebServer\src/ESP8266WebServer.h:90:8:注意:候选人需要 4 个参数,提供 2 个

退出状态 1 没有匹配函数调用 'ESP8266WebServer::on(const char [6], )'

我的代码:

0 投票
0 回答
893 浏览

esp8266 - 我无法在 ESP8266 的 SPIFFS 中写入/访问文件

我正在尝试将文本文件存储到 SPIFFS 内存中。每当我尝试格式化或将文件写入 SPIFFS 时,都会出现错误。

这是格式化 SPIFFS 的代码。

我确实在其他论坛上在线搜索过有关此错误的信息。我遇到了这个关于错误的 github 讨论。https://github.com/esp8266/Arduino/issues/4061我确实运行了此链接中建议的代码来获取设备 ID。

固件:芯片 ID:000E01E5
核心版本:2_7_0
SDK 版本:2.2.2-dev(38a443e)
引导版本:5
引导模式:1


Flash芯片信息: Flash芯片Id:00146085(例如:Id=001640E0 Manuf=E0,Device=4016(交换字节))
Sketch认为Flash RAM的大小:1.00 MB 基于芯片ID的实际大小:1.00 MB Flash频率:40.00 MHz
闪存写入模式:DIO


文件系统 (SPIFFS):
总 KB:4176892.00 KB 已用 KB:4176892.00 KB 块大小:8192
页面大小:256
最大打开文件数:5 最大路径长度:32

SPIFFS 目录{/}:


CPU频率:80兆赫

###############文件打开失败

在输出中我看到: 文件系统 (SPIFFS): Total KB: 4176892.00 KB Used KB: 4176892.00 KB

我不明白这一点。有人可以帮我理解这一点吗?这样我就可以将文件上传到 SPIFFS?

0 投票
2 回答
330 浏览

arduino - Arduino 预处理器在定义术语 WIFI_AP 和 WIFI_STA 时行为不端

当我尝试执行预处理器逻辑来识别定义的单词 WIFI_AP 或 WIFI_STA 时,Arduino.cc 预处理器(截至 2020 年 5 月 1 日的最新版本)出现意外行为。

结果是 “如果这是零:0,那么就没有办法到达这里!!!”

预期行为: 预处理器应在 print 语句中评估相同的逻辑并在编译前删除所有打印!

回归: 1. 并非所有可能定义的常量都发生,只有 WIFI_STA 和 WIFI_AP。

  1. WIFI_STA 和 WIFI_AP 分别评估为 1 和 2。不知道种类。

  2. grep 在定义 WIFI_STA 和 WIFI_AP 的包含或 arduino 应用程序资源中找不到任何位置!

我真的很困惑。我在想也许 WIFI_STA 是在预处理器运行时未定义的常量。但我不知道如何以不同的方式做到这一点/

将运行并显示预期结果和意外结果的完整代码

我想做什么?
我试图让用户写这样的东西:

谁能告诉我

  1. 问题的根源
  2. 如何解决它
  3. 其中 WIFI_STA 被定义。

我使用的是 ESP8266,但这个问题出在编译器而不是设备上。

0 投票
0 回答
51 浏览

arduino - ESP12F,无法让继电器处理来自 dht11 的数据

我一直在尝试构建一个系统,该系统使用 esp8266 和 dht11 传感器检测房子的一个房间的温度,这个 esp 将数据发送到网络服务器,而 ESP12F 抓取这些数据,并且应该在某个特定的时候打开继电器值已达到,但是我无法让继电器工作,一旦我上传代码,模块上的 LED 会转动但不是全功率,我尝试使用另一个代码来查看它是否只是一个有故障的继电器,但它与相同的连接完美配合。系统客户端的代码如下:

0 投票
0 回答
71 浏览

dropbox-api - 无法从 Dropbox 获取令牌

我正在使用 ESP8266 ESP-01 模块,使用 FTDI 使用 arduino IDE 平台上传代码。我遇到了由 lucasromeiro 开发的保管箱管理器库。我在这里为图书馆提供 github 链接。https://github.com/lucasromeiro/DropboxManager/issues

我接受了开发者建议的 dropbox https://www.dropbox.com/oauth2/authorize?response_type=code&client_id=g0xkpmfu025pn8f中的应用程序,并获得了访问代码。myDrop.getToken(""); 时我没有收到令牌

我确实在问题部分尝试了 AAJAYS 建议的解决方案(请参阅 github 链接)。我仍然没有收到令牌。因此,我在 arduino IDE 中恢复到板中的 2.4.2 版本 -> ESP8266 -> 版本并尝试获取令牌的代码。

我确实尝试联系开发人员但没有收到回复,需要做什么才能获得令牌?

0 投票
1 回答
243 浏览

proxy - esp8266 客户端连接失败,使用 cdn 代理

我已经设置了一个 Arduino 代码(在 esp8266 上)。该代码仅执行以下操作:

  • 设置wifi
  • 连接到网络服务器
  • 从此网络服务器检索 html 并将其存储
  • 实例化一个服务器:端口
  • 处理本地 IP 地址上的 GET "/" 请求,并从以前的网络服务器发回 html。

代码运行良好(99%)。我只需要对剩下的 1% 提供一些支持。:-)

  1. 当网络服务器具有“正常”IP地址+域名时,esp8266可以毫无问题地解决它。
  2. 当网络服务器在 LAN 上只有一个“正常”IP 地址时,esp8266 可以从中获取 html 而不会出现任何问题。
  3. 但是当这个网络服务器在激活的 CDN/代理后面时(仅供参考,这是 Cloudflare),那么 IP 解析是来自 CDN 的 IP(似乎没问题);但是 esp 得到一个空的 html 或者可能是一个“0”......我无法在 esp 上进行深入调试。

我的设置中有什么我错过的吗?知道我应该尝试什么。

谢谢

0 投票
1 回答
956 浏览

esp8266 - 使用 ESP8266 wifi 扩展器在子网之间进行通信

我的路由器/调制解调器提供了一个本地(家庭 192.168.0.X)网络,它通过通常的动态 DNS 分配本地 IP 地址。我添加了一个在 WiFi Nat (natp) 模式下运行的 ESP8266 作为扩展器。因此它作为一个站点连接到路由器,然后提供其他设备可以连接的接入点。目前,它的子网是172 。。。X)。

这在扩展子网上的设备可以看到像 google.com 等“世界”的意义上是有效的......

问题是192 上的设备。网络看不到扩展网络上的任何设备。

问题的根源很明显: 192个网络设备都由路由器连接,路由器不知道连接到扩展接入点的任何设备。

这可能吗,是否有一个很好的 ESP 82666 示例?

如果不是示例,我不确定我不理解什么——我不确定如何调用这个配置,所以谷歌搜索它不起作用。

我觉得应该有一种方法让扩展器只是一个透明的复制器/中继器,这样路由器就可以看到每个设备,并且自己做 DHCPS 工作,而不是 ESP8266 接入点。但我被困住了。

我可以使用什么样的配置方法将扩展网络上的设备暴露给 192 网络上的计算机?

有无数种可能的设置,但我似乎找不到有效的排列。(例如,网关设置或关闭扩展器接入点上的 DHCP。)我尝试让扩展器网络使用相同的 192.168.0.X 而不是 172。但这没有帮助。

详细信息: 我这里有一个传感器网络,位于我的谷仓中,位于接入点上。我希望能够从屋内访问传感器。我已经搞砸了让谷仓设备将他们的数据发送到世界各地的服务器的解决方法。但我想要直接访问,这样我就可以查询设备或从我的家用计算机直接对设备进行无线编程。我现在只能通过将家用计算机连接到(速度较慢的)扩展网络接入点而不是高速家用路由器来做到这一点。

这是我正在修改的代码示例(基本上是 ESPWIFI 示例草图之一。)

0 投票
1 回答
353 浏览

c++ - ESP8266 微控制器上向量迭代器的 C++ 问题

我目前在 C++ 中遇到向量迭代器的问题。该应用程序在 ESP8266 NodeMCU 微控制器上运行。一旦我调用函数 CWebServer::getAvailableNetworks() (可以在下面找到实现),程序就会崩溃并且我得到以下错误:

这是导致问题的函数():

此函数应将网络扫描的结果发送到客户端。网络扫描只需调用函数 WiFi.scanNetworks(true, true); 这是 ESP8266WiFi 的一部分。问题是由 Serial.println(((*it)->SSID).c_str()); 行引起的 一旦程序到达这一点,错误就会出现并且程序崩溃。如果我只是删除这条线并且根本不接触矢量,那么一切都运行良好。所以我假设向量迭代器是这里的坏人。

只是为了完整性:如您所见,向量存储指向“sWiFi_Data”类型结构的指针。这个结构在另一个类(处理 WiFi 连接的类)中定义,它看起来像这样:

正如您可能在 CWebServer::getAvailableNetworks() 函数内部注意到的那样,向量是另一个函数 ( CWiFiConnection::getAvailableNetworks(); ) 的结果。此函数位于 CWiFiConnection 类中。它看起来像这样:

顺便说一句:ScanException 只是我写的一个通用异常。没什么特别的,所以我认为我不需要在此处包含代码。

只是为了澄清一下,通信过程如下所示:

  1. 客户端发送请求以扫描网络。
  2. 服务器只调用方法: WiFi.scanNetworks(true, true); (参数:bool async,bool showHidden)
  3. 因为扫描是异步的,所以客户端通过向服务器发送请求来检查结果。
  4. 服务器总是通过调用 CWebServer::getAvailableNetworks() 函数(我们的问题函数)来响应这些请求。
  5. 理论上,如果结果还没有,这个函数应该用代码 425(“还没准备好”)回复,如果扫描完成,应该将所有可用网络的数据作为 JSON 发送(这将在行的地方实现Serial.println(((*it)->SSID).c_str()); 目前是。

顺便说一句:我还尝试在控制台内输出向量的大小。这工作正常。所以向量内肯定有值。

希望任何人都可以在这里帮助我。非常感谢。

  • 詹尼斯

ps.:可以在此处找到包含 ESP8266 网络扫描示例的文档:https ://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-examples.html

0 投票
0 回答
242 浏览

esp8266 - ESP8266Mod 12-F 波特率变化问题

首先,我想说这是我第一次使用 ESP wifi 模块。AT+UART=9600,8,1,0,0我正在使用 AT 命令对该模块进行编程,一切都很完美,直到我使用from更改了模块的波特率https://bbs.espressif.com/viewtopic.php?t=6109。从那里开始,我开始寻找出错的原因。然后,我认为固件可能已损坏。然后,我找到了一个刷固件的教程https://www.instructables.com/id/ESP-12F-Flashing-AT-Firmware/。我跟着,乍一看,一切都很好。但后来我发现并非所有命令都运行良好,所以我查看了我已安装到模块的文档,我发现了这个(它是我使用的片段)

. 读我的笔记(这不在教程中,而是在文件夹中):

引导模式

下载://我尝试了两个版本

闪存大小 32Mbit:512KB+512KB

boot_v1.2+.bin 0x00000

user1.1024.new.2.bin 0x01000

esp_init_data_default.bin 0x3fc000(可选)

空白.bin 0x7e000 & 0x3fe000

闪存大小 32Mbit-C1:1024KB+1024KB

boot_v1.2+.bin 0x00000

user1.2048.new.5.bin 0x01000

esp_init_data_default.bin 0x3fc000(可选)

空白.bin 0xfe000 & 0x3fe000

.

更新步骤

1.确保TE(终端设备)处于sta或sta+ap模式ex。

2.确保TE获得IP地址ex。

  1. 让我们更新前。

AT+CIUPDATE

笔记。如果更新有错误,则中断更新并打印ERROR。.

. 自述文件结束

我放了什么和收到了什么

.

我尝试了不同的时间,得到了不同的答案,例如WIFI DISCONNECTEDOKWIFI CONNECTED GOT IP(可能是因为 512KB+512KB 和 1024KB+1024KB 的响应不同,我不这么认为,但我不知道)。.

.

使用最后一个命令,我发生了三件不同的事情

情况1

情况 2 它什么也不做,或者它发送 +CIPUPDATE:n 但带有垃圾字符

案例3 发送后AT+CIUPDATE有时会发送

`

等 2013 年 1 月 8 日,第一个原因:2,启动模式:(3,6)

foad |:000800, vY⸮b⸮⸮⸮⸮⸮⸮⸮j tXM⸮j ,k⸮յ⸮⸮⸮⸮"5 加载 0x3ffe8000, len ⸮b⸮⸮⸮⸮⸮⸮j tX]⸮⸮i ,kkյ ⸮⸮⸮5 ho 0 talm 18 ta4 2 1I H a 2
正确闪图致命异常(28):`

我发送致命错误(28)。我已经找过了https://www.espressif.com/sites/default/files/documentation/esp8266_reset_causes_and_common_fatal_exception_causes_en.pdf,但我不知道我应该怎么做(因为我没有使用 user1.1024.new.2.bin那个时间)

我已经花了两个多星期的时间,并且我有 3 个模块像这样被阻止,所以如果有人能帮助我,那就太棒了。

谢谢

米克尔