传感器+树莓派+Django端到端的实现设备数据可视化

本文以温湿度传感器为例,演示如何用树莓派从传感器抓数据,并上传到网站,实现车间实时数据可视化。单纯从技术角度来说,每一部分都是IT领域常见技术,只是这样完整的实现并分享源码的应该不多。希望本文对低成本的车间设备数据可视化方案提供参考

工业数据采集是智能制造的基础。由于企业自动化水平的差异,不是所有公司都具备从自动化生产线抓取数据的能力。这样的情况下,工厂怎么做实时数据抓取和可视化呢?*

数据抓取的实际解决方案要针对工厂的实际情况。如果有PLC,我们可以从PLC里面直接抓取数据,从PLC抓数据的方法请参考我的知乎文章 工业4.0的理解和落地实施-工业数据采集
那如果没有PLC呢?比如手工线。我们可以外接传感器进行数据采集。比如计数传感器,温湿度传感器,重量传感器等等。

本文以温湿度传感器 完整地为大家展示如何用树莓派从传感器抓取数据,上传到服务器,并实现前端可视化。当然也可以用树莓派直接连接PLC抓取数据。作者在车间实验证明没有问题。只是鉴于工业用途,可以使用工业封装过的树莓派,比如uniPi,而不是家用树莓派。在车间部署的示意图如下:
在这里插入图片描述

进一步开发,我们还可以把树莓派封装为物联网网关,做边缘预处理。把抓到的设备数据做数据挖掘,发现设备运行的各种问题,发现生产降本增效的空间
在这里插入图片描述
回到树莓派和传感器的组合,我们要做的事情示意图:
在这里插入图片描述

服务器我用的是个人电脑。树莓派体是网上买的。树莓派体小轻便,成本低,自带蓝牙和无线模块,一旦配置好程序,就可以拿到生产线安装,安装过程只需要插两根线,插上电就可以用了。所以对预算较少的生产线做可视化非常适合。

本文较长且包含部分核心代码,读者可以根据兴趣跳跃阅读:

1. 树莓派和传感器安装
2. 读取传感器数据的python程序
3. Django网站搭建,并配置REST API
4. 发送数据到服务器API,并让树莓派定时执行数据传输程序
5. 网站数据可视化,并定时自动刷新图表
6. 附录:所有源代码

以下是正文
在这里插入图片描述

1.树莓派和传感器安装

我假定读者已经了解过树莓派,也已经会给树莓派刷系统。这样的文章网上很多,我就不再重复。树莓派刷好系统,然后开始传感器和树莓派连接,先上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如上图所示,把温湿度传感器对应地插到树莓派的针脚。

VCC(正极) — 树莓派的3v电源 (左侧第一个 3V PWR )
GND (负极)— 树莓派的GND接口(我选择了右侧第三个 GND)
DATA (out) —树莓派的GPIO引脚 (我选择了左侧第二个 GPIO2,记住编号,程序里要填)
为了操作方便,我还配置了一个无线键盘鼠标套装和带HDMI的显示器,方便操作树莓派。如果没有的话也可以使用VNC连接(树莓派里面要启动相应配置),或者linux命令熟悉的同学直接putty就可以了

2.树莓派读取传感器数据的python程序

总体思路是根据针脚编号,读取到传感器的数据,先把数据保存到本地的文本,以此来检验程序是否争取执行。后面我们会摒弃这种方法,直接通过REST API把数据传给服务器。这个传感器可以收集温度和湿度。因为只是做教程,我们后面主要使用温度数据演示

翠花,上代码!

import RPi.GPIO as GPIO
import time

channel =2 # 上文提到的GPIO编号 
data = []
j = 0

GPIO.setmode(GPIO.BCM)
time.sleep(1)
GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)
while GPIO.input(channel) == GPIO.LOW:
    continue
while GPIO.input(channel) == GPIO.HIGH:
    continue

while j < 40:
    k = 0
    while GPIO.input(channel) == GPIO.LOW:
        continue
    while GPIO.input(channel) == GPIO.HIGH:
        k += 1
    if k > 100:
        break
    if k < 8:
        data.append(0)
    else:
        data.append(1)
    j += 1

print ("sensor is working.")

humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]

humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0

for i in range(8):
    humidity += humidity_bit[i] * 2 ** (7-i)
    humidity_point += humid
  • 22
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值