Arduino+ttl转485+TH10S-B测温湿-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 641|回复: 5

[未解决] Arduino+ttl转485+TH10S-B测温湿

[复制链接]
发表于 2022-1-7 09:18 | 显示全部楼层 |阅读模式
问题,没有返回数据!用usb-485设备正常,有返回数据,Arduino没有返回数据
返回如下
09:17:01.215 -> 开始发送控制命令。。
09:17:01.249 -> 1
09:17:01.249 -> 3
09:17:01.249 -> 0
09:17:01.249 -> 0
09:17:01.249 -> 0
09:17:01.249 -> 2
09:17:01.249 -> C4
09:17:01.249 -> B

命令举例

读取温度湿度:01 03 00 00 00 02 C4 0B (地址为1,读温度湿度值)
返回:01 03 04 00 B8 03 3F 3A F6 (对应温度:18.4℃,湿度83.1%)

代码如下
#include <SoftwareSerial.h>
unsigned char item[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x0B};  //16进制测温命令
String data = ""; // 接收到的16进制字符串
SoftwareSerial tempSerial(8, 7);  // RX, TX

float getTemp(String temperature);  // 函数声明

void setup()
{
  tempSerial.begin(9600);
  Serial.begin(9600);
}

void loop()
{
  delay(500);  // 放慢输出频率
  Serial.println("开始发送控制命令。。");
  for (int i = 0 ; i < 8; i++) {  // 发送测温命令
    tempSerial.write(item);   // write输出
    Serial.println(item,HEX);
  }
  delay(100);  // 等待测温数据返回
  data = "";
  while (tempSerial.available()) {//从串口中读取数据
    unsigned char in = (unsigned char)tempSerial.read();  // read读取
    Serial.print(in, HEX);
    Serial.print(',');
    data += in;
    data += ',';
  }

  if (data.length() > 0) { //先输出一下接收到的数据
    Serial.println();
    Serial.println(data);
    Serial.print(getTemp(data));
    Serial.println("Temp");
  }
}

float getTemp(String temp) {
  int commaPosition = -1;
  String info[9];  // 用字符串数组存储
  for (int i = 0; i < 9; i++) {
    commaPosition = temp.indexOf(',');
    if (commaPosition != -1)
    {
      info = temp.substring(0, commaPosition);
      temp = temp.substring(commaPosition + 1, temp.length());
    }
    else {
      if (temp.length() > 0) {  // 最后一个会执行这个
        info = temp.substring(0, commaPosition);
      }
    }
  }
  return (info[3].toInt() * 256 + info[4].toInt()) / 10.0;

}


发表于 2022-1-7 15:34 | 显示全部楼层
String 读HEX,且用软串口,能读到就有鬼了
 楼主| 发表于 2022-1-7 18:14 来自手机 | 显示全部楼层
XlinliY.Zhang 发表于 2022-1-7 15:34
String 读HEX,且用软串口,能读到就有鬼了

才开始接触arduino,能细说,或给参考示例么!?
发表于 2022-1-7 20:12 | 显示全部楼层
用TTL转485可能是模块流控的问题
 楼主| 发表于 2022-1-7 22:19 | 显示全部楼层
yangminglin 发表于 2022-1-7 20:12
用TTL转485可能是模块流控的问题


我用的上述同款,不需要控制,自动的!
发表于 2022-1-11 16:03 | 显示全部楼层
你好,请问问题解决了吗,我也在做类似的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 17:46 , Processed in 0.072289 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表