问题标签 [software-serial]

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 投票
1 回答
1138 浏览

arduino - 没有从两个不同的串行端口 Arduino Uno 接收到数据

我目前正在尝试在我的 arduino uno 上使用两个不同的串行端口,即 (2,3) 用于 gsm,(8,9) 用于 gps。我已经尝试了这两个链接;

1) arduino-uno-with-multiple-software-serial-devices

2)在Arduino上使用软件串口接收两个端口。

但似乎没有任何效果。串行监视器什么也没显示。

更新

我将 gps 和串行端口的库更改为 AltSoftSerial 和 NeoSWSerial。尽管如果我在示例中使用它们,它们都可以正常工作。但是当我实现这两个库并运行代码时,串行监视器中没有结果。

P/S:我已经尝试过 listen() 方法来关闭和打开每个端口,但它似乎没有按预期工作。欢迎任何帮助。谢谢你。

0 投票
2 回答
785 浏览

json - Arduino 从软件串口接收数据

对不起我的英语不好。我正在尝试在我的 Arduino 上接收来自 Sim800 的 json 数据。要读取串行端口上的数据,我使用了以下代码:

但收到不完整的数据。如下:

为了获得更好的结果,我使用了以下代码:

数据完全接收。如下:

但是我觉得这个代码不好,有问题。例如如果没有连接sim800时serialSIM800不可用,下面的代码会导致崩溃while(serialSIM800.available()==0);因为这总是正确的或者如果有错误并且OK没有收到,则以下代码导致崩溃while(!(data[x-1]=='K'&&data[x-2]=='O'));因为这总是正确的。最大数据长度为 120 字节,我应该怎么做才能从 Arduino 串口接收 Json 数据?谢谢你们。

0 投票
0 回答
270 浏览

arduino - 软件序列号不显示任何内容(SIM 800L)

我正在使用带有温度传感器的 LCD,并且希望在温度达到一定摄氏度时发送文本。GSM 模块 SIM 800L 目前每 3 秒闪烁一次,因此它似乎可以工作。使用的其他脚本似乎正在发送文本。使用我的代码,软件串行监视器中没有显示任何内容,并且没有发送文本。请帮忙。代码如下:

我想帮助尝试解决软件串行监视器中没有显示的问题。谢谢你的帮助。

0 投票
2 回答
335 浏览

c - Crash when reading const* in c on ESP8266

I'm making a system that reads sensor value from Arduino Uno through SoftwareSerial and publishes it via MQTT. However, the problem I'm facing I think is more general, I must admit I am new to c.

I'm reading the data, and splitting it into two const* variables that are defined on the top of my program.

When I read back the saved "data" and "topic" variable that I have parsed from the Serial connection, I only get garbage output, and usually a crash that restarts the device.

It prints them successfully inside the read-from-serial function, but it can't be correctly read later. Can it have something to do with how the data is saved? Can I explicitly allocate some memory for the variables?

I'm using a ESP8266 (ESP07) chip with lowered baud rate and proper voltage supply. It seems to be running well and stable.

The data is stored here:

It fails here, reading the data:

This part prints the values correctly back to me:

0 投票
1 回答
352 浏览

upload - 使用 wifiManager 通过 Arduino Uno r3 和 ESP8266-01 将传感器信息发送到 ThingSpeak

我有一个项目,其中我有一个连接到我的 Arduino Uno r3 的水位传感器。我有一个连接到我的 Arduino 的 ESP8266-01 模块。使用 AT 命令,我能够将传感器结果上传到 ThinkSpeak。但是我希望能够登录其他 wifi 频道,所以我将 wifiManager.h、ESP8266WiFi.h、DNSServer.h 和 ESP8266WebServer.h 放在我的 ESP8266 上,一切正常。由于没有IP和密码而无法连接,因此它以AP模式打开,我从计算机连接到它并登录。我输入了我的 IP 地址和密码,然后点击保存,ESP 被回收并连接。我现在正在尝试将传感器数据上传到 thingSpeak,但我认为 AT 命令不再起作用,因为我收到错误 espData is not declared in this scope。这是我的代码。

//这是我放到 ESP8266 上的新代码,并使用 GPIO 2 从传感器上传信息到 thinkSpeak 如您所见,我使用 wifiManager 连接到 wifi,然后通过 GPIO 2 端口读取由 Arduino 供电的传感器。

我会将其他代码放在与传感器或互联网无关的 Arduino 板上但是,只要它连接到串行端口并在上传代码后直接运行,上面的代码就可以很好地工作。如果我从计算机上的串行端口拔下 Arduino 然后重新插入没有任何反应。我认为它应该继续运行上述代码连接到互联网、读取传感器并向thingSpeak 发送信息,但事实并非如此。任何想法为什么会发生这种情况。

我用新代码替换了旧代码,据说可以将我的 thingSpeak 写入 API 保存到 SPIFFS。如果我删除设置,然后将闪存大小设置为 512k (128k SPIFFS) 上传,则 FS 挂载并将默认主机和 Api 写入密钥保存到 SPIFF,然后 ESP8266 重新启动连接到互联网并转到thingSpeak 并更新传感器读数。问题仍然是我想关闭 ESP8266 以节省能源,但是当我重新启动它时,只有 (void) 循环运行,所以即使它连接到 wifi,甚至可能连接到 thingSpeak,它也不会更新传感器输入。如何从 SPIFFS 获取信息 api 写入密钥到我的草图的 (void) 循环部分,以便它在关闭后将传感器数据发送到thingSpeak。或者我没有连接到 ThingSpeak。

0 投票
2 回答
17974 浏览

arduino - 如何在 ESP8266 中使用 SoftwareSerial

我正在尝试使用 PlatformIO 让 ESP8266 与 Arduino 一起工作。但是,导入 SoftwareSerial.h 时出现错误

尝试:Arduino IDE、PlatformIO、更改波特率、更改端口

如何让 SoftwareSerial 与 ESP8266 一起使用?

我想毫无错误地使用 SoftwareSerial。


错误代码:

0 投票
1 回答
527 浏览

arduino - 如果我连接到 SoftwareSerial,则无法 println 到 Serial

我想将 HC-05 蓝牙模块连接到 ESP8266,并在 if/else 语句中使用从蓝牙模块接收到的输入。

这样做时,我可以从蓝牙接收数据到串口,但是我不能使用 Arduino IDE 串口来打印字符。如果我开始蓝牙串行连接,为什么 println 不再适用于串行?

尝试了不同的波特率,不同的引脚

我想在 if/else 语句中使用从蓝牙模块接收到的数据,并将其输出到 Serial。

但是,目前我无法将任何内容打印到 Serial。当我删除“BTserial.begin(9600);” 我可以输出到串口。

0 投票
1 回答
220 浏览

arduino - Arduino 没有将完整的 NMEA 语句写入 SD 卡文件

我目前正在构建一个小型 GPS 盒,它应该可以跟踪我的位置并将完整的 NMEA 语句写入 SD 卡。
(我想在我的电脑上解析它)
我正在使用 Arduino Nano 和NEO-6M GPS 模块来获取数据。

工作原理:从模块中获取 NMEA 数据,写入 SD 卡。
通过 Serial.write 将数据输出到串行输出可以正常工作。

现在我遇到的问题是 Arduino 无法将数据足够快地写入 SD 卡并且与 GPS 模块不同步。这偶尔会产生这样的事情:$G3,3,09,32,20,248,*4D

我对如何解决这个问题有一些想法:
1. 更快地写入数据
2. 始终等到数据完全写入后再获取下一个定位
点 3. 每隔一秒写入一次 GPS 定位点
4. 首先,写入缓冲区,然后写入一去SD卡

我试图实现这些,但每次都失败了(对不起,我是新手)。

这是我当前的代码:

0 投票
0 回答
438 浏览

arduino - Arduino上的软件串行通信得到了我不发送的东西

我正在尝试用软件序列号与很多 arduino 通信。将有一个主 arduino,它将有 1 个软件串行端口。并且会有很多slave arduino,它们将有3个软件串行端口。Master arduino 将连接到其中一个奴隶。从站将相互连接。我的问题是当我将某些东西发送给奴隶或奴隶发送给主人时。有时它会得到一些我没有发送的东西。

我正在发送这些数据:#1|||232|2332322|233233*

我有时会得到这样的结果:⸮⸮H⸮f⸮|2⸮ƚ⸮&f~2͒⸮⸮H

我该如何解决?

示例连接图像

传入数据

奴隶代码:

主码:

0 投票
0 回答
2663 浏览

arduino - 我的 ESP8266/NodeMCU 如何与我的 GSM 模块 SIM800L 通信?

所以我想将我的 SIM800L GSM 模块连接到我的 NodeMCU。我购买了一个 LM2596 DC-DC 稳压器,将 SIM800L 的输出电压转换为 ~4V。稳压器的输入电压为 9V/1A。

一切都已连接:从 GSM 到 D5 (GPIO14) 的 RX,从 TX 到 D6 (GPIO12) 和 RST 到 D7 (GPIO13)。GPIO 是故意选择的,因为我在网上阅读过,NodeMCU 上的 RX/TX 引脚在内部使用。我之前尝试过匹配 RX/TX 引脚,但结果相同(这就是为什么我可以肯定,它必须是我的代码有缺陷)。GSM 模块中还插入了一张 SIM 卡(带有 PIN 码)。

我在 Arduino IDE 上进行编码,我正在使用 GSMSim 和 SoftwareSerial 库来连接到 GSM 模块。我已经尝试使用 GSMSim 中的示例草图与 GSM 模块进行通信,但我的串行监视器上没有得到任何答案。

我还尝试手动向 GSM 模块发送命令。

输出:

修改后的 GSMSim_HTTP 草图的另一个示例:

输出:

我希望这是显而易见的,因为我根本不熟悉 AT 命令。

谢谢!