问题标签 [sdi-12]

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 投票
2 回答
3672 浏览

serial-port - Arduino系列:倒7E1。可能的?

我正在尝试与SDI-12设备进行串行通信,它需要以 1200 波特反转的七个数据位、偶校验和一个停止位(7E1) 串行。

从数据表:

SDI-12通信以每秒 1200 位的速度发送字符。每个字符有 1 个起始位、7 个数据位(LSB 在前)、1 个偶校验位和 1 个停止位(低电平有效或反转逻辑电平):

All SDI-12命令和响应在数据线上必须遵循以下格式。命令和响应都以地址开头,并以回车换行组合终止。

Serial 或 SoftwareSerial 库可以做到这一点吗?我试图避免使用额外的硬件(除了到 3.3 V 的电平转换器),但如果这是唯一的方法,我会这样做。

我已经看到 SoftwareSerial 可以做反转,而 Serial 可以做 7E1,但我找不到两者是否都可以。

我可以使用Arduino Mega (R2) 和Arduino Uno (R3)。

这是我要与之通信的设备:http: //www.decagon.com/products/sensors/soil-moisture-sensors/gs3-soil-moisture-temperature-and-ec/在这里,http://www .decagon.com/assets/Uploads/GS3-Integrators-Guide.pdf是解释协议的文件。第 6 页讨论了它对 SDI 的实施。

0 投票
0 回答
2462 浏览

serial-port - 使用 python 的 SDI-12 的 Raspberry Pi 数据记录器

我已经在树莓派系统上工作了一段时间。我的几个传感器仍然有问题。我正在尝试使用 SDI-12 命令和设置来控制科学传感器。

首先,我使用 1200 波特率、7 个数据位、1 个奇偶校验位(偶校验)和一个停止位的标准。

所有这些都符合标准,除了 SDI-12 使用 1 个起始位但 pySerial 没有该字段。我应该以其他方式考虑到这一点吗?

该设备具有制造商提供的线束,可将 SDI-12 接线转换为 RS-232。我一直使用标准串行到 USB 适配器将设备连接到 pi,该适配器已与其他传感器一起使用。

当我在 pi 上运行此代码时,终端显示我知道不正确的字符或符号。我的第一个想法是可能存在波特率关闭的问题,但我已经尝试了所有广泛使用的波特率。

除了尝试更多不属于 SDI-12 标准的设置之外,我不确定下一步该做什么。使用回车符 ('\r')、换行符 ('\n') 或两者的组合 ('\r\n') 对响应没有影响。

我应该怎么做才能看到这个命令的正确响应而不是乱码?

0 投票
1 回答
659 浏览

arduino - Decagon 设备上的 Arduino Uno 和 SDI-12 接口之间的编码错误

我最近一直在使用我的 Arduino Uno 和土壤中的电导率传感器(来自 Decagon Devices 的 5TE 传感器)进行一个项目。我已准备好编写代码,并在 GitHub 上找到了此示例代码(当您向下滚动页面时,示例代码就在那里)。当试图在最新版本的 Arduino 上运行它时,它给了我这些编译错误:

注意:我相信我正确安装了库,但不是 100% 确定……更像是 85%。

代码有什么问题以及如何使其工作?

0 投票
0 回答
1543 浏览

python - 使用 PySerial 与 SDI-12 探针通信

背景:我正在尝试编写一个脚本来向土壤湿度探测器(Stevens 'Hydra II Soil and Salinity probe')发送命令,这样我就可以将其输出与 GPS 合并到 QGIS 中,以记录特定地理编码点的土壤湿度。

设置:我使用的是 Windows 8,并通过 USB 端口 COM6 和 USB 到 SDI-12 适配器(Stevens 'SDI-12 Explorer')连接到探头。我正在使用 Python 2.7.6。

测试:我使用了 SDI-12 Explorer 专有接口,可以查看探头并进行测量。我已经安装了一个端口监视器来查看来自我编写的 PySerial 脚本和 SDI-12 Explorer 界面的端口流量,并且 COM 端口的打开方式存在差异。(下面的格式类似于 python,但它只是 COM 端口流量)。

除非您手边有这些探针之一,否则这将无法完全重现,但脚本应该能够与任何使用 SDI-12 协议的仪器通信。

问题: 1. 任何人都知道我怎样才能让这个脚本工作?2. 如何关闭“DTR_CONTROL”或更改 Xon Xoff 限制?这些似乎是 com 端口打开标头的主要区别。3. 有谁知道与 SDI-12 设备通信所需的正确时序?

以下是以下命令的文档:探针(http://www.stevenswater.com/catalog/Assets/products/soil_sensors/manual/Hydra%20Probe%20Manual%2092915%20Jan%202015.pdf

协议(http://www.sdi-12.org/specification.php?fileID=1

pyserial 脚本 # 导入库导入串行导入时间

谢谢!

0 投票
0 回答
38 浏览

c++ - SDI12 库不显示带有 + 或 - 登录的测量值

Arduino库源码:https ://github.com/joranbeasley/SDISerial

我遇到的问题是,当我尝试使用 SDI12 从传感器获取测量值时,我只收到第一个数字,即设备的通道号。

这是它应该如何工作的:

我在 1D0 之后收到的唯一东西!命令为“1”。我认为这一定是因为测量数据设备中的+ - 运算符发送(1+17.5+12.05+98.7+8.25+6.45)。我试图理解库代码(.cpp 和 .h),但没有解决这个问题。关于如何解决这个问题的任何想法?

Arduino代码:

0 投票
0 回答
38 浏览

python - 用于管理 COM 端口作为 UART 和控制逻辑级别的库

我正在使用 SDI-12 到 USB 转换器,计算机端的数据是在 UART 协议中管理的,但是以一种特殊的方式。数据作为传统的 uart 协议从计算机发送到转换器,但逻辑必须反转(设置为 1 的位被发送为 0 电压电平)但就在发送命令之前,tx 线必须设置为低电平和高电平唤醒传感器的时间(以毫秒为单位)。那么,是否有一个库(python、C++、C# 等)可以用于此目的?我的意思是发送具有反转逻辑的命令,并在我需要的时间控制 tx 电压电平。

谢谢你的帮助。此致