辰匠科技IOT:树莓派python-tkinter界面GUI编程

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序,可用import tkinter加载。

这里结合之前的opencv摄像头rtmp远程视频案例说明:
运行python文件,显示程序窗口。
窗口内显示摄像图片。

点击“RTMP”,会启动rtmp推流协议,在浏览器内打开我们之前的视频网页等几秒时间后会看到摄像视频

当点击“显示时间”,会看到在摄像视频里显示当前时间

当点击“去色灰度”,会看到在摄像视频里图像变灰没有颜色

当点击“运动捕捉”,会看到在摄像视频里对剧烈运动的内容标出红框,这里会将手表里的快速运动的秒表用红框标出。

这样就完成python-界面GUI程序制作,但遇到的问题,当程序运行时间长了视频会卡顿,大家可以来探讨下如何解决。

辰匠科技IOT:远程视频监控方案

辰匠IOT:远程视频监控方案 = 树莓派+USB摄像头+OpenCV+RTMP网络(Nginx)服务器

 一、云nginx服务器

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器

RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

1、nginx 搭建 rtmp 服务器

apt install nginx

apt install libnginx-mod-rtmp

systemctl restart nginx

 

2、修改nginx配置

修改nano nginx.conf

添加内容:

rtmp {

server {

listen 1935;

chunk_size 4096;

 

application live {

live on;

record off;

notify_method get;

#on_publish http://127.0.0.1/rtmp/on_publish.php;

}

 

}

}

 

如需推流用户权限

(1)用on_publish.php配置推流用户权限

(2)nginx开放php配置

安装php:apt install php

安装php-fpm:apt install php-fpm

修改配置nano sites-enabled/default

提示:在安装PHP时有系统会安装apache,将apache与nginx的配置80端口区分即可

4、重启nginx

nginx -t 测试通过, nginx -s reload 平滑重启服务器。

或service nginx restart

 

二、树莓派运行python

OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。 OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。

1、安装opencv

apt install python3-opencv

 

2、编辑python

利用opencv采集USB摄像头图像,利用ffmepg发出rtmp流媒体给nginx云服务器

 

3、运行python

4、检查流媒体

在PC用VLC打开网络串流

也可利用斗鱼等rtmp直播平台检查流媒体

这里以斗鱼为例:

申请主播帐号进行推流设置

打开直播房间链接

三、视频网页制作html

这里使用腾讯云 Web 超级播放器 TCPlayerLite

1、加载JS:TcPlayer-2.3.3.js

<script src=”TcPlayer-2.3.3.js” charset=”utf-8″></script>

<div id=”id_test_video” style=”width:100%; height:auto;”></div>

 

2、编辑html文件配置rtmp链接

<script>

var player = new TcPlayer(‘id_test_video’, {

“rtmp” : “rtmp://(视频流地址)”,

“live” : true,

“autoplay” : true,      //iOS 下 safari 浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的

“width” :  ‘640’,//视频的显示宽度,请尽量使用视频分辨率宽度

“height” : ‘480’//视频的显示高度,请尽量使用视频分辨率高度

});

</script>

 

3、用浏览器打开

等几秒后显示流视频,通过观察延时几秒。

python 文件处理方法简介

利用python处理文件

一、File(文件) 方法
打开文件:open(file, mode=’r’)
关闭文件:file.close()
读取文件:file.read([size])、file.readline([size])、file.readlines([sizeint])
移动文件读取指针到指定位置:file.seek(offset[, whence])
写入文件:file.write(str)、file.writelines(sequence)

二、EXCEL文件
python对于excel文件有处理模块:读取用xlrd、写入用xlwt
安装命令:pip install xlrd
引用代码:import xlrd
官网:http://www.python-excel.org/

三、配置文件
比如配置文件config.ini或config.txt
安装命令:pip install configparser
引用代码:import configparser
pypi:https://pypi.org/project/configparser/

 

辰匠科技IOT:modbus工业协议物联网方案

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式,大多用在各型号PLC、各种传感器控制。主要分为以太网接口用的modbus TCP 和RS485串口通信用的modbus RTU。

结合辰匠IOT方案利用树莓派可以做到:

1、利用网口或WIFI的以太网接口来联接modbus TCP的设备。

2、对于modbus RTU可以用USB转RS485转换器来联接。

3、树莓派也可以作为modbus服务器将其他信息比如开关量、温度等转换成modbus协议。

等其他modbus相关功能。

上次讲到温度物联用的是DHT11和DS18B20的方案,这里讲是用热电偶或热电阻+智能巡检仪的办法采集温度。

热电偶或热电阻是将温度转换成了电信号。

智能巡检仪是将电信号转换成modbus的数据。

用一个案例讲解:利用树莓派的GPIO采集了开关量和温度还有WEB用户端输入的,现将这些信息转换modbu协议信息,在将这些信息发布到WEB用户端。

利用python的modbus_tk模块
加载:import modbus_tk,启动modbus的主从端,这里用modbu TCP。

地址位40001:就是手机端输入的值888;

地址位40002:就是树莓派GPIO的一个开关量,1或0可代表开或关;

地址位40003和地址位40004:就是DHT采集的湿度和温度;

地址位40005和地址位40006:就是两个DS18B20采集的温度,这里讲数据乘以1000将三位小数转成整数。

在本地网络可用电脑联接树莓派IP查看其mobus数据情况。

树莓派内部利用python运行modbus工作流程原理如下:

辰匠科技愿与大家一同合作,一起玩转物联网!

辰匠科技IOT物联网方案:基于树莓派GPIO的温度数据采集

温度(temperature)是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。

温度传感器(temperature transducer)是指能感受温度并转换成可用输出信号的传感器。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类。

这里先介绍可直接利用树莓派GPIO端口的温度传感器:DHT11和DS18B20。其他的温度传感器PT100温度传感器WZP-PT100热电偶/阻 PT100铂电阻+智能巡检仪的温度数据采集方案将会在之后的文章关于modbus的部分做介绍。

(一)DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。其单串口进行通讯输出温湿度信息。

将DHT传感器引脚接入树莓派GPIO接口,方案的原理其实是由树莓派GPIO发出脉冲信号给DHT11传感器,DHT11再发出温湿度信息的脉冲给树莓派GPIO接口。

这里就不介绍如何用python编程如何发脉冲通信,这里推荐使用python的模块Adafruit-DHT。

安装命令:sudo pip3 install Adafruit_DHT。

python编程模块引用一般是:import Adafruit_DHT。

这样就可以将DHT11传感器的温度信息转变成程序里的变量来利用

详细内容可参见pypi。

(二)DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

将模块封装后可以测空气温度或是水温。

DS18B20与树莓派GPIO端口相接,其实与DHT11用法相似。

这里就不介绍如何用python编程如何发脉冲通信,这里推荐使用python的模块ds18b20pi。

安装命令:sudo pip3 install ds18b20pi。

python编程模块引用一般是:import ds18b20pi。

这样就可以将DS18B20传感器的温度信息转变成程序里的变量来利用

详细内容可参见pypi。

特别提示:DS18B20传感器是可以并联的,即一个GPIO端口可以采集多个DS18B20传感器数据的,在python程序里会以字典形式存在。

温度采集方案搞定后,将数据采集传送到云服务器的数据库里,接下来就可制作人机用户界面了,在手机或电脑等终端查看采集到的温度数据。

之后还可以对数据做可视化分析,这里建议按每分钟对采集的数据做统计分析,每分钟会采集到多个数值,记录每分钟的初始值、最终值、最大值、最小值用K线图表示。

DHT11温湿度曲线

DS18B20温度曲线

通过数据查看,会发现DS18B20比DHT11的稳定性要好、数据正确率高。

因此建议:

比如要利用温度做设备控制,精度要求高的场景下建议用DS18B20。

如果需要既要测温又要测湿度而且成本要再低些,不需要做其他设备关联控制仅是观察读数的建议使用DHT11。

辰匠科技愿与大家一同合作,一起玩转物联网!