7159| 0
|
【挑战FireBeetle系列】3D打印无线监控设备 |
本帖最后由 Zeyo_Pendragon 于 2017-6-18 14:52 编辑 前言: 实验室的3D打印机有时候需要长时间的连续工作,但3D打印机存在偶尔会打印中断的现象造成模型报废,3D打印机却在继续工作,这样会可能会对设备和实验室造成一点的安全隐患。目前实验室老师是利用网络摄像头进行监控,虽然有效但无法检测最危险高温喷头部分,而且视频链接略慢。现准备用FireBeetle系列的esp32开发板结合远距离红外测温模块及其他传感器监测喷头温度及模型是否打印中断并通过wifi上传到手机端,进行实时远距离监控及切断电源中断打印的功能。 所需硬件: FireBeetle 萤火虫 ESP32微控制器 FireBeetle Gravity 传感器扩展板 MLX90614 非接触式 红外测温传感器模块 继电器模块 红外反射传感器 杜邦线若干 功能实现: 1、使用乐鑫提供的EspTouch实现SmartConfig一键配网,并将目标Wifi的SSID和PassWord存在Flash中。 说明:当检测到目标温度大于100℃时(实际3D打印机喷头工作温度为210℃,此处是为了保护打火机。ps:MLX90614 检测温度范围为-70~380℃。以前就被我当体温计用了正是浪费,哈哈哈),app上的喷头指示灯会由绿变红;红外传感器被遮蔽时表示运行正常指示灯为绿色,没有被遮蔽时指示灯为红色。 步骤: 1、创建一个Blynk项目 添加如下几个控件: 控件设置如图: 2、代码 [mw_shl_code=cpp,true]#define BLYNK_PRINT Serial #define BLYNK_GREEN "#23C48E" #define BLYNK_BLUE "#04C0F8" #define BLYNK_YELLOW "#ED9D00" #define BLYNK_RED "#D3435C" #define BLYNK_DARK_BLUE "#5F7CD8" #include <Wire.h> #include <WiFi.h> #include "EEPROM.h" #include <WiFiClient.h> #include "WiFiManager.h" #include <BlynkSimpleEsp32.h> #include <Adafruit_MLX90614.h> WiFiManager wifi; BlynkTimer timer; WidgetLED led1(V2); WidgetLED led2(V3); Adafruit_MLX90614 mlx = Adafruit_MLX90614(); char auth[] = "ce85604212394d92a8ae72a9789c34cd"; char ssid[] = "Decimo"; char pass[] = "Zeyo_Pendragon962464"; void setup() { Serial.begin(115200); pinMode(25, INPUT_PULLUP); pinMode(27, OUTPUT); delay(100); digitalWrite(27,HIGH); mlx.begin(); wifi.autoConnect("Zeyo"); if (WiFi.status() == WL_CONNECTED) { Serial.println("Successful Connected"); } else { Serial.println("SmartConfig module"); smartConfig(); WiFi.begin(WiFi.SSID().c_str(), WiFi.psk().c_str()); delay(500); wifi.setSSID(WiFi.SSID().c_str()); wifi.setPassword(WiFi.psk().c_str()); } Blynk.config(auth); timer.setInterval(1000L, sendSensor); } void loop() { Blynk.run(); timer.run(); } void smartConfig() { WiFi.mode(WIFI_STA); Serial.println("\r\nWait for Smartconfig"); WiFi.beginSmartConfig(); int counter = 0; while (1) { delay(500); Serial.print("."); if (WiFi.smartConfigDone()) { Serial.println("SmartConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); delay(1000); delay(1000); delay(1000); delay(1000); break; } delay(1000); } } void sendSensor() { Blynk.virtualWrite(V0, int(mlx.readAmbientTempC())); Blynk.virtualWrite(V1, int(mlx.readObjectTempC())); Blynk.virtualWrite(V2, int(mlx.readAmbientTempF())); Blynk.virtualWrite(V3, int(mlx.readObjectTempF())); if (digitalRead(25) == LOW) { led1.setColor(BLYNK_GREEN); led1.on(); } else { led1.setColor(BLYNK_RED); led1.off(); } if (int(mlx.readObjectTempC()) <= 100) { led2.setColor(BLYNK_GREEN); led2.on(); } else { led2.setColor(BLYNK_RED); led2.off(); } } [/mw_shl_code] [mw_shl_code=cpp,true]char auth[] = "ce85604212394d92a8ae72a9789c34cd"; char ssid[] = "Decimo"; char pass[] = "Zeyo_Pendragon962464";[/mw_shl_code] 此处应修改为你自己的AUTHTOKENS,Wifi的SSID和PassWard 附件包括程序及需要用到的头文件,源文件。注:使用Arduino IDE 1.8.3开发 ,板卡选择为:FireBeetle-ESP32 ESP32_WiFi.zip3、硬件介绍及连接 1)MLX90614 MLX90614 是一款红外非接触温度计。TO-39 金属封装里同 时集成了红外感应热电堆探测器芯片和信号处理专用集成芯 片.由于集成了低噪声放大器、17 位模数转换器和强大的数字信 号处理单元,使得高精度和高分辨度的温度计得以实现。 温度计具备出厂校准化,有数字 PWM和 SMBus(系统管理 总线)输出模式。 作为标准,配置为 10 位的 PWM 输出格式用于连续传送温 度范围为-20~120 ˚C 的物体温度,其分辨率为 0.14 ˚C。 POR 默认模式是 SMBus 输出格式。 特性和优点 # 体积小,成本低 # 易集成 # 宽温度范围内的出厂校准设置: 传感器温度范围-40…+125 ˚C 物体温度范围-70…+380 ˚C # Ta和 To 由 0到+50°C 温度范围内,精度可达 到 0.5°C # (医用) 高精度校准 # 测量辨析度可达 0.02°C # 单个和双重视野版本 # 兼容 SMBus数字接口 # 客户定制的 PWM连续读数输出 # 3V和 5V 电源电压 # 电源电压可从 8…16V 调节 # 节能工作模式 # 适用于不同应用领域的多种封装方式和测量方 式 # 车用级别标准 本项目使用的红外对射传感器比较神奇。 模块有四个引脚分别是-、+、D、S。 -、+为供电口,模块为5V供电!!! D为数据口有物体时输出低电平0,没有物体时输出高电平1。 S为设置口用以设置传感器检测距离。 产品特性 # 小体积,内置高性能处理器 # 5V电源供电,低功耗设计 # 高稳定算法,防红外及强光干扰 # 双临界线,防止临界跳变 # 可手工设置反射距离,永久记忆 # 最大触发距离20CM(白色反射物测试) # 可设置距离在1~20CM之间 4、继电器 继电器为市面常见继电器,故不做介绍 连接方式 : MLX90614 为I2C接口,故与FireBeetle-ESP32板的I2C接口相连。 红外反射传感器的D口接FireBeetle-ESP32板的D2(GPIO25),S口接D3(GPIO26)。注:5V供电 继电器接D4(GPIO27) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed