如何在收到新信息时中断 while 循环?
我在ESP as a server和Laptop as a client中使用了Python插座. I customized the socket codes from this site.当我将loop作为客户端输入发送时,我在服务器上输入一个循环.我不知道当我发送一个单词以外的单词以外的其他单词,例如"你好". 是如何打破的. server.py: import socket host = '' port = 5560 def setupServer(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print("Socket created.") try: s.bind((host, port)) except socket.error as msg: print(msg) print("Socket bind comlete."
36 2024-04-23
编程技术问答社区
如何打印Arduino串口中AT命令的响应?
我想打印对命令的响应.我正在命令发送,但我没有在Arduino串行端口中得到任何响应.它给出-1而不是确定. #include "SoftwareSerial.h" String ssid = "connectify-krish"; String password = "12345678"; String myword= ""; SoftwareSerial esp(10, 11); void setup() { Serial.begin(9600); esp.begin(9600); esp.write("AT"); Serial.println(esp.read()); } void loop() {} 解决方案 正如您未终止AT命令行所指出的那样,因此调制解调器永远不会响应. 确保您阅读V.250并了解AT命令和AT命令行之间的区别. ATI是一个命令,"ATI I I\r"是连续调用此命令的命令行.顺便说一句,请注意,在此示例中,您将仅获得其
10 2024-04-09
编程技术问答社区
Arduino草图中,从字符串常数到'char*'[-Wwrite-strings]的转换已被废弃,出现错误。
我正在使用Arduino和ESP8266发送传感器数据.但是,在Arduino中汇编草图时,我会遇到一个错误 - 不弃用的转换从字符串常数到'char*'[-wwrite-strings] . . #include "SoftwareSerial.h" SoftwareSerial esp(10, 11);// RX, TX void setup() { esp.begin(9600); Serial.begin(9600); delay(100); Serial.println("Started..."); reset(); connectWifi(); } //reset the esp8266 module void reset() { esp.println("AT+RST"); delay(1000); if (esp.find("OK")) Serial.println("Module Reset"); //error } 解决方
6 2024-04-09
编程技术问答社区
什么是嵌入式编程中的zalloc?
我正在研究编程ESP8266串行WIFI芯片.在其SDK示例中,它广泛使用了一个称为os_zalloc的函数,我期望malloc. 偶尔也会使用os_malloc.因此它们在功能上似乎并不相同. 不幸的是没有文档.有人可以从以下标头文件中做出有根据的猜测吗? #ifndef __MEM_H__ #define __MEM_H__ //void *pvPortMalloc( size_t xWantedSize ); //void vPortFree( void *pv ); //void *pvPortZalloc(size_t size); #define os_malloc pvPortMalloc #define os_free vPortFree #define os_zalloc pvPortZalloc #endif 解决方案 因为os_zalloc是一个宏,并且定义是在mem.h中给出的,一个更好的问题是关于pvPortZall
12 2024-04-08
编程技术问答社区
AT命令响应(了解Arduino上代码执行的顺序)
我正在命令将命令发送到 arduino uno /nano(atmega328),并试图解析因建立ESP反应和反应和反应的响应而获得的字符串的结束它是否成功(以及是否准备好接收另一个命令).我知道在此之前已经讨论了命令响应的解析: 在命令响应 ,但我在这里没有涉及的特定问题,也可能对这里的其他人感兴趣... 首先,调用了一个函数,该函数将AT命令发送到ESP以连接到ThingsPeak(DataLogging Server).这在手动模式下工作正常,并且在试图解析响应时也可以连接,但它仅解析返回的第一行.例如,串行监视器中的预期输出将为: c AT+CIPSTART="TCP","api.thingspeak.com",80 CONNECT OK Connected to ThingSpeak! 其中c只是命令字符i启动连接的命令字符. 然而,实际响应如下: c AT+CIPSTART="TCP","api.thingspeak.com",80
16 2024-04-06
编程技术问答社区
将Sparkfun ESP8266设备连接到Azure物联网中心
我目前正在尝试将我的SparkFun ESP8266东西连接到我的Azure IoT中心.我已经成功设置了我的枢纽,并遵循有关如何将事物连接到我的Azure IoT中心的教程:不幸的是,我一直遇到错误: 'staticjsonbuffer'在此范围中没有声明 arduino:1.8.5(Windows 10),董事会:" Sparkfun ESP8266 Thing,80 MHz,512K(无spiffs),V2较低的内存,禁用,无,无,只有Sketch,115200" 构建选项更改,重建所有 c:\ users \ l.full \ documents \ arduino \ iot-hub-sparkfun-thingdev-client-app \ app \ message.ino:在函数'bool redmessage(int,char*)中: 消息:46:错误:在此范围中未声明'staticjsonbuffer' StaticJsonBuffer
26 2024-03-25
编程技术问答社区
连接NodeMCU和Microsoft Azure IoT Hub的问题
我正在尝试通过MQTT协议将运行最新的NodeMCU构建的ESP8266连接到Microsoft Azure IoT Hub. 看来这是可能的,如这里所示... 我正在使用正确的语法,据我从MS azure帮助中看到的... https:///learlen.microsoft . 与使用NodeMcu创建SAS令牌的ThingLabs中的示例不同,我遵循MS文档并使用设备资源管理器生成了SAS令牌,以进行测试. . 我的LUA代码如下... -- Create variables DEVICE = "testdevice" IOTHUB = "mynewiothub.azure-devices.net" PORT = 8883 USER = IOTHUB.."/"..DEVICE.."/api-version=2016-11-14" PASS = "SharedAccessSignature sr=mynewiothub.azure-devices.
16 2024-03-24
编程技术问答社区
ESP8266通过AWS IoT核心的MQTT接收消息失败
我正在使用 pubsubclient per per 此示例连接到AWS IOT.具体来说,我正在尝试使用 aws iot fleet Provisioning ,其中涉及订阅和出版一些特殊的$aws/主题. 正在正确建立连接,并且CloudWatch日志显示成功的Connect,Subscribe,Publish-In和Publish-Out事件.但是,每当MCU收到消息时,它似乎会删除连接.什么给? 解决方案 调试PubSubclient显示,由于以下错误,基础WiFiClientSecure实例正在丢失连接: BR_ERR_TOO_LARGE: Incoming record is too large to be processed, or buffer is too small for the handshake message to send. 我收到的消息约为4 kb,所以我不得不添加以下内容: wifi_ = new WiFiClientS
8 2024-03-22
编程技术问答社区
ESP8266 AT固件没有说它已经准备好了
我正在使用ESP12E模块.我在固件上上传了v1.1.1.1. 监视COM端口时,我会看到: 最终ID并未说明它已经准备就绪,因此AT命令都无法正常工作. 有什么想法如何修复它? 解决方案 在您的问题的末尾,我们看到了一些垃圾.最上面说 ,第一个原因:2,启动模式:(3,7) 这告诉我们该设备具有外部重置,并配置为从Flash启动.因此,您的PIN连接是正确的.如果我们返回垃圾,这告诉我们加载的FW的工作方式不同,然后是74880波特.垃圾可能是"现成"消息.尝试从终端(Arduino IDE)更改波特率,然后重新启动模块,直到看到"就绪"消息.
12 2024-03-18
编程技术问答社区
Arduino mega + esp 8266发送获取请求
我有一个PHP脚本,可以帮助将数据存储到Google Firebase中. 我正在使用此URL访问我的PHP SCIPT并输入数据: arduino.byethost22.com/firebasetest.php?slot1_data = empty&slot2_data = occupied 我已经尝试过它,它可以将slot1_data存储为空,而slot2_data则可以将其存储为占用.但是,我需要使用Arduino发送此URL.我当前正在使用此代码 #include "SoftwareSerial.h" #define DEBUG false // turn debug message on or off in serial String server = "arduino.byethost22.com"; String uri = "/FirebaseTest.php?slot1_data=empty&slot2_data=occupied"; void s
12 2024-03-18
编程技术问答社区
如何从连接到arduino的ESP8266获得AT响应
我正在与ESP8266 WiFi模块和连接Arduino战斗.在将固件更新为最新版本后,我开始使用ArgonMArduino来从WiFi中获取数据.我看到了许多通过ESP8266 maiking Web服务器的例子,但它们都不适合我. ESP连接到我的Arduino Leonardo: > arduino-> ESP8266 电源3.3V-> VCC 地面 - >地面 tx-> rx(通过逻辑级转换器5-> 3.3V) rx-> TX(通过Logix Level Converter 电源3.3V-> GPIO0(没有任何电阻) 我做了简单的草图: void setup(void){ Serial.begin(9600); Serial1.begin(115200); } void loop() { if(Serial1.available()) { Serial.println("WIFI IS AVAI
26 2024-03-18
编程技术问答社区
Arduino ESP8266 AT GET请求
我很难使用ESP8266-01将数据发送到我的数据库. 我正在从控制台中的传感器中获取正确的数据,但我的数据库中没有任何数据. PHP脚本是正确的,我知道,可以肯定的是,我也会在这里添加它. 我的代码: // http://playground.arduino.cc/Main/Average #include #include char serialbuffer[100];//serial buffer for request url SoftwareSerial mySerial(10, 11); const char* ssid = "Master"; const char* password = "#Bennet99*"; const char* host = "server"; void setup() { Serial.begin(9600); // Connection to PC
22 2024-03-18
编程技术问答社区
Websockets ESP8266
我正在尝试将数据发送到ESP8266中的WebSocket的服务器,但握手不起作用. 我正在发送以下命令的序列: AT+RST AT+CWMODE=1 AT+CIPMODE=0 AT+CIPMUX=1 AT+CWJAP="ssid_my_network","password" AT+CIPSTART=4,"TCP","ip_server",port AT+CIPSEND=4,data_lenght 在这一刻,我发送标题: GET ws:ip_server HTTP/1.1\r\n Host: ip_server\r\n Upgrade: websocket\r\n Connection: Upgrade\r\n Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n Sec-WebSocket-Version: 13\r\n 但是,我没有收到服务器的响应.我在做什么错? 解决方案 HTTP标头必须以空线结尾.您需要
12 2024-03-18
编程技术问答社区
使用AT命令在2个ESP8266 WiFi模块之间进行通信,无需路由器
我正在尝试将基于 tcp 的通信从一个 ESP8266 模块发送到另一个简单的消息" hello"到另一个模块,然后使用此文档.我将2 USB用作硬件,将TTL作为硬件,将实时用作串行终端. 当 ESP8266 模块连接到路由器时,我可以这样做,以下面的方式发送命令, 设置服务器: AT+CWJAP="AccessPointName","Password"//Join to your WiFi network AT+CIPMUX=1//0 for single connection 1 for multiple connection. AT+CIPSERVER=1,1336//Set as Server. 1 to open Server mode(0 to close). 1336 is port. AT+CIFSR//Get IP address (STAIP 192.168.43.151) 设置客户端: AT+CWJAP="AccessPointName","
12 2024-03-18
编程技术问答社区
ESP266等待数据包头的时间已过
我正在尝试在esp8266中刷新AT固件,但是我总是会遇到等待数据包标头的超时错误. 注意:我正在使用esptool.py闪烁芯片,并且我已经上传了一些代码,我使用Arduino IDE 上传了这些代码 这是我写闪存时遇到的错误: root@mayank-HP-Notebook:/home/mayank/Desktop# esptool.py -b 115200 -p /dev/ttyACM0 write_flash 0x000000 "ESP_8266_BIN0.92.bin" esptool.py v1.2-dev Connecting... Running Cesanta flasher stub... 发生了致命错误:等待数据包标头的时间 通过USB连接到我的桌面时, 解决方案 遇到了相同的问题.尝试了所有内容:甚至更换了电缆,但最终我将USB电缆放在另一个USB插槽中,它起作用了!似乎我桌面前的无工作USB插槽是主板上USB的扩展,只有我桌面后面的
16 2024-03-18
编程技术问答社区
为什么我在向ESP8266发送复位后还需要改变波特率?
因此,我成功地将ESP8266附加到了应得的Arduino上.如果我选择Baudrate为74880,我可以通过串行监视器与它进行通信.然后,所有命令都正确地出现了,并且可以正确读取.但是,当我发送命令AT+RST重新启动ESP8266时,我无法再与它进行通信,并且需要重新打开串行连接,以115200的波特rate.当我关闭ESP8266时. 这种行为来自何处? 解决方案 这是关于这种行为的起源的解释: baudrate的74880 bd是ESP的"本机"波特率,用于在启动期间由系统本身自动生成生成的调试消息,以防有26 MHz而不是40 MHz Crystal使用在船上 - 正如我们所看到的,大多数是是. 使用40 MHz晶体,波特rate的含量为预期(115200),但使用26 MHz晶体,Baudrate是115200 * 26/40 = 74880. bootloader Ender Ende teend baudrate以其他方式控制了baudr
32 2024-03-18
编程技术问答社区
从arduino发送数据传感器到esp8266,后者使用SSL将其发送到云端。
我有一个Arduino uno,它从传感器中收集数据,我想使用使用库WificLextecure支持SSL的WiFi ESP8266将此数据发送到云中这些数据并将其发送到云之后,我可以与MQTT一起工作,但是我想知道是否有一种方法可以直接在Arduino Uno和ESP8266之间直接连接,而无需第三部分,任何帮助都将是Gratefull. 解决方案 根据我的研究,命令API的ESP8266不支持SSL.这意味着您需要使用Arduino(作为FTDI转换器)用自定义固件对ESP8266进行编程.这将使您可以使用WiFiClientSecure和pubsubclient. 将Arduino用作FTDI: 加载不使用Serial的草图,例如"眨眼"示例 将Arduino的TX PIN连接到ESP8266 RX PIN 将Arduino的RX PIN连接到ESP8266 TX PIN 现在您需要设置Arduino IDE,以便可以编程ESP8266 在Ard
24 2024-03-03
编程技术问答社区
Arduino Uno + ESP8266读取服务器的反应
我正在使用ESP8266向Arduino Uno发送GET请求.该请求已发送,但我无法打印收到的响应. 我正在使用我更改了连接到我的服务器的代码,我可以看到在服务器的日志上收到了GET请求. 我尝试放置 while (ser.available()) { Serial.write(ser.read()); } Serial.println("AT+CIPCLOSE");语句. ,但是我在"AT+CIPCLOSE" 之后没有在串行显示器上获得任何东西 编辑: 这是我的整个代码: // connect 10 to TX of Serial USB // connect 11 to RX of serial USB SoftwareSerial ser(10, 11); // TX, RX // this runs once void setup() { // enable debug serial Serial.beg
30 2024-03-03
编程技术问答社区
如何解决ESP8266的这个错误:"警告:espcomm_sync失败 错误:espcomm_open失败 错误:espcomm_upload_mem失败"?
我正在使用ESP8266-01进行项目.这就是我将其连接到PL2303的方式: PL2303 ---> ESP8266 3.3V ---> VCC,CH_PD txd ---> rx RXD ---> TX gnd ---> gpio0,gnd 接下来,我打开了Arduino IDE(版本1.8.19),并将此代码添加到我的草图中(我正在使用ESP8266库版本2.1.0): #include const char *ssid = "ESP AP"; const char *password = "12345"; void setup() { Serial.begin(115200); WiFi.softAP(ssid, password); Serial.print("Access Point: "); Serial.print(ssid); Seri
12 2024-03-03
编程技术问答社区
无法对ESP8266进行编程
蓝色LED在向模块供电后闪烁,红色固定在启用,我什至可以通过WiFi连接到它.但是我无法编程.我尝试了Arduino IDE,不同的固件闪光灯(例如Nodemcu,XTCOM).我正在使用Arduino Mega. 这是我的初始设置: VCC - 3.3 V on Arduino RST - nothing CH_PD - 3.3 V on Arduino TX - RX on Arduino (TX is transmitting data to RX, so I don't need a voltage divider, right?) RX - voltage divider (R1 = 10K, R2 = 20K) - TX on Arduino GPIO0 - GND on Arduino GPIO2 - nothing GND - GND on Arduino 然后,我尝试从Arduino IDE上传草图,并收到以下错误: warning: espcom
16 2024-03-03
编程技术问答社区