Gerador de ozónio na qualidade de tratamento do ar

Aparelhos a adquirir:

  • Tubo 7,5g/H Ozônio;
  • placa : “Arduino”;
  • Fonte de alimentação 230V-50Hz/5Vdc;
  • placa : “LED&KEY”;
  • transistor p/ accionar tubo de ozono, ventilação, e sensores de gás;
  • Seccionador fusível;
  • diversos sensores de gás, da série Mq.

"
Ar

O ar é a mistura de gases que compõem a atmosfera da Terra. Ele é composto principalmente de nitrogênio, oxigênio e argônio, que juntos constituem a maior parte dos gases da atmosfera. Os demais gases incluem[1] gases de efeito estufa como vapor de água, dióxido de carbono, metano, óxido nitroso e ozônio. Ar filtrado contém traços de vários outros compostos químicos. Muitas substâncias naturais devem estar presentes em pequenas quantidades em uma amostra de ar não filtrada, incluindo poeira, pólen e esporos, cinzas vulcânicas, compostos de flúor, mercúrio metálico e compostos de enxofre como dióxido de enxofre.

Composição do ar seco, por volume
ppmv: partes por milhão por volume
(fração volumétrica somente é igual à fração molar para gases ideais)
Gás****Volume
Nitrogênio (N₂)
780.840 ppmv (78.084%)

Oxigênio (O₂)
209.460 ppmv (20.946%)

Argônio (Ar)
9.340 ppmv (0.9340%)

Dióxido de carbono (CO₂)
380 ppmv (0.0380%)

Neônio (Ne)
18,18 ppmv (0.001818%)

Hélio (He)
5,24 ppmv (0.000524%)

CH₄
1,79 ppmv (0.000179%)

Criptônio (Kr)
1,14 ppmv (0.000114%)

Hidrogênio (H₂)
0,55 ppmv (0.000055%)

Óxido nitroso (N₂O)
0,3 ppmv (0.00003%)

Xenônio (Xe)
0,09 ppmv (9×10⁻⁶%)

Ozônio (O₃)
0,0 to 0,07 ppmv (0% to 7×10⁻⁶%)

Dióxido de nitrogênio (NO₂)
0,02 ppmv (2×10⁻⁶%)

Iodo (I)
0,01 ppmv (1×10⁻⁶%)

Amônia (NH₃)
traçosNão incluído na atmosfera seca acima:
Vapor de água (H₂O)
~0,40% na atmosfera toda, tipicamente 1%-4% na superfície

Usando um tubo 7.5g para Tratamento do Ar.

carateristicas do aparelho no site:

"Gerador de ozonio 7.5g tubo para purificação do ar.
Especificações:
1. Ozonio tamanho do tubo: 255x30mm
2. Dimensões Potência: 150x52x40mm
3. Potência: 55W
4. Tensão de entrada: 220V
5. Fonte de alimentação: AC
6. Área de aplicação: 61m^2 >
7. Função: Remoção de formaldeído / esterilização / Adicionar Oxigenio
8. Categoria do produto: purificador de ar
9. Volume de ar: 151-300 metros cúbicos / hora
10. Âmbito: Para equipamentos Início purificação, máquinas de purificação de ar, eletrodomésticos e outros equipamentos empresariais
Precauções:
1. O uso por longo tempo do processo exige a refrigeração de ar e dissipação de calor.
2. O produto não pode entrar em contato com água. (Quando o produto está funcionando, tubo de saída tem alta tensão, por favor, atenção para não tocar, também não deixe que as crianças toquem) Instruções: O gerador de ozônio mata bactérias e desinfeta o ar. Quando o uso do ozônio como esterilizador deve ser instalar um ventilador de arrefecimento. Proibido trabalhar em um ambiente de concentração de ozono superior, não lavar com água pura equipamentos; Depois de trabalhar por algum tempo usar álcool para limpar o pó sobre o ozônio-chip, a fim de garantir fabricação normal de produto ozônio .
O pacote inclui: 1x7,5g/tubo de ozônio H módulo 1x220V Circuito
Informações gerais e esclarecimentos, algumas respostas são para equipamentos para água.
Concentração de referência de ozono no ar como 1PPM = 2.14Mg / m3 "desinfecção especificações técnicas" e com base na experiência prática,
Três centenas de milhares de purificação de grau tomar C = 2,5 ppm = 5 mg / m3;
etapa de purificação leva cem mil nível C = 5 ppm = 10 mg / m3;
Wan etapa de purificação tomar C = 15 ppm = 30 mg / m3;
Tome cento = 20 ppm 40 mg = C / M3
Gerador de ozônio máquina de ozônio ozônio máquina legumes desinfecção, desinfecção de ozônio: O tubo de guia de gás ozônio feitos de aço inoxidável não-magnético de alta qualidade, vidro de quartzo com built-in liner longevidade tubo de ozono eletrodo malha, com circuito de oscilação de alta tensão e uma bomba equipada , pode quebrar eficazmente os resíduos de pesticidas e água para matar as bactérias e os vírus, para atingir a desinfecção.Amplamente utilizado em máquinas de desintoxicação das famílias vegetais, máquina de legumes e todos os equipamentos de tratamento de água pequena, tem um bom desempenho da selagem, alta eficiência e longa vida útil.
características:
Esterilização do ozônio, sem resíduos de substâncias tóxicas
Para a desinfecção dos espaços públicos, hospitais e fábricas e minas sala limpa, esterilização e vários eliminação de odores
Usando a esterilização de oxigênio a gosto, a vitalidade é alto, largo e rápido, sem fungicida mortos
móvel, fácil de usar.
Ozono desinfecção esterilização máquina para os produtos que utilizam o princípio descarga atmosférica de ozônio para o ar como matéria-prima, rastejando empurrões tecnologia de descarga de liberação de altas concentrações de ozono, o ozono é um dos mais fortes oxidante conhecido, em certas concentrações, pode matar rapidamente fora da água e do ar em uma variedade de bactérias nocivas. É reconhecido como o mundo é um amplo espectro de desinfectante bactericida potente.
"

caracteristicas do aparelho no site:

Resumo: O ozono é um agente oxidante forte, de uma certa concentração pode rapidamente matar bactérias no ar.Não há resíduos tóxicos, e não uma poluição secundária, a natureza química do particular ativo, conhecido como “o oxidante mais limpa e desinfetante.”
A ação direta por tipo de ozono equipamentos de tratamento de água comum para a água eficiente e de mistura de gás significa misturar gás ozônio com água em água de ozônio, e ajustada a sua concentração na água de alimentação, para alcançar o efeito de desinfecção e esterilização.
Desinfecção de Ozônio de equipamentos de purificação de água com inversor de IGBT e tecnologia avançada de arrefecimento avançado para garantir uma produção elevada e estável de ozônio.
Equipamento de água de ozônio tratamento, sistema de controle do microcomputador, tempo de esterilização, concentração de ozônio e outros parâmetros de monitoramento em tempo real para garantir o funcionamento normal do sistema.
O ozonio equipamento de tratamento da água para o ar como matérias-primas, uma economia significativa acessíveis no custo.
Oxidação química: ozono como agente oxidante, catalizador e refino utilizados em indústrias químicas, óleo, papel, têxteis, farmacêuticas e de perfumaria. poder oxidante forte de ozono é muito fácil de interromper olefinas, alcinos Organics elos de uma cadeia de carbono, de modo que após a oxidação parcial de novos compostos sintéticos.
De branqueamento da celulose: ozônio na indústria de celulose e papel, para melhorar o branqueamento pasta química ou de polpa mecânica propriedades mecânicas, reduzindo o processo de branqueamento da celulose, poluição cloro do meio ambiente.
Tratamento de água: ozono na água de bactérias, vírus e outros microorganismos para matar alta velocidade, para a remoção completa de compostos orgânicos e outros poluentes, sem poluição secundária, e pode reduzir a demanda bioquímica de oxigênio (DBO) e demanda química de oxigênio ( COD), a remoção de nitrito, sólidos em suspensão e descoloração. Usado no tratamento de esgoto urbano, água potável engarrafada tratamento de água urbana tratamento de efluentes industriais, reciclagem de água e reutilizar aquários piscina e assim por diante.
Princípio esterilização desodorante: categoria ozônio é oxidação bioquímica. Ozono oxidação e decomposição de bactérias necessárias para a enzima glicose interno; efeito também pode ocorrer directamente com as bactérias, os vírus, a destruição da sua parede celular e ARN, a decomposição de DNA, RNA, proteínas, lípidos e polissacáridos e outras macromoléculas do polímero pode penetrar organização da membrana dentro da membrana interna lipoproteína lipopolissacárido da membrana externa reagir, a permeabilidade das bactérias distorção substancial ocorre, que conduz à dissolução da morte celular, e bactérias genéticos, bactérias parasitas, vírus parasita do corpo morto partícula, um fago, micoplasma e pirogénios (metabolitos vírus bacterianos, endotoxina), degeneração dissolvido e morte. O uso de oxidação “ozono” das características naturais do odor de amoníaco sabor e poluentes orgânicos produzidos na decomposição de corrupção completamente decomposto e removido, ele destrói a estrutura molecular substância de odor gerando não-tóxico, substância inodoro . Quase todas as competições internacionais de natação uso da piscina de tratamento com ozono, não só para remover o cloro residual na água, decompor clorofórmio, cloreto de bromo de metileno, tetracloreto de carbono e outros compostos orgânicos clorados cancerígeno desinfecção com cloro gerados. Mas também a esterilização, uso mais econômico da água é para estender o tempo e reduzir os custos.
As principais finalidades: gerador de ozônio é usado principalmente em água farmacêutica, água purificada, água mineral, abastecimento de água secundária, água da piscina, água aquicultura, indústria de processamento de alimentos e bebidas, desinfecção e purificação de água, bem como a indústria química, indústria de papel e outros desengorduramento, branqueamento para, a alta hospitalar de tratamento doméstico industrial padrão (desinfecção, remoção de BDR, COD, etc.), bem como esgoto doméstico, arrefecimento tratamento reuso de água industrial.
1 louças desinfecção: lavar louça depois do oxigênio e, em seguida, embebido em água, pode matar o vírus da hepatite B, para conseguir o efeito completo de esterilização, não desinfectante residual, é ideal para proteger sua saúde.
2, desodorante geladeira: passar para o oxigênio na geladeira, por um longo tempo sem tratamento pode matar as bactérias se reproduzem, enquanto desodorante prolongar o tempo de armazenamento de alimentos, assim que o alimento não é odor.
3, lavar roupas desinfecção: A água do ozônio pode descorar vestuário e aparência de sujeira, para reduzir a quantidade de detergente e água, lave bem o cheiro de meias, cuecas e toalhas suor azedo, e pode matar longo anexado à roupa de bactérias.
4, além de sabor saúde esterilização: para o toalete cheiro pungente, cheiro cozinha de peixes, pesticidas, sabor e gosto de areia garagem na cave e assim pode efetivamente eliminar.
5, animais de estimação, lixo odor eliminar: odor do animal de estimação, repositório de lixo, exploração de ar às vezes é difícil as pessoas não podem ficar de pé. esterilização de oxigênio, desoxigenação, características de decomposição, pode rapidamente resolver este problema.
6, nova mobília do quarto, além de sabor: materiais decorativos agentes químicos será volátil tolueno gás tóxico, formaldeído, fortes propriedades oxidantes da eliminação de ozono de três anos para completar a evaporação de substâncias químicas nocivas em 10 minutos. Assim você pode facilmente desfrutar do ar puro da floresta tropical-like). Decomposição do recém-renovados quartos de formaldeído, benzeno e outros produtos químicos prejudiciais, garantir ar limpo.
7, o tratamento de água potável: Ozono para tratamento de água potável, para além de um bom efeito de esterilização, não poluição secundária, mas também tanto branqueamento, odor, de ferro, de manganês, oxidação decomposição da matéria orgânica e efeito coagulante.
8, Mole Repeller controle de pragas: a ozono única pode rapidamente se livrar do cheiro pode ser mais sensíveis aos odores e insetos, pequenos animais, como ratos e baratas.
9, promover a saúde: O ozônio pode rapidamente restaurar o oxigênio, aumentar a concentração de oxigênio interior, promover a ativação de células humanas, melhorar a circulação sanguínea eo metabolismo, prevenir a doença.
10. Resumo: ozônio e formaldeído, dióxido de carbono, xileno e outros gases tóxicos complicado reações de degradação física e química, oxidação e outros não-tóxicos subprodutos, para evitar a poluição secundária.
Degradação eficiente dos Pesticidas: Vegetais e frutas em um grande número de resíduos de pesticidas e fertilizantes, pode causar doença gastrointestinal crônica depois de comer, pode causar sérios intoxicação alimentar. O ozônio gerado por esta máquina pode degradar rapidamente pesticidas, fertilizantes, ovos matando, bactérias, vírus, enquanto Preservação sozinho espera, sentimento mais refrescante depois de purificação, separação de hormônios de carne e antibióticos: a agricultura em larga escala, a fim para ganhar de alto rendimento, mantendo a utilização de alimentos ricos em hormônios e antibióticos, de modo que a maioria de nós comer carne que contenham resíduos de hormônios e antibióticos, resultando em crianças prematuras, as mulheres obesas distúrbios endócrinos, miomas uterinos e outras doenças, o ozônio pode ser rapidamente separados hormonas de carne e antibióticos para proteger a saúde de suas famílias.

arduino-Ozono-sensor.ino (15.9 KB)

caracteristicas do aparelho no site:

Desintoxicação dieta: frutas e degradação de pesticidas vegetal, mantendo frutas frescas e saborosos e legumes, não a perda de nutrientes, decomposição de hormônios e antibióticos na carne; se livrar de bactérias na água da torneira, metais pesados e impurezas orgânicas, e branqueamento, aeróbica, a cheirar. Cuidados de saúde de vida: pode remover sujeira e bactérias dentro dos poros, aumentar a função respiratória da pele, promover a circulação sanguínea, fazer a pele branca, suave e delicada. Lavar com água, oxigênio, pode efetivamente eliminar resíduos de maquiagem, removedor de segurança; pés com água, oxigênio pode prevenir uma variedade de beribéri, uma variedade de papel doenças oral de terapia adjuvante. aparelhos de vida, roupas, brinquedos, escova de dentes e outros desodorante eliminar as bactérias; louças, chá, vários utensílios de desinfecção; desodorantes para refrigeradores e conservação de alimentos: limpeza e desinfecção diária. Amadurecimento solução de etileno agente para distribuir as suas próprias frutas e vegetais, bem como matar causa fruta rot fungo, estender o tempo de preservação de frutas e legumes.
vegetais claros, resíduos de pesticidas superfície frutas: frutas e vegetais após a lavagem com água na bacia, a água inundou vegetais máquina de desinfecção com um tubo de plástico ligado à pedra bolha na água. Depois das frutas e vegetais frescos de qualidade de cor de desligamento, os resíduos de pesticidas superfície são discriminadas, preste atenção para a máquina deve estar acima da superfície da água. Evitar o refluxo de água (Nota: Não use bacia de alumínio). (10 minutos)
Decomposição de frango, de porco e outros resíduos de antibióticos e hormonas: a superfície do alimento frangos de carne crua, porcos e outros aparência limpa, não para a bacia, a carne água inundada, com um tubo de plástico estéril ligada à pedra máquina de bolha na água. Desligar camada visível de bolhas flutuantes viscosos, de facto, aditivos, como substância hormona, e produtos químicos sabor a queimado. (10-15 minutos)
Matar, marisco reprodução de hepatite, e outras bactérias: após lavagem marisco, marisco na água, de cima método de tratamento, que pode matar as pastas de reprodução de hepatite B no fígado, e outros fungos infecciosos. Após manipulação gosto de peixe fresco, muito óbvia. (3-5 min)
Remoção de fumaça ou outros odores na sala: a desinfecção de aeronaves no solo sobre a localização um metro, fechar janelas e portas, deixe a equipe, um minuto por tempo determinado metro quadrado, sem necessidade de guia de gás tubo de plástico. Após o desligamento ventilar-lo, o odor desapareceu. (1 g / 1 minuto por metro quadrado)
Após a remoção do novo formaldeído decoração da casa, tolueno e outros resíduos de tinta prejudiciais: Além de nova decoração de casa na sala contém uma grande quantidade de formaldeído, tolueno e outros resíduos de tinta nocivos, prejudiciais para as pessoas, a leve tontura, dor de cabeça, envenenamento grave, com o ar de desinfecção, é a maior parte da rápida estadia residual decomposable, seguro. (3-5 vezes por dia, uma vez que cerca de 20 minutos, durante sete dias consecutivos)
Além do odor geladeira: frigoríficos muitas vezes têm anaeróbio, o crescimento microbiano produz odor podre com tubo de ventilação máquina de oxigênio diretamente na parte superior da geladeira para colocar a posição de ovos frescos na geladeira após o desligamento, remoção de odor, e prolongar a vida de prateleira de alimentos. Tenha cuidado para não ser a porta da geladeira vias aéreas apertar plana, você pode colocar um pauzinho e traquéia com sendo espremido. (10 minutos)
Em adição ao mau hálito, cáries dentárias, doença periodontal, sangramento das gengivas: num copo cheio de água, o que leva a gás, água, escovar os dentes com o oxigénio a cada dia, uma semana pode controlar significativamente os sintomas desses efeitos. (3 minutos)
Cozinhe o arroz: Lave o arroz com água, oxigênio, arroz cozido, não só remover os resíduos orgânicos, suave e deliciosa para fazer arroz (5 minutos)
Homemade água pura: a beber água da torneira: água da torneira em água de ozônio deve ser deixada em repouso por 5-10 minutos após a bebida, chamada ferver água “água viva” para fazer chá, sopa e outra culinária, a qualidade da água suavidade doce, mais cozinhar alimentos autêntica. 10 min / barril.
Preservação fresca, para evitar a deterioração dos alimentos e evitar o crescimento de bactérias, vegetais frescos e fresco: o alimento a ser processado \ legumes e frutas sobre o gás introduzido em um saco plástico e feche hermeticamente fechado, não ligar a água, prolongar o período de conservação. Nota. O melhor saco de plástico fechado, e não escapam. (5 minutos)
Aquarium esterilização aeração para evitar doenças dos peixes, cultivo de plantas hidropônico: A traqueia foi introduzida no tanque uma vez por dia pode prevenir doenças dos peixes, e não mudar a água em março. (5 minutos)
Cozinha, banheiro odor, desodorante, purificação de ar do carro: O tratamento de desinfecção com desinfecção interior, como o efeito é óbvio. Nota: normalmente, apenas suprimir os odores com fragrâncias, como o tratamento com sabor e não o mesmo que verdadeira Oxigênio esterilização Destroy. (10 minutos)
Lavandaria, esterilização cueca, branqueamento, desodorização: Bacia passar para o Oxygen 10 minutos, desinfetante pode ser feita, (somente na parada de dez minutos de esterilização, ao longo do tempo não existe oxigênio composto átomo de desinfecção completa efeitos) oxigênio da água cueca encharcada, a esterilização completa (10 minutos)
Utensílios domésticos, pisos, tampos de mesa, desinfecção, limpeza de estimação: a bacia de passar para a desinfecção de oxigênio feita para a limpeza doméstica, a frugalidade, a eficácia (10 minutos)
Limpar a caspa: com água, oxigênio pode remover xampu anticaspa, mas também ansioso. Note-se que a temperatura da água não é muito alto, devido à capacidade de oxigénio dissolvido na água é diminuída com o aumento da temperatura. (10 minutos)
Rosto, maquiagem, clareamento: a cada dia com lavagem caseira de ozônio água, ao longo do tempo, dê brilho ao rosto, ativação de células, enfraquecendo sardas, promover o metabolismo. (5 minutos)
Acne: acne facial, propenso a infecções fúngicas, lave o rosto com água, oxigênio pode prevenir a infecção, a pele altamente purificada. (5 minutos)
Cuidados de saúde fisiológica, corrimento vaginal feminina, odor corporal: Mulheres como sofrendo de inflamação ginecológica, não são causados por fungos, como a inflamação vaginal, corrimento vaginal excessivo. Na maior bacia pode passar para o oxigênio, formam uma água de oxigênio saturado, em seguida, tomar a bolha, odor corporal e outras manifestações clínicas da coceira, o efeito é muito óbvio. (15 minutos)
Coceira genital; doenças de pele; classe micose; odor fungos STD; beribéri; pé de atleta: como a inflamação, não são principalmente causadas por fungos na bacia passar para o oxigênio, formam uma água de oxigênio saturado, então embebido por prurido as manifestações clínicas de odor corporal, o efeito é muito evidente, o pé de atleta pode ser colocado sobre uma toalha no pé, bordo lateral ventilação embebido. (10 minutos)

arduino-ozono-sensor.ino (15.2 KB)

Circuito

Gerador de ozónio na qualidade de tratamento do ar

usando a placa : “STM32F103C8T6”;

informação no editor do programa “Arduino Genuino 1.8”
Placa: "Generic STM32F103C series
Variant: “STM32F103C8 (20k RAM 64k Flash”
CPU Speed(MHz): “48Mhz (Slow-with USB)”
Upload method: “Serial”
Optimize: “Smallest(default)”
Porta: “COM7”
Programador: “BusPirate as ISP” {atmel(rx/tx) → stm32}
STM32F103C8T6: Arduino as ISP/BusPirate as ISP
CD74HC4067 Channel Multiplexer Analógico Digital (suporta 5V)

deixar estabilizar os 10 primeiros segundos: {ideal fazer a média}

resultados na “com7”

keypressed … ex. time timer: 10s 9s 8s 7s 6s 5s 4s 3s 2s 1s

Good Air

Este equipamento foi projectado para funcionar na qualidade do tratamento do ar

Composicao do ar atmosferico: 78%(N2) + 21%(O2) e ~1%(outros gases)
func / - / + / ^ / v / < / >
S1=set/S2/S3/S4/S5
0)set/^/v/star;pause/stop;off/bob=1/=0/temp;timer;sensor1;sensor2;sensor3;sensor4;piezo
0)Menu(principal) Ozono
1)temporizador{S4)S5)High/S6)S7)Low/S8)Scale[1/10]}
2)contador{S4)S5)High/S6)S7)Low/S8)Scale[1/10]}
3)contactor
4) sensor
5)bright{S4)S5)[1-10]}
6)calc
7)reset {button: 4)turn off/Say Goodbye, 5)reset, 6)pause, 7)sleep}
8)help
9)cycle{S4)S5)[1-9 10=n=infinito]}
10)info{S4-S8}

L= 24 L= 23 L= 22 L= 21 L= 20 L= 19
L= 18 mq7=1291 M8=1289 M9=1288 M131=1346 M135=1286
L= 17 mq7=1292 M8=1293 M9=1289 M131=1289 M135=1288
L= 16 mq7=1338 M8=1289 M9=1287 M131=1290 M135=1287
L= 15 mq=1287 M8=1285 M9=1285 M131=1285 M135=1287
L= 14 mq7=1281 M8=1284 M9=1283 M131=1280 M135=1284
L= 13 mq7=1279 M8=1280 M9=1282 M131=1279 M135=1280
L= 12 mq7=1327 M8=1279 M9=1278 M131=1278 M135=1278
L= 11 mq=1281 M8=1278 M9=1280 M131=1279 M135=1279
L= 10 mq7=1277 M8=1279 M9=1277 M131=1278 M135=1280
L= 9 mq7=1279 M8=1278 M9=1283 M131=1279 M135=1277
L= 8 mq7=1278 M8=1277 M9=1277 M131=1278 M135=1279
L= 7 mq7=1273 M8=1278 M9=1277 M131=1277 M135=1276
L= 6 mq7=1273 M8=1273 M9=1274 M131=1272 M135=1330
L= 5 mq7=1271 M8=1273 M9=1272 M131=1271 M135=1272
L= 4 mq7=1269 M8=1271 M9=1270 M131=1270 M135=1270
L= 3 mq7=1268 M8=1268 M9=1267 M131=1271 M135=1266
L= 2 mq7=1267 M8=1264 M9=1264 M131=1266 M135=1264
L= 1 mq7=1266 M8=1263 M9=1263 M131=1263 M135=1264
9-CYCLE=4
H= 5 0 mq7=1331 mq8=1331 mq9=1333 mq131=1333 mq135=1329
H= 459 mq2=1330 mq3=1331 mq4=1330 mq5=1329 mq6=1330
H= 458 mq2=60 mq3=59 mq4=60 mq5=58 mq6=59
H= 457 mq2=56 mq3=57 mq4=61 mq5=60 mq6=59
H= 456 mq2=57 mq3=58 mq4=58 mq5=59 mq6=59
H= 455 mq2=58 mq3=60 mq4=57 mq5=59 mq6=59
H= 454 mq2=59 mq3=59 mq4=59 mq5=60 mq6=58
H= 453 mq2=60 mq3=61 mq4=61 mq5=58 mq6=58
H= 452 mq2=60 mq3=59 mq4=59 mq5=58 mq6=61
H= 451 mq2=59 mq3=58 mq4=55 mq5=60 mq6=58
H= 450 mq2=59 mq3=59 mq4=59 mq5=59 mq6=58
H= 449 mq2=57 mq3=58 mq4=58 mq5=60 mq6=56
H= 448 mq2=57 mq3=59 mq4=61 mq5=59 mq6=58
H= 447 mq2=58 mq3=59 mq4=58 mq5=59 mq6=60
H= 446 mq2=58 mq3=54 mq4=57 mq5=58 mq6=60
H= 445 mq2=58 mq3=57 mq4=52 mq5=56 mq6=59
H= 444 mq2=60 mq3=59 mq4=58 mq5=60 mq6=59
H= 443 mq2=58 mq3=60 mq4=60 mq5=59 mq6=60
H= 442 mq2=61 mq3=52 mq4=59 mq5=59 mq6=60
H= 441 mq2=56 mq3=60 mq4=58 mq5=61 mq6=60
H= 440 mq2=59 mq3=59 mq4=59 mq5=59 mq6=59
H= 439 mq2=59 mq3=59 mq4=60 mq5=58 mq6=59
H= 438 mq2=58 mq3=61 mq4=59 mq5=58 mq6=58
H= 437 mq2=59 mq3=59 mq4=60 mq5=58 mq6=60
H= 436 mq2=61 mq3=59 mq4=59 mq5=59 mq6=59
H= 435 mq2=58 mq3=54 mq4=58 mq5=60 mq6=55
H= 434 mq2=59 mq3=60 mq4=58 mq5=58 mq6=61
H= 433 mq2=59 mq3=59 mq4=59 mq5=58 mq6=64
H= 432 mq2=56 mq3=58 mq4=58 mq5=58 mq6=57
H= 431 mq2=62 mq3=59 mq4=61 mq5=57 mq6=58
H= 430 mq2=62 mq3=58 mq4=59 mq5=59 mq6=58

stm32f-ozono-sensor.ino (27.2 KB)

usando a placa : “Arduino / Genuino Mega”;

informação no editor do programa “Arduino Genuino 1.8”
Placa: “Arduino ATmega / Genuino Mega or Mega”
SRam 8kB ; EEPRom 4kB ; Flash 256kB
Analog (AI) 16ch ; Digital (DI/DO) 54 ; PWM 15ch
CPU Speed(MHz): 16Mhz
Arduino as ISP

Placa: “ATmega328P”
SRam 2kB ; EEPRom 1kB ; Flash 32kB
Analog (AI) 6ch ; Digital (DI/DO) 14 ; PWM 6ch
CPU Speed(MHz): 16Mhz
Arduino as ISP

ino_Mega2560-LedKey-gazSensor.ino (34 KB)

Encontrei este código em c que faz a leitura do arduino para a com(usb)

o ideal será obter em html

// c++ - Serial Comm using WriteFile/ReadFile - Stack Overflow

#include <stdio.h> // https://stackoverflow.com/questions/6036716/serial-comm-using-writefile-readfile?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
#include <conio.h>
#include <string.h>
// https://stackoverflow.com/questions/6036716/serial-comm-using-writefile-readfile?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

void system_error(char *name) {
// Retrieve, format, and print out a message from the last error.  The 
// `name' that's passed should be in the form of a present tense noun 
// (phrase) such as "opening file".

   char *ptr = NULL;
   FormatMessage(
       FORMAT_MESSAGE_ALLOCATE_BUFFER |
       FORMAT_MESSAGE_FROM_SYSTEM,
       0,
       GetLastError(),
       0,
       (char *)&ptr,
       1024,
       NULL);

   fprintf(stderr, "\nError %s: %s\n", name, ptr);
   LocalFree(ptr);
}

int main(int argc, char **argv) {

   int ch;
   char buffer[1];
   HANDLE file;
   COMMTIMEOUTS timeouts;
   DWORD read, written;
   DCB port;
   HANDLE keyboard = GetStdHandle(STD_INPUT_HANDLE);
   HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE);
   DWORD mode;
   char port_name[128] = "\\\\.\\COM7";
   char init[] = ""; // e.g., "ATZ" to completely reset a modem.

   if ( argc > 2 )
       sprintf(port_name, "\\\\.\\COM%c", argv[1][0]);

   // open the comm port.
   file = CreateFile(port_name,
       GENERIC_READ | GENERIC_WRITE,
       0, 
       NULL, 
       OPEN_EXISTING,
       0,
       NULL);

   if ( INVALID_HANDLE_VALUE == file) {
       system_error("opening file");
       return 1;
   }

   // get the current DCB, and adjust a few bits to our liking.
   memset(&port, 0, sizeof(port));
   port.DCBlength = sizeof(port);
   if ( !GetCommState(file, &port))
       system_error("getting comm state");
   if (!BuildCommDCB("baud=9600 parity=n data=8 stop=1", &port))
       system_error("building comm DCB");
   if (!SetCommState(file, &port))
       system_error("adjusting port settings");

   // set short timeouts on the comm port.
   timeouts.ReadIntervalTimeout = 1;
   timeouts.ReadTotalTimeoutMultiplier = 1;
   timeouts.ReadTotalTimeoutConstant = 1;
   timeouts.WriteTotalTimeoutMultiplier = 1;
   timeouts.WriteTotalTimeoutConstant = 1;
   if (!SetCommTimeouts(file, &timeouts))
       system_error("setting port time-outs.");

   // set keyboard to raw reading.
   if (!GetConsoleMode(keyboard, &mode))
       system_error("getting keyboard mode");
   mode &= ~ ENABLE_PROCESSED_INPUT;
   if (!SetConsoleMode(keyboard, mode))
       system_error("setting keyboard mode");

   if (!EscapeCommFunction(file, CLRDTR))
       system_error("clearing DTR");
   Sleep(200);
   if (!EscapeCommFunction(file, SETDTR))
       system_error("setting DTR");

   if ( !WriteFile(file, init, sizeof(init), &written, NULL))
       system_error("writing data to port");

   if (written != sizeof(init))
       system_error("not all data written to port");

   // basic terminal loop:
   do {
       // check for data on port and display it on screen.
       ReadFile(file, buffer, sizeof(buffer), &read, NULL);
       if ( read )
           WriteFile(screen, buffer, read, &written, NULL);

       // check for keypress, and write any out the port.
       if ( kbhit() ) {
           ch = getch();
           WriteFile(file, &ch, 1, &written, NULL);
       }
   // until user hits ctrl-backspace.
   } while ( ch != 127);

   // close up and go home.
   CloseHandle(keyboard);
   CloseHandle(file);
   return 0;
}

index.html

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title> Node Arduino </title>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"> </script>
 </head>
 <body>
   <h1> Node Arduino </h1>
   <div id="graphs"></div>
   <canvas id="myChart" width="90" height="90"> </canvas> </div> -->
   <script src="socket.io/socket.io.js" charset="utf-8"> </script>

   <script>
    const socket = io();
    const ch9=String.fromCharCode(9); // tab s1.indexOf("\t"); s1.indexOf(9); s1.String.fromCharCode(9);
    var bl=true, l0=0, l1=0, i=0, sl=0, s0="", s1=" ", s_="", sn="";
    var x0=[], y0=[], x1=[], y1=[], x2=[], y2=[], x10=[], y10=[];
    var v_1=0,v_2=0,v_3=0,v_4=0,v_5=0,v_6=0,v_7=0,v_8=0,v_9=0,v_10=0;
    var cnte = 0; // let counter = 0;
    socket.on('arduino:data', function (data) {
        console.log(data);
      s1=data.value;
      for (i=0; i<s1.length; i++) { // alert(s1[i]+"="+s1.charCodeAt(i));
       if (s1.charCodeAt(i) != 13) { sn+=s1[i]; }
       if (s1.charCodeAt(i)==13) { bl=true; sn=sn+ch9; s_=sn; // alert(sn); está retardado
        l1=sn.length; s0=sn+"time#CYCLE)mq/";
        if ((s0.indexOf("CYCLE")<l1)||(s0.indexOf(")")<l1)||(s0.indexOf("mq")<l1)||
            (s0.indexOf("#")<l1)||(s0.indexOf("time")<l1)) { bl=false; // alert(sn);
         } else { ; //alert(sn+"<"+l1+">");
        }
        if (bl==true) { // alert("{("+sn+")}");
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1);
         if ((s0.charCodeAt(1)>=48) & (s0.charCodeAt(1)<58)) { sn=sn.substring(l1+1,sn.length); // alert(s0[1]+" "+s0.charCodeAt(1));
          } else { // &&)e ||)ou 58): 65)A   para L= ou H=
            l1=sn.length; s0=sn+"L=H=";
            if ((s0.indexOf("L=")<l1)||(s0.indexOf("H=")<l1)) {
             l1=sn.indexOf(ch9); sn=sn.substring(l1+1,sn.length);
             l1=sn.indexOf(ch9); sn=sn.substring(l1+1,sn.length);
             l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           } else { s0=sn; // alert(sn);
            }
          }
          document.getElementById('h_1').innerHTML=s0; v_1=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_2').innerHTML=s0; v_2=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_3').innerHTML=s0; v_3=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_4').innerHTML=s0; v_4=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_5').innerHTML=s0; v_5=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_6').innerHTML=s0; v_6=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_7').innerHTML=s0; v_7=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           document.getElementById('h_8').innerHTML=s0; v_8=Number(s0);//  if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           document.getElementById('h_9').innerHTML=s0; v_9=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1);
          document.getElementById('h_10').innerHTML=s0; v_10=Number(s0);
          // if (bl==0) {document.getElementById('capturFunc').innerHTML=s_;}
        }
        if (bl==true) {
        x1.push(cnte); y1.push(v_1);
        x2.push(cnte); y2.push(v_2);
        x10.push(cnte); y10.push(v_10);
        Plotly.newPlot(ctx, [ {x:x1, y:y1, mode:'line'},
          {x:x2, y:y2, mode:'line'},
          {x:x10, y:y10, mode:'line'} ] );
         } sn="";
      }
     }
     document.getElementById('txtArea').value += data.value;
   } );
     var ctx = document.getElementById("graphs");
     var myPlot = new Plotly.plot(ctx, [
       {x:x1, y:y1, mode:'line'},
       {x:x2, y:y2, mode:'line'},
       {x:x10, y:y10, mode:'line'}],
       {xaxis: {range: [-4, 70]}, // 40
        yaxis: {range: [-4, 10]} // 1000
      });

 </script>

 </body>
</html>

resultado na com7 :

keypressed … ex. time timer: 10s 9s 8s 7s 6s 5s 4s 3s 2s 1s

Good Air

Este equipamento foi projectado para funcionar na qualidade do tratamento do ar

time mq2 mq3 mq4 mq5 mq6 mq7 mq8 mq9 mq131 mq135

Visualização no browser Chrome, atraves do editor Atom com a instalação do node.js

Atom (editor de texto)

menu) /Atom/Help/Welcome guide
Pakages\platformio-ide-terminal
consola_terminal)npm init --yes

criar folder (directorio):server
file:index.js

package.json)
substituir “test”: “echo “Error: no test specified” && exit 1”
por: “start”: “node server/index.js”

consola_terminal)npm start
consola_terminal)npm install serialport

index.js

const express = require('express');
const socketIo = require('socket.io');
const http = require('http');

const app = express();
const server = http.createServer(app);
const io = socketIo.listen(server);

io.on('connection', function (socket) {
console.log('a new socket connected'); });

app.get('/', (req, res, next) => {
res.sendFile(__dirname + '/index.html'); });

const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const parser = new Readline();

const mySerial = new SerialPort('COM7', { // /dev/tty-usbserial1
baudRate: 115200 }); // 115200 ino_Mega2560-LedKey-gazSensor.ino : 9600

mySerial.on('open', function () {
console.log('Opened Serial Port'); });

mySerial.on('data', function(data) { // visualizar os dados na com7
console.log(data.toString());
io.emit('arduino:data', { value: data.toString()}) });

mySerial.on('err', function(err) {
console.log(err.message) });

server.listen(5000, () => {
console.log('server on port ', 5000) });

npm install express
npm i socket.io
npm start

broswer Chrome: localhost:5000

create new file : index.html in directory server

Nodejs, Arduino, Chart.js y SerialPort | Conexión Serial

release: 0
index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title> Node Arduino </title>
</head>
<body>
 <h1> Node Arduino </h1>
 <canvas id="myCanvas"> </canvas>

 <script src=" https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"
  charset="utf-8"> </script>

 <script src="socket.io/socket.io.js" charset="utf-8"> </script>

 <script>
  const socket = io();
   let counter = 0;
   socket.on('arduino:data', function (dataSerial) {
   myChart.data.labels.push(counter);
   myChart.data.datasets.forEach(dataset => {
    dataset.data.push(dataSerial.value);
        form.eq1.value="value:";
   });
   counter++;
   myChart.update();
  });

var ctx = document.getElementById("myCanvas").getContext('2d');
var myChart = new Chart(ctx, {
  type: 'line',
  data: {
      labels: ["Serial"],
      datasets: [{
          label: 'Serial',
          backgroundColor: 'rgb(52, 73, 94)',
          borderColor: 'rgb(41, 128, 185)', // borderWidth: 1
          data: []
      }]
  },
  options: { // scales: { yAxes: [{ ticks: { beginAtZero:true } }]
      } });
</script>

<form name="form1"> <font face="Trebuchet MS"> <A NAME="string"> </A> </font>
  <textarea rows="1" cols="49" type=text id="eq1"> </textarea>
    <!-- textArea = <textarea rows="5" cols="40" type=text id="eq1"> </textarea> -->
  </form>
</body>
</html>

release: 1
index.html

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title> Node Arduino </title>
 </head>
 <body>
   <h1> Node Arduino </h1>
   <canvas id="myCanvas"> </canvas>

   <script src=" https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"
    charset="utf-8"> </script>

   <script src="socket.io/socket.io.js" charset="utf-8"> </script>

   <script>
    const socket = io();
    const ch9=String.fromCharCode(9);
    var bl=1, l0=0, l1=0, i=0, sl=0, s0="", s1=" ", s_="", sn="";
     socket.on('arduino:data', function (data) {
        console.log(data);
      // document.getElementById('h_1').innerHTML = data.value; // 'sensores' ou "sensores"
      s1=data.value;
      for (i=0; i<s1.length; i++) {
       if (s1.charCodeAt(i) != 13) { sn+=s1[i]; }
       if (s1.charCodeAt(i) == 13) { bl=0; sn=sn+ch9; s0=sn; s_=sn; // está retardado
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_1').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_2').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_3').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_4').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_5').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_6').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_7').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_8').innerHTML=s0; //  if(s0!=""){bl=1}else bl=0;
        l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
         document.getElementById('h_9').innerHTML=s0; // if(s0!=""){bl=1}else bl=0;
       l1=sn.indexOf(ch9); s0=sn.substring(0,l1);
        document.getElementById('h_10').innerHTML=s0;
       sn=""; }
      }
      document.getElementById('txtArea').value += data.value;
     } );

     let counter = 0;
     socket.on('arduino:data', function (dataSerial) {
      myChart.data.labels.push(counter);
      myChart.data.datasets.forEach(dataset => {
       dataset.data.push(dataSerial.value); });
      counter++;
      myChart.update();
     } );

 var ctx = document.getElementById("myCanvas").getContext('2d');
 var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: ["Serial"],
        datasets: [{
            label: 'Serial',
            backgroundColor: 'rgb(52, 73, 94)',
            borderColor: 'rgb(41, 128, 185)', // borderWidth: 1
            data: []
        }]
    },
    options: { // scales: { yAxes: [{ ticks: { beginAtZero:true } }]
        } });
  </script>
<!--  <h1 id="sensores"> </h1> -->

<div align="center">
<TABLE BORDER=10 WIDTH=580 CELLPADING=0 CELLSPACING=4 id="table1">
 <TR><TD bordercolorlight="#0000FF" bordercolordark="#0080FF"> <!-- blue //-->
  <font face="Trebuchet MS"> </font>
<p align="center" style="margin-top: 0; margin-bottom: 0">
 <font face="Trebuchet MS" size="5">Read data value from arduino to html</font>
 <div align="left"> <font face="Trebuchet MS" size="1">   </font> </div>
 <CENTER>
  <form name="form1"><font face="Trebuchet MS"><A NAME="kvatoamp"></A></font>
   <TABLE BORDER BGCOLOR="#FFFFF2" id="table1">
    <CAPTION><font face="Trebuchet MS" size="4">Read Data Sensors</font></CAPTION>
    <tr><td>sensor 1</td><td>sensor 2</td><td>sensor 3</td><td>sensor 4</td><td>sensor 5</td>
      <td>sensor 6</td><td>sensor 7</td><td>sensor 8</td><td>sensor 9</td><td>sensor 10</td></tr>
     <tr><td id="h_1"></td><td id="h_2"></td><td id="h_3"></td><td id="h_4"></td><td id="h_5"></td>
      <td id="h_6"></td><td id="h_7"></td><td id="h_8"></td><td id="h_9"></td><td id="h_10"></td></tr>
   </table>
    <h3 id="capturFunc"> </h3>
    <textarea rows="10" cols="99" type=text id="txtArea"> </textarea>
  </form> </CENTER></TD></TR></table></div>
 </body>
</html>

npm start

ino_Mega2560-LedKey-gazSensor.ino (34.7 KB)

ino_Mega2560-LedKey-gazSensor.ino (34.7 KB)

Arduino/ARM/ESP <> communication serial <> node.js <> java <> chrome

index.html

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title> Node Arduino </title>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"> </script>
 </head>
 <body>
   <h1> Arduino/ARM/ESP <> communication serial <> node.js <> java <> chrome </h1>
   <div id="graphs"></div>
   <script src="socket.io/socket.io.js" charset="utf-8"> </script>
   <script>
    const socket = io();
    const ch9=String.fromCharCode(9); // tab s1.indexOf("\t"); s1.indexOf(9); s1.String.fromCharCode(9);
    var bl=true, l0=0, l1=0, i=0, sl=0, s0="", s1=" ", s_="", sn="";
    var x0=[],y0=[],x1=[],y1=[],x2=[],y2=[],x3=[],y3=[],x4=[],y4=[],x5=[],y5=[];
    var x6=[],y6=[],x7=[],y7=[],x8=[],y8=[],x9=[],y9=[],x10=[],y10=[];
    var v_1=0,v_2=0,v_3=0,v_4=0,v_5=0,v_6=0,v_7=0,v_8=0,v_9=0,v_10=0;
    var cnte = 0; // let counter = 0;
    socket.on('arduino:data', function (data) {
        console.log(data);
      s1=data.value;
      for (i=0; i<s1.length; i++) { // alert(s1[i]+"="+s1.charCodeAt(i));
       if (s1.charCodeAt(i) != 13) { sn+=s1[i]; }
       if (s1.charCodeAt(i)==13) { bl=true; sn=sn+ch9; s_=sn; // alert(sn); está retardado
        l1=sn.length; s0=sn+"time#CYCLE)func/S1=pinmq";
        if ((s0.indexOf("time")<l1)||(s0.indexOf("#")<l1)||(s0.indexOf("CYCLE")<l1)||
            (s0.indexOf(")")<l1)||(s0.indexOf("func")<l1)||(s0.indexOf("/")<l1)||
            (s0.indexOf("S1=")<l1)||(s0.indexOf("pin")<l1)||(s0.indexOf("mq")<l1))
           { bl=false; // alert(sn);
           } else { ; } //alert(sn+"<"+l1+">");
        if (bl==true) { // alert("{("+sn+")}");
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1);
         if ((s0.charCodeAt(1)>=48) & (s0.charCodeAt(1)<58)) { sn=sn.substring(l1+1,sn.length); // alert(s0[1]+" "+s0.charCodeAt(1));
          } else { // &&)e ||)ou 58): 65)A   para L= ou H=
            l1=sn.length; s0=sn+"L=H=";
            if ((s0.indexOf("L=")<l1)||(s0.indexOf("H=")<l1)) {
             l1=sn.indexOf(ch9); sn=sn.substring(l1+1,sn.length);
             l1=sn.indexOf(ch9); sn=sn.substring(l1+1,sn.length);
             l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           } else { s0=sn; // alert(sn);
            }
          } // alert(sn);
          document.getElementById('h_1').innerHTML=s0; v_1=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_2').innerHTML=s0; v_2=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_3').innerHTML=s0; v_3=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_4').innerHTML=s0; v_4=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_5').innerHTML=s0; v_5=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_6').innerHTML=s0; v_6=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
          document.getElementById('h_7').innerHTML=s0; v_7=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           document.getElementById('h_8').innerHTML=s0; v_8=Number(s0);//  if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1); sn=sn.substring(l1+1,sn.length);
           document.getElementById('h_9').innerHTML=s0; v_9=Number(s0);// if(s0!=""){bl=1}else bl=0;
         l1=sn.indexOf(ch9); s0=sn.substring(0,l1);
          document.getElementById('h_10').innerHTML=s0; v_10=Number(s0);
        }
        if (bl==true) {
        x1.push(cnte); y1.push(v_1); x2.push(cnte); y2.push(v_2); x3.push(cnte); y3.push(v_3);
        x4.push(cnte); y4.push(v_4); x5.push(cnte); y5.push(v_5); x6.push(cnte); y6.push(v_6);
        x7.push(cnte); y7.push(v_7); x8.push(cnte); y8.push(v_8); x9.push(cnte); y9.push(v_9);
        x10.push(cnte); y10.push(v_10);
        Plotly.newPlot(ctx, [
          {x:x10, y:y10, mode:'line',name:'mq135'},{x:x9, y:y9, mode:'line',name:'mq131'},
          {x:x8, y:y8, mode:'line',name:'mq9'},{x:x7, y:y7, mode:'line',name:'mq8'},
          {x:x6, y:y6, mode:'line',name:'mq7'},{x:x5, y:y5, mode:'line',name:'mq6'},
          {x:x4, y:y4, mode:'line',name:'mq5'},{x:x3, y:y3, mode:'line',name:'mq4'},
          {x:x2, y:y2, mode:'line',name:'mq3'},{x:x1, y:y1, mode:'line',name:'mq2'}
          ] );

         cnte++;
         } sn="";
      }
     }
     document.getElementById('txtArea').value += data.value;
   } ); // socket
     var vl=[1, 2, 3, 4, 5, 6, 7];
     var v1=[12, 19, 3, 17, 6, 3, 7];
     var v2=[10, 9, 30, 27, 10, 13, 17];

  /*   var n=19, k=10; // scatter/line
     for (var i = 0; i < n; i++) {
       var t = i/(n-1)*2-1;
       x1[i]= t*Math.PI*k;
       y1[i]= Math.sin(t*Math.PI)*k;
       x2[i]= t*Math.PI*k;
       y2[i]= Math.cos(t*Math.PI)*k;
       x3[i]= Math.sin(t*Math.PI)*k;
       y3[i]= Math.cos(t * Math.PI)*k;
     } /* */
     var ctx = document.getElementById("graphs");
     var myPlot = new Plotly.plot(ctx,
      [{x:x1,y:y1,mode:'line',name:'mq1'},{x:x2,y:y2,mode:'line',name:'mq2'},
       {x:x3,y:y3,mode:'line',name:'mq3'},{x:x4,y:y4,mode:'line',name:'mq4'},
       {x:x5,y:y5,mode:'line',name:'mq5'},{x:x6,y:y6,mode:'line',name:'mq6'},
       {x:x7,y:y7,mode:'line',name:'mq7'},{x:x8,y:y8,mode:'line',name:'mq8'},
       {x:x9,y:y9,mode:'line',name:'mq9'},{x:x10,y:y10,mode:'line',name:'mq10'}],
       {xaxis: {range: [-10, 70]},
        yaxis: {range: [-10, 10]}
      } );
  </script>
<!--  <h1 id="sensores"> </h1> -->
<div align="center">
<TABLE BORDER=10 WIDTH=580 CELLPADING=0 CELLSPACING=4 id="table1">
 <TR><TD bordercolorlight="#0000FF" bordercolordark="#0080FF"> <!-- blue //-->
  <font face="Trebuchet MS"> </font>
<p align="center" style="margin-top: 0; margin-bottom: 0">
 <font face="Trebuchet MS" size="5">Read data value from arduino or mcu to html</font>
 <div align="left"> <font face="Trebuchet MS" size="1">   </font> </div>
 <CENTER>
  <form name="form1"><font face="Trebuchet MS"><A NAME="kvatoamp"></A></font>
   <TABLE BORDER BGCOLOR="#FFFFF2" id="table1">
    <CAPTION><font face="Trebuchet MS" size="3">Read Data Sensors</font></CAPTION>
    <tr><td>mq2</td><td>mq3</td><td>mq4</td><td>mq5</td><td>mq6</td>
      <td>mq7</td><td>mq8</td><td>mq9</td><td>mq131</td><td>mq135</td></tr>
    <tr><td>sensor 1</td><td>sensor 2</td><td>sensor 3</td><td>sensor 4</td><td>sensor 5</td>
      <td>sensor 6</td><td>sensor 7</td><td>sensor 8</td><td>sensor 9</td><td>sensor 10</td></tr>
     <tr><td id="h_1"></td><td id="h_2"></td><td id="h_3"></td><td id="h_4"></td><td id="h_5"></td>
      <td id="h_6"></td><td id="h_7"></td><td id="h_8"></td><td id="h_9"></td><td id="h_10"></td></tr>
   </table>
    <h3 id="capturFunc"> </h3>
    <textarea rows="10" cols="113" type=text id="txtArea"> </textarea>
  </form> </CENTER></TD></TR></table></div>
 </body>
</html>

Os ficheiros, mais actuais:
index.js.c
index.html.2018/07/24.c

devem renomear para:
index.js
index.html

ino_Mega2560-LedKey-gazSensor.ino (34.7 KB)

index.js.c (1.02 KB)

index.html.c (10.1 KB)

index.html.20180722.c (15.6 KB)

index 20180724.html.c (16.8 KB)

index 20180729.html.c (22.7 KB)

ino_Mega2560-LedKey-gazSensor.ino (34.7 KB)