加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

石榴姐 发布

【涂鸦智能】 基于Arduino智能除湿工控器-582526A

 
设计简介

d=====( ̄▽ ̄*)b

前排首先感谢金主,提供的这个学习的机会,学习的平台

一、设计概况

1、湿度过高,自动开启除湿。适用于大型滑冰场的大型除湿机、北方澡堂子、家庭浴室、浴霸等。(之前公司有个项目就是给的一个大型除湿机厂家开发控制系统)。同理可做加湿功能。解决大型工控行业设备联网问题。 涂鸦平台MCU产品开发

2、本方案基于Arduino-UNO,开发门槛低,程序烧录方便。 mcu.png 3、电源部分采用了AC-DC模块得到5V电源供给MCU,再经由AMS1117-33得到3.3V的电源供给Wifi模组。 电源.png

4、一直以来继电器外围电路就要考虑太多的器件了,这里选择了一个NUD3105,内部集成了许多外围,可以直接控制继电器,不必再考虑继电器反向感应电、上拉(下拉、限流)电阻等,可以说是非常方便的。(上一次训练营得到的经验)


继电器.png

5、Wifi模组是选用了涂鸦的WB3S(通用固件版),3.3V供电,串口通讯,通讯十分方便,外围电路仅需要电源+稳压电容,简直不要太简单。

贴一下规格书链接:涂鸦Wi-Fi+BLE 双协议模组WB3S 规格书,电路如下图:

wifi.png

开发资料是我用过的平台最详细的,连PID这类 密钥 类的都已经写入了案例代码,仅加入自己的MCU的功能代码即可完美调用,如下图:


资料.png

6、电平转换:由于Arduino-UNO平台IO是5V的电平,和Wifi模组是3.3V(如下图)

IO口电平.png

Arduino-UNO和Wifi通讯时候必须要经过电平转换。如下图: 电平转换.png

二、公模外壳及PCB二三事

1、在设计一款板子前最好能先找到一个合适的外壳,根据外壳的尺寸来进行PCB的设计,这样后续能很好的安装,如果只是开发版、实验版那就请随意。 2、刚好公司有这个外壳,公模的比较好买。随手就拿了一个来量了尺寸。制作PCB设计。(为了怕淘宝店铺链接失效,这里就不放链接了,大家可以在淘宝搜索“温湿度外壳”,按照价格低到高排序,找几下就能发现一模一样的外壳了)

尺寸.png 按照搜索到的尺寸,规划好边框、螺丝孔,然后锁定

画好边框.png

3、壳子选小了点,不好放呀。单面估计是放不下了 顶层放不下.png

4、只好放到背面一些了,矮一些的器件放到底层去了,熬到了凌晨,完工

平面图.jpg

5、一些注意事项 (1)强电区域用了比较粗的线宽2mm,并转换为焊盘了,后期可以多焊一些锡去加厚铜箔,增加功率。 转换焊盘.png

(2)强电区域,不能铺铜。因为要防止强电爬电到内部微电路,十分危险。可用实心填充工具,绘制完区域后在属性栏设置为无填充。如下设置: 无填充.png强电不铺铜.png

(3)温湿度传感器位置要尽量靠边,有条件的可以加微小的风扇。传感器要远离内部发热的组件(如:电源芯片、电源模组、降压芯片等)。本案放置在顶部边角。 温湿度传感器位置.png

三、焊接成品

1、方法多种多样,目前笔者是采用的“铁板烧”,先涂抹锡膏,贴上去,然后用“呼呼机”加热。

2、完成了之后,AC-DC模块、继电器先不焊(焊了不方便调试),调试完成后再补上。~~~~ 注意:先检查VCC(5V3.3VUSB)和GND是否为短路状态,再插电前一点要确认好,短路切勿插电。

贴片焊接的.png

四、软件代码部分

1、下载的MCU_SDK文件,打开来,放到一文件夹里。“.c”改为“.cpp”后,IDE就可以打开了。细节可以看涂鸦平台提供的 移植 MCU SDK 教程

2、总之就是要多看文档,这个代码每个人的PID、功能等都不一样,我贴上了Arduino的主程序代码,如果你和我的功能一样,大家可以自行下载代码,并修改自己的PID等地方。当然功能不同的,只能自己看着修改了

#include "wifi.h"
#include "Adafruit_SHT31.h"
#include 
#include 
#include 
SoftwareSerial mySerial(5, 6); // RX, TX
#define _SS_MAX_RX_BUFF 300
#define relay 10
Adafruit_SHT31 sht31 = Adafruit_SHT31();
int time_cnt = 0, cnt = 0, init_flag = 0;
int TEM, HUM, TEM_Past, HUM_Past;
union data
{
  int a;
  byte b[4];
};
data HUMUPPR;
data HUMLOWER;
void setup() {
  pinMode(relay, OUTPUT);   // 继电器I/O初始化
  digitalWrite(relay, LOW);
  pinMode(3, INPUT_PULLUP);     // 重置Wi-Fi按键初始化
  pinMode(13, OUTPUT);       // Wi-Fi状态指示灯初始化
  mySerial.begin(9600);     // 软件串口初始化
  //mySerial.println("myserial init successful!");
  Serial.begin(9600);     // PA3 RX   PA2 TX
  Serial.println("serial init successful!");
  sht31.begin(0x44);//SHT地址0x44
  wifi_protocol_init();
  for (int n = 0; n < 4; n++) //湿度上限读取
    HUMUPPR.b[n] = EEPROM.read(n);
  for (int n = 0; n < 4; n++)//湿度下限读取,下限起始地址在4
    HUMLOWER.b[n] = EEPROM.read(n + 4);
}
void loop() {
  if (init_flag == 0) {
    time_cnt++;
    if (time_cnt % 6000 == 0) {
      time_cnt = 0;
      cnt ++;
    }
    wifi_stat_led(&cnt);   // Wi-Fi状态处理
  }
  wifi_uart_service();
  myserialEvent();      // 串口接收处理
  key_scan();           // 重置配网按键检测
  aotocontrol();        //自动控制
}
/***********完整代码详见附件*******************/

3、设备的湿度上限下限由于是报警值,不能在程序中定义初值,否则一旦调电重启就会丢失设置的值,我这里是方式是把设定的阈值存储在单片机的ROM中(Arduino的EEPROM),这样进程到来时读取一次,下发设置值时写入。这样掉~~~~电也不会丢失数据了

union data
{
  int a;
  byte b[4];
};
data HUMUPPR;
data HUMLOWER;
for (int n = 0; n < 4; n++) //湿度上限读取EEPROM
    HUMUPPR.b[n] = EEPROM.read(n);
  for (int n = 0; n < 4; n++)//湿度下限读取EEPROM,下限起始地址在4
    HUMLOWER.b[n] = EEPROM.read(n + 4);
union data
{
  int a;
  byte b[4];
};
data HUMUPPR;
data HUMLOWER;
/**********放置到上限值设置函数dp_download_maxhum_set_handle中*******/
HUMUPPR.a = (int)maxhum_set;
  for (int n = 0; n < 4; n++)//写入湿度上限到EEPROM,上限起始地址是0
    EEPROM.write(n, HUMUPPR.b[n]);
/**********放置到下限值设置函数dp_download_minihum_set_handle中*******/
HUMLOWER.a = (int)minihum_set;
 for (int n = 0; n < 4; n++)
    EEPROM.write(n+4, HUMLOWER.b[n]);//写入湿度下限到EEPROM,下限起始地址是4

避坑指南:

(1)掉电丢失湿度阈值:

一定要用ROM来承接设置值,这样可以掉电保存;之前我写的程序久忘记了,一掉电就丢失之前设置好的值。

(2)始终无法进入配网模式:

SHT的底层库有500ms延时,在循环里调用读取时,我实测要7s才能返回给wifi模块心跳,始终连不上网,也无法进去配网模式,然后我就改了底层的延迟,问题就解决了;(可能还有其他解决的方式,我暂时还没有发现)

boolean Adafruit_SHT31::readTempHum(void) {
  uint8_t readbuffer[6];

  writeCommand(SHT31_MEAS_HIGHREP);

  delay(500);/**********我把这里改成了100*************/
  Wire.requestFrom(_i2caddr, (uint8_t)6);
  if (Wire.available() != 6) 
    return false;
  for (uint8_t i=0; i<6; i++) {
    readbuffer[i] = Wire.read();
  //  Serial.print("0x"); Serial.println(readbuffer[i], HEX);
  }
(3)Wif模块下尽量不要走线:

之前涂鸦的工程师说wifi模块下面最好不要走线,我的1.1版本走了,所有又画了1.2的PCB(心急已经提前打了1.1的板子),但是从目前测试来看,V1.1已经是成功了。所以小伙伴可以自行选择。

(4)继电器有点高:

继电器选择的时候尺寸没有注意,忘记算板子厚度了,有点高,超了1mm左右,盖子盖不上,还好我机智的用热熔胶给它俩黏住了。

(5)仅供学习参考:~~~~

完全复制有风险,代码、走线、布局等等被坑的别怪UP哦,后果自担啦

成功的喜悦(实测演示):

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
19-21/GHC-YR1S2/3T 发光二极管 点击下载
CC0603KRX7R9BB104 贴片电容 精度:±10% 容值:100nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CL10C220JB8NNNC 贴片电容 精度:±5% 容值:22pF 额定电压:50V 温漂系数(介质材料):C0G 材质:C0G 点击下载
SMD0805B050TF PTC自恢复保险丝 最大电压:6V 跳闸电流:1A 最大动作时间:100ms 点击下载
S8050 三极管 额定功率:300mW 集电极电流Ic:500mA 集射极击穿电压Vce:25V 晶体管类型:NPN transistors,NPN 25V 500mA 300mW,SOT-23 点击下载
GCM188L81H102KA03D 贴片电容(MLCC) 点击下载
SHT30-DIS-B2.5KS 温湿度传感器 湿度范围:0 ~ 100% RH 温度范围:- 精度:±3% RH 传感器类型:Humidity, Temperature 输出类型:I²C 数字式温湿度传感器SHT30,±3% RH精度,DFN封装, 2.5 mm×2.5 mm×0.9 mm,低成本 点击下载
NUD3105LT1G 电机驱动芯片 点击下载
RJ-SS-105DM1 继电器 线圈电压:5VDC 触点形式:SPST 触点的额定电流:10A 继电器类型:General Purpose 线圈类型:Non Latching 点击下载
C0402X7R221M500NTB 贴片电容 精度:±20% 容值:220pF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
F980J107MMAAXE 钽电容 点击下载
AMS1117-3.3 低压差线性稳压(LDO) 输出类型:固定 最大输入电压:15V 输出电流:1A 输出电压(最小值/固定值):3.3V 3.3V固定输出,低压差1.1V(typ)@Iout=1A,Vin=15V(Max) 点击下载
DG127R-5.08-03P-14-00A(H) 螺钉式接线端子 点击下载
CMFA103J3600HANT NTC热敏电阻 点击下载
TFPT0603L1001FV PTC 热敏电阻 功率:3/4W 工作温度:-55℃~+150℃ 常温阻值(25°C,欧姆):1K 电阻精度:±1% 点击下载
HoLTT0603-1/10W-4.7K-1% 贴片电阻 电阻类型:厚膜电阻 阻值:4.7kΩ 精度:±1% 功率:100mW 温度系数:±100ppm/℃ 最大工作电压:75V 工作温度范围:-55℃~+155℃ 点击下载
TS-1185-C-A-B-B 轻触开关 按钮作用方向:顶部致动 触点额定电流:50mA @ 12VDC 按钮头类型:圆形按钮 作用力:260gf 电路结构:SPST 点击下载
X49SSM16MSD2SI 贴片晶体谐振器(无源) 等效串联电阻(ESR):20Ω 主频:16MHz 频率公差:±20ppm 负载电容值:20pF -40C to 85C, 高度:3.0+/-0.3mm, X49SSM16MSD2SI: 49SMD/HC-49SMD, 表面贴片, 16MHZ, 20PF, 20PPM, 编带, 制造商:YXC 点击下载
U-F-M5DW-Y-4 USB连接器 公母:母座 连接器类型:USB - Micro B 触点数量:5 标准:USB 2 点击下载
ATMEGA328P-AU ATMEL(爱特梅尔)/AVR 工作电压:1.8V ~ 5.5V CPU位数:8-Bit CPU内核:AVR 主频(MAX):20MHz ROM类型:FLASH ATmega Series 20 MHz 32 KB Flash 2 KB SRAM 8-Bit Microcontroller - TQFP-32 点击下载
WB3S(uvmz) WiFi模块 车库门控制器模组/蓝牙模块/WiFi模块 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-21 11:53:08
Datasheet 更多

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved