请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F4的智能家居在线监控

[复制链接]
木木&点点 发布时间:2019-3-25 22:38
本帖最后由 点点&木木 于 2019-4-12 11:22 编辑
5 e  q6 {# O' O$ O  g
& p) \0 C% T1 c2 S
该系统实现了插入插座的电器的功耗测量,并可控制一些电器的开/关。
) E$ `+ E* K8 @2 W9 K6 d$ x+ N: m5 l

3 d  o7 [* k6 P7 t
1.jpg
硬件组件
英特尔Galileo Gen 2          ×       1      
STM32F4DISCOVERY      ×       1      
LV 20-P - 电压传感器    ×     1      
LA 55-P - 电流传感器     ×       1      
继电器模块5V / 4通道板屏蔽
我用了4个频道    ×          1      
12伏电源
这些电源用于为传感器供电   ×       2      

7 q' z) e' T, h8 x9 m  F
6 }5 A' m  e) o5 K  T  p
介绍
该项目的目标是开发一个实时监控功耗的工具,每日/每月的消耗登记,并允许设备打开/关闭的时间表。
系统测量设备的功率,功率信息(表观,有效,无功),电压和电流显示在网络接口中。在此界面中,有四个按钮可以打开/关闭继电器模块上连接的任何设备。
在界面中,有两个图形:第一个显示电压和电流,另一个显示条形图形的电源。图形每1秒更新一次。
目前正在开发每日/每月的消费登记。

  o% b; i5 ]3 p- ]% ~2 a$ G
2.4.jpg
# b- B' `) w, W: r# _% Q

6 Y3 l4 I% i. N% \7 }& Z
2.2.jpg

5 C  ~% B0 o. G) u5 ?. n
+ i7 Z% J( b6 q- R3 ?$ p0 @. s( j0 F- S, e4 |
2.3.jpg
  b3 N( x7 k7 X
) K. P; F- I" M0 _( u$ e
" z* y& ~0 P( k; v6 L

) W# \! P2 x7 M2 W  K4 I, s$ o1 z$ H1 ^9 l
2 k; s; _  _+ O7 ~* n: k
' D. L, e6 b1 r1 R% O

  S- c: Z8 ^6 ~6 Q- ?
定制零件和外壳

! v# u% w( R/ M( B. {8 q+ R+ {, W7 }
: _, j1 g' n; t( U/ E* ?
3.jpg

, Q4 o0 R' P" j/ X7 ~3 S/ f" J1 a9 B8 `! B- ?' y

2 F$ d& T4 ~8 d; s) h; s) g
原理图
电路设施
4.PNG
! `/ b- v( t/ _$ P7 t

8 G% e0 S; |; O# a: K
系统图

4 h8 w6 y3 N9 [8 Q  D
5.png
2 [% {& e' s& Y* b& Y

+ u, Q* [1 Z. x# d& _% C2 e& i0 h, _1 ~
代码
        var express = require("express");
var app = express();
app.set('view engine', 'ejs');
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var fs = require('fs');
var mraa = require('mraa');
Gpio_2 = new mraa.Gpio(2);
Gpio_3 = new mraa.Gpio(3);
Gpio_4 = new mraa.Gpio(4);
Gpio_5 = new mraa.Gpio(5);
Gpio_6 = new mraa.Gpio(6);
Gpio_7 = new mraa.Gpio(7);
Gpio_2.dir(mraa.DIR_OUT);
Gpio_3.dir(mraa.DIR_OUT);
Gpio_4.dir(mraa.DIR_OUT);
Gpio_5.dir(mraa.DIR_OUT);
Gpio_6.dir(mraa.DIR_IN);
Gpio_7.dir(mraa.DIR_IN);
Gpio_2.write(0);
Gpio_3.write(0);
Gpio_4.write(0);
Gpio_5.write(0);
An_0 = new mraa.Aio(0);
An_1 = new mraa.Aio(1);
var intervalHandler;
var dados_send = {v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0};
var com = require('serialport');
var serialPort = new com.SerialPort("/dev/ttyS0", {
                baudrate: 115200,
                dataBits: 8,
                parity: 'none',
                stopBits: 1,
               flowControl: false,
                parser: com.parsers.readline('\n')
});
serialPort.on('open', function(){
                console.log('\nSerial OK\n');
});
serialPort.on('data', function(data){
                var str = data.toString();
               var vet = str.split('x');
                dados_send.v0 = Math.sqrt(parseFloat(vet[0]));
                dados_send.v1 = Math.sqrt(parseFloat(vet[1])*0.001);
                dados_send.v2 = parseFloat(vet[2]);
                dados_send.v3 = Math.sqrt(Math.abs(parseFloat(vet[3])*0.001))*dados_send.v0;
                dados_send.v4 = Math.sqrt(Math.abs(parseFloat(vet[4])*0.001))*dados_send.v0;
                //console.log(dados_send);
                /*
                if(str.indexOf("V")== 0){
                                dados_send.v0 =parseFloat(str.replace("V","0"))/10.0;
                }elseif(str.indexOf("I") == 0){
                                dados_send.v1 =parseFloat(str.replace("I","0"))/1.0;
                }else if(str.indexOf("P")== 0){
                                dados_send.v2 =parseFloat(str.replace("P","0"))/10.0;
                }elseif(str.indexOf("Q") == 0){
                                dados_send.v3 =parseFloat(str.replace("Q","0"))/10.0;
                }elseif(str.indexOf("D") == 0){
                                dados_send.v4 =parseFloat(str.replace("D","0"))/1.0;
                }
                */
});
app.use(express.static(__dirname + '/js'));
app.get('/', function(request, response) {
               response.render('smartgrid', {
                                title: '',
                                message: ''
                });
});
app.get('/set', function(request, response) {
                response.render('smartgrid', {
                                title: '',
                                message: ''
                });
});
io.on('connection', function(socket) {
                socket.on('cmd_general',function(dados){
                        console.log('teste');
                        console.log(An_0.read());
                        console.log(Gpio_6.read());
                        fs.appendFile('leituras.txt','Nova linha ' + An_0.read()+ '\n');
                });
                 socket.on('cmd_rele',function(dados){
                         //console.log(dados);
                         Gpio_2.write(dados.r1);
                         Gpio_3.write(dados.r2);
                         Gpio_4.write(dados.r3);
                         Gpio_5.write(dados.r4);
                         //console.log(fs.readFileSync('leituras.txt')+"");
                        //serialPort.write("teste", function(){});
                });
});
var intervalFunction = function(){
                fs.readFile('/sys/class/thermal/thermal_zone0/temp','utf8',function(err,data){
                           dados_send.v5 = data.replace('\n','');
                });
                io.emit('data',dados_send);
};
function isr_Gpio_7(){
       console.log('Interrupcao');
       if(Gpio_7.read()){
               //io.emit('isr_gpio_7',dados_send);
       }
}
Gpio_7.isr(mraa.EDGE_BOTH,isr_Gpio_7);
intervalHandler = setInterval(intervalFunction,1999);
server.listen(8080);
console.log("\nServidor OK\n");
) l& Z1 `! T# l- G- ]. E2 C
5 f0 |8 {7 @2 C: k$ k
2 x( V% H5 u7 [* b3 l* T4 t
2.1.jpg
2.5.jpg
收藏 评论4 发布时间:2019-3-25 22:38

举报

4个回答
卖身学Linux 回答时间:2019-3-26 08:10:37
大佬!
吕小布丶 回答时间:2019-3-26 08:50:34
老板开放下原理图和源代码呗
wudianjun2001 回答时间:2019-3-26 09:01:01
直接开发板
mzr85 回答时间:2019-3-26 10:24:43
666,学习
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版