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

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

[复制链接]
点点&木木 发布时间:2019-3-25 22:38
本帖最后由 点点&木木 于 2019-4-12 11:22 编辑

该系统实现了插入插座的电器的功耗测量,并可控制一些电器的开/关。


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


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

2.4.jpg


2.2.jpg



2.3.jpg








定制零件和外壳


3.jpg



原理图
电路设施
4.PNG


系统图

5.png



代码
        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");



2.1.jpg
2.5.jpg
收藏 评论4 发布时间:2019-3-25 22:38

举报

4个回答
和你挤公交 回答时间: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,学习

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版