标签: esp8266

esp32 和 esp8266 编程

如何使用汇编对 ESP32 或 ESP8266 模块进行编程?我不想使用arduino ide。我想出了一种用汇编对 atmel 芯片进行编程的方法。我想学习如何用汇编语言对 esp32 和 esp8266 进行编程。

assembly iot esp8266 esp32 esp8266wifi

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

在 Arduino 设备 (ESP8266) 的 Visual Studio Code 中看不到 Serial.print() 输出

我在 Arduino 设备(本例中为 ESP8266)的 Visual Studio Code 中看不到任何 Serial.print() 输出。我期待在调试控制台上看到它。我是否配置不正确?

我知道我的代码正在工作,因为 LED 正在闪烁,但我在任何地方都没有看到任何输出。

这是我的代码:

#include <Arduino.h>

void setup()
{
    Serial.begin(9600); // EDIT: added this line
    Serial.println("Setup...");
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  Serial.print("On!");
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  
  Serial.print("Off!");
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW  
  delay(1000);                       // wait for a second
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此板: https://www.waveshare.com/wiki/e-Paper_ESP8266_Driver_Board

这是我的 platformio.ini 文件:

[env:esp12e]
platform = espressif8266 …
Run Code Online (Sandbox Code Playgroud)

arduino esp8266 arduino-esp8266

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

xtensa dissembly 中的大括号

我正在反汇编和检查(主要是为了乐趣和学习)为 ESP8266 (Xtensa ISA) 生成的 Arduino 代码。

到目前为止,我一直在跟踪代码,没有出现任何问题,直到4010f4c2主函数中的大括号(位置):

4010f494 <main>:
4010f494:   90a092                  movi    a9, 144
4010f497:   c01190                  sub a1, a1, a9
4010f49a:   00a022                  movi    a2, 0
4010f49d:   236102                  s32i    a0, a1, 140
4010f4a0:   2261c2                  s32i    a12, a1, 136
4010f4a3:   2161d2                  s32i    a13, a1, 132
4010f4a6:   ffc2c5                  call0   4010f0d4 <print_version>
4010f4a9:   202110                  or  a2, a1, a1
4010f4ac:   001045                  call0   4010f5b4 <eboot_command_read>
4010f4af:   00d256                  bnez    a2, 4010f4c0 <main+0x2c>
4010f4b2:   024c                    movi.n  a2, 64
4010f4b4:   fee101                  l32r    a0, 4010f038 <_stext+0x38>
4010f4b7: …
Run Code Online (Sandbox Code Playgroud)

assembly arduino objdump esp8266 xtensa

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

ESP32:发送简单的 TCP 消息并接收响应

我想使用 ESP32 在我的计算机上执行与 netcat“nc” 命令相同的请求:

电脑:

$ nc tcpbin.com 4242
Test
Test
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

创建一个wifi客户端并听听答案:

  • 连接到 TCP 服务器
  • 写一个信息
  • 等待并阅读答案
#include <Arduino.h>
#include <WiFi.h>

WiFiClient localClient;

const char* ssid = "...";
const char* password = "...";

const uint port = 4242;
const char* ip = "45.79.112.203"; // tcpbin.com's ip


void setup() {
  Serial.begin(115200);
  Serial.println("Connect Wlan");
  WiFi.begin(ssid, password);

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

void loop() {
  sendRequest();
  delay(200);
}

void sendRequest() {
  if(!localClient.connected()) {
    if (localClient.connect(ip, port)) …
Run Code Online (Sandbox Code Playgroud)

tcp arduino esp8266 arduino-esp8266 esp32

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

串口变速后无法连接ESP8266

经过一些反复试验,今晚我的Arduino Uno开始与ESP8266模块进行通信,最常见的接线方式是,从大尺寸外部电源为模块提供3.3V电源,直接连接3.3V TX线路和分压器从5V RX读取.

SoftwareSerial esp8266(2,3);

void setup()
{
    Serial.begin(9600);
    esp8266.begin(115200);

    char buffer[50];
    esp8266.write("AT\r\n");
    esp8266.readBytes(buffer, sizeof(buffer));
    Serial.println(buffer);

}
Run Code Online (Sandbox Code Playgroud)

在为ESP8266 < - > Arduino串行通信设置115200速度后,串行监视器上出现了一些明确的启动消息和命令响应.

Arduino串行监视器显示与ESP8266模块的通信

由于这些消息是由一些垃圾字符交错的,我试图降低通信速度.为此,我向AT+IPR=9600模块发出命令,该模块立即显示蓝色LED上的一些操作,控制台上的OK响应,最后导致相同的LED被固定.

随后调整了串行速度上的Arduino的一侧,有esp8266.begin(9600);,但永远无法获得与模块的任何进一步的沟通. 我现在只能以任何速度看到垃圾.

模块可以升级到不同的速度吗?我尝试了很多(4800,57600,19200,回到115200等),但显示器上没有明显的响应.

您是否可以建议重新建立连接?有没有办法重置上一个命令结果?如果可以尝试任何更简单的解决方案,我宁愿避免设置固件更新.

arduino at-command baud-rate esp8266

0
推荐指数
1
解决办法
3698
查看次数

NodeMCU GPIO当前最大值和NodeMCU独立功耗是多少?

不幸的是,我找不到关于NodeMCU的硬件规格.

所以我想了解GPIO电流限制,独立电源消耗和电路板尺寸.

或者您可以分享有关NodeMCU硬件规格的链接吗?

有些页面说GPIO Current Maximum是12mA,但我找不到任何自信的说法.

谢谢.

nodemcu esp8266

0
推荐指数
1
解决办法
7634
查看次数

ESP8266 从网页获取请求返回连接器被拒绝

我希望能够将数据从网页发送到 esp8266 并控制引脚,每当我按下网页上的按钮时,它都会返回 ESP 的 i 地址和CONNECTION REFUSED. 我究竟做错了什么?

ESP代码:

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

  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());
  Serial.print("Netmask: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("Gateway: ");
  Serial.println(WiFi.gatewayIP());

}

int value = 0;


void loop() {
   HTTPClient http;

   http.begin("192.168.0.24:80");
   int httpCode = http.GET();

   if(httpCode > 0){
    String payload = http.getString();
    Serial.println(payload);
    }
    http.end();
    delay(3000);

}
Run Code Online (Sandbox Code Playgroud)

HTML网站:

<html>
<head>
  <title>ESP8266 toggle page</title>
</head>
  <body> …
Run Code Online (Sandbox Code Playgroud)

get arduino esp8266

0
推荐指数
1
解决办法
1135
查看次数

将字符串转换为MAC地址

在SPIFFS中的文件内,我将以"XX:XX:XX:XX:XX:XX"的形式保存有关mac地址的信息.当我读取文件时,我需要将它从STRING切换为十六进制值数组.

uint8_t* str2mac(char* mac){
  uint8_t bytes[6];
  int values[6];
  int i;
  if( 6 == sscanf( mac, "%x:%x:%x:%x:%x:%x%*c",&values[0], &values[1], &values[2],&values[3], &values[4], &values[5] ) ){
      /* convert to uint8_t */
      for( i = 0; i < 6; ++i )bytes[i] = (uint8_t) values[i];
  }else{
      /* invalid mac */
  } 
  return bytes;
}

wifi_set_macaddr(STATION_IF, str2mac((char*)readFileSPIFFS("/mac.txt").c_str()));
Run Code Online (Sandbox Code Playgroud)

但我在某处的代码中错了

当我AA:00:00:00:00:01输入文件时,我的ESP8266设置29:D5:23:40:00:00

我需要帮助,谢谢

c++ arduino esp8266 esp32

0
推荐指数
1
解决办法
2707
查看次数

Micropython paho 模块丢失?

我正在尝试使用 nodemcu v3 和 dht11 构建一个基本的 MQTT 发布器来发送温度数据。我正在使用 ESPlorer,当我尝试上传代码时,它告诉我该paho模块不存在。我的代码如下:

import time
import network
import paho.mqtt.client as mqtt

sta_if = network.WLAN(network.STA_IF)
ap_if = network.WLAN(network.AP_IF)
sta_if.connect('<MySSID>', '<MyPW>')

mqtt = mqtt.Client()
mqtt.connect("randomIPaddress")

pin = machine.Pin(4)
temp_instance = dht11.DHT11(pin)
result = temp_instance.read()

print("Temperature is: %d C" % result.temperature)
print("Humidity is: %d %%" % result.humidity)
message = result.temperature 
mqtt.publish("base/dht11/temp", message)  
mqtt.loop_forever()
Run Code Online (Sandbox Code Playgroud)

我仍然对 MQTT 发布的工作原理感到非常困惑,而且我似乎找不到任何在这一点上相互同意的来源。我所看到的每个地方都有不同的解决方案来解决我的问题。

有谁知道为什么 ESPLorer 一直告诉我该paho模块不存在?我已经尝试按照文档中所示安装模块,但这让我无处可去。

编辑: https: //pypi.python.org/pypi/paho-mqtt/1.1 这些是我安装 paho 所遵循的说明。

python paho nodemcu esp8266 micropython

0
推荐指数
1
解决办法
1848
查看次数

ESP8266 上的 MicroPython - RTC 没有 init 方法?

文档说可以使用 RTC.init 调用初始化 RTC 时钟。

https://docs.micropython.org/en/latest/esp8266/library/machine.RTC.html

但它不会那样工作:

>>>import machine
>>>rtc = machine.RTC()
>>>rtc.init((2018,4,10,17,30))
Traceback (most recent call last):
  File "<stdin>", line 1 in <module>:
AttributeError: 'RTC' object has no attribute 'init'
Run Code Online (Sandbox Code Playgroud)

所以文档与现实相矛盾。固件版本是 v1.9.3 - 几天前下载了最新的。

最有趣的是,dir(rtc)给出['datetime','memory','alarm','alarm_left','irq','ALARM0']. 它缺少其他几种方法:now、deinit、cancel

那么RTC init方法在哪里,它怎么会消失呢?

UPDATE:我已经想通了,该文件是错误的,我需要使用RTC.datetime代替RTC.init。但它仍然是错误的:

>>>from machine import RTC
>>>rtc=RTC()
>>>rtc.datetime((2000,1,1,23,59,59,0,0))
>>>rtc.datetime()
(2000, 1, 3, 0, 11, 59, 3, 705)
Run Code Online (Sandbox Code Playgroud)

换句话说:2000-01-01T23:59:59 突然变成了 2000-01-03T00:11:59。如何?

我在 RTC.datetime 方法的 tzinfo 参数上也找不到任何有用的东西。它应该是一个数字,这很清楚。但是这是什么意思?

我也试过午夜:

>>>rtc.datetime((2000,1,1,0,0,0,0,0))
>>>rtc.datetime()
(2000,1,1,5,0,0,1,155)
Run Code Online (Sandbox Code Playgroud)

因此,在 tzinfo=0 时,午夜变为 05:00:00。我首先认为这意味着 …

esp8266 micropython

0
推荐指数
1
解决办法
1715
查看次数

在ESP8266上的C中读取const *时崩溃

我正在创建一个系统,该系统通过SoftwareSerial从Arduino Uno读取传感器值,并通过MQTT发布它。但是,我认为所面临的问题更为笼统,我必须承认我是c语言的新手。

我正在读取数据,并将其拆分为程序顶部定义的两个const *变量。

当我读回从串行连接中解析的已保存的“数据”和“主题”变量时,我只会得到垃圾输出,通常会崩溃,从而重启设备。

它可以在read-from-serial函数中成功打印它们,但以后无法正确读取。它与数据的保存方式有关吗?我可以为变量显式分配一些内存吗?

我正在使用ESP8266(ESP07)芯片,其波特率降低且电源电压合适。它似乎运行良好且稳定。

#include <StringSplitter.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
#include <time.h>

//const char* ssid = "xxxx";
//const char* password =  "xxxx";
const char* ssid = "xxxx";
const char* password =  "xxxx";
const char* mqttServer = "xxxx;
const int mqttPort = xxxx;
const char* mqttUser = "xxxx";
const char* mqttPassword = "xxxx";
int timezone = 1;
int dst = 0;
Run Code Online (Sandbox Code Playgroud)

数据存储在这里:

char* data;
char* topic;
boolean newData = false;
boolean unpublishedData = false;

WiFiClient espClient;
PubSubClient client(espClient); …
Run Code Online (Sandbox Code Playgroud)

c arduino software-serial esp8266

0
推荐指数
1
解决办法
81
查看次数