标签: esp8266

arduino` yield()`函数的秘密是什么?

关于到期yield()日,Arduino文档在https://www.arduino.cc/en/Reference/Scheduler上解释.显然它是Scheduler库的一部分:

#include <Scheduler.h>
Run Code Online (Sandbox Code Playgroud)

但是,我可以调用yield()我的Nano或ESP8266而不包括Scheduler lib - 但仅限于我的主程序,而不是包含文件.此外,包含不适用于我的非会费.

我错过了yield()什么秘密,或者yield()除了Due之外在Arduino平台上做了什么?

arduino arduino-ide esp8266

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

无法修改espressif提供的ESP8266示例

我的设置包括使用eclipse的Espressif SDK和nodemcu,我想用C编程.

我已经完成了他所有的步骤,我可以从eclipse环境中编译和刷新电路板.我不按任何按钮来加载闪光灯,因为电路板可以自己处理(至少这是我读到的).根据显然我有一个nodemcu 0.9,但我看到的板看起来不像图中的那个(微带天线看起来很奇怪......而在板的背面它说www.doit.am ESP12E devkit V2 ......我的天线甚至看起来都不像板子后面的网站上的天线.

我看着一切都继续前进.我在espressif上编写了一个眨眼的例子并将其闪现.我看到它创建了eagle.flash.bin和eagle.irom0text.bin并分别将它们加载到0x00000和0x10000(根据我读过的文档,这是可以的).当我重置电路板时,我可以看到它确实闪烁,并且由于LED闪烁,因此其中有一个程序.然后我尝试了hello_world示例.一切都相应的,我重置电路板后,我看到led继续以相同的频率闪烁,当我通过espressif提供的terminal.exe连接到电路板时,我只能在输出中看到垃圾,即使波特是根据代码更正(即便如此,我在terminal.exe中尝试了所有不同的bauds).

好的......然后我又回到了眨眼的例子,增加了眨眼之间的延迟.闪烁它,频率保持不变.我知道它创建了新的.bin文件,但仍然没有改变.这促使我创建了一个新项目.我是按照米哈伊尔·格里戈列夫提供的指示做到的.我只是放了一个无限循环,期望什么都没有,但是在刷新新编译的固件之后,我仍然可以看到LED以相同的频率闪烁,即使代码中没有任何内容,我甚至在之前擦过闪存(是的,我确认闪光灯是空的).

所以这导致我测试我可以编译的每个例子.我注意到有些人没有眨眼导致其他人这样做,就像什么都没发生一样.之后我下载了nodemcu固件,加载后我注意到它工作正常,我甚至可以在可用的wifi网络中看到ESP.

我真的不明白发生了什么.为什么有些例子有用而其他例子没有?为什么我不能修改一个简单的blinky的源代码并看到更改?我更喜欢以这种方式使用esp模块,因为我不喜欢arduino接口或者它使用静态设置和循环函数的方式,我不想在LUA中编程它.

我甚至检查了espressif提供的makefile,我能看到的唯一区别是BOOT和APP变量.我甚至尝试修改它们,但仍然没有变化.

有谁能够帮我?

c eclipse nodemcu esp8266

11
推荐指数
1
解决办法
608
查看次数

没有COM端口,没有/ dev/tty* - 尝试了不同的操作系统,不同的电缆

我的devkit是一个Amica V3,其中有两个,似乎都有同样的问题.

我试图让设备出现,然后才能安装NodeMCU固件.

我在不同的计算机和不同的操作系统(Windows 7/10 + OS X 10.11.4)上做了这个,每次都确保我首先安装了SiLabs CP210X驱动程序.在任何地方都没有devkit的迹象......当我拔下它并将其插回WiFi天线附近的LED时闪烁然后什么都没有.我按了RST几次,短/长,没什么.

我真的希望你告诉我,我是愚蠢的,我应该有RTFM,所以当你第一次闪光时,我不会错过为电路板提供额外的电源......但我怀疑是这种情况.

nodemcu esp8266

10
推荐指数
1
解决办法
3179
查看次数

将手机与ESP8266连接

我正在研究家庭自动化项目,我想将移动应用程序连接到ESP8266.

  • 我可以将消息从移动应用程序发布到设置为代理的AWS服务器.(工作)

  • 我可以将消息从AWS发布到Raspberry PI.(工作)

  • 我还可以将Raspberry PI的Mqtt消息发布到NodeMCU/ESP8266.(工作).

但是当我试图将所有这些设置在一起时,问题就出现了.从AWS发布消息时,Raspberry PI会收到该消息,但它不会反映在NodeMCU/ESP8266上.

这是使用中代码.

这就是我在ESP8266中使用的内容.当我从Raspberry PI发布时它工作正常,即使我在我的移动设备上连接PI将MQTT客户端应用程序正常工作.但是当我从AWS发布时,ESP8266没有任何反应,但PI能够接收消息.

amazon-web-services mqtt raspberry-pi nodemcu esp8266

10
推荐指数
1
解决办法
466
查看次数

ESP8266/Arduino:为什么需要将 ICACHE_RAM_ATTR 宏添加到 ISR 和从那里调用的函数?

我读到我需要将 ICACHE_RAM_ATTR 宏添加到中断服务例程 (ISR) 以及在我的 ESP8266 Arduino 代码中从那里调用的每个函数,以防止随机崩溃。我还找到了对宏 ICACHE_RAM_ATTR 的作用的解释,尽管我不确定该解释是否适用于 Espressif ESP8266 SDK,也适用于 ESP8266 上的 Arduino。我不明白为什么我需要将宏添加到 ISR。

第一个问题:为什么我需要将 ICACHE_RAM_ATTR 宏添加到 ISR 以及从那里调用的所有函数?

下一个问题是,如果我强制内联从 ISR 调用的函数会发生什么:

inline void doStuff() __attribute__((__always_inline__)) { // <-- necessary to add ICACHE_RAM_ATTR here?
    // no more function calls here
}

void ICACHE_RAM_ATTR handleInterrupt() {
    doStuff();
}
Run Code Online (Sandbox Code Playgroud)

第二个问题:我是否需要将 ICACHE_RAM_ATTR 宏添加到强制内联的函数中?

arduino isr esp8266 arduino-esp8266

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

发生致命 esptool.py 错误:无法配置端口。PermissionError(13, '连接到系统的设备无法运行。', None, 31)

我使用的是 Windows 操作系统,尝试在 ESP8266 的 arduino IDE 中运行 .ino 代码,并在尝试将代码上传到 ESP8266 时遇到以下错误。

发生致命的 esptool.py 错误:无法配置端口,出现问题。原始消息: PermissionError(13, '连接到系统的设备无法运行。', None, 31)

我知道现在很多人都遇到这个错误。我已经使用 arduino IDE 和 esp8266 一段时间了,这是第一次出现这样的错误。我认为这与为 ESP8266 设置 arduino IDE 时安装的库或驱动程序有关。

  • 尝试从我的笔记本电脑上断开 ESP8266 并将其重新连接到另一个 USB 端口。
  • 尝试使用 RESET 按钮重置 esp8266,检查是否是硬件原因。
  • 尝试以管理员身份运行 Arduino IDE。

esp8266 arduino-esp8266 esptool permissionerror

9
推荐指数
3
解决办法
7万
查看次数

如何在esp8266(Nodemcu开发板)上运行Node.js?

我正在尝试将Apple homekit连接到nodemcu板,我发现了一个可以在我的计算机上运行的教程,但我很想知道是否有任何方法可以在NodeMCU板(ESP8266)上加载和运行Node.JS?

node.js nodemcu esp8266

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

ESP8266 WiFiClient简单的HTTP GET

我正在研究使用ESP8266和ESP8266WiFi库阅读网页的简单问题.

我在示例中仅更改了几行,但不知道问题是什么.那是我的代码:

include <ESP8266WiFi.h>

const char* ssid     = "WiwoNET";
const char* password = "xxxxxxx";

const char* host = "https://pure-caverns-1350.herokuapp.com";

void setup() {
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
  delay(5000);
  ++value;

  Serial.print("connecting to ");
  Serial.println(host);

  // Use WiFiClient class to create TCP connections …
Run Code Online (Sandbox Code Playgroud)

http arduino esp8266

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

如何闪现RobotDyn ESP8266PRO板?

使用RobotDyn的RobotDyn ESP8266PRO版本.

首先,没有制造商提供的文档.

据我所知:

  • EN和5V之间10Kohm
  • IO15和gnd之间10Kohm
  • 接地IO0和复位
  • 我使用了PL2303电缆(Ardruino Mino Pro成功)
  • python esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 nodemcu-master-12-modules-2016-11-17-02-07-27-integer.bin 0x3fc000 esp_init_data_default.bin

结果: fatal error: Digest mistmatch

有人成功了解这件事吗?

arduino nodemcu esp8266

7
推荐指数
1
解决办法
2273
查看次数

ESP8266 + Micropython:为什么我会定期用i2c读取来获得相同的值?

我写使用一些简单的代码MicroPython上Digistump橡树,这基本上是一个ESP8266接口板运行.我试图了解通过i2c定期读取传感器时看到的行为.

下面的代码(读取ACCEL_XOUT_HACCEL_XOUT_L寄存器的值)工作得很好:

>>> from machine import Pin, I2C
>>> bus = I2C(scl=Pin(2), sda=Pin(0))
>>> while True: 
...     h, l = bus.readfrom_mem(0x68, 0x3b, 2)
...     print (-((((h<<8)+l)^0xFFFF) + 1) if (h & (1<<7)) else (h<<8)+l)
Run Code Online (Sandbox Code Playgroud)

(该print语句只是从两个补码执行转换.)

正如预期的那样,当我移动imu时,打印出的加速度计值大致实时变化.

但如果我在循环中引入延迟,例如...

>>> import time
>>> from machine import Pin, I2C
>>> bus = I2C(scl=Pin(2), sda=Pin(0))
>>> while True: 
...     h, l = bus.readfrom_mem(0x68, 0x3b, 2)
...     print (-((((h<<8)+l)^0xFFFF) + 1) if (h & (1<<7)) else (h<<8)+l)
...     time.sleep(1) …
Run Code Online (Sandbox Code Playgroud)

accelerometer esp8266 micropython mpu6050

7
推荐指数
0
解决办法
557
查看次数