2020-6-2 12:11:55 [显示全部楼层]
1218浏览
查看: 1218|回复: 0

SHT31-F温湿度传感器测试-MQTT连接云服

[复制链接]
本帖最后由 gada888 于 2020-6-2 13:02 编辑

抱着试试看的心态申请了SHT31-F数字温湿度传感器,没想到申请上了。拿到手的时刻,看着就觉得做工精致,然后马不停蹄的开始下代码测试,但意外总是来的那么突然,
我居然被ESP32主控的接脚搞混了。把3.3v接到了传感的GND,GND接到了传感的VCC,好在鼻子灵,很快闻到什么味道不对,赶快把线拔了,心想完了。没有模块能逃这样的一劫。还没试,这模块就挂了。但等模块冷却。抱着试试的心态,又把线插对,奇迹发生了。模块木事。
不多说了。直接说测试过程,硬件使用如下

ESPN2.png
测试主控是ESP32

module.png
模块就不多做介绍了。商城的产品wifi都有

个人主要关心以下信息:
技术规格
工作电压:3.3~5.5V
工作电流:<1.5mA
湿度测量范围:0%RH~100%RH
湿度测量精度:±2%RH@0%RH~100%RH(25℃时)
温度测量范围:-40℃~125℃
温度测量精度:±0.2℃@0℃~90℃(典型值)


============
再看连线图
ESP-TEMP.jpg
这个一目了然。不多解释
==========
个人为什么要做这样的设计,期待的结果是怎样呢
我期望是用MQTT连接adafruit io的云服功能。这样方便我去用手机随时随地的查看传感的信号变化。
其次我希望看到的结果会是以优美的UI图表方式呈现。这样不至于影响心情。
最后还可以通过平台设置报警值。
============
下面简单说下操作过程
login.png
首先在io.adafruit.com 登录
没注册过的先注册。

UI.jpg
设置Feeds。Feeds就是你的传感的功能块,
那SHT3就是有两个Feeds,温度和湿度。

右上角有个密文。打开你的通道的密文显示,示例如下
IO-keys.jpg
记下你的用户id和IO key值。等下写代码要用

credencial.jpg
在Feeds哪里先设置好温度temprature和湿度humidity
Hum.png
Temp.png

最后设置Feeds旁边的Dashboard(仪表板)
这会让图表看上去很舒服
UI.jpg
好了,IOT部分设置好了。接下来就是代码部分了。

[mw_shl_code=applescript,false]/*The code below is written by gada888,if you use please mention where it's originated*/


#include <Wire.h>
#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
const int SCLpin = 22;
const int SDApin = 21;
#include <DFRobot_SHT3x.h>
DFRobot_SHT3x sht3x;
float t,h;

#define WLAN_SSID       "      " //here fll-in your SSID
#define WLAN_PASS       "      " //here fill-in your WLAN PASS
#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883                  
#define AIO_USERNAME    "gada888"
#define AIO_KEY         "aio_-                "//here fill-in your AIO-KEY

WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Publish Temperature = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Temprature");
Adafruit_MQTT_Publish Humidity = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Humidity");

//void MQTT_connect();

//==========ONE TIME RUN==============
void setup() {
// pinMode(D7, OUTPUT);
Serial.begin(115200);
Wire.begin(SDApin, SCLpin);
Wire.beginTransmission(byte(0x45));
Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);
  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

//============REPEATING============
void loop() {
  MQTT_connect();
  Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
     }
//float getTemperatureC();
//float getHumidityRH();
t = sht3x.getTemperatureC();
h = sht3x.getHumidityRH();

  if (! Temperature.publish(t)) {
    Serial.println(F("Temperature Failed"));
  }
  else {
    Serial.print("temp(°C):");
    Serial.print(sht3x.getTemperatureC());
    Serial.print(" C/");
  }
    if (! Humidity.publish(h)) {
    Serial.println(F("Humidity Failed"));
  }
  else {
    Serial.print("hum(%RH):");
    Serial.print(sht3x.getHumidityRH());
    Serial.println(" %RH");
  }
delay(1000);
}

//================FUNCTION===========
void MQTT_connect()
{
  int8_t ret;
  if (mqtt.connected())
  {
    return;
  }

  Serial.print("Connecting to MQTT... ");

  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
       Serial.println(mqtt.connectErrorString(ret));
       Serial.println("Retrying MQTT connection in 2 seconds...");
       mqtt.disconnect();
       delay(2000);  // wait 2 seconds
       retries--;
       if (retries == 0) {
         while (1);
       }
  }
  Serial.println("MQTT Connected!");
}

[/mw_shl_code]

MQTT-done.jpg
最后一步是烧录。COM口在烧好后,会看到显示wiff连接ok,然后是mqtt连接ok,再然后是开始读取传感的温湿度值。

怎么知道是实时显示呢。这时候你对着传感哈气,然后会看到COM口里的湿度值在2秒后提高了。这样就说明一切OK。


最后看下手机app的设置,我是用了thunkable来写app。非常的容易。和MIT app inventor里一样。

2020-06-02_120818.png
2020-06-02_120807.png Screenshot_2020-06-02-12-54-13-82.png
Screenshot_2020-06-02-12-53-00-13.png
好,大功告成,你现在可以用手机随时随地的查看温湿度值了。





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail