Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sistema de monitoramento de qualidade do ar interno e lixo

Componentes e suprimentos

Raspberry Pi 3 Modelo B
× 1
Arduino UNO
× 1
NodeMCU ESP8266 Breakout Board
× 1
Sensor DHT11 de Temperatura e Umidade (4 pinos)
× 1
Seeed Grove - Sensor de gás (MQ2)
× 1
Sensor de gás MQ-7 CO (genérico)
× 1
Sensor ultrassônico - HC-SR04 (genérico)
× 1
Fonte de alimentação Raspberry Pi
× 1
Cabo HDMI
× 1
Cabo USB-A para B
× 1
Fios de jumpers (genérico)
× 1
Bateria de 5 V (genérica)
× 1

Aplicativos e serviços online

IOTA Emaranhado
Node.js
Raspberry Pi Raspbian
Arduino IDE
MQTT

Sobre este projeto





1. Introdução


Automação de edifícios é o controle centralizado automático de um edifício de aquecimento, ventilação e ar condicionado, iluminação e outros sistemas por meio de um sistema de gerenciamento de edifícios ou sistema de automação de edifícios (BAS). Os objetivos da automação predial são maior conforto dos ocupantes, operação eficiente dos sistemas prediais, redução do consumo de energia e dos custos operacionais e melhoria do ciclo de vida das concessionárias.

IOTA é uma tecnologia de contabilidade distribuída de código aberto, cujo objetivo é a troca segura de informações e valor na Internet das Coisas. Uma das principais inovações do IOTA é que, ao invés do Blockchain tradicional, ele usa uma arquitetura própria (Tangle) baseada em um conceito matemático denominado Directed Acyclic Graph (DAG). Esta arquitetura possibilita que não haja comissões, que a latência da rede seja baixa e melhores perspectivas de escalabilidade. O IOTA está em desenvolvimento e a expectativa é de que, ao longo de 2019, a tecnologia esteja pronta para ser adotada em larga escala.

As especificações do Raspberry Pi 3 B incluir:
  • CPU:ARM Cortex A53 Quad-core de 64 bits com clock de 1,2 GHz.
  • GPU:multimídia VideoCore IV de 400 MHz.
  • Memória:1 GB LPDDR2-900 SDRAM (ou seja, 900 MHz)
  • Portas USB:4.
  • Saídas de vídeo:HDMI, vídeo composto (PAL e NTSC) via conector de 3,5 mm.
  • Rede:Ethernet 10/100 Mbps e LAN sem fio 802.11n.

Recursos do Arduino UNO tabuleiro :
  • Microcontrolador:ATmega328.
  • Tensão operacional:5 V.
  • Tensão de entrada (recomendado):7-12 V.
  • Tensão de entrada (limites):6-20 V.
  • Pinos de E / S digitais:14 (dos quais 6 fornecem saída PWM)
  • Pinos de entrada analógica:6.
  • Corrente DC por pino de E / S:40 mA.
  • Corrente DC para pino de 3,3 V:50 mA.

NodeMCU , recursos:
  • Finalmente, módulo WiFi programável.
  • IO de hardware semelhante ao Arduino (definido por software).
  • Pode ser programado com o Arduino IDE.
  • USB-TTL incluído, plug &play.
  • 10 GPIOs D0-D10, funcionalidade PWM, comunicação IIC e SPI, 1 fio e ADC A0 etc., tudo em uma placa.

Este projeto está dividido em três versões. Para uma melhor compreensão do projeto, nós o dividimos nos seguintes capítulos:
  • 1. Introdução
  • 2. Instalação de software
  • 3. Sistema de monitoramento da qualidade do ar interno v1
  • 4. Sistema de monitoramento da qualidade do ar interno v2
  • 5. Sistema de monitoramento de lixo
  • 6. Conclusões





2. Instalação de software


a) Instale o Raspbian no Raspberry PI 3 B

Eu instalei o NOOBS , o link de download e as instruções estão em:https://www.raspberrypi.org/downloads/

b) Instale o Node.JS
  $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - 
$ sudo apt-get install -y nodejs

c) Baixe e construa a biblioteca BCM2835 no Raspberry Pi. Esta biblioteca nos ajuda a trabalhar com o sensor DHT11.
  $ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz 
$ tar zxvf bcm2835-1.56.tar.gz
$ cd bcm2835 -1.56
$ ./configure
$ make
$ sudo make check
$ sudo make install

d) Baixe e instale o projeto indoor-air-quality-iota no Raspberry Pi
  $ cd ~ 
$ git clone https://github.com/guillengap/indoor-air-quality-and-garbage-monitoring-system.git
$ cd indoor-air -quality-and-garbage-monitoring-system
$ npm install

e) Baixe e instale o serialport
  $ nmp install serialport  

f) Baixe e instale o Arduino IDE:

https://www.arduino.cc/en/Main/Software





3. Sistema de monitoramento da qualidade do ar interno v1


Os dados do sensor DHT11 são lidos e publicados no Tangle usando MAM.

Como funciona?

a) O projeto indoor-air-quality-iota tem 3 arquivos java script:
  • sensor.js :Os dados do sensor DHT11 são lidos e exibidos:temperatura e umidade.
  • mam_sensor.js :Os dados do sensor DHT11 são lidos e publicados no IOTA Tangle usando MAM.
  • mam_receive.js :Extraia os dados armazenados do IOTA Tangle usando MAM e exiba os dados.

b) O ponto final do nó completo e a chave lateral são ambos codificados permanentemente nos arquivos javascript. Para interromper a execução de um script, pressione CTRL + Z .

c) Conecte à placa Arduino UNO, o sensor DHT11.

d) Execute nodesensor.js para verificar se o Raspberry Pi pode ler dados de temperatura e umidade do módulo sensor DHT11.
  $ node sensor.js  

Aqui podemos ver os dados de umidade e temperatura capturados pelo sensor DHT11. Se tudo estiver bem, vamos para a próxima etapa.

e) Execute mam_sensor.js . Este script armazenará os dados de temperatura e umidade do módulo sensor DHT11 para o Tangle.
  $ node mam_sensor.js  

Testamos com três nós e obtivemos melhores resultados com:https://potato.iotasalad.org:14265
  // const iota =new IOTA ({provider:'https://nodes.testnet.iota.org:443'}); 
const iota =new IOTA ({provedor:'https ://potato.iotasalad.org:14265 '});
// const iota =new IOTA ({provedor:' https://peanut.iotasalad.org:14265 '});

Você pode consultar alguns nós disponíveis em:https://iotasalad.org/nodes

Estamos enviando as seguintes informações:
  • Cidade:MÉXICO
  • Edifício:65
  • Data e hora (UTC):ANO. MÊS, DIA, HORA. MINUTOS E SEGUNDOS
  • Dados:temperatura em graus Celsius e Fahrenheit e porcentagem de umidade relativa

f) Abra outro terminal e digite: node mam_receive.js your_root e os dados do sensor armazenados são exibidos. Por exemplo:
  $ node mam_receive.js AMBTIKZKEVEEQFCUGIDUOLDOXL9OZQ9GOMNBFYHVRAUCAMHDQQJBSNAMFZYRLTUVAHFDINHTTFKIPELIG  

O código que gerencia os dados recebidos é:
  // RECEBER DADOS DO TANGLE 
const executeDataRetrieval =função assíncrona (rootVal, keyVal) {
let resp =await Mam.fetch (rootVal, MODE, keyVal, function (data) {
let json =JSON.parse (iota.utils.fromTrytes (data));
console.log (`Cidade:$ {json.city}, Edifício:$ {json.building}, Tempo :$ {json.dateTime} UTC, Dados:$ {json.data} `);
});
}

Teste

Imagens





4. Sistema de monitoramento da qualidade do ar interno v2


Os dados dos sensores DHT11, MQ-2 e MQ-7 são lidos e publicados no Tangle usando MAM

Como funciona?

a) O projeto indoor-air-quality-iota tem 5 arquivos:
  • sensorArduino.ino :Este código é para capturar os dados dos três sensores:sensor de umidade e temperatura DHT11, sensor de gás MQ-2 LPG e sensor de gás MQ-7 CO.
  • listportsArduino.ino :Mostra as portas disponíveis da placa Arduino UNO.
  • sensorArduino.js :Os dados dos sensores DHT11, MQ-2 e MQ-7 são lidos e exibidos.
  • mam_sensorArduino.js :Os dados dos sensores DHT11, MQ-2 e MQ-7 são lidos e publicados no Tangle usando MAM.
  • mam_receiveArduino.js :Extraia os dados armazenados do Tangle usando MAM e exiba os dados.

b) O ponto final do nó completo e a chave lateral são ambos codificados permanentemente nos arquivos javascript. Para interromper a execução de um script, pressione CTRL + Z .

c) Conecte à placa Arduino UNO os sensores:DHT11, MQ-2 e MQ-7.

d) Na pasta "sensorArduino", que se encontra no projeto indoor-air-quality-iota, temos as bibliotecas de sensores:DHT11, MQ-2 e MQ7. Devemos instalá-los nas bibliotecas do Arduino.

e) Faça upload do esboço sensorArduino.ino , para a placa Arduino UNO e execute-o. Selecione a porta de comunicação com a placa Arduino UNO, no meu caso é:Tools> Port> / dev / ttyACM0

f) Abra um terminal e execute node listportsArduino.js para verificar se nossa porta está ativa.
  $ node listportsArduino.js  

g) Execute node mam_sensorArduino.js . Este script armazenará os dados da placa Arduino UNO no Tangle.
  $ node mam_sensorArduino.js  

Estamos enviando as seguintes informações:
  • Cidade:NY
  • Edifício:13
  • Data e hora (UTC):ANO. MÊS, DIA, HORA. MINUTOS E SEGUNDOS
  • Dados:gás GLP em ppm, gás CO em ppm, temperatura em graus Celsius, porcentagem de umidade relativa,

h) Abra outro terminal e digite: node mam_receiveArduino.js your_root e os dados do sensor armazenados são exibidos. Por exemplo:

O código que gerencia os dados recebidos é:
  // RECEBER DADOS DO TANGLE 
const executeDataRetrieval =função assíncrona (rootVal, keyVal) {
let resp =await Mam.fetch (rootVal, MODE, keyVal, function (data) {
let json =JSON.parse (iota.utils.fromTrytes (data));
console.log (`Cidade:$ {json.city}, Edifício:$ {json.building}, Tempo :$ {json.time} UTC, Dados:$ {json.data} `);
});
executeDataRetrieval (resp.nextRoot, keyVal);
}

Teste

Imagens





5. Sistema de monitoramento de lixo


Envie dados do sensor SRF05 usando NodeMCU e MQTT para IOTA Tangle usando MAM

Como funciona?

a) Este projeto possui 3 arquivos:
  • trashcan.ino :Este código calcula a quantidade de lixo, dentro de uma lixeira em%. Em seguida, envie os dados para a placa Raspberry Pi 3B, usando o protocolo MQTT.
  • nodemcu_mqtt_mam .js :Os dados do sensor SRF05 são lidos e publicados no Tangle usando MAM.
  • nodemcu_mam_receive.js :Extraia os dados armazenados do Tangle usando MAM e exiba os dados.

b) O ponto final do nó completo e a chave lateral são ambos codificados permanentemente nos arquivos javascript. Para interromper a execução de um script, pressione CTRL + Z .

c) Conecte ao NodeMCUboard, os sensores ultrassônicos SRF05.

d) Instale os pacotes esp8266 usando o gerenciador de placas. Abra a janela de preferências do Arduino IDE e insira no campo URLs adicionais do gerenciador de placa:http://arduino.esp8266.com/stable/package_esp8266com_index.json

Selecione o menu:Ferramentas> Placa> Gerenciador de Placa ... No campo de pesquisa, digite:esp8266 e instale a versão mais recente.

e) Agora vamos fazer o NodeMCU se comunicar com um servidor mosquitto. Comece adicionando a biblioteca PubSubClient ao IDE do Arduino. Esta biblioteca é para mensagens MQTT e suporta NodeMCU.
  • Selecione o menu:Esboço> Incluir biblioteca> Gerenciar bibliotecas
  • Pesquise por:PubSub
  • Selecione PubSubClient (Nick O'Leary) e instale a versão mais recente

f) Em seguida, instale o Mosquitto (MQTT) no RaspberryPi 3B. O protocolo MQTT fornece um método leve de execução de mensagens usando um modelo de publicação / assinatura. Isso o torna adequado para mensagens da Internet das Coisas, como sensores de baixa potência ou dispositivos móveis, como telefones, computadores integrados ou microcontroladores. Faça login em seu Raspberry Pi, abra um terminal e digite:
  $ cd ~ 
$ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ apt-key add mosquitto-repo.gpg.key
$ cd /etc/apt/sources.list.d/$ wget http://repo.mosquitto.org/debian/mosquitto-stretch.list

Agora instale o seguinte:
  $ cd ~ 
$ wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u11_armhf .deb
$ sudo dpkg -i libssl1.0.0_1.0.1t-1 + deb8u11_armhf.deb
$ wget http://ftp.nz.debian.org/debian/pool/main/libw/ libwebsockets / libwebsockets3_1.2.2-1_armhf.deb
$ sudo dpkg -i libwebsockets3_1.2.2-1_armhf.deb

A libss ... última versão que você pode encontrar aqui:http://security.debian.org/debian-security/pool/updates/main/o/openssl/

Instale o corretor MQTT e os clientes mosquito.
  $ sudo apt-get install mosquitto mosquitto-clients  

Se você tiver um problema com a instalação do MQTT, pode tentar:
  $ npm install mqtt --save  

Reinicie o Raspberry Pi. Abra um terminal e verifique a versão do mosquito:
  $ mosquito -v  

Você pode iniciar e parar o servidor mosquito:
  $ sudo /etc/init.d/mosquitto start 
$ sudo /etc/init.d/mosquitto stop

Verificamos o IP do Raspberry Pi:
  $ ifconfig  

g) Faça upload do esboço trashcan.ino , para a placa NodeMCU. Verifique os próximos dados:
  • placa NodeMCU 1.0
  • Porta serial
  • Serial.begin (115200);
  • const char * wifi_ssid ="ARRIS-WXYZ";
  • const char * wifi_password ="XXXXXXXXXXXX";
  • const char * mqtt_server ="192.168.0.12"; // RASPBERRY IP
  • int trashcan =25; // MINHA LIXEIRA TEM 25 CM DE COMPRIMENTO

h) Execute nodemcu_mqtt_mam.js , este script armazenará os dados da placa NodeMCU para o Tangle.
  $ nodemcu_mqtt_mam.js  

Estamos enviando as seguintes informações:
  • Cidade:BERLIM
  • Edifício:7
  • Data e hora (UTC):ANO. MÊS, DIA, HORA. MINUTOS E SEGUNDOS
  • Dados:porcentagem da lata de lixo.

i) Abra outro terminal e digite: node mam_receiveArduino.js your_root e os dados do sensor armazenados são exibidos. Por exemplo:

O código que gerencia os dados recebidos é:
  // RECEBER DADOS DO TANGLE 
const executeDataRetrieval =função async (rootVal, keyVal) {
let resp =await Mam.fetch (rootVal, MODE, keyVal, function (data) {
let json =JSON.parse (iota.utils.fromTrytes (data));
console.log (`Cidade:$ {json.city}, Edifício:$ {json.building}, dateTime :$ {json.dateTime} UTC, Dados:$ {json.data} `);
});
executeDataRetrieval (resp.nextRoot, keyVal);
}

Nesta ocasião, o nó disponível era diferente:https://iotasalad.org/nodes
  const iota =new IOTA ({provedor:'https://durian.iotasalad.org:14265'});  

Teste

Imagens





6. Conclusões


Sistema de monitoramento da qualidade do ar interno v1:

Este projecto tem funcionado de forma satisfatória e monitorizamos a qualidade do ar no interior de um edifício, como podemos verificar nos resultados obtidos. Simulamos este projeto em um prédio localizado na Cidade do México. Este foi um teste básico usando o sensor de umidade e temperatura DHT11 e a placa Raspberry Pi 3B, código Java Script e protocolo IOTA.

Sistema de monitoramento da qualidade do ar interno v2:

Neste projeto utilizamos os sensores DHT11, MQ-2 (LPG) e MQ-7 (CO). Nesta ocasião. simulamos a captura de dados em um prédio localizado na cidade de Nova York e enviamos esses dados usando placas Arduino UNO e Raspberry Pi para o IOTA Tangle usando mensagens autenticadas mascaradas (MAM). Esta foi uma forma prática e rápida de adicionar mais sensores. Esta versão pode ser usada em edifícios inteligentes e em indústrias onde o gás LP é usado e onde o monóxido de carbono é produzido por incêndios.

Sistema de monitoramento de lixo:

O objetivo deste projeto é assumir o controle do depósito de lixo em um edifício inteligente localizado na cidade de Berlim ou em qualquer distrito. O acúmulo de lixo, pode produzir odores ruins de produtos em decomposição, mas agora podemos saber, há quanto tempo tem uma lixeira com lixo e o percentual desse lixo.



Código

  • sensor.js
  • mam_sensor.js
  • mam_receive.js
  • mam_sensorArduino.js
  • mam_receiveArduino.js
sensor.js JavaScript
Sistema de monitoramento da qualidade do ar interno v1
Código para testar o sensor DHT11
 const sensor =require ('node-dht-sensor'); const TIMEINTERVAL =10; // SECONDSconst SENSORTYPE =11; // 11 =DHT11, 22 =DHT22const GPIOPIN =4; // RASPBERRY GPIO PIN DO SENSOR DHT11 function readSensor () {sensor.read (SENSORTYPE, GPIOPIN, function (err, temperatura, umidade) {if (! Err) {console.log ('temp:' + temperature.toFixed (1 ) + 'C,' + 'umidade:' + umidade.toFixado (1) + '%');} else {console.log (err);}});} readSensor (); // ATUALIZAR AUTOMATICAMENTE O VALOR DO SENSOR CADA 10 SECONDSsetInterval (readSensor, TIMEINTERVAL * 1000); 
mam_sensor.jsJavaScript
Indoor Air Quality Monitoring System v1
This code store the temperature and humidity data from the DHT11 sensor module to the Tangle
const sensor =require('node-dht-sensor');const Mam =require('./lib/mam.client.js');const IOTA =require('iota.lib.js');const moment =require('moment');//const iota =new IOTA({ provider:'https://nodes.testnet.iota.org:443' });const iota =new IOTA({ provider:'https://potato.iotasalad.org:14265' });//const iota =new IOTA({ provider:'https://peanut.iotasalad.org:14265' });const MODE ='restricted'; // PUBLIC, PRIVATE OR RESTRICTEDconst SIDEKEY ='mysecret'; // USED ONLY IN RESTRICTED MODEconst SECURITYLEVEL =3; const TIMEINTERVAL =30; // SECONDSconst SENSORTYPE =11; // 11=DHT11, 22=DHT22const GPIOPIN =14; // RASPBERRY GPIO PIN FROM DHT11 SENSOR// INITIALIZE MAM STATElet mamState =Mam.init(iota, undefined, SECURITYLEVEL);// CHANNEL MODEif (MODE =='restricted') { const key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode(mamState, MODE, key);} else { mamState =Mam.changeMode(mamState, MODE);}// PUBLISH TO TANGLEconst publish =async function(packet) { // CREATE MAM PAYLOAD const trytes =iota.utils.toTrytes(JSON.stringify(packet)); const message =Mam.create(mamState, trytes); // SAVE NEW MAMSTATE mamState =message.state; console.log('Root:', message.root); console.log('Address:', message.address); // ATTACH THE PAYLOAD await Mam.attach(message.payload, message.address); return message.root;}function readSensor(){ sensor.read(SENSORTYPE, GPIOPIN, async function(err, temperature, humidity) { if (!err) { const city =('MEXICO'); const building =('65'); const dateTime =moment().utc().format('YYYY/MM/DD hh:mm:ss'); const data =`{Temperature:${temperature.toFixed(1)}°C (${(temperature.toFixed(1)*1.8)+32}°F), Humidity:${humidity.toFixed(1)}%}`; const json ={"data":data, "dateTime":dateTime, "building":building, "city":city}; const root =await publish(json); console.log(`City:${json.city}, Building:${json.building}, Time:${json.dateTime} UTC, Data:${json.data}, root:${root}`); } else { console.log(err); } });}// START ITreadSensor();// AUTOMATICALLY UPDATE SENSOR VALUE EVERY 30 SECONDSsetInterval(readSensor, TIMEINTERVAL*1000);
mam_receive.jsJavaScript
Indoor Air Quality Monitoring System v1
The stored sensor data is displayed.
const Mam =require('./lib/mam.client.js');const IOTA =require('iota.lib.js');//const iota =new IOTA({ provider:'https://nodes.testnet.iota.org:443' });const iota =new IOTA({ provider:'https://potato.iotasalad.org:14265' });//const iota =new IOTA({ provider:'https://peanut.iotasalad.org:14265' });const MODE ='restricted'; // PUBLIC, PRIVATE OR RESTRICTEDconst SIDEKEY ='mysecret'; // USED ONLY IN RESTRICTED MODElet root;let key;// CHECK THE ARGUMENTSconst args =process.argv;if(args.length !=3) { console.log('Missing root as argument:node mam_receive.js '); process.exit();} else if(!iota.valid.isAddress(args[2])){ console.log('You have entered an invalid root:'+ args[2]); process.exit();} else { root =args[2];}// INITIALISE MAM STATElet mamState =Mam.init(iota);// SET CHANNEL MODEif (MODE =='restricted') { key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode(mamState, MODE, key);} else { mamState =Mam.changeMode(mamState, MODE);}// RECEIVE DATA FROM THE TANGLEconst executeDataRetrieval =async function(rootVal, keyVal) { let resp =await Mam.fetch(rootVal, MODE, keyVal, function(data) { let json =JSON.parse(iota.utils.fromTrytes(data)); console.log(`City:${json.city}, Building:${json.building}, Time:${json.dateTime} UTC, Data:${json.data}`); }); }executeDataRetrieval(root, key);
mam_sensorArduino.jsJavaScript
Indoor Air Quality Monitoring System v2
The DHT11, MQ-2, and MQ-7 sensors data are read and published to the Tangle using MAM.
const SerialPort =require('serialport');const moment =require('moment');const IOTA =require('iota.lib.js');const Mam =require('./lib/mam.client.js');//const iota =new IOTA({ provider:'https://nodes.testnet.iota.org:443' });const iota =new IOTA({ provider:'https://potato.iotasalad.org:14265' });const MODE ='restricted'; // PUBLIC, PRIVATE, RESTRICTEDconst SIDEKEY ='mysecret'; // ONLY ASCII CHARACTERSconst SECURITYLEVEL =3; // 1, 2, 3const PORTNAME ='/dev/ttyACM1'; // ENTER VALID PORT const port =new SerialPort(PORTNAME, { baudRate:9600, autoOpen:true});const Readline =SerialPort.parsers.Readline;const parser =port.pipe(new Readline({ delimiter:'\r\n' }));// INITIALIZE MAM STATElet mamState =Mam.init(iota, undefined, SECURITYLEVEL);// SET CHANNEL MODEif (MODE =='restricted') { const key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode(mamState, MODE, key);} else { mamState =Mam.changeMode(mamState, MODE);}// PUBLISH TO TANGLEconst publish =async function(packet) { // CREATE MAM PAYLOAD const trytes =iota.utils.toTrytes(JSON.stringify(packet)); const message =Mam.create(mamState, trytes); // SAVE NEW MAMSTATE mamState =message.state; console.log('Root:', message.root); console.log('Address:', message.address); // ATTACH THE PAYLOAD await Mam.attach(message.payload, message.address); return message.root;}// SERIAL PORT LIBRARY EVENTSport.on('open', showPortOpen);parser.on('data', readSerialData);port.on('close', showPortClose);port.on('error', showError);// CALLBACK FUNCTIONSfunction showPortOpen() { console.log('Serial port open. Data rate:' + port.baudRate);}async function readSerialData(data){ let json ={}; const time =moment().utc().format('YYYY/MM/DD hh:mm:ss'); const city =('NY'); const building =('13'); json['time'] =time; json['city'] =`${city}`; json['building'] =`${building}`; json['data'] =`{${data}}`; console.log('json =',json); const root =await publish(json);}function showPortClose() { console.log('Serial port closed.');}function showError(error) { console.log('Serial port error:' + error);}
mam_receiveArduino.jsJavaScript
Indoor Air Quality Monitoring System v2
Extract the stored data from the Tangle using MAM and display the data.
const Mam =require('./lib/mam.client.js');const IOTA =require('iota.lib.js');//const iota =new IOTA({ provider:'https://nodes.testnet.iota.org:443' });const iota =new IOTA({ provider:'https://potato.iotasalad.org:14265' });const MODE ='restricted'; // PUBLIC, PRIVATE OR RESTRICTEDconst SIDEKEY ='mysecret'; // ENTER ONLY ASCII CHARACTERSlet root;let key;// CHECK THE ARGUMENTSconst args =process.argv;if(args.length !=3) { console.log('Missing root as argument:node mam_receive.js '); process.exit();} else if(!iota.valid.isAddress(args[2])){ console.log('You have entered an invalid root:'+ args[2]); process.exit();} else { root =args[2];}// INITIALIZE MAM STATElet mamState =Mam.init(iota);// SET CHANNEL MODEif (MODE =='restricted') { key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode(mamState, MODE, key);} else { mamState =Mam.changeMode(mamState, MODE);}// RECEIVE DATA FROM THE TANGLEconst executeDataRetrieval =async function(rootVal, keyVal) { let resp =await Mam.fetch(rootVal, MODE, keyVal, function(data) { let json =JSON.parse(iota.utils.fromTrytes(data)); console.log(`City:${json.city}, Building:${json.building}, Time:${json.time} UTC, Data:${json.data}`); }); executeDataRetrieval(resp.nextRoot, keyVal);}executeDataRetrieval(root, key);

Esquemas

Schematic diagram Schematic diagram Schematic diagram

Processo de manufatura

  1. Monitor de Ambiente DIY e Qualidade do Ar
  2. Monitoramento da temperatura ambiente com Raspberry Pi e Nagios
  3. Sensor de temperatura Python e Raspberry Pi
  4. Monitoramento da temperatura ambiente com Moteino e Raspberry Pi
  5. Sistema de sensor de movimento infravermelho faça você mesmo para Raspberry Pi
  6. Registro da fotocélula Raspberry Pi e sistema de alerta
  7. Temperatura do Raspberry Pi e sensor de luz
  8. Sensor de luz ativado por voz e SMS usando Raspberry Pi e Twilio
  9. Sensor Raspberry Pi e controle do atuador
  10. Aeroponia com Raspberry Pi e sensor de umidade