安信可ESP32点灯APP自动浇花和天气空气质量-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: ht256929

[分享] 安信可ESP32点灯APP自动浇花和天气空气质量

[复制链接]
发表于 2022-1-24 13:37 | 显示全部楼层
ht256929 发表于 2022-1-24 13:20
https://www.arduino.cn/forum.php?mod=viewthread&tid=90648&highlight=json
具体我没仔细研究,因为我 ...

好的,谢谢你!
发表于 2022-1-24 16:45 | 显示全部楼层
本帖最后由 jerryiot 于 2022-1-24 16:47 编辑
https://www.jerrycoding.com/article/esp8266-clock-2/
https://arduinojson.org/v6/assistant

JSON解析助手啊




发表于 2022-1-26 13:25 | 显示全部楼层
本帖最后由 longjunling 于 2022-1-26 13:28 编辑

void turang()//土壤值读取
{
  uint8_t i;
  for (i = 0; i < 20; i++) { //连续取采集多个样本,缺点AD读取会有延迟
    LeiJi = analogRead(TR); //读取土壤湿度传感器的值
    Blinker.delay(100);
  }
  TRzhi = 0; //平均所有值
  for (i = 0; i < 20; i++) {
    TRzhi += LeiJi;
  }
  //Serial.println(TRzhi);//串口输出土壤值
  TRzhi = map(TRzhi, Amin, Amax, 0, 100); //校准值转换成0-100
  TRzhi = constrain(TRzhi, 0, 100); //将传感器值的范围限制在0到100之间
  Blinker.delay(1000);
}
我用8266也连上了,但是土壤湿度值这部分一直是100,这里要怎么调证吗?
微信图片_20220126132659.jpg
发表于 2022-1-26 13:48 | 显示全部楼层
本帖最后由 longjunling 于 2022-1-28 13:39 编辑

还有一个问题,在手动开启手动浇水后,如果湿度过高自动关闭继电器,app上的手动浇水图标仍然是高亮状态,没收更新继电器状态。还有,现在是app端的浇水次数是在开始浇水后每更新一次就累计一次,应该是继电器每打开一次累加一次吧。
发表于 2022-1-26 15:32 | 显示全部楼层
用湿度传感器不行,土壤湿度一直显示100,用电位器输入电压模拟湿度传感器就读取正常,应该是我的湿度传器电有问题,请问一下你用的是什么样的土壤湿度传感器?
 楼主| 发表于 2022-1-28 23:17 来自手机 | 显示全部楼层
longjunling 发表于 2022-1-26 13:48
还有一个问题,在手动开启手动浇水后,如果湿度过高自动关闭继电器,app上的手动浇水图标仍然是高亮状态, ...

具体的可以加代码更新状态,我搞了后没有插在花盆里面
 楼主| 发表于 2022-1-28 23:19 来自手机 | 显示全部楼层
longjunling 发表于 2022-1-26 15:32
用湿度传感器不行,土壤湿度一直显示100,用电位器输入电压模拟湿度传感器就读取正常,应该是我的湿度传器 ...

我用的电容式湿度传感器 ,用手捏着湿度都是百分之百,你可以优化一下
 楼主| 发表于 2022-1-28 23:22 来自手机 | 显示全部楼层
longjunling 发表于 2022-1-26 13:25
void turang()//土壤值读取
{
  uint8_t i;

你把土壤湿度传感器从土里拔出来试试看下湿度值有没有变化
 楼主| 发表于 2022-1-29 00:16 | 显示全部楼层
longjunling 发表于 2022-1-26 13:25
void turang()//土壤值读取
{
  uint8_t i;

LeiJi = analogRead(TR); //读取土壤湿度传感器的值
这行代码下加一句串口输出 看下LeiJi的值,读取土壤湿度传感器在花盆土壤干燥的时候的值 修改uint16_t Amin = 60700 的值。然后花盆浇水浇透后看下LeiJi值是多少。修改uint16_t Amax = 24200后面的数值。我这两个值一个直接把土壤湿度模块放在外面和泡在水里读取的。实用性不是很好
 楼主| 发表于 2022-1-29 00:56 | 显示全部楼层
longjunling 发表于 2022-1-26 13:48
还有一个问题,在手动开启手动浇水后,如果湿度过高自动关闭继电器,app上的手动浇水图标仍然是高亮状态, ...

反馈开关状态,你在下面三行代码上面加Button2.print("off"); 反馈开关按钮状态的代码试下,
Blinker.println("土壤潮湿,不需要浇水");
Blinker.println("温度过高,不适宜浇水");
Blinker.println("空气湿度高,可能会下雨!");

浇水次数的话确实没有算手动浇水次数,你可以这样修改一下试试
int ci = 0, zhi = 40; 改为int ci = 0, ci1=0,zhi = 40;
void button2_callback(const String & state)//手动浇水
{
  BLINKER_LOG("get button state: ", state);
  if (state == "on")
  {
    digitalWrite(JDQ, HIGH);
    // 反馈开关状态
    Button2.print("on");
    B = "开始手动浇水";
  }  if (state == "off") //按照例程else if无法关闭
  {
    digitalWrite(JDQ, LOW);
    // 反馈开关状态
    Button2.print("off");
    B = "停止手动浇水";
  }
  Blinker.delay(300);
}改为
void button2_callback(const String & state)//手动浇水
{
  BLINKER_LOG("get button state: ", state);
  if (state == "on")
  {
    digitalWrite(JDQ, HIGH);
    // 反馈开关状态
    Button2.print("on");
   ci1++;
    B = "开始手动浇水";
  }  if (state == "off") //按照例程else if无法关闭
  {
    digitalWrite(JDQ, LOW);
    // 反馈开关状态
    Button2.print("off");
    B = "停止手动浇水";
  }
  Blinker.delay(300);
}
  
ci_read = ci;//浇水次数  改为ci_read = ci+ci1;//浇水次数
具体你只有试,我不是很懂C语言。编程我更加不懂。只会如果则,开发版和电脑不在身边我测试不了。错了别笑话。我只试觉得这样应该是可以的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 07:45 , Processed in 0.147608 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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