查看: 2784|回复: 0

[FireBeetle] 【挑战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中。
    说明:开机自动读取Flash获取Wifi的SSID和PassWord,如密码不匹配或者不存在当前Wifi 自动进入SmartConfig一键配网模式。
      2、实时检测模型是否在打印,以及喷头温度并上传到Blynk平台,可通过Blynk配套app查看喷头温度历史数据,运行状态,并一键切断电源。
      由于测试环境简陋,暂时用打火机测试MLX90614 非接触式 红外测温传感器模块,3D打印机正常工作时则用手遮蔽红外反射传感器,打印中断导致模型不再打印,喷头却继续向上运动则用手不遮蔽传感器模拟。Blynk中对于io口的操作不涉及代码编写部分,且对io的操作有明显的延迟,此处就不做演示,实际应用过程中不影响。此处涉及io操作的有一键断电功能和传感器定标功能,稍后会详细介绍。

说明:当检测到目标温度大于100℃时(实际3D打印机喷头工作温度为210℃,此处是为了保护打火机。ps:MLX90614 检测温度范围为-70~380℃。以前就被我当体温计用了正是浪费,哈哈哈),app上的喷头指示灯会由绿变红;红外传感器被遮蔽时表示运行正常指示灯为绿色,没有被遮蔽时指示灯为红色。
步骤:
1、创建一个Blynk项目
    添加如下几个控件:
S70617-102119.jpg

  控件设置如图:
S70617-102014.jpg S70617-102040.jpg S70617-102019.jpg
S70617-102023.jpg S70617-102027.jpg S70617-102031.jpg S70617-102035.jpg

2、代码
[C++] 纯文本查看 复制代码
#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();
  }
}

[C++] 纯文本查看 复制代码
char auth[] = "ce85604212394d92a8ae72a9789c34cd";
char ssid[] = "Decimo";
char pass[] = "Zeyo_Pendragon962464";
此处应修改为你自己的AUTHTOKENS,Wifi的SSID和PassWard
附件包括程序及需要用到的头文件,源文件。注:使用Arduino IDE 1.8.3开发 ,板卡选择为:FireBeetle-ESP32
ESP32_WiFi.zip (4.98 KB, 下载次数: 12)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

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

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

mail