Início

porRicardo Jorge

PROGMEM e os microcontroladores AVR

Neste artigo sobre PROGMEM e os microcontroladores AVR, será abordado o uso de PROGMEM, que é um grande aliado quando necessitamos melhor utilizar a memória RAM de nossos microcontroladores usados em diversos projetos recreativos, IoT, Indústria 4.0 e muito mais.

É importante lembrar que arduino é uma das mais conhecidas e utilizadas plataformas de desenvolvimento / prototipagem de hardware, fazendo dele um excelente representante dos microcontroladores AVR.

Existem outros artigos em nosso Blog falando sobre arduino e alguns de seus usos :

O que é PROGMEN?

A palavra-chave PROGMEM é um modificador de variável, que informa ao compilador para “manter esta variável na memória flash”, ao invés de carregá-la na SRAM.

O PROGMEM é útil para placas arduino que têm SRAM limitada, mas muitos usuários do arduino e até mesmo alguns desenvolvedores de bibliotecas não o usam.

Com certeza, se você estiver desenvolvendo algum sistema IoT ou sensores mais complexos com display LCD, mais cedo ou mais tarde, notará o uso da SRAM em seu projeto.

E logo fará a seguinte pergunta: Porque um sketch de 100 linhas usou grande parte dos preciosos 2.048 bytes de SRAM do arduino Uno?

Arquitetura Harvard versus Von Neumann

Antes de falarmos sobre o que é PROGMEM e o que ele faz, precisamos entender duas arquiteturas básicas no projeto de microprocessadores.

Primeiro precisamos entender que para um programa ser executado em seu computador pessoal (Mac, Windows ou Linux), ele precisará estar armazenado em algum tipo de mídia, como o disco rígido por exemplo.

E que antes que este programa entre em execução, ele será copiado do disco rígido para a memória RAM.

Após o programa ser carregado na memória RAM e entrar em execução, poderá declarar variáveis ​​e estruturas de dados que usarão ainda mais RAM.

Quando você termina de usar o programa, alguns dos dados talvez sejam salvos no disco rígido, mas toda a cópia do programa e de suas variáveis que estavam na RAM, serão liberadas e assim a memória ficará livre para o próximo programa a ser usado.

Considerando a arquitetura de um microprocessador de computador, essa abordagem é denominada de arquitetura de Von Neumann, onde o código e os dados existem no mesmo espaço de endereços na RAM.

A maioria das placas Arduíno usa microcontroladores baseados na arquitetura AVR.

Muitos AVRs têm quantidade limitada de RAM estática (SRAM), mas podem ter mais espaço disponível na memória Flash.

Por exemplo, o arduino Uno tem SRAM de apenas 2.048 bytes e 32.728 bytes de memória Flash.

O AVR é ​​um processador de arquitetura Harvard, amplamente utilizado para projetos de microcontroladores (MCU), em que a memória do programa é separada da memória de dados.

Para MCUs com arquitetura Hardvard, o programa é executado diretamente da memória de programa (memória Flash), mas todas as variáveis ​​e dados são carregados na SRAM.

Muitas das variáveis, como as mensagens a serem exibidas, não precisam ser carregadas na SRAM porque embora sejam definidas como uma variável do tipo string, o conteúdo desta string nunca mudará.

O problema é agravado pelo fato de que a maioria das linguagens de programação, C e C++, não foram projetadas para arquiteturas Harvard, mas sim, para arquitetura Von Neumann como seu computador pessoal, onde código e dados existem no mesmo espaço de endereço.

Através do PROGMEM você pode otimizar o uso da memória RAM em seus projetos.

Arquitetura Harvard pode significar coisas diferentes

O termo “arquitetura Harvard” pode significar coisas diferentes para diferentes processadores ou MCUs: tome os chips ARM como exemplo, eles têm arquitetura de “barramento” Harvard, o que significa que os acessos de código e dados podem acontecer ao mesmo tempo.

No entanto, o espaço de memória é unificado, o que significa que tanto a instrução quanto os dados compartilham o mesmo espaço de memória.

Isso é diferente da arquitetura de memória Harvard usada em MCU baseado em AVR ou outros MCUs de 8 bits, como 8051, Pic, etc, que têm espaços de memória separados para código e dados.

A arquitetura Harvard também pode ser usada para especificar designs de cache.

O cache de nível 1 em processadores ARM são normalmente Harvard, ou seja, cache de código e dados estão separados.

Armazenando dados na área de código

Isso significa que qualquer compilador para um processador de arquitetura Harvard, como o AVR, deve usar outros meios para operar com espaços de endereço separados.

O arduino usa uma variação do compilador GCC para compilar o código em códigos AVR.

O atributo PROGMEM que você vê no arduino veio do avr-libc, que faz parte do conjunto de ferramentas AVR.

A biblioteca avr-libc fornece uma macro simples denominada PROGMEM que é definida como um atributo para dizer ao compilador GCC para fazer algo especial sobre as variáveis ​​que têm o atributo PROGMEM.

A macro PROGMEM é definida no arquivo de cabeçalho do sistema e foi compilada junto com o arduino Core e, portanto, disponível para ser usada por todos os usuários do arduino.

Resumo

Em resumo, as macros e funções usadas para recuperar dados da Área de Código “consomem” código adicional para carregar os dados que estão nesta área.

Isso aumenta um pouco o tamanho do código na memória Flash e usa ciclos adicionais que aumentam um pouco o tempo de execução do programa.

De forma geral, considerando o pouco espaço de SRAM existente no Arduíno Uno (2kB SRAM) ou ATtiny85 (512 bytes SRAM), o benefício de usar PROGMEM freqüentemente supera o aumento no tempo de execução e o uso adicional da memória Flash.


Este artigo foi baseado nesta excelente postagem.


Image by Tiki Shabudin from Pixabay
porRicardo Jorge

História do Controlador Lógico Programável

Neste artigo sobre História do Controlador Lógico Programável – CLP, veremos a trajetória deste componente vital para toda indústria e fundamental para implantação da Indústria 4.0.

Um controlador lógico programável (PLC em inglês ou CLP em português) é um equipamento projetado para controlar, via um microcontrolador ou até mesmo um computador, os processos em um ambiente industrial.

Um CLP está sempre monitorando um conjunto específico de entradas e, em seguida, tomando decisões para alterar o que os dispositivos de saída farão. Neste artigo, daremos uma olhada na história do CLP.

Os CLPs são comumente usados ​​para monitorar motores ou máquinas e, são a base de um sistema de manutenção preditiva.

A manutenção preditiva permite que uma empresa de manufatura identifique possíveis falhas antes que causem grandes problemas ou resultem em um tempo de inatividade significativo.

Antes do controlador programável

Antes do CLP, a única maneira de controlar as máquinas era por meio do uso de relés.

Os relés funcionam utilizando uma bobina que, quando energizada, cria uma força magnética para colocar a chave na posição ON ( Ligado ) ou OFF ( Desligado ).

Quando o relé é desenergizado, a chave libera e retorna o dispositivo à sua posição padrão LIGADO ( NF ou NC ) ou DESLIGADO ( NA ou NO ).

Então, por exemplo, para controlar se um motor estará LIGADO ou DESLIGADO, basta conectar um relé entre a fonte de alimentação e o motor.

Assim seria possível controlar quando o motor está recebendo energia, energizando ou desenergizando o relé.

Este tipo de relé é conhecido como relé de potência ( chave contatora ou contator ).

Pode haver vários motores em uma fábrica que precisam ser controlados, então o que você faz? Você adiciona muitos relés para fazer o controle de energia.

Assim, as fábricas começaram a acumular gabinetes elétricos cheios de relés.

Mas espere, o que liga e desliga as bobinas dos relés de energia ? Normalmente são relés menores, também conhecidos como relés auxiliares.

Agora começou a ficar claro como era feito o controle antes dos CLPs e as vantagens no uso de um CLP na indústria.

A história do CLP

Em 1969, Dick Morley administrava um pequeno negócio em uma garagem e, por acaso, construiu o primeiro CLP.

Ele humildemente declara: “Estávamos construindo e não sabíamos que estávamos construindo”.

No início, Morley disse que as empresas automotivas queriam comprar o CLP por um preço cada vez menor.

Embora Morley estivesse cético quanto à viabilidade do negócio a longo prazo, um colega o convenceu a aceitar o negócio, já que o dinheiro real a ser ganho com o CLP seria no reparo e manutenção de sistemas depois de implementados.

Quatro anos depois, em 1973, Michael Greenberg projetou o primeiro CLP comercialmente bem-sucedido, que foi posteriormente desenvolvido pela Modicon para substituir a tecnologia baseada em relé para a General Motors e Landis.

Os CLPs usam lógica ladder e essencialmente trazem à vida relés físicos, temporizadores e conexões com fio.

Ao eliminar a necessidade de religamento e novo hardware para cada configuração lógica adicional, os CLPs aumentaram drasticamente a funcionalidade dos controles sem aumentar o espaço físico necessário para hardware e equipamentos adicionais.

No entanto, os CLPs originais tinham pouca capacidade de memória, não podiam lidar com entradas e saídas externas e precisavam de terminais proprietários para sua programação.

Na década de 1980, a tecnologia CLP havia feito grandes avanços.

Neste ponto, o software baseado em PC pode lidar com os requisitos de programação, a velocidade de processamento foi bastante aumentada e novos recursos estavam agora disponíveis.

Os CLPs continuaram a adicionar novos desenvolvimentos quase continuamente desde então.

Em 2001, a empresa de pesquisa de mercado ARC criou o termo controlador de automação programável ( Programmable Automation Controller – PAC em inglês) para descrever um CLP altamente avançado que incorpora software baseado em PC, interface homem-máquina (IHM ou HMI em inglês) e gerenciamento sofisticado de ativos.

À medida que essa tecnologia decolou, principalmente em organizações maiores, alguns especialistas previram a morte dos sistemas CLP antiquados.

No entanto, de acordo com a Frost & Sullivan, o mercado global de CLPs cresceu nos últimos anos.

À medida que as organizações de pequeno e médio porte buscam expandir seus mercados, os CLPs continuarão a desempenhar um papel crítico em ajudá-los a impulsionar esse crescimento.

O que um CLP faz?

As tarefas de um CLP mudaram significativamente desde seu advento em 1969.

Essencialmente, um CLP é um sistema de controle que é usado na fabricação e em outras aplicações industriais.

Seu trabalho é monitorar continuamente entradas específicas, executá-las por meio de um sistema de computador e, em seguida, gerar as saídas corretas para um processo específico.

Linhas de produção, máquinas industriais ou processos de fabricação são freqüentemente melhorados e mais eficientes com a ajuda de um CLP.

Esses sistemas são projetados para ajudar a alterar ou duplicar uma determinada operação ou processo de manufatura, ao mesmo tempo em que reúne e compartilha informações críticas para ajudar as empresas a tomarem decisões mais inteligentes.

A maioria dos sistemas CLP são modulares, o que significa que você pode personalizar os tipos de dispositivos de entrada, como sensores, bem como a forma como os dados são compartilhados no lado da saída para melhor se adequar ao seu negócio.


A norma IEC 6131-1

A norma IEC 6131-1 define as informações gerais dos controladores programáveis.

Está norma se aplica a qualquer produto que exerça função de um PLCs e os periféricos associados.

Dentro destes aspectos, a IEC 61131-3 define cinco linguagens de programação:

É comum em alguns ambientes de programação que atendem à IEC 61131-3, a presença de uma sexta linguagem de programação, conhecida como CFC (do inglês Continuous Function Chart) que não faz parte das definições da norma.

Conclusão

A tecnologia CLP tem uma longa história dentro das industrias, fornecendo uma ferramenta inovadora que tem ajudado as empresas a se tornarem mais eficientes no gerenciamento de seus equipamentos, processos e sistemas ao longo dos anos.

À medida que a tecnologia avançou, ferramentas complementares evoluíram, permitindo que as empresas expandissem o uso e as aplicações do CLP em toda a instalação.

Enquanto as empresas de pequeno e médio porte continuam a competir no mercado global, elas aumentarão o uso do CLPs e tecnologias relacionadas para crescer e prosperar no futuro.

Os CLPs atuais também podem ser considerados partes do ecossistema IoT e IIoT, podendo ser poderosos aliados na gestão do chão de fábrica.


Este artigo foi baseado no conteúdo de outros 2 artigos : artigo_1 e artigo_2


Artigos relacionados :

Indústria 4.0 aplicada na pequena indústria

Indústria 4.0 – Introdução

IoT – segurança e integridade dos dados


Image by Gerd Altmann from Pixabay

porRicardo Jorge

Indústria 4.0 aplicada na pequena indústria

Neste artigo sobre Indústria 4.0 aplicada na pequena indústria, será feita uma reflexão sobre como aplicar as metodologias e oportunidades da Indústria 4.0 nas pequenas empresas / indústrias brasileiras.

Para iniciar, é necessário definir o que seja uma pequena empresa.

Para o BNDES, a classificação é feita da seguinte forma :

CLASSIFICAÇÃORECEITA OPERACIONAL BRUTA ANUAL OU RENDA ANUAL
MicroempresaMenor ou igual a R$ 360 mil
Pequena empresaMaior que R$ 360 mil e menor ou igual a R$ 4,8 milhões
Média empresaMaior que R$ 4,8 milhões e menor ou igual a R$ 300 milhões
Grande empresaMaior que R$ 300 milhões
Fonte – BNDES

Outras referências sobre classificação dos pequenos negócios podem ser encontradas abaixo :

Como podemos observar, sequer a definição do que seja um pequeno negócio, empresa ou indústria, é facilmente encontrada na literatura e nos vários órgãos especializados sobre o tema.

De qualquer forma, todos sabemos que são as pequenas empresas que mais empregam trabalhadores.

Mesmo assim, poucas ações e opções de automação e modernização são ofertadas para este segmento.

Sempre que posso, participo de apresentações e debates sobre Indústria 4.0, IoT e IIoT.

Na maioria destas apresentações são mostradas fotos e até vídeos de chão de fábrica, que mais parecem um centro cirúrgico de tão organizadas e limpas que são, além de possuírem inúmeras telas para monitoração e robôs que transportam peças pelos vários estágios da linha de produção.

chão de fábrica é o local onde ficam os funcionários e as máquinas de uma indústria.

Sem dúvida, toda esta tecnologia é importante e desejável para Indústria 4.0, mas também é uma realidade um pouco distante para muitas das pequenas indústrias.

Na minha visão, o mercado tem várias e excelentes opções de IoT e IIoT para quem possa investir uma boa quantidade de recursos financeiros e também de tempo para implementação,

Já para os pequenos, a automação seria uma forma de melhorar a competitividade através da redução inicial de custos, mas de uma maneira bem gradual e que se possível, pudesse ser implementada nos equipamentos existentes.

Uma espécie de retrofit !

A pequena indústria não é vista e percebida de uma forma adequada, nas ações da Indústria 4.0

Recentemente fui contato por um cliente para desenvolver um software, ou melhor, um firmware para um CLP que pudesse ser amplamente utilizado na indústria para sistemas de ar comprimido.

Os objetivos, de certa forma, são ambiciosos :

  • Simplicidade na configuração e operação
  • Facilidade na obtenção e interpretação dos dados sobre a operação do CLP
  • Acesso remoto, utilizando Modbus RTU na primeira versão deste produto
    • Este acesso poderá ser interno a empresa e / ou compartilhado com a Assistência Técnica
  • Capacidade de histórico para determinar melhorias no ambiente produtivo
    • Possível redução no consumo de energia
    • Previsibilidade nos ciclos de manutenção preventiva
    • Utilização dos históricos na manutenção corretiva

Ações tais como conectar uma IHM touch a um CLP, podem trazer mais custo do que valor para a solução

Principalmente para a pequena indústria, é preciso agregar o máximo de valor na solução a ser ofertada, permitindo que este valor seja revertido em reinvestimento e conhecimento do ambiente produtivo.

Ações que apenas alteram a forma de interação do Operador com a máquina, não costumam agregar o valor necessário e desejado pelo negócio.

Um exemplo seria a substituição de um processo de partida Estrela-Triângulo por um Soft Starter ou até mesmo passar a utilizar um Inversor de Frequência.

O investimento em uma modificação deste tipo poderá refletir em economia, caso seja feita uma análise do comportamento do motor naquele equipamento.

Perguntas como :

  • Quantas vezes o motor parte por dia / hora ?
  • Por quanto tempo o motor fica ligado após cada partida ?
  • Por quanto tempo o motor fica em carga ?
  • Existe algum motor com comportamento muito diferente dos demais ?
    • É possível usar os resultados dos demais motores como linha de base ?
  • Existem problemas na minha rede elétrica interna ?
    • Meu Fator de Potência ( FP ) está correto / preciso corrigir ?

Com estas respostas, ou pelo menos parte delas, fica muito mais fácil e seguro tomar uma decisão de investimento.

Então, ao invés de instalarmos apenas uma interface bonita e talvez amigável, precisamos disponibilizar respostas para a empresa definir suas estratégias.

Permitir a coleta centralizada dos dados dos vários CLPs instalados no chão de fábrica, ao invés de forçar o Operador a ir até onde cada equipamento esteja, gera melhoria na qualidade e na segurança da operação.

Entretanto, caso seja necessário, é possível instalar uma IHM touch neste CLP.

Embora o projeto ainda esteja em fase de testes, vários pontos abordados aqui já estão operacionais.


E você que administra ou trabalha na indústria, como tem conduzido suas iniciativas para a indústria 4.0 ?

Já buscou algum sistema para automação e modernização no mercado, mas não encontrou o que precisava ?

Deixe aqui seu comentário e contribua para a melhoria da Indústria 4.0 em nosso país.

Viabilizando de forma consistente a entrada da pequena e média indústria na era da Indústria 4.0, o país cria novas oportunidades de negócios e empregos em varias frentes.


Artigos relacionados :

Pare de chamar tudo de Inteligência Artificial

Indústria 4.0 e a Internet das Coisas Industrial – IIoT

IoT – segurança e integridade dos dados

Indústria 4.0 – Introdução


Image by Peter H from Pixabay

porRicardo Jorge

Backup – fazer reter recuperar e descartar

Neste artigo sobre Backup – fazer reter recuperar e descartar, serão abordados aspectos importantes sobre a metodologia e uso do backup.

Não serão abordadas ferramentas para backup e recuperação, porque existem inúmeras delas no mercado e cada usuário e empresa utiliza aquela que melhor se adéqua em preço e características para seu caso de uso.

Independente da ferramenta, a maioria dos usuários imagina que fazendo um backup, estará seguro para todo o sempre.

Os procedimento de backup não devem ter foco exclusivo em salvar os dados, mas em poder recuperá-los de forma rápida e segura quando for necessário.

Sim, o backup é importante, mas ter uma forma segura e consistente para recuperar os dados e as informações é muito diferente de apenas fazer uma recuperação dos dados salvos.

E porque isto acontece ?

Porque os dados armazenados nos backups, dependem de algum tipo de aplicativo para serem utilizados, além das mídias que suportam estes backups.

Casos como arquivos de texto, planilhas e apresentações, são mais fáceis de serem contornados, mas mesmo assim, estes arquivos podem depender de alguma versão ou configuração específica do aplicativo onde foram criados e que agora precisam existir para podermos ter acesso ao dado recém recuperado.

Quando falamos sobre recuperar dados de um Banco de Dados, a versão do Sistema de Gerenciamento de Banco de Dados ( SGBD ) é o primeiro ponto a ser avaliado antes de uma tentativa de recuperação. Para estes caso, é sempre melhor utilizar a própria ferramenta do SGBD, para fazer a salva e a recuperação dos dados.

Conforme a idade do backup, ou o tempo desde que esta cópia de segurança foi feita, pode ser que o aplicativo já tenha mudado de versão ou até que o computador já não tenha mais o sistema operacional onde aquele aplicativo possa ser executado.

Pode ser impossível recuperar as informações de um backup muito antigo !

O outro lado de um backup muito antigo é que os dados a serem recuperados causarão a perda dos dados atuais.

Esta perda não é só devida ao fato dos dados serem sobrescritos, mas também pelo fato dos dados antigos já não fazerem mais sentido para o momento.

Isto ocorre por mudanças de legislação, onde os dados tinham uma certa quantidade de informações e a estrutura atual exige mais / outros campos, ou ainda sistemas externos, como órgãos públicos, que necessitam receber os dados em um determinado formato, que é diferente daquele salvo no backup antigo.

É fundamental considerar as mídias onde os backups foram salvos !

Backups antigos também podem ter sido salvos em mídias que terão dificuldade ou até mesmo impossibilidade de acesso no futuro.

Lembrando que este “futuro”, pode ser nosso presente, caso o backup tenha sido feito a 5 ou mais anos atrás.

Estas dificuldades podem ser de vários níveis, como :

  • Formato dos dados, caso tenha sido usada alguma ferramenta proprietária para salvar os dados.
    • Podemos ficar encantados com alguma facilidade proporcionada por um produto e / ou fabricante específico, mas é importante entender se esta forma de armazenar os dados, permitirá sua recuperação no momento necessário.
  • A mídia física onde os dados foram salvos. Exemplos : CD, DVD, discos de 5 1/4 e 3 1/2, fitas para backup
    • No caso dos CDs e DVDs, muitos computadores já são vendidos sem estas unidades
    • Para as fitas, o tempo e a forma de armazenamento podem criar danos irreparáveis
  • Mesmo no caso dos USB, temos visto várias mudanças como : USB-2, USB-3 e mais recente USB-C
    • Isto serve tanto para os Pen Drive como para os HDs externos tão populares para backup.

Não basta ter uma única cópia dos dados

Quando levamos um backup a sério, devemos ter em mente que muitas situações podem ocorrer com os dados salvos e com a mídias onde salvamos estes dados.

Uma forma muito usada para preservar seus backups é a regra 3-2-1.

A regra 3-2-1 pode ajudar muito, pois afirma que deve haver pelo menos 3 cópias dos dados, armazenados em 2 tipos diferentes de mídia de armazenamento, e uma cópia deve ser mantida fora do local, em um local remoto.

Este local remoto pode variar muito, e devemos considerar a facilidade de acesso e o custo para hospedagem.

Com o aumento de invasões e sequestros de dados, ter cópias que não possam ser acessadas de maneira remota pelos hackers, pode ser uma boa opção para proteção adicional.

Para backup em fita, existem empresas especializadas em buscar e devolver as fitas utilizadas, sendo que as fitas ficam em local próprio para seu armazenamento, considerando temperatura, umidade e segurança física.

Hoje existe cada vez mais a facilidade de armazenamento em Nuvem, que deve ser considerado dependendo do volume dos dados e da frequência na qual se deseja acessar estes backups.

O armazenamento em Nuvem pode apresentar custos para envio e recuperação dos dados, assim como pelo tempo de retenção e também pelo volume armazenado.

Também vale lembrar que, para enviar e recuperar os dados que estão na Nuvem, você precisará de um acesso Internet que precisará estar disponível e ser confiável no momento crítico de uma recuperação.

No geral, o descarte do backup é uma decisão do negócio e uma política da empresa e do setor onde esta empresa atua

Quando pensamos em ambientes corporativos, deve existir algum procedimento que defina o momento do descarte dos dados armazenados nos vários backups e arquivamentos já feitos.

Existem inúmeras regras e legislações que precisam ser consideradas para um descarte.

No lado da retenção dos dados, uma opção é criar processos de archiving ( arquivamento ), para aliviar os backups com dados mais recentes.

Cada setor da indústria terá diferentes regras para arquivamento e política de retenção.

Isto definirá quais dados estarão em meios que sejam mais ou menos rápidos para consulta e recuperação.

Esta definição também tem relação com os custos para o armazenamento destes dados.

Backup não é algo que você só faz quando tem tempo !

Por fim, todos sabemos que um backup pode ser demorado e consumir tempo, mas é algo que deve ser tratado com seriedade.

Planejar com cuidado e prever os vários usos e necessidades para uma restauração, definirá boa parte de suas rotinas de backup e também como e onde armazenar seus dados.


Outros artigos :

Pare de chamar tudo de Inteligência Artificial

TensorFlow.js – introdução a machine learning


Image by Reimund Bertrams from Pixabay
porRicardo Jorge

TensorFlow.js – introdução a machine learning

Neste artigo sobre TensorFlow.js – introdução a machine learning, será feita uma introdução a este poderoso Framework para machine learning ( ou Aprendizado de máquina em português ).

Até bem recentemente, apenas começar a escrever sua primeira linha de código de aprendizado de máquina exigia um grande investimento inicial em tempo e dinheiro.

A boa notícia é que para iniciar o aprendizado de máquina, nunca foi tão fácil.

Na verdade, se você está lendo este artigo, significa que já tem as ferramentas de que precisa para mergulhar de cabeça.

Agora você pode aprender a estrutura de aprendizado de máquina TensorFlow diretamente no seu navegador, usando Javascript.

O TensorFlow.js foi lançado no Google I / O 2018.

Executar o aprendizado de máquina no navegador abre um mundo de casos de uso e é uma ótima oportunidade de usar Javascript para aprender sobre os conceitos e estruturas de aprendizado de máquina.

Dando os primeiros passos

Tudo que você precisa para executar o Tensorflow.js é seu navegador WEB.

É fácil perder de vista toda a conversa sobre transpiladores, empacotadores e demais ferramentas, mas tudo que você precisa é um navegador da WEB para executar TensorFlow.js.

O código que você desenvolve localmente é o mesmo código que você poderá enviar aos usuários para executar em seus navegadores.

Se você é novo no Javascript ou se já faz um tempo desde que escreveu qualquer código de front-end, algumas das mudanças recentes nas linguagens podem confundi-lo.

Um pouco da história do Javascript

À medida que nossas expectativas para os aplicativos da web aumentaram na última década, o ecossistema de front-end explodiu em complexidade.

A linguagem Javascript, em particular, amadureceu muito como linguagem de programação, adotando uma série de mudanças com visão de futuro para a linguagem, enquanto continua a oferecer suporte a uma das maiores bases de usuários de qualquer linguagem de programação.

Novas alterações nas especificações da linguagem Javascript são referenciadas com acrônimos como ES5, ES6, ES2015, E2016.

ES significa ECMAScript e Javascript é baseado neste padrão. 5 e 6 eram tradicionalmente usados ​​para se referir a versões do padrão, mas hoje em dia os anos são usados ​​para maior clareza.

Nem todos os navegadores WEB suportam da mesma forma as várias versões de ECMAScript e alguns problemas de compatibilidade podem ocorrer.

Por que os modelos de código em JavaScript

Muitos modelos foram implementados em Python porque Python é uma escolha popular entre cientistas de dados e tem o melhor suporte em termos de funções.

No entanto, a ampla adoção do aprendizado profundo ( deep learning ) em todos os tipos de aplicativos atraiu desenvolvedores de diferentes origens em linguagens de programação.

Além disso, as práticas de implementação de modelos tornaram-se mais bem compreendidas e amplamente disponíveis, permitindo que mais desenvolvedores construam seu próprio modelo que se adapta melhor a sua aplicação.

Felizmente, o TensorFlow foi projetado para oferecer suporte a diferentes vinculações de linguagem, em particular, programação Python, C, R, JavaScript e Java ™.

Como cada linguagem oferece seu próprio conjunto de vantagens, os desenvolvedores têm seus motivos para escolher a linguagem de programação.

Portanto, é importante permitir que os desenvolvedores permaneçam com seus ambientes de programação familiares, em vez de exigir que eles aprendam uma nova linguagem.

Por que APIs de alto nível ?

Codificar um modelo em uma API de alto nível permite que você seja mais produtivo, concentrando-se no design de alto nível e evitando as porcas e parafusos da implementação de baixo nível.

O código é muito mais curto e fácil de ler e manter.

O que são os Tensores ?

Os tensores são os principais blocos de construção do TensorFlow.

Eles são contêineres de dados n-dimensionais. Você pode pensar neles como arrays multidimensionais em linguagens como PHP, JavaScript e outras.

O que isso significa é que você pode usar tensores como valores escalares, vetoriais e matriciais, uma vez que são uma generalização deles.

Cada tensor contém as seguintes propriedades

  • rank – número de dimensões
  • shape – tamanho de cada dimensão
  • dtype – tipo de dados dos valores

Conclusão : TensorFlow.js é um Framework que permite inúmeras possibilidades e neste artigo foi feita apenas uma breve introdução, deixando links para materiais que podem ser consultados para uma experiência mais completa sobre este assunto.

É importante conhecer e saber que existem várias opções, quando o assunto é “aprendizado de máquina”.


Material consultado :

Hello World with Tensorflow.js

Coding a deep learning model using TensorFlow.js

Getting Started with TensorFlow.js

Introduction to Tensorflow.js and Machine Learning


Artigos relacionados :

Pare de chamar tudo de Inteligência Artificial

IoT o que fazer após a instalação?

IoT e os dados dos sensores e do CLP


Image by Gerd Altmann from Pixabay
porRicardo Jorge

Tarifa Branca – conheça antes de usar

Neste artigo sobre Tarifa Branca – conheça antes de usar, será apresentado um estudo feito ao longo de 9 meses utilizando a modalidade Tarifa Branca da ANEEL.

Após este período de testes, a unidade consumidora retornou para a tarifa convencional.

A modalidade Tarifa Branca é uma opção para o consumidor de energia elétrica que pode pagar por tarifas diferentes, conforme o horário do dia e o dia da semana, além de alguns feriados nacionais.

Observação : a Tarifa Branca não altera o consumo, mas cria faixas diferenciadas de cobrança pelo uso da energia.

O medidor de consumo

Para utilizar Tarifa Branca, é necessário que exista um medidor que possa registrar o consumo nos diferentes horários do dia e também nos fins de semana e feriados nacionais.

No caso deste estudo, o medidor instalado foi o da figura abaixo.

Medidor de energia
Medidor de energia – Imagem do site do fabricante

Este medidor tem a possibilidade de leitura remota por parte da empresa de Distribuição de energia e também tem 2 indicadores luminosos ( LEDs ) que piscam conforme 1 Wh ou 1 varh sejam registrados pela medição.

Infelizmente, no Brasil parece não existir interesse em divulgar estas opções que permitiriam ao consumidor acompanhar o consumo e assim, melhor utilizar a modalidade Tarifa Branca.

Com a Tarifa Branca, é necessário coletar 4 medições a cada leitura.

Isto dificulta o trabalho da Equipe de Campo da Distribuidora, porque o medidor pode não estar posicionado de forma a facilitar esta leitura e muitas das vezes, foi necessário permitir a entrada da Equipe, para coletarem as medições feitas.

Aqui fica um ponto de atenção para a ENEL, que deveria equipar os medidores com a possibilidade de leitura remota, sem a necessidade de intervenção manual da Equipe de Campo.

As tarifas e os horários de medição

Cada Estado e Empresa de Distribuição podem ter tarifas e horários diferentes e por isto é importante consultar o site ANEL ( Agência Nacional de Energia Elétrica ) para saber sobre as tarifas e horários de sua região.

No Estado de São Paulo e utilizando a Distribuidora ENEL, as faixas horárias, em maio de 2021, são :

Faixa – dias úteisDesignaçãoPercentual
16:30 – 17:30Intermediário+ 22,28%
17:30 – 20:30Ponta+ 88,01%
20:30 – 21:30Intermediário+ 22,28%
Faixas horárias e acréscimos sobre a tarifa convencional

Faixa – dias úteisDesignaçãoPercentual
00:00 – 16:30Fora de Ponta– 16,10%
21:30 – 23:59Fora de Ponta– 16,10%
Faixas horárias e descontos sobre a tarifa convencional

Para os fins de semana e feriados nacionais, a tarifa Fora de Ponta é utilizada durante as 24 horas do dia.

Um ponto importante é entender que nos dias úteis, a diferença entre Fora de Ponta e Ponta fica próxima a 104,11%, considerando o mês de maio de 2021.

Esta diferença considerou o desconto de 16,10% e o acréscimo de 88,01%, que são os valores extremos mostrados nas tabelas acima.

A Tarifa Branca também sofre os reajustes das bandeiras Tarifárias e isto é mais um fator a ser considerado pelo consumidor.

Abaixo, segue um relatório enviado pela Distribuidora ENEL, sobre o consumo nas 3 faixas tarifárias.

Tarifa Branca Exemplo
Tarifa Branca Exemplo de consumo

Mesmo com o consumo estando concentrado na faixa Fora de Ponta, a média de economia mensal ficou próxima de 7%.


Tarifa Branca – conheça antes de usar

Conclusão :

A real economia varia muito conforme o perfil do consumidor, podendo até mesmo elevar a tarifa mensal.

Será muito difícil conseguir uma redução acima de uns 8% no valor mensal, lembrando que o desconto máximo é de 16% para o Estado de São Paulo, na data desta publicação.

A observância dos horários é fundamental porque qualquer consumo nas faixas Ponta e Intermediário pode gerar uma grande diferença na tarifa mensal, apresentando um resultado muito pior para o consumidor.

Na minha opinião, a ideia da Tarifa Branca é interessante, mas sua implementação proporciona pouco ganho, algumas restrições e grande preocupação para o consumidor.

Para ser atraente, ou o desconto deveria ser maior, ou então os acréscimos na Ponta e Intermediário, serem menores.

É preciso entender e considerar que existe 5 horas de acréscimo nos dias úteis.

Alguns eletrodomésticos como a geladeira / freezer, operam dentro desta faixa das 5 horas de acréscimo, além da própria iluminação residencial, a TV e possivelmente o microondas para a hora do jantar.

Assim como já foi abordado em outro artigo, o uso da Tarifa Branca junto com Energia Solar ou Eólica, pode ser uma fonte adicional de economia para o consumidor, ou até mesmo uma primeira ação para economizar, uma vez que a implantação desta modalidade tarifária tem custo zero para o consumidor.

Assuntos relacionados :

Conta de luz energia solar e planejamento

Energia eólica ou solar em sua casa?


Image by kalhh from Pixabay

Atenção : O material usado para referência e as fotos para ilustração, não representam associação com as marcas, patrocínio, indicação e nem endosso para uso.

porRicardo Jorge

Pare de chamar tudo de Inteligência Artificial

Neste artigo sobre Pare de chamar tudo de Inteligência Artificial, abordaremos o uso algumas vezes exagerado, deste termo tão comum em nosso dia a dia.

Este artigo é uma versão e o artigo original e completo pode ser visto aqui.

Os sistemas de inteligência artificial estão longe de serem avançados o suficiente para substituir os humanos em muitas tarefas que envolvem raciocínio, conhecimento do mundo real e interação social.

Eles estão mostrando competência de nível humano em habilidades de reconhecimento de padrões de baixo nível, mas no nível cognitivo eles estão meramente imitando a inteligência humana, não se engajando profunda e criativamente, diz Michael I. Jordan, um pesquisador líder em IA e aprendizado de máquina.

Jordan é professor do departamento de engenharia elétrica e ciência da computação e do departamento de estatística da Universidade da Califórnia em Berkeley.

Ele observa que a imitação do pensamento humano não é o único objetivo do aprendizado de máquina – o campo da engenharia que está por trás do progresso recente em IA – ou mesmo o melhor objetivo.

Em vez disso, o aprendizado de máquina pode servir para aumentar a inteligência humana, por meio da análise meticulosa de grandes conjuntos de dados, da mesma forma que um mecanismo de busca aumenta o conhecimento humano organizando a web.

O aprendizado de máquina também pode fornecer novos serviços aos humanos em domínios como saúde, comércio e transporte, reunindo informações encontradas em vários conjuntos de dados, encontrando padrões e propondo novos cursos de ação.

“As pessoas estão ficando confusas sobre o significado da IA ​​nas discussões sobre tendências tecnológicas - que existe algum tipo de pensamento inteligente nos computadores que é responsável pelo progresso e que está competindo com os humanos”, diz ele. “Não temos isso, mas as pessoas estão falando como se tivéssemos.”

Afinal, Jordan deveria saber a diferença. O IEEE Fellow é uma das maiores autoridades mundiais em aprendizado de máquina.

Em 2016, ele foi classificado como o cientista da computação mais influente por um programa que analisou publicações de pesquisa, informou a Science.

Jordan ajudou a transformar o aprendizado de máquina não supervisionado, que pode encontrar estrutura em dados sem rótulos preexistentes, de uma coleção de algoritmos não relacionados a um campo intelectualmente coerente, explica o  Engineering and Technology History Wiki.

A aprendizagem não supervisionada desempenha um papel importante em aplicações científicas onde há uma ausência de teoria estabelecida que possa fornecer dados de treinamento rotulados.

As contribuições de Jordan renderam-lhe muitos prêmios, incluindo o Prêmio Ulf Grenander em Teoria Estocástica e Modelagem da American Mathematical Society deste ano (2021). No ano passado, ele recebeu a medalha IEEE John von Neumann por suas contribuições para o aprendizado de máquina e ciência de dados.

Nos últimos anos, ele tem a missão de ajudar cientistas, engenheiros e outros a compreender todo o escopo do aprendizado de máquina.

Ele diz acreditar que os desenvolvimentos no aprendizado de máquina refletem o surgimento de um novo campo da engenharia.

Jordan traça paralelos com o surgimento da engenharia química no início de 1900 a partir dos fundamentos da química e da mecânica dos fluidos, observando que o aprendizado de máquina se baseia em décadas de progresso na ciência da computação, estatística e teoria de controle. Além disso, diz ele, é a primeira área da engenharia humano cêntrica, voltada para a interface entre as pessoas e a tecnologia.

“Embora as discussões de ficção científica sobre IA e superinteligência sejam divertidas, elas são uma distração”, diz ele. “Não tem havido foco suficiente no problema real, que é construir sistemas baseados em aprendizado de máquina em escala planetária que realmente funcionem, agreguem valor aos humanos e não ampliem as desigualdades.”

Esclarecendo a Inteligência Artificial

Em 2019, Jordan escreveu “Artificial Intelligence – The Revolution Hasn Happened Yet”, publicado na Harvard Data Science Review.

Ele explica no artigo que o termo IA é mal compreendido não apenas pelo público, mas também pelos tecnólogos.

Na década de 1950, quando o termo foi cunhado, ele escreve, as pessoas aspiravam a construir máquinas de computação que possuíssem inteligência de nível humano.

Essa aspiração ainda existe, diz ele, mas o que aconteceu nas décadas que se seguiram é algo diferente.

Os computadores não se tornaram inteligentes “per se”, mas forneceram recursos que aumentam a inteligência humana, escreve ele.

Além disso, eles se destacaram em recursos de reconhecimento de padrões de baixo nível que poderiam ser realizados em princípio por humanos, mas com grande custo.

Os sistemas baseados em aprendizado de máquina são capazes de detectar fraudes em transações financeiras em grande escala, por exemplo, catalisando assim o comércio eletrônico. Eles são essenciais na modelagem e controle de cadeias de suprimentos na manufatura e na área de saúde.

Eles também ajudam corretores de seguros, médicos, educadores e cineastas.

Apesar de tais desenvolvimentos serem chamados de “tecnologia de IA”, ele escreve, os sistemas subjacentes não envolvem raciocínio ou pensamento de alto nível.

Os sistemas não formam os tipos de representações e inferências semânticas de que os humanos são capazes.

Eles não formulam e perseguem objetivos de longo prazo.

“Em um futuro previsível, os computadores não serão capazes de se equiparar aos humanos em sua capacidade de raciocinar abstratamente sobre as situações do mundo real”, escreve ele. “Precisaremos de interações bem pensadas de humanos e computadores para resolver nossos problemas mais urgentes. Precisamos entender que o comportamento inteligente de sistemas de grande escala surge tanto das interações entre os agentes quanto da inteligência dos agentes individuais. ”

Além disso, ele enfatiza, a felicidade humana não deve ser deixada de lado ao desenvolver tecnologia. “Temos uma oportunidade real de conceber algo historicamente novo: uma disciplina de engenharia centrada no homem”, escreve Jordan.

A perspectiva de Jordan inclui uma discussão revitalizada do papel da engenharia nas políticas públicas e na pesquisa acadêmica.

Ele ressalta que, quando as pessoas falam sobre ciências sociais, parece atraente, mas o termo engenharia social parece pouco atraente.

O mesmo vale para a ciência do genoma versus engenharia do genoma.

“Acho que permitimos que o termo engenharia diminuísse na esfera intelectual”, diz ele.

O termo ciência é usado em vez de engenharia quando as pessoas desejam se referir à pesquisa visionária. Frases como “apenas engenharia” não ajudam.

“Acho que é importante lembrar que, apesar de todas as coisas maravilhosas que a ciência fez pela espécie humana, é realmente a engenharia - civil, elétrica, química e outras áreas da engenharia - que aumentou mais direta e profundamente a felicidade humana.”

Artigos relacionados :

IoT e os dados dos sensores e do CLP

IoT o que fazer após a instalação?

IoT na Agricultura 4.0 – A Tecnologia a Serviço do Campo


Image by Gerd Altmann from Pixabay
porRicardo Jorge

COVID-19 Dados Reflexões e Estatísticas

Neste artigo sobre COVID-19 Dados Reflexões e Estatísticas, teremos uma abordagem diferente dos demais artigos já publicados neste Blog.

É claro que todos nós já percebemos o impacto mundial causado por esta pandemia do coronavírus, mas desejo aproveitar este espaço para colocar alguns dados coletados dos sites About Corona e WHO (OMS) onde é possível avaliar o status do Brasil, perante outras nações no que diz respeito a esta pandemia.

Espero que isto possa contribuir para melhor entendermos porque tanto se fala sobre este vírus, mas também percebermos que ainda há muito por ser feito, mesmo no âmbito mundial.

COVID-19 um pouco de história

Em 31 de dezembro de 2019, a Organização Mundial da Saúde (OMS) foi alertada sobre vários casos de pneumonia na cidade de Wuhan, província de Hubei, na República Popular da China. Tratava-se de uma nova cepa (tipo) de coronavírus que não havia sido identificada antes em seres humanos.

Uma semana depois, em 7 de janeiro de 2020, as autoridades chinesas confirmaram que haviam identificado um novo tipo de coronavírus. Os coronavírus estão por toda parte. Eles são a segunda principal causa de resfriado comum (após rinovírus) e, até as últimas décadas, raramente causavam doenças mais graves em humanos do que o resfriado comum.

Ao todo, sete coronavírus humanos (HCoVs) já foram identificados: HCoV-229E, HCoV-OC43, HCoV-NL63, HCoV-HKU1, SARS-COV (que causa síndrome respiratória aguda grave), MERS-COV (que causa síndrome respiratória do Oriente Médio) e o, mais recente, novo coronavírus (que no início foi temporariamente nomeado 2019-nCoV e, em 11 de fevereiro de 2020, recebeu o nome de SARS-CoV-2). Esse novo coronavírus é responsável por causar a doença COVID-19.

A OMS tem trabalhado com autoridades chinesas e especialistas globais desde o dia em que foi informada, para aprender mais sobre o vírus, como ele afeta as pessoas que estão doentes, como podem ser tratadas e o que os países podem fazer para responder.

A Organização Pan-Americana da Saúde (OPAS) tem prestado apoio técnico aos países das Américas e recomendado manter o sistema de vigilância alerta, preparado para detectar, isolar e cuidar precocemente de pacientes infectados com o novo coronavírus.

Dados obtidos do site : PAHO

Reflexões sobre saúde e qualidade de vida

É importante entender que, embora o coronavírus seja um assunto muito divulgado nas Redes Sociais e na mídia em geral, existem muitos outros focos de atenção que deveriam estar em nossos radares, durante e após esta pandemia.

Imaginar que basta tomar a vacina e tudo voltará ao normal, parece ser algo distante da realidade para muitas pessoas no mundo.

O motivo é que várias outras ameaças continuarão a existir, mas que são pouco divulgadas ou pouco percebidas, porque não afetam a maioria das pessoas com melhores condições sócio econômicas.

Contudo, isto não significa que não sejam importantes e que não deveriam ser tanto ou mais divulgadas do que a pandemia de COVID-19.

Alguns dados importantes e tristes ao mesmo tempo :

Como podemos ver, em apenas 4 tópicos acima, ainda temos muito com o que nos preocuparmos e também com o que contribuirmos para melhorar.

Usando tecnologia para entender nosso mundo

Como eu mencionei no início deste artigo, elaborei um pequeno “Flow” usando Node-RED para obter dados sobre COVID-19, selecionando alguns países e assim poder comparar com o Brasil.

Conhecer, comparar e entender o que acontece, é o primeiro passo para definir o que pode e deve ser feito.

Cada um, como cidadão, terá sua visão e assim uma forma de contribuição.

Após a execução do “Flow”, o resultado é uma tela similar a que é vista abaixo.

As coletas anteriores podem ser vistas aqui.

Observação : nem todos os países atualizam os dados com a mesma frequência.


Abaixo, segue o “Flow” Node RED usado para estas coletas.

Na versão 3, existem informações adicionais como :

  • Percentual de vacinados, que é obtida do site WHO / OMS.
  • Dados sobre território dos países
  • Informação sobre Renda Per Capita, obtida deste link no site Wikipédia.

Blog atualizado em 24/05/2021

Encontrou algum erro ou tem uma ideia para melhorar o código, envie sua sugestão!


Flow – versão 3

[{"id":"1b35239f.67dcdc","type":"tab","label":"COVID-19","disabled":false,"info":""},{"id":"8cecea9a.393958","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"15 21 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":240,"wires":[["5f3b6ebb.187e5"]]},{"id":"e28fcea8.5235b","type":"json","z":"1b35239f.67dcdc","name":"","property":"payload","action":"","pretty":true,"x":530,"y":100,"wires":[["3b331cf6.603b34"]]},{"id":"ffb139b8.592478","type":"http request","z":"1b35239f.67dcdc","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://corona-api.com/countries","tls":"","persist":false,"proxy":"","authType":"","x":370,"y":100,"wires":[["e28fcea8.5235b"]]},{"id":"ba7a1fef.62ec3","type":"debug","z":"1b35239f.67dcdc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":850,"y":100,"wires":[]},{"id":"3b331cf6.603b34","type":"function","z":"1b35239f.67dcdc","name":"","func":"var brasilTime = new Date().toLocaleString(\"pt-BR\", {timeZone: \"America/Sao_Paulo\"});\n\nvar d = new Date(brasilTime);\n\nvar diaSemanaA = new Array('Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb');\nvar curDiaSemanaA = diaSemanaA[d.getDay()];\n\nvar curHour = d.getHours();\nvar curMin = d.getMinutes();\nvar curDay = d.getDate();\nvar curMonth = d.getMonth() + 1;\nvar curYear = d.getFullYear();\n\nif (curMin < 10) {\n        curMin = \"0\" + curMin;\n}\n\nif (curHour < 10) {\n    curHour = \"0\" + curHour;\n}\n\nvar cur_date = curDiaSemanaA + \" \" + curDay + \"/\" + curMonth + \"/\" + curYear + \" - \" + curHour + \":\" + curMin;\n\nmsg.cur_date = cur_date;\n\n// Site OMS utiliza ISO3 ( 3 digitios ) para identificar os paises\n// Site About Corona utiliza 2 digitos para identificar os paises\n// A ordem dos paises deve ser a mesma para os 2 sites\n//\n\nvar countries_code = [\"BR\", \"US\", \"MX\", \"AR\", \"CL\", \"GB\", \"IT\", \"ES\", \"PT\", \"BE\", \"DE\", \"FR\", \"ZA\", \"RU\", \"IN\", \"CN\"];\nvar countries_iso3 = [\"BRA\", \"USA\", \"MEX\", \"ARG\", \"CHL\", \"GBR\", \"ITA\", \"ESP\", \"PRT\", \"BEL\", \"DEU\", \"FRA\", \"ZAF\", \"RUS\", \"IND\", \"CHN\"];\n\n/*\nBrasil\t\t    8515767\nUSA\t\t        8081867\nMexico\t\t    1972550\nArgentina\t    2780400\nChile\t\t    756096\nUK\t\t        240000\nItalia\t\t    301340\nEspanha\t\t    505990\nPortugal\t    92090\nBelgica\t\t    30689\nAlemanha\t    349380\nFrança\t\t    551500\nAfrica do Sul\t1213090\nRussia\t\t    17098246\nIndia\t\t    2973190\nChina\t\t    9424702\n*/\n\nvar countries_territory = [\"8.515.767\", \"8.081.867\", \"1.972.550\", \"2.780.400\", \"756.096\", \"240.000\", \"301.340\", \"505.990\", \"92.090\", \"30.689\", \"349.380\", \"551.500\", \"1.213.090\", \"17.098.246\", \"2.973.190\", \"9.424.702\"];\nvar countries_per_capita = [\"11.075\", \"65.111\", \"10.118\", \"9.887\", \"15.399\", \"41.030\", \"32.946\", \"29.961\", \"23.030\", \"45.175\", \"46.563\", \"41.760\", \"6.100\", \"11.162\", \"2.171\", \"10.098\"];\n\nvar countries_arr = [];\n\nvar d_rate,r_rate,c_million,confirmed,recovered,critical,deaths,population,percent;\n\nvar countriesLen = countries_code.length;\n\nvar covidLen = msg.payload.data.length;\n\nvar vaccinated_arr = flow.get('vaccinated_arr') || {};\nvar vaccines_arr = flow.get('vaccines_arr') || {};\n\nvar vaccinated,vaccines;\n\nfor (n = 0; n <countriesLen; n++) {\n    \n    for (i = 0; i < covidLen; i++) {\n        if(msg.payload.data[i].code == countries_code[n]) {\n\n            population = msg.payload.data[i].population;\n            deaths = msg.payload.data[i].latest_data.deaths;\n            percent = (deaths / population) * 100;\n            msg.payload.data[i].percent = percent.toPrecision(2);\n\n            msg.payload.data[i].territory = countries_territory[n];\n            msg.payload.data[i].per_capita = countries_per_capita[n];\n\n            msg.payload.data[i].population = msg.payload.data[i].population.toLocaleString('pt-BR');\n            msg.payload.data[i].latest_data.deaths = msg.payload.data[i].latest_data.deaths.toLocaleString('pt-BR');\n            d_rate = msg.payload.data[i].latest_data.calculated.death_rate;\n            msg.payload.data[i].latest_data.calculated.death_rate = d_rate.toPrecision(4);\n            r_rate = msg.payload.data[i].latest_data.calculated.recovery_rate;\n            msg.payload.data[i].latest_data.calculated.recovery_rate = r_rate.toPrecision(4);\n            c_million = msg.payload.data[i].latest_data.calculated.cases_per_million_population;\n            msg.payload.data[i].latest_data.calculated.cases_per_million_population = c_million.toLocaleString('pt-BR');\n            confirmed = msg.payload.data[i].latest_data.confirmed;\n            msg.payload.data[i].latest_data.confirmed = confirmed.toLocaleString('pt-BR');\n            recovered = msg.payload.data[i].latest_data.recovered;\n            msg.payload.data[i].latest_data.recovered = recovered.toLocaleString('pt-BR');\n            critical = msg.payload.data[i].latest_data.critical;\n            msg.payload.data[i].latest_data.critical = critical.toLocaleString('pt-BR');\n\n            if(vaccinated_arr[n]===undefined) {\n                vaccinated = 0;\n            } else {\n                vaccinated = vaccinated_arr[n];\n            }\n\n            if(vaccines_arr[n]===undefined) {\n                vaccines = 0;\n            } else {\n                vaccines = vaccines_arr[n];\n            }\n            \n            vaccinated = (vaccinated / population) * 100;\n\n            msg.payload.data[i].vaccinated = vaccinated.toPrecision(2);\n            msg.payload.data[i].vaccines = vaccines.toLocaleString('pt-BR');\n            \n            countries_arr.push(JSON.parse(JSON.stringify(msg.payload.data[i])));\n        }\n    }\n}\n\nmsg.payload = countries_arr;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":100,"wires":[["ba7a1fef.62ec3","981ebf4a.016de"]]},{"id":"981ebf4a.016de","type":"ui_template","z":"1b35239f.67dcdc","group":"ac573138.1cb5b","name":"Covid-19 - Estatísticas","order":1,"width":"26","height":"16","format":"<style>\ntable {\n  border-collapse: collapse;\n  width: 100%;\n}\n\nth, td {\n  padding: 8px;\n  text-align: left;\n  border-bottom: 1px solid #ddd;\n}\n\ntr:nth-child(even) {background-color: #e6ffcc;}\n\ntr:nth-child(odd) {background-color: #bfff80;}\n\nth {\n  background-color: black;\n  color: white;\n  text-align: center;\n}\n\n}\n</style>\n<center>\n    <h2>Informações COVID-19</h2>\n    <br>\n    <h4>Estes dados são obtidos dos sites <a href=\"https://about-corona.net\" target=\"_blank\">About Corona</a> e <a href=\"https://covid19.who.int/info/\" target=\"_blank\">WHO (OMS)</a></h4>\n    <br>\n</center>\n<table id=\"table\">\n <tr>\n <th>Pais</th>\n <th>Território km2</th>\n <th>Per Capita US$</th>\n <th>Habitantes</th>\n <th>Mortes</th>\n <th>% Populacional</th>\n <th>Confirmados</th>\n <th>Recuperados</th>\n <th>Críticos</th>\n <th>Taxa de mortalidade</th>\n <th>Taxa de recuperados</th>\n <th>Casos por milhão</th>\n <th>Doses aplicadas</th>\n <th>% vacinados</th>\n </tr>\n <tbody>\n <tr ng-repeat=\"row in msg.payload\">\n <td>{{::row.name}}</td>\n <td>{{::row.territory}}</td>\n <td>{{::row.per_capita}}</td>\n <td>{{::row.population}}</td>\n <td>{{::row.latest_data.deaths}}</td>\n <td>{{::row.percent}}</td>\n <td>{{::row.latest_data.confirmed}}</td>\n <td>{{::row.latest_data.recovered}}</td>\n <td>{{::row.latest_data.critical}}</td>\n <td>{{::row.latest_data.calculated.death_rate}}</td>\n <td>{{::row.latest_data.calculated.recovery_rate}}</td>\n <td>{{::row.latest_data.calculated.cases_per_million_population}}</td>\n <td>{{::row.vaccines}}</td>\n <td>{{::row.vaccinated}}</td>\n </tr>\n </tbody>\n</table>\n<p><br><br><b>Coleta feita em :</b> {{msg.cur_date}}</p>","storeOutMessages":false,"fwdInMessages":true,"templateScope":"local","x":880,"y":180,"wires":[[]]},{"id":"a83a28ee.7e39b8","type":"http request","z":"1b35239f.67dcdc","name":"","method":"GET","ret":"bin","paytoqs":"ignore","url":"https://covid19.who.int/who-data/vaccination-data.csv","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":340,"wires":[["52c552ca.e6991c"]]},{"id":"52c552ca.e6991c","type":"file","z":"1b35239f.67dcdc","name":"","filename":"/home/pi/who_vaccination.csv.gz","appendNewline":false,"createDir":false,"overwriteFile":"true","encoding":"none","x":320,"y":420,"wires":[["f353a813.660b08"]]},{"id":"f353a813.660b08","type":"exec","z":"1b35239f.67dcdc","command":"/home/pi/who.sh","addpay":"","append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":600,"y":420,"wires":[[],[],[]]},{"id":"b73c490b.639498","type":"csv","z":"1b35239f.67dcdc","name":"","sep":",","hdrin":true,"hdrout":"none","multi":"mult","ret":"\\r\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":290,"y":160,"wires":[["3ba823a8.2337dc"]]},{"id":"5f3b6ebb.187e5","type":"file in","z":"1b35239f.67dcdc","name":"","filename":"/home/pi/who_vaccination.csv","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":510,"y":240,"wires":[["b73c490b.639498"]]},{"id":"3ba823a8.2337dc","type":"function","z":"1b35239f.67dcdc","name":"","func":"//\n// Site OMS utiliza ISO3 para identificar os paises\n//\n// A ordem dos paises deve ser a mesma ordem da coleta do site About Corona\n//\n\nvar countries_iso3 = [\"BRA\", \"USA\", \"MEX\", \"ARG\", \"CHL\", \"GBR\", \"ITA\", \"ESP\", \"PRT\", \"BEL\", \"DEU\", \"FRA\", \"ZAF\", \"RUS\", \"IND\", \"CHN\"];\n\nvar vaccinated_arr = [];\nvar vaccinated;\n\nvar vaccines_arr = [];\nvar vaccines;\n\nvar countriesLen = countries_iso3.length;\n\nvar covidLen = msg.payload.length;\n\nfor (n = 0; n <countriesLen; n++) {\n    \n    for (i = 0; i < covidLen; i++) {\n        if(msg.payload[i].ISO3 == countries_iso3[n]) {\n\n            vaccinated = msg.payload[i].PERSONS_VACCINATED_1PLUS_DOSE;\n            vaccines = msg.payload[i].TOTAL_VACCINATIONS;\n            \n            if(vaccinated === undefined) {\n                vaccinated = 0;\n            }\n\n            if(vaccines === undefined) {\n                vaccines = 0;\n            }\n\n            vaccinated_arr.push(vaccinated);\n            vaccines_arr.push(vaccines);\n        }\n    }\n}\n\nflow.set('vaccinated_arr',vaccinated_arr);\nflow.set('vaccines_arr',vaccines_arr);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":160,"wires":[["ffb139b8.592478"]]},{"id":"f7e44017.8c1f2","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":300,"wires":[["a83a28ee.7e39b8","344d13a7.c349dc"]]},{"id":"344d13a7.c349dc","type":"delay","z":"1b35239f.67dcdc","name":"","pauseType":"delay","timeout":"8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":300,"y":280,"wires":[["5f3b6ebb.187e5"]]},{"id":"cad7a71a.ef5328","type":"comment","z":"1b35239f.67dcdc","name":"Estatísticas COVID-19 - Versão 3","info":"Nesta versão temos o percentual de vacinados e a indormação é obtidia do site OMS ( https://covid19.who.int/info/ )","x":170,"y":40,"wires":[]},{"id":"9fe3cedb.7b7a7","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"10 21 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":340,"wires":[["a83a28ee.7e39b8"]]},{"id":"ac573138.1cb5b","type":"ui_group","name":"COVID-19","tab":"42287a7d.74e004","order":2,"disp":true,"width":"26","collapse":true},{"id":"42287a7d.74e004","type":"ui_tab","name":"COVID","icon":"dashboard","disabled":false,"hidden":false}]

Assuntos relacionados :

Node-RED – apresentação


Image by Pete Linforth from Pixabay

porRicardo Jorge

IoT e os dados dos sensores e do CLP

Neste artigo sobre IoT e os dados dos sensores e do CLP, abordaremos o uso adequado destas duas fontes de dados, para obtermos um conjunto poderoso de informações sobre nosso ambiente em operação.

Também poderemos perceber que existem dois caminhos possíveis para uma implementação IoT, sendo um a partir dos dados já existentes, sendo coletados pelo CLP, e os dados complementares, que serão capturados por sensores específicos.

Quando se trata de coletar dados para IIoT, devemos focar na qualidade e também na quantidade.

Necessitamos ter dados que permitam a análise e a tomada de decisões tanto no curto, como também no longo prazo.

Deep Data versus Big Data

Basta pesquisar sobre IIoT e você encontrará muitas informações sobre a utilidade de Big Data e análise preditiva.

De acordo com um artigo da Forbes, “Embora o volume, a velocidade e a variedade que o Big Data oferece possam sem dúvida revelar efeitos importantes que escapam ao olho humano e aos métodos tradicionais de pesquisa empírica, essa é simplesmente a primeira etapa no processo de criação de valiosos insights que derivam de intervenções baseadas em evidências.

Prever resultados é útil, mas explicá-los e compreender suas causas, é muito mais valioso, tanto de uma perspectiva teórica quanto prática.”

O autor, neste caso, estava se referindo aos processos de recursos humanos (RH) em sua obra, mas suas afirmações são tão válidas para o chão de fábrica quanto para o departamento de seleção e recrutamento.

Big Data consiste em capturar as vastas quantidades de dados que já estão disponíveis e analisá-los.

Em outras palavras, olhar para os dados de uma maneira diferente.

Muitos dos dados serão úteis, mas alguns não, e isto também se aplica aos resultados.

Enquanto isto, Deep Data levam essa análise a um nível mais granular.

Ao eliminar dados que não são relevantes para um determinado curso de investigação e focar em fluxos, as tendências preditivas que resultam da análise de dados profundos ( Deep Data ) tendem a ser mais precisas no geral.

Dados dos sensores versus Dados do CLP

Os dados dos sensores, são todos os dados de um sensor específico em uma máquina, considerados dentro de um período de tempo designado.

O sensor é projetado para monitorar algo específico, como uma vibração, que pode dizer ao operador que a máquina está ligada ou desligada.

Esses dados podem ou não ser significativos quando revisados ​​ou analisados.

Um CLP é capaz de extrair uma grande quantidade de tipos de dados que, juntamente com os dados do sensor, fornecem uma imagem mais completa do que está acontecendo em qualquer máquina.

Este CLP pode monitorar entradas e saídas de e para uma máquina e pode tomar decisões lógicas quando necessário, com base na programação.

Por que utilizar os dois conjuntos de dados é o ideal

A chave para análises e resultados de alta qualidade é ser capaz de ter uma plataforma que possa capturar dados profundos do CLP e também os dados dos sensores, que monitoram itens mais específicos que podem não estar disponíveis através do CLP.

Por exemplo, como observado acima, embora um sensor possa fornecer os limites de vibração em uma determinada máquina ou parte de uma máquina, os dados do CLP dessa mesma máquina, podem incluir parâmetros para sinalizar que uma falha está prestes a ocorrer na produção.

Com os dados do CLP, vem a capacidade de controlar as operações, incluindo a sequência de atividades em que uma máquina pode estar envolvida, o correto tempo para certas tarefas ocorrerem e assim por diante.

Quando os dados obtidos pelo CLP, mostram que um desses elementos programados está operando de maneira inadequada, o operador pode responder mais rapidamente do que se tivesse que investigar manualmente um problema de forma isolada.

A lógica interna ao CLP pode ser programada para garantir que os dados retornados correspondam ao estado desejado e que a máquina esteja funcionando em um nível ideal.

Isso gera uma informação mais precisa, do que apenas saber se uma máquina está vibrando ou não.

Ter os dois conjuntos de dados analisados ​​e entregues ao usuário, fornece muito mais informações do que os sensores por conta própria, permitindo ao operador a flexibilidade de coletar os dados necessários em tempo hábil para evitar paralisações dispendiosas e problemas de manutenção.

Em vez disso, o tempo de inatividade planejado e a manutenção preditiva proativa podem ocorrer, aumentando a eficiência e melhorando os resultados financeiros.

Conclusão

Existe mais de uma abordagem e metodologia para implementação de IoT / IIoT em sua empresa e para seu negócio.

Conforme o estágio no qual você esteja, ou até mesmo o nível de investimento possível e desejável, uma abordagem será melhor do que outra.

Caso já tenha CLPs e inversores instalados e queria iniciar rapidamente e com um investimento mínimo, uma opção é fazer o acesso aos dados já existentes nestes dispositivos. Isto será útil para validar seus conceitos e obter as métricas iniciais para um projeto maior e melhor definido.

Qualquer que seja o caminho adotado, o uso de IoT trará, com os devidos cuidados, os resultados esperados.


Artigos relacionados :

Modbus e Profibus os protocolos da indústria

Indústria 4.0 e a Internet das Coisas Industrial – IIoT

Indústria 4.0 – Introdução


Este artigo foi baseado neste link.


Image by Gerd Altmann from Pixabay
porRicardo Jorge

IoT o que fazer após a instalação?

Neste artigo sobre IoT o que fazer após a instalação?, serão abordados os tópicos básicos que devem ser avaliados por quem deseja ter bons resultados através da implementação de IoT.

Inúmeros são os artigos falando sobre a importância e os benefícios de IoT, mas pouco é comentado sobre o que deve ser feito após a implementação de uma solução IoT e principalmente o que deve ser preparado antes da implementação, para que tudo faça sentido e traga os resultados esperados.

IoT está relacionado com sensores e a obtenção dos dados sobre o ambiente onde estes sensores estão ou serão instalados.

De posse destes dados e com as metodologias e ferramentas adequadas, a tomada de decisão será facilitada, ampliada e melhorada.

Leia mais sobre a importância dos sensores, neste outro artigo IoT e os dados dos sensores e do CLP.

É claro que existem dispositivos IoT associados a atuadores, mas os dados são provenientes da quantidade e da qualidade dos sensores existentes em seu ambiente.

Quando falamos sobre metodologia, mesmo algo simples como 5W2H pode ser um excelente ponto de partida.

Não basta acreditar nas promessas que a tecnologia IoT trará para você ou para seu negócio.

Você precisa definir critérios para o antes e o pós implementação.

Você tomaria uma decisão importante, a partir de uma única informação?

Usando 5W2H, podemos definir alguns pontos básicos, como :

  • Who? (Quem?)
    • será o fornecedor e o responsável pela implementação
    • fará a operação deste sistema em minha empresa
  • What? (O quê?)
    • devo monitorar e automatizar em meu ambiente
  • Where? (Onde?)
    • no meu ambiente, devo iniciar a implementação de IoT
    • Você já tem CLPs e inversores que podem ser usados ?
  • When? (Quando?)
    • desejo ter os primeiros resultados desta implementação
  • Why? (Por que?)
    • preciso implementar IoT em meu ambiente
  • How? (Como?)
    • Serão implementados os sensores em meu ambiente
      • Posso utilizar os CLPs existentes
      • Devo instalar sensores “do zero”
    • Treinar minha Equipe e integrar com meu ERP
    • a implementação trará os resultados desejados
    • será feita a gestão de todo o ecossistema de IoT em meu ambiente
  • How Much?(Quanto?)
    • Qual será o ROI e o TCO desta implementação

Na lista acima, temos alguns pontos de partida para nosso estudo, mas estes pontos devem ser ajustados para cada necessidade específica.

time-money

Decisão deveria estar associada a informação!

Para ilustrar a importância dos sensores e, através de uma rápida pesquisa pela Internet, podemos ver que um veículo convencional tem entre 60 a 100 sensores.

Enquanto isso, uma aeronave conta com aproximadamente 50.000 sensores e coleta em média 2.5 terabytes de dados por dia.

Quando implementamos IoT, a coleta de dados será iniciada!

Sendo assim, o tratamento e a análise destes dados, precisam estar definidos desde o início da implementação, sob pena do processo ficar incompleto e não trazer os resultados esperados e possíveis de serem atingidos.

IoT tem total relação com o negócio e com a análise dos dados obtidos e não só com tecnologia, como muitas vezes é visto e divulgado !

Como podemos ver, é preciso estar preparado para coletar e salvar os dados provenientes das várias fontes ( sensores / CLP ), pois eles serão usados para nosso sistema de tomada de decisão.

Em uma fase posterior a coleta, estes dados serão tratados por algum processo de Big Data e serão usados para o controle dos atuadores do ambiente e, melhorando a gestão dos processos produtivos.

Posteriormente, os dados serão integrados com o ERP da empresa, para melhorar a tomada de decisão já no nível do negócio.

E você? Já definiu o que fazer, após a instalação de um sistema IoT em sua empresa?

Deixe seus comentários aqui em nosso Blog.


Artigos relacionados :

Séries históricas e IoT – conheça planeje e decida

IoT – segurança e integridade dos dados

IoT e os dados dos sensores e do CLP

Modbus e Profibus os protocolos da indústria

Como desenvolver vender e ter sucesso com IoT


Image by methodshop from Pixabay
Image by Peggy und Marco Lachmann-Anke from Pixabay