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

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

[复制链接]
木木&点点 发布时间:2019-3-25 22:38
本帖最后由 点点&木木 于 2019-4-12 11:22 编辑
1 ]+ y) k& C4 B4 l: A, J3 K3 W2 C4 A
0 ?% a' Y4 ~$ E# I8 G. A. ]
该系统实现了插入插座的电器的功耗测量,并可控制一些电器的开/关。
/ h- _" f& |7 y2 I0 `4 G3 V2 {4 D

2 S- w: k4 \/ {% L: m
1.jpg
硬件组件
英特尔Galileo Gen 2          ×       1      
STM32F4DISCOVERY      ×       1      
LV 20-P - 电压传感器    ×     1      
LA 55-P - 电流传感器     ×       1      
继电器模块5V / 4通道板屏蔽
我用了4个频道    ×          1      
12伏电源
这些电源用于为传感器供电   ×       2      

" H9 w% C3 B4 O4 ~$ O! V

3 R( V* O; r$ R" n/ x
介绍
该项目的目标是开发一个实时监控功耗的工具,每日/每月的消耗登记,并允许设备打开/关闭的时间表。
系统测量设备的功率,功率信息(表观,有效,无功),电压和电流显示在网络接口中。在此界面中,有四个按钮可以打开/关闭继电器模块上连接的任何设备。
在界面中,有两个图形:第一个显示电压和电流,另一个显示条形图形的电源。图形每1秒更新一次。
目前正在开发每日/每月的消费登记。
. A+ e2 Q  C  W; |  y- Q
2.4.jpg

6 x6 r. k+ e, U! M  M
* t9 q0 i4 g' P" _
2.2.jpg

; s* A6 Y) \2 v) Y. f: g6 u& u0 s5 B4 }
+ d) O$ x5 p# l0 s
2.3.jpg

, Q: M1 I9 i* D4 ?! f- L/ c8 P" G1 ~7 h) j
! h8 [) n  W) U8 Z+ y# J; w9 `% ^
" r4 U- W, D4 ]9 P5 g

! q5 `8 e7 ?" v" Q. P
+ u2 ]; G4 |3 A8 h) S% R
9 h8 t2 Y. L# r: k; _% V$ i* l# {& M( o( h& j: C
定制零件和外壳
/ }! b8 I) A2 d; Q, U+ e! C7 p
( d' y) ^* F6 H* i
3.jpg

! c3 `2 a+ l8 f8 A" Q8 [  m
) P# e, ~; I/ Y9 \! Z
" W2 s7 J6 X( x: }  y
原理图
电路设施
4.PNG
. ?( @% j+ A: U" C

: g! Y* j; [* F3 i! d5 J* A% F
系统图

! X5 u, x2 g1 }
5.png

0 G, F+ y5 k0 ~5 s& E' M
9 p# n7 N$ R; T4 F
% M/ M2 b/ y# W
代码
        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");

$ l1 x4 v7 g- K( a
0 T2 @! [9 d' ~! D
6 c7 S4 m$ V& [; s+ g
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 手机版