基于物联网的食品监控系统
扫描二维码
随时随地手机看文章
保持食物的安全和卫生,以保持食物新鲜和可食用,这有助于减少食物浪费。解决这个问题的一个办法是为储存的食物保持合适的环境条件,以控制分解的速度。食物分解取决于不同的参数,湿度、细菌和温度等参数是影响食物分解速度的主要因素。如果储存的温度在40华氏度到140华氏度之间,这是一个危险区域,因为在这个温度下细菌生长迅速,20分钟内细菌数量翻倍。同样,食品储藏室的湿度应该在50-55%左右,以尽可能长时间保持食品的高质量。
所以在这个IoT项目中,我们将使用NodeMCU和Arduino IDE构建一个Food Monitoring device,来监测和控制存储环境的温度和湿度。为了控制温度,我们将使用直流电机作为冷却装置。使用DHT11传感器模块来查找温度和湿度,使用MQ4气体传感器模块来确定食品的状态。在未来,如果需要,我们还可以使用基于物联网的重量传感器来监控存储区域的食物数量。
温度、湿度和甲烷气体的实时值将被测量并通过网络发送到屏幕上显示。如果温度达到临界值,我们会收到邮件警告,风扇也会自动控制。您还可以查看这篇关于物联网如何在食品行业中使用的文章,以了解食品行业可以实现现代化的其他方式。
硬件要求
•NodeMCU ESP8266
•MQ3传感器模块
•DHT11传感器模块
•直流电机
•BC547-BJT
•电池
•连接电线
•RPS
线路图
这个食品监测项目的完整电路图如下图所示。
电动机的动力由稳压电源提供。RPS的正极与电机的正极相连;所述电机的负极连接到BJT的集电极端。BJT的发射极端接地,BJT的基极端用限流电阻1K连接到MCU的D0引脚上。BJT的基极端与地连接有一个阻值大于限流电阻的电阻。这个电阻作为BJT的下推电阻。MCU的VCC和GND连接在电源轨的一侧,如下图所示。两个传感器的正极和GND端子分别连接到VCC和GND电源轨上,如图所示。气体传感器的A0引脚连接到MCU的A0引脚,DHT11传感器的数据连接到MCU的D4引脚。
这里的两个主要重要传感器是MQ-4气体传感器和DHT11温湿度传感器。让我们研究一下它们的细节。如果你不想要解释,你可以直接向下滚动到这个页面的底部来获得这个项目的完整代码。
MQ4气体传感器模块
MQ4是一个气体传感模块,用于测量大气中的甲烷气体。它含有由SnO2组成的气敏层。SnO2对LPG、CH4、H2、CO、酒精和烟雾等气体敏感。由于腐烂的食物会释放出甲烷气体(CH4), MQ4传感器可以用来测量这种气体,以监测食品质量。您还可以查看这个MQ135传感器接口项目,在这个项目中,我们使用了一个类似的气体传感器,通过测量PPM来监测空气质量。
与SnO2一起,传感器由Al2O3陶瓷管,测量电极和加热元件组成。加热元件为传感器的工作提供必要的工作条件。MQ4传感器在市场上有两种格式,模块格式或仅传感器格式。传感器模块有4个引脚,我们在项目中只使用3个引脚。分别是VCC、GND和A0。我们留下D0引脚,因为它在ppm的计算中没有用。MQ4传感器的工作原理类似于LDR(光相关电阻)。当甲烷气体浓度较高时,模块的电阻减小,当甲烷气体浓度较低时,模块的电阻增大。
MQ4气体传感器内部电路
两个A端子都短路,两个B端子都短路,电路中只剩下4个连接。H端子用于将电源电压连接到加热元件,加热元件由镍铬合金制成。用于为敏感元件提供必要的工作条件。电源电压与A或B端子一起给予H端子中的任何一个。RL是负载电阻,我们必须将其添加到传感器中,如图所示。如果您有传感器模块,请检查PCB轨道并找到RL值并使用万用表测量其值。
MQ4传感器与NodeMCU ESP8266接口
在我们进入主要项目之前,我们必须校准MQ4传感器,以便我们可以测量来自气体传感器的ppm值。将气体传感器与NodeMCU连接,如下图所示。
传感器模块的VCC和GND引脚与NodeMCU的Vin相连。传感器模块的A0引脚与微控制器的A0引脚连接。
MQ4气体传感器的校准:
为了确定空气中存在的甲烷含量,我们需要找到比值(RS/R0)。R0和RS是新鲜空气的内阻值。
我们将从VRL(电阻间电压RL)中找到RS的值。通过使用微控制器,我们可以找到Rl(负载电阻)上的电压(VRL)值。为了从VRL中找到RS,我们需要推导公式。图1的等效电路如下图所示,利用该等效电路推导出从VRL求RS值的公式。
RL负载上的电压为VL = I *RL,将I代入,得到VL = (V*RL) / (RS+RL)。简单的方程得到Rs。
从等效电路中,我们得到了这个方程
其中V为电源电压。
计算新风R0值:
现在,我们将使用RS的值和数据表中的图表找到R0的值,如下所示。
通过查看图表,我们可以发现x轴是ppm, y轴是RS/R0。求出新鲜空气的R0/RS值。在我们的例子中,它大约是4.6。您有RS值(以前使用VRL找到),现在您可以使用关系R0/RS = 4.6找到R0。在我的例子中,我得到R0的值是1.9。
下面给出了计算气体传感器R0的Arduino程序。按照上面的电路并上传下面的代码。然后打开串行监视器,获取R0值。
我们现在找到的R0值是传感器在新鲜空气中提供的电阻。
计算甲烷(CH4)的PPM值:
当我们发现R0的值时,我们需要推导一个方程,从中我们可以使用已知的R0和RS值(由MCU读取的值)找到ppm。要推导公式,首先检查数据表中的敏感特性图。选择所需气体的曲线,测量其斜率。
用公式m = (y2 - y1)/ (x2 - x1)计算斜率值。在我们的例子中
现在用方程y = mx+c求常数c。
取一个已知的值点,以便于计算。X = log(1000), y = (log 1);
注:Y为(RS/R0)的比值。R0是传感器提供的电阻,RS取决于大气中的甲烷含量。X为被测气体的含量,单位为ppm。
Arduino程序测量甲烷(CH4):
下面的代码以模拟值读取大气中存在的甲烷含量并将模拟值转换为数字值。利用这个数字值,我们将得到RS的值,我们之前求出的R0的值,进一步用于求比值(RS/R0)。
DHT11传感器模块
DHT11传感器模块由电阻式湿度测量和NTC温度测量组件以及8位微控制器组成。它保证了质量、快速响应、抗干扰能力和成本效益。传感器模块在实验室中进行了预校准,使最终用户可以直接在他们的项目中使用该传感器。校准后的数据存储在OTP存储器中,供传感器内部信号检测过程使用。它由单线串行接口组成,用于将数据从传感器发送到微控制器。
DHT11传感器可作为传感器或模块使用。唯一的区别是,我们需要手动添加一个滤波电容和一个上拉电阻到传感器。如果您有传感器模块,则不需要添加额外的组件,因为传感器模块将内置它们。传感器测量范围为0℃~ 50℃,湿度范围为20% ~ 90%,精度为±1℃和±1%。当涉及到传感器与单片机之间的通信时,完整的数据传输是40位。传感器先发送更高的数据。数据发送的数据格式为8bit整型RH数据+8bit RH数据+ *bit T数据+8bit十进制T数据+8bit校验和数据。如果数据传输正常,校验和应为最后8bit。下图显示了DHT11传感器的引脚。该传感器非常受欢迎,我们以前在其他地方使用过DHT11,其中很少像Arduino无线气象站,基于物联网的温湿度监测等。
为了简化编程,使用了库。您可以从Arduino IDE安装DHT11 Arduino Library。打开Arduino>草图>包括库>管理库,并在搜索按钮类型DHT11。安装Adafruit提供的库。
DHT11与NodeMCU ESP8266接口
由于DHT11传感器是在实验室预校准的,所以我们不需要对这个传感器做任何校准。将DHT11传感器与NodeMCU连接,如下所示。
VCC、GND和Data引脚连接到微控制器的Vin、GND和D4引脚。通过在DHT11中使用Adafruit库,我们调用了一个特殊的函数,它将获取温度和湿度值。使用这些函数的格式是dht.readHumidity()和dht.readTemperature。这些函数返回湿度和温度的值。我们将变量h和t声明为浮点数,并使用它们存储温度和湿度值。
如果温度高于所需的水平,微控制器打开风扇。如果温度低于所需值,它将关闭风扇
使用ThingSpeak监控食品质量
为了将数据发送到云端并显示在网络上,我们将使用ThingSpeak。我们已经建立了许多ThingSpeak项目以前使用它与Arduino和其他板,如树莓派,ESP8266等。如果你是新来的,你也可以检查这个物联网电池监测,物联网心跳监测,物联网库存管理等,我们使用ThingSpeak。
从下面的步骤开始,ThingSpeak
步骤1:注册ThingSpeak
要在ThingSpeak上创建你的频道,你首先需要注册ThingSpeak。如果你已经有了ThingSpeak的账户,只需使用你的id和密码登录即可。
验证您的电子邮件ID并继续
步骤2:创建新频道
来创建您的新频道。选择“我的通道>新建通道”。
输入详细信息并选择save the channel。
步骤3:-获取API密钥
创建之后,打开通道并选择API密钥选项。
记下写API键。这个唯一的密钥用于将数据从微控制器发送到网络。
程序发送传感器值到ThingSpeak
首先,您需要下载所有必需的库。
您可以从Arduino IDE安装这些库。打开Arduino>草图>包括库>管理库,并在搜索按钮类型Thingspeak。安装Mathworks提供的库。
在这个地方,“YOUR_WRITE_API_KEY”写下你在步骤3中记下的API密钥,并用你的通道ID改变myChannelNumber。用您的网络详细信息替换SSID和密码。
将数据发送到Thingspeak的格式是
通过使用这些命令,我们可以向Thingspeak发送实时值。
使用IFTTT发送邮件
要触发电子邮件,我们首先需要注册IFTTT网站。
选择搜索按钮,搜索Webhooks并选择Documentation。
复制私钥。使用此私钥,您可以触发电子邮件警报。
程序发送电子邮件使用IFTTT
当温度值超过设定值时,我们的代码将被触发并向我们发送警告电子邮件。您可以更改发生电子邮件触发的设定值。下面的代码用于与IFTTT服务器建立TCP连接,为请求创建URL,并将该URL请求发送到服务器。
这就是监控食品质量的方法。温度、湿度和甲烷值可以通过ThingSpeak从任何地方监控。参数异常时,风扇自动开启,并发出警告邮件。
本文编译自iotdesignpro