O ESP8266+Arduino Mega como WebServer

Depois de testar o modulo com vários comandos AT (vale a pena dar uma sapeada no arquivo anexo, bem legal!), parti para fazer o modulo funcionar como Web Server. Partido que tinha aprendido, principalmante com um tutorial do blog FILIPEFLOP:

http://blog.filipeflop.com/wireless/esp8266-arduino-tutorial.html

O Circuito:

 

Webservercircuit

 

O código:

/*************************************************************************

* Web Server with ESP8266

* Based on: FILIPEFLOP http://blog.filipeflop.com/wireless/esp8266-arduino-tutorial.html

* Adapted by Marcelo Jose Rovai

**************************************************************************/

#define esp8266 Serial2

#define CH_PD 4

#define speed8266 115200 // This is the speed that worked with my ESP8266

#define DEBUG true

void setup()

{

  esp8266.begin (speed8266);

  Serial.begin(9600);

  reset8266(); // Pin CH_PD needs a reset before start communication

  sendData(“AT+RST\r\n”, 2000, DEBUG); // reset

  sendData(“AT+CWJAP=\”ROVAI TIMECAP\”,\”mjr747@1\”\r\n”, 2000, DEBUG); //Connect network

  delay(3000);

  sendData(“AT+CWMODE=1\r\n”, 1000, DEBUG);

  sendData(“AT+CIFSR\r\n”, 1000, DEBUG); // Show IP Adress

  sendData(“AT+CIPMUX=1\r\n”, 1000, DEBUG); // Multiple conexions

  sendData(“AT+CIPSERVER=1,80\r\n”, 1000, DEBUG); // start comm port 80

}

void loop()

{

  if (esp8266.available()) // check if 8266 is sending data

  {

    if (esp8266.find(“+IPD,”))

    {

      delay(300);

      int connectionId = esp8266.read() – 48;

      String webpage = “<head><meta http-equiv=””refresh”” content=””3″”>”;

      webpage += “</head><h1><u>MJRoBot ==> WebServer (ESP8266) </u></h1><h2>Arduino Pin: “;

      webpage += “D8 status ==> “;

      int a = digitalRead(8);

      webpage += a;

      webpage += “<h2>Arduino Pin: D9 status ==> “;

      int b = digitalRead(9);

      webpage += b;

      webpage += “<h2>Arduino Pin: A0 data ===> “;

      int c = analogRead(0);

      webpage += c;

      webpage += “</h2>”;

      String cipSend = “AT+CIPSEND=”;

      cipSend += connectionId;

      cipSend += “,”;

      cipSend += webpage.length();

      cipSend += “\r\n”;

      sendData(cipSend, 1000, DEBUG);

      sendData(webpage, 1000, DEBUG);

      String closeCommand = “AT+CIPCLOSE=”;

      closeCommand += connectionId; // append connection id

      closeCommand += “\r\n”;

      sendData(closeCommand, 3000, DEBUG);

    }

  }

}

/*************************************************/

 // Send AT commands to module

String sendData(String command, const int timeout, boolean debug)

{

  String response = “”;

  esp8266.print(command);

  long int time = millis();

  while ( (time + timeout) > millis())

  {

    while (esp8266.available())

    {

      // The esp has data so display its output to the serial window

      char c = esp8266.read(); // read the next character.

      response += c;

    }

  }

  if (debug)

  {

    Serial.print(response);

  }

  return response;

}

/*************************************************/

// Reset funtion to accept communication

void reset8266 ()

{

  pinMode(CH_PD, OUTPUT);

  digitalWrite(CH_PD, LOW);

  delay(300);

  digitalWrite(CH_PD, HIGH);

}

A web Page:

Note que o endereço da pagina é o segundo IP que aparece no Serial monitor com o comando AT+CIFSR na fase de Set-up (veja a copia do Serial monitor abaixo): 

+CIFSR:STAIP,”10.0.1.2″

Webserverpage

A saída no Serial Monitor:

1. A conexão com o modulo esp8266

 

SerialConxion

2. A comunicação:

SerialOngoingcomm

Eu fiz um pequeno vídeo para dar uma visão do WebServer funcionando:

ESP8266 como webserver

Documento legal com dicas de comandos AT para configurar o esp8266:

ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf

Fonte:  http://labdegaragem.com/profiles/blogs/o-esp8266-como-webserver-usando-o-mega?xg_source=msg_mes_network

Como Configurar Xbee Explorer

Quem se interessa por redes wireless em automação já deve ter ouvido falar de um módulo muito popular chamado Xbee, uma placa que se comunica via radiofrequência utilizando o padrão Zigbeede comunicação de rede sem fio e permite a interligação de vários módulos.

Com o Xbee você pode construir uma rede wireless extremamente robusta, confiável e de certa forma econômica, pois o módulo Xbee possuem um modo “sleep” que economiza energia quando não estão executando nenhuma ação. Isso permite que os módulos funcionem por muito tempo apenas utilizando baterias.

O Xbee é muito usado em ambientes industriais, onde o fator velocidade não é um ponto crítico, como por exemplo um equipamento que precise enviar dados da produção para um computador central. Isso não impede que o Xbee seja usado com sucesso em aplicações de automação residencial, como alarmes, iluminação, coleta de dados e outras aplicações.

A programação do Xbee exige atenção e por esse motivo vamos dividir esse assunto em 2 tutoriais. Hoje vamos falar do Xbee Explorer USB, que é a placa utilizada para programar o Módulo Xbee :

XBee_USB_Explorer_Adapter22

Com o Xbee Explorer USB, você consegue não só programar e configurar o seu Xbee, como também atualizar o seu dispositivo e realizar uma série de outras tarefas.

INSTALAÇÃO XBEE EXPLORER USB:

Antes de efetuarmos as ligações do Xbee, vamos instalar o software de programação, que iremos utilizar em conjunto com o Xbee Explorer. Esse software é o XCTU, disponível nesse link.

Ao acessar o link, você será direcionado à página do software XCTU. Clique em Diagnostics, Utilities and MIBS :

Tela-1-Link-XCTU

Na próxima tela que abrir, clique em XCTU Next Gen Installer, Windows x32/x64 ou na versão de acordo com o seu sistema operacional:

Tela-2-Link-XCTU-Opcoes-de-download

Baixe o arquivo, que tem o tamanho aproximado de 130 Mb e execute o instalador. Na tela de boas vindas, simplesmente clique em NEXT :

Tela-4-XCTU-Install-Tela-Inicial

Leia atentamente o contrato de licença e clique novamente em NEXT :

Tela-5-XCTU-Install-Tela-Licenca

A tela seguinte apresenta um aviso de que o usuário do Windows Vista e 7 deve ter direitos de administrador para evitar problemas na cópia de arquivos. Clique em NEXT :

Tela-6-XCTU-Install-Tela-Path-info

Escolha a pasta de destino de instalação do software e clique em NEXT :

Tela-7-XCTU-Install-Tela-Path

Revise a escolhas e clique em Install para que tenha início o processo de cópia dos arquivos :

Tela-8-XCTU-Install-Confirmacao

Aguarde o final da instalação :

Tela-8-XCTU-Install-Confirmacao Tela-9-XCTU-Install

CONFIGURANDO O MÓDULO XBEE:

O próximo passo é encaixar o Módulo Xbee no Xbee Explorer USB e ligar ao computador usando o cabo usb que acompanha o produto. O módulo que estamos utilizando é o Módulo Xbee Serie 2:

XBee_USB_Explorer_Adapter22

Ao conectar o Xbee Explorer USB ao computador, terá início o processo de instalação dos drivers. No Windows 7 / 64 bits, os drivers foram instalados automaticamente pelo Windows Update, e o dispositivo foi detectado na porta serial Com20 :

Tela-3-Instalacao-drivers

Vamos agora executar o XCTU e procurar pelo módulo Xbee conectado ao USB Explorer. Na tela inicial do programa, clique em Discover Devices :

Tela-10-XCTU-Tela-inicial

Selecione a porta serial detectada na instalação do Xbee Explorer USB. No nosso caso, COM20. Depois, clique em next :

Tela-11-XCTU-Dispositivo-Scan

 

Deixe os parâmetros da porta nos valores padrão e clique em Finish para iniciar a varredura :

Tela-12-XCTU-Dispositivo-parametros

 

Na próxima tela, clique em Add Selected Devices para adicionar os dispositivos detectados

Tela-13-XCTU-Dispositivo-detectado

 

De volta à tela inicial do XCTU, clique no dispositivo, agora listado no lado esquerdo :

Tela-14-XCTU-Lista-Dispositivo

No lado direito da tela serão carregados os parâmetros previamente gravados no módulo Xbee, como nome do módulo, versão de firmware, configuração de portas, entre outros :

Tela-15-XCTU-Dispositivo-parametros-carregados

Isso encerra a parte básica de instalação e configuração do Xbee Explorer USB. Em um próximo artigo iremos mostrar como configurar dois módulos Xbee Serie 2 e enviar informações para o Arduino usando o Arduino Xbee Shield.

Arduino_Xbee_Shield12

http://blog.filipeflop.com/wireless/como-configurar-xbee-explorer-usb.html

A aristocracia operária

” A aristocracia operária significa o surgimento de um setor da classe operária que passa a ser mais maleável as pressões do capital e que mais facilmente é  cooptado por ele. Todavia, este surgimento não decorre de uma alteração das relações de produção e, portanto, não significa o surgimento de uma nova classe, nem implica na que a determinação essencial da classe operária tenha sido alterada.

Pyramid_of_Capitalist_System

A aristocracia operária é  parte da classe operária, e não uma nova classe. A crítica de Mandel (1964) a Baratt Brown, neste particular, é  precisa: a aristocracia operária faz parte do movimento operário, e nele se distingue politicamente do restante da classe. As implicações ontológicas e políticas aqui são vastas…Um corpo desorganizado não tem porta-voz autorizado nem um programa definido; suas reclamações e exigências são frequentemente vagas e impalpaveis: é  mais possível que seja arrastada por um impulso irracional; que se mova no momento errado e na direção errada.”
(Jones, 1971:317, nota 8)

Publicado do WordPress para Android

Transaction Autonomous – O Que, Quando, Onde e Por Que

Do que se trata o artigo:

Neste artigo será apresentada a utilização do pragma autonomous Transaction para escrita de códigos autônomos em rotinas PL/SQL, as quais são executadas e commitadas na base independentemente do resultado da transação master que invocou essa rotina.


Em que situação o tema é útil:

Esta funcionalidade é bastante utilizada para geração de logs de erro de transação, onde a transação master sofre rollback depois de uma falha, mas é possível gerar um log contento os dados da transação que resultaram no erro.

Um subprograma normalmente tem suas operações salvas ou não no banco de dados de acordo com o que acontece com o programa principal onde ele está inserido. Isso quer dizer que, se uma procedure chama uma função e a procedure falha, nem as alterações feitas pela procedure nem as alterações feitas pela função são salvas na base, afinal trata-se da mesma transação, a qual é atômica (indivisível, ou seja, ou ela toda é commitada ou ela toda sofre rollback). No entanto, se a função contiver o pragma autonomous_transaction, ela se comporta como uma segunda transação, que é isolada e independente, e suas alterações na base podem ser salvas ou não independentemente da transação master que a originou.

A diretiva AUTONOMOUS_TRANSACTION altera a forma com que a transação trata a um subprograma. Um pragma na verdade é uma diretiva de compilação e os subprogramas marcados com este pragma são processados em tempo de compilação e não em tempo de execução, e passam informações diretamente ao compilador.

O termo AUTONOMOUS_TRANSACTION se refere à habilidade do PL/SQL temporariamente suspender a transação corrente e iniciar uma nova transação, totalmente independente, que funciona de forma autônoma com relação à transação original.

Imagine a seguinte situação: Para fins de auditoria, criamos uma tabela de log que contém os dados referentes a todas as alterações feitas nos dados de 5 tabelas críticas do banco de dados da empresa, armazenando o IP da máquina que originou a transação, qual tabela sofreu alteração, o que foi feito, etc, e um trigger é responsável por inserir tais dados nessa tabela. Pois bem, vamos supor então que por um motivo ou outro essa transação tenha falhado. Não desejamos que os logs de auditoria também sofram rollback, pois estaremos perdendo dados preciosos de tentativas frustradas de acesso não autorizado.

Neste caso, o trigger deve disparar um subprograma autônomo, cujo sucesso da transação não dependa do resultado da transação principal que o originou.

A utilização em tratativas de logs de auditoria são comuns e não causam nenhum tipo de problema ao banco de dados, uma vez que não está lidando com tabelas de negócio, ou seja, que guardam dados essenciais para o negócio. Por este motivo a transação autônoma é segura, pois a integridade do banco de dados está resguardada.

Digo isso porque já vi muitos códigos resolvendo regras de negócio com transações autônomas, o que pode gerar um problema grande para o banco de dados. Imagine que a alteração de um valor em uma tabela deve causar alterações em outras tabelas. Se a primeira alteração falha, o ideal é que as demais alterações não ocorram… neste caso o procedimento que faria as demais alterações não poderia jamais ser autônomo!

Qualquer subprograma, como procedures, funções ou até mesmo blocos anônimos PL/SQL podem conter este pragma. No entanto, se for utilizado dentro de pacotes, o pragma deve ser declarado para as funções e procedures que fazem parte do pacote, e não para o pacote em si.

Exemplo de Utilização

Como um exemplo de utilização da transação autônoma, vamos assumir que precisamos gravar logs de erro em uma tabela do banco de dados. Precisamos fazer rollback da transação principal porque ela resultaria em um erro, mas não queremos perder o log do que aconteceu nessa transação. A tabela que conterá os logs de erro possui a seguinte estrutura:

CREATE TABLE tb_log_erros(

  codigo integer,

  msg varchar2(2000),

  data date,

  usuario varchar2(50),

  nm_mach varchar2(100),

  prog varchar2(100)

);

O procedimento que deve ser invocado para inserir o log do erro na tabela é:

CREATE OR REPLACE PROCEDURE grava_log_erros(

   log_codigo IN INTEGER,

   log_msg IN VARCHAR2) IS

PRAGMA AUTONOMOUS_TRANSACTION;

CURSOR cur_erro IS

SELECT machine, program

FROM v$session

WHERE audsid = USERENV(‘SESSIONID’);

PT = Parent Transaction;

CT = Child Autonomous Transaction;

rec cur_erro%ROWTYPE;

BEGIN

   —

   OPEN cur_erro;

   FETCH cur_erro INTO rec;

   CLOSE cur_erro;

   —

   INSERT INTO tb_log_erros values (

       log_codigo,

       log_msg,

       SYSDATE,

       USER,

       rec.machine,

       rec.program

   );

   COMMIT;

EXCEPTION

   WHEN OTHERS THEN

       ROLLBAACK;

END;

/

Para testar o código acima, podemos executar o seguinte bloco anônimo PL/SQL:

BEGIN

    INSERT INTO HR.EMPLOYEES (first_name) VALUES (‘Maria’);

    COMMIT;

EXCEPTION

    WHEN OTHERS THEN

         grava_log_erros(SQLCODE,SQLERRM);

    ROLLBACK;

    RAISE;

END;

Ao executar o código acima, basta verificar nas tabelas EMPLOYEES e TB_LOG_ERROS as linhas inseridas, como segue:

SQL> select * from employees where first_name = ‘Maria’;

no rows selected.

SQL> select codigo, msg from tb_log_erros;

CODIGOMSG

——————————————————————————————————–

-1400ORA-01400: cannot insert NULL into (“HR”.”EMPLOYEES”.”EMPLOYEE_ID”)

Referências

BURLESON CONSULTING. PL/SQL Autonomous Transaction Tips. Burleson Consulting, 2015. Disponivel em: http://www.dba-oracle.com/t_autonomous_transaction.htm

ORACLE HELP CENTER. Autonomous_transaction Pragma. Database PL/SQL User’s Guide and Reference, 2017. Disponivel em: https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/autonotransaction_pragma.htm

MORAES MOREIRA – SINTONIA

Escute essa canção
Que é prá tocar no rádio
No rádio do seu coração
Você me sintoniza
E a gente então se liga
Nessa estação…

Aumenta o seu volume
Que o ciúme
Não tem remédio
Não tem remédio
Não tem remédio não…(2x)

E agora assim aqui prá nós
Pelo meu nome não me chama
Você é quem conhece mais
A voz do homem
Que te ama…

Deixa eu penetrar
Na tua onda
Deixa eu me deitar
Na tua praia
Que é nesse vai e vem
Nesse vai e vem
Que a gente se dá bem
Que a gente se atrapalha…(2x)

Aumenta o seu volume
Que o ciúme
Não tem remédio
Não tem remédio
Não tem remédio não…(2x)

E agora assim aqui prá nós
Pelo meu nome não me chama
Você é quem conhece mais
A voz do homem
Que te ama…

Deixa eu penetrar
Na tua onda
Deixa eu me deitar
Na tua praia
Que é nesse vai e vem
Nesse vai e vem
Que a gente se dá bem
Que a gente se atrapalha…(2x)

Escute essa canção
Que é prá tocar no rádio
No rádio do seu coração
Você me sintoniza
E a gente então se liga
Nessa estação…

Folha biônica transforma luz solar em combustível

A folha biônica pode transformar a luz solar e a água em combustível livre e 10x mais rapidamente do que plantas

Pesquisadores de Harvard desenvolveram uma “folha” biônica capaz de converter a luz solar em combustível 10 vezes mais rápido do que uma folha orgânica.

O conceito da folha biônica capaz de gerar combustível de hidrogênio não é novo

Durante anos, os cientistas vêm criando folhas artificiais, geralmente elas trabalham quando são colocadas em água. A luz solar faz com que eles dividam a água em hidrogênio e oxigênio, que pode ser recuperado para carregar células de combustível de hidrogênio. No ano passado, os pesquisadores de Harvard revelaram sua nova iteração da folha biônica, embora agora ele é capaz de transformar a água em combustível, diretamente, porque contém uma bactéria hidrogenogênica que causa a conversão.

“Este é um verdadeiro sistema de fotossíntese artificial”, disse o professor de Energia Daniel Nocera, um dos principais pesquisadores. “Antes, as pessoas estavam usando a fotossíntese artificial para separar a água, mas este é um sistema verdadeiramente completo, e ​​nós se saímos muito bem sobre a eficiência da fotossíntese na natureza.”

Outra grande novidade é que essas novas folhas podem criar uma matriz de combustíveis, em vez de isopropanol apenas, que as versões mais antigas foram limitados. A nova versão também pode criar isobutanol, isopentanol e PHB, um precursor de bio-plástico.

A folha que transforma luz solar em combustível agora esta sendo preparada para produção em massa e distribuição em todo o mundo

“Em princípio, temos uma plataforma que pode transformar qualquer molécula a jusante baseada em carbono“, disse Pamela Silver, professora de Bioquímica e co-criadora do sistema, “então isso tem potencial para ser incrivelmente versátil”.

Enquanto o estudo mostra que o sistema pode ser usado para gerar combustíveis utilizáveis, seu potencial não termina aí, disse Silver, que também é membro fundador do Instituto Wyss da Universidade de Harvard.


Fontes:
http://www.chem.info/news/2016/06/bionic-leaf-turns-sunlight-liquid-fuel

http://science.sciencemag.org/content/352/6290/1210

http://news.harvard.edu

Jetson TX2 – Plaquinha da Nvidia voltada para inteligência artificial

Não é um drone, um robô pequeno ou uma câmera com reconhecimento facial. Mas pode ser: a Nvidia está lançando o Jetson TX2, um computadorzinho que lembra o Raspberry Pi, mas que oferece o grande diferencial de ser focado em inteligência artificial. O dispositivo pode ser empregado em diversos tipos de projetos que precisam de alguma sofisticação, portanto.

Para tanto, o Nvidia Jetson TX2 sai de fábrica uma combinação bastante respeitável de recursos que, por sinal, representa uma grande evolução em relação ao Jetson TX1 (anunciado no final de 2015): processador de 64 bits com dois núcleos Cortex-A57 e outros dois Nvidia Denver 2, GPU de 1,3 GHz com arquitetura Pascal de 256 núcleos, 8 GB de RAM e 32 GB para armazenamento interno.

No aspecto da conectividade, o dispositivo vem com Wi-Fi 802.11ac e Bluetooth 4.1, além de suportar portas USB 2.0, USB 3.0, HDMI 2.0, Gigabit Ethernet, entre outros padrões.

Segundo a Nvidia, o Jetson TX2 tem praticamente o dobro da potência do Jetson TX1. E isso tudo vem acompanhado de mais eficiência no consumo de energia: são 7,5 W contra 10 W da geração anterior.

Com tamanho poder de fogo, essa plaquinha de 50 x 87 mm pode ser empregada em projetos de automação industrial, câmeras inteligentes, drones para filmagens profissionais, sistemas de monitoramento auxiliados por sensores e por aí vai. A Nvidia destaca que o Jetson TX2 consegue, por exemplo, decodificar imagens de duas câmeras trabalhando com 4K e 60 frames por segundo.

Na apresentação do produto, a Nvidia ressaltou que o Jetson TX2 pode atingir a taxa de 1,5 teraflop. De modo geral, a ideia é permitir que o equipamento baseado na placa execute tarefas de inteligência artificial, redes neurais, reconhecimento de voz e afins in loco, ou seja, sem depender exclusivamente de servidores externos ou serviços nas nuvens.

Não é por acaso que a Nvidia também anunciou o JetPack 3.0, um SDK para desenvolvimento de aplicações de inteligência artificial que traz suporte aos drivers gráficos mais recentes e a APIs para redes neurais, como TensorRT 1.0 e cuDNN 5.1.

É lógico que tudo isso faz o Jetson TX2 ser bem mais caro que outras plaquinhas que encontramos por aí: o kit do dispositivo entrou em pré-venda nos Estados Unidos pelo preço de US$ 599. As entregas começam neste mês.

PROFECIA CELESTINA – O FILME

Inspirado num antigo manuscrito peruano, A PROFECIA CELESTINA é uma parábola repleta de verdades fundamentais. O livro contém segredos surpreendentes . São as nove visões, que nos aproximam de uma nova e emocionante imagem da vida humana. A Profecia Celestina vai lhe trazer esperança e muitas surpresas. Você vai perceber como as previsões reveladas neste livro podem ser associadas aos fatos mais importantes do nosso século, e também ao nossos relacionamentos mais íntimos. Obras como esta iluminam nossa compreensão do futuro.

 

Link para livro na Saraiva: http://www.saraiva.com.br/a-profecia-celestina-2633360.html

Guia prático de HTML5

 

Introdução
Definições iniciais
HTML são siglas de Hypertext Markup Language.
A tradução em bom português é Linguagem de Marcação de Hipertexto. É uma linguagem usada para criar páginas paraWeb e com ela é possível criar as marcações no conteúdo de uma página.Uma página da web pode possuir itens como imagens, parágrafos, títulos, subtítulos,vídeos, tabelas, listas etc. E para criar cada um deles utilizamos elementos HTML queirão marcar e definir o tipo de item em questão. Esses elementos HTML são chamados de tags.Assim, existem tags para criar parágrafos, títulos, para definir imagens, quebra delinhas, enfim, para tudo que for feito em uma página web existe uma tag específica.Exemplos: para criar um parágrafo utiliza-se a tag <p>; para carregar uma imagem na página há a tag <img>; para criar tabelas há a tag <table>; para títulos existe a tag <h>;entre várias outras.Como é possível observar, tags são digitadas entre os sinais
menor que  (<) e maior qu (>). Grande parte das tags precisa, quando utilizada, ser fechada. A tag defechamento utiliza o caractere barra (/). Veja abaixo o exemplo do uso da tag <p> para definir um parágrafo.
<p> Curso de HTML5 – Com Silvio Ferreira </p>
Aqui há a tag <p> definindo um parágrafo, o texto (Curso de HTML5 – Com SilvioFerreira) e o fechamento da tag com o uso de </p>. O fechamento da tag é necessário para definir onde termina o parágrafo. Não é toda tag que precisa ser fechada. Por exemplo: a tag <br> é usada para definir uma quebra de linha. Ela não precisa ser fechada. Apenas define uma quebra de linha. No decorrer do livro há explicações detalhadas sobre o uso de diversas tags.
Tags, atributos e valores Uma tag pode possuir atributos e valores. Vejamos como exemplo o uso da tag<table> que é utilizada para criar tabelas:
<table border=”1”>
html5

LINK PARA DOWNLOAD: Clique Aqui

Senha: HTML5