Construindo sua PCB com EasyEDA

EasyEDA é gratis e fácil de usar para design de circuitos, simulação de circuitos e também para design de PCB que corre sobre o seu browser:

Link: https://easyeda.com

Anúncios

Arduino Based Home Automation Usando TV Remote

A Arduino Based Home Automation usando TV Remote é um projeto simples, onde um controle remoto de TV antigo é usado para controlar diferentes aparelhos.

Home Automation é um conceito em que um único dispositivo é usado para controlar muitos aspectos de uma casa, como ligar ou desligar aparelhos diferentes, monitoramento de temperatura, alarmes de incêndio, portas de garagem etc. Neste projeto, um controle remoto é usado para controlar (simplesmente ON e OFF) vários aparelhos ou dispositivos, conseguindo assim um sistema de automação residencial simples.

Os controles remotos são um dos dispositivos comumente encontrados em quase todas as casas. Eles nos ajudam a operar um aparelho como TV, Ar-condicionado, VCR, etc. A principal característica de um controle remoto é que ele é específico para um dispositivo. Por exemplo, uma unidade de controle remoto de TV só pode ser usada para essa TV correspondente.

Mas neste projeto, nós criamos uma automação doméstica baseada em Arduino usando TV Remote, onde um único controle remoto é usado para controlar 4 dispositivos diferentes (possível controlar mais dispositivos). O projeto é baseado no Arduino UNO e mais detalhes do projeto são mencionados abaixo.

Diagrama de circuito

Componentes necessários

  • Arduino UNO board
  • TSOP 1738 IR Remote Control Receiver
  • 1 KΩ Resistor X 4
  • 2N2222 NPN Transistor X 4
  • 1N4007 Diodo X 4
  • 12 V Relé X 4
  • Controle remoto
  • Placa de prototipagem (Painel de pão)
  • Fios de conexão
  • 12 V Fonte de alimentação

Descrição do Componente

Arduino UNO

Arduino UNO forma a principal parte controladora do circuito. A UNO tem 13 pinos de E / S digitais e, portanto, é possível controlar 13 dispositivos diferentes ao mesmo tempo. Se o requisito é controlar mais número de dispositivos, placas como Arduino Mega podem ser usadas.

TSOP1738

TSOP1738 é um módulo receptor para controles remotos IR com uma freqüência portadora de 38 KHz. Consiste em um detector de foto e demodulador de sinal em uma única embalagem e a saída pode ser usada diretamente por um microcontrolador.

Placa de relé de 4 canais

Um relé ajuda a controlar um aparelho grande com a ajuda de um microcontrolador. Neste projeto, uma placa de relé de 4 canais é usada para controlar quatro cargas.

Os componentes necessários, como o LED de alimentação, o transistor de comutação, o resistor de limitação de corrente de base, o relé no LED, o diodo flyback e os cabeçalhos macho para conexões de alimentação e entrada já estão incorporados na placa.

 

Cuidado : devemos ter muito cuidado ao usar um relé com alimentação de rede CA.

Controle remoto

Um mini controle remoto padrão é usado neste projeto para fornecer as várias entradas de chave. O controle remoto possui todas as teclas numéricas, volume para cima, baixo, canal para baixo, menu e algumas teclas adicionais.

 

Como projetar a automação residencial baseada em Arduino usando o circuito remoto da TV?

A partir do diagrama de circuito, é claro que o design do circuito é muito simples e requer muita conexão. O design do circuito é explicado abaixo.

O componente principal do projeto é o receptor TSOP1738. É um dispositivo de três pinos, onde os três pinos são GND, VS e OUTPUT. O pino VS está conectado à fonte de 5V. O pino de saída está conectado ao Pino 11 (ou a qualquer outro pino digital) do Arduino UNO.

Estamos usando um módulo de retransmissão de 4 canais neste projeto para controlar 4 cargas diferentes. Uma vez que a placa possui todos os componentes necessários, como transistores, LEDs, etc., tudo o que precisamos fazer é conectar as 4 entradas na placa de relé a 4 pinos de E / S digitais da Arduino. Uma conexão mais detalhada pode ser encontrada no diagrama de circuito.

Trabalho da Arduino baseado em automação residencial usando TV Remote

A automação residencial é um conceito de demanda onde um único dispositivo controlará diferentes aparelhos de uma casa. Além disso, diferentes aspectos como temperatura, umidade, segurança etc. também podem ser monitorados usando esse dispositivo.

Neste projeto, um sistema de automação residencial simples, no qual o sistema controla 4 aparelhos diferentes com a ajuda de um controle remoto de TV. O trabalho do projeto é explicado aqui.

O principal componente do projeto é TSOP1738 IR Receiver Module. Este módulo possui um receptor de foto incorporado, filtro de passagem de banda e desmodulador e a saída do módulo pode ser prontamente lida por um microcontrolador.

TSOP1738 suporta uma freqüência portadora de 38 KHz. Assim, a freqüência portadora da fonte, ou seja, o controle remoto deve estar na faixa de 38 KHz para que ele se desmodule.

Primeiro, descodificaremos os dados do controle remoto usando TSOP1738 e Arduino UNO. Para isso, precisamos usar uma biblioteca especial chamada “IRremote”. Precisamos baixar esta biblioteca em https://github.com/z3t0/Arduino-IRremote e colocá-la na pasta bibliotecas do Arduino.

O próximo passo é decodificar os dados de cada tecla do controle remoto. Para isso, vamos usar algumas funções na biblioteca “IRremote”. O programa a seguir nos ajudará a decodificar os dados de cada chave do controle remoto. NOTA: O seguinte programa é um esboço de exemplo da biblioteca “IRremote”.

#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
}
delay(100);
}

https://gist.githubusercontent.com/elktros/59298a69a71bb16cac9c879d08677e9b/raw/9513ce93ca53c42f0b31d98b260c3d0123f0c3f3/Arduino%20based%20Home%20Automation%20using%20TV%20Remote%20

Quando este esboço é executado no Arduino, podemos monitorar os dados no terminal serial para cada tecla pressionada no controle remoto. A seguinte imagem mostra os valores de HEX descodificados das teclas 1 a 9, 0 e a tecla de energia, respectivamente.

 

Quando este esboço é executado no Arduino, podemos monitorar os dados no terminal serial para cada tecla pressionada no controle remoto. A seguinte imagem mostra os valores de HEX descodificados das teclas 1 a 9, 0 e a tecla de energia, respectivamente.

 

#include <IRremote.h>
const int RECV_PIN=11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define IN1 3
#define IN2 4
#define IN3 5
#define IN4 6
bool i=false;
bool j=false;
bool k=false;
bool l=false;
bool m=false;
void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
irrecv.enableIRIn();
irrecv.blink13(true);

}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value,HEX);
delay(100);
/////////////////////////
if(results.value==0x40BD00FF)
{
i=!i;
digitalWrite(IN1, i);

}
////////////////////////
if(results.value==0x40BD807F)
{
j=!j;
digitalWrite(IN2, j);

// delay(200);
}
if(results.value==0x40BD40BF)
{
k=!k;
digitalWrite(IN3, k);

// delay(200);
}
//////////////////////////////
if(results.value==0x40BDC03F)
{
l=!l;
digitalWrite(IN4, l);

// delay(200);
}
//////////////////////
if(results.value==0x40BD28D7)
{
m=!m;
digitalWrite(IN1, m);
digitalWrite(IN2, m);
digitalWrite(IN3, m);
digitalWrite(IN4, m);

// delay(200);
}
irrecv.resume(); // Receive the next value
//delay(100);
}
}

 

Aplicação

  • Um projeto simples, onde uma automação residencial baseada em Arduino usando TV Remote é projetada aqui, que usa o Arduino UNO, o Relay e o antigo Remote TV.
  • O projeto é demonstrado com 4 cargas, mas pode ser aumentado para ainda mais cargas.
  • Como o dispositivo de controle é um controle remoto de TV, o projeto do projeto é muito simples e a aplicação também é muito fácil.

Vídeo de construção e saída

 

Link: http://www.electronicshub.org/arduino-based-home-automation-using-tv-remote/

Como usar 5V Relay no Arduino

Arduino é uma placa de prototipagem baseada em microcontroladores que funciona com uma pequena energia DC. Um Relé é um dispositivo que ajuda os microcontroladores (ou placas baseadas em microcontroladores) como o Arduino para ligar ou desligar aparelhos domésticos diferentes, como motores, luzes, aquecedores de água, televisão e ventiladores etc.

Hoje, o Arduino está sendo usado para uma ampla gama de aplicações, como LEDs de controle, temperatura de monitoramento, dados de registro e ativação de motores etc. Outra tarefa importante que pode ser realizada pelo Arduino é controlar um relé de 5V para operar aparelhos e dispositivos de alta tensão AC .

 

A família de microcontroladores Arduino, como UNO, Nano e Mega, etc. pode ser programada para controlar um relé de 5V simples, ou seja, ligue ou desligue no caso de pressionar um botão, lendo o valor da temperatura de um termistor ou apenas configurando um cronômetro predefinido.

 

Neste projeto, veremos um circuito simples onde um Arduino UNO controlará um relé de 5V, que por sua vez será uma lâmpada.

Nota: Utilizamos o Arduino UNO neste projeto, pois é mais popular do que outras placas Arduino e iniciantes em eletrônicos podem usá-lo facilmente. Se você tiver qualquer outro quadro como Arduino Nano ou Arduino Mega, você pode usá-lo sem qualquer incômodo.

Cuidado: Vamos conectar 240V Alimentação de rede (ou 110V dependendo de onde você mora) para o módulo de relé 5V para ligar uma lâmpada. Você deve ser muito cuidadoso e cauteloso ao usar a rede elétrica. Se você tem até a menor dúvida sobre a ligação, não hesite em obter ajuda de um profissional.

Diagrama de circuito

Vejamos o diagrama de circuito para o projeto. Embora tenhamos usado um módulo de retransmissão 5V, as conexões neste diagrama de circuito descreverão a configuração completa.

Usando 5V Relay on Arduino Circuit Diagram

Componentes Necessários 

  • Arduino UNO (ou qualquer outro quadro Arduino)
  • Relé 5V
  • Diodo 1N4007
  • BC547 – Transistor NPN
  • LED vermelho (pode ser usado como LED aceso)
  • LED verde (pode ser usado como um LED de relé ON)
  • 2 x 1K Ohm Resistors (1/4 W – para LEDs vermelhos e verdes)
  • Luminária
  • Fios para conexão de componentes de tensão CC
  • Fios para conexão de rede CA e lâmpada

Descrição do Circuito

Vejamos agora como o circuito foi projetado. A primeira coisa é que usamos um relé de 5V neste projeto. Isso torna mais fácil, pois o Arduino pode ligar o relé diretamente. Se você usou um relé de 12V como usamos neste projeto Arduino Relay Control , você precisa usar uma fonte de alimentação separada para o relé.

Chegando ao design do circuito, é muito simples, pois usamos um módulo de relé de 5V e não os componentes individuais. Embora o diagrama de circuito explique as conexões detalhadas, praticamente não precisamos fazer todas as conexões.

A maioria dos módulos de relé (seja 5V ou 12V) virá com a conexão acima mencionada e, portanto, tudo o que você precisa é fornecer energia ao módulo de relé, ou seja, 5V e GND e conectar o sinal de controle do Arduino ao pino de controle na placa de relé.

Chegando à parte da carga, ou seja, a lâmpada, o fio quente da rede elétrica está conectado a um terminal da lâmpada. Outro terminal da lâmpada está conectado ao contato normalmente aberto (NO) do relé 5V. Finalmente, o fio neutro da rede elétrica está conectado ao contato comum (COMM) do relé.

Um pequeno sensor de luz na forma de LDR (Light Dependent Resistor) é usado para ligar ou desligar a luz automaticamente. A saída do sensor LDR é dada ao pino de entrada analógica A0.

Descrição do Componente

Retransmissão

A vantagem de usar um relé de 5V neste projeto é que a fonte de alimentação para o relé pode ser diretamente fornecida pela própria placa Arduino UNO. Vejamos agora alguns conceitos básicos de um relé. Um relé é um tipo de switch que atua como uma interface entre microcontroladores e AC Loads.

Retransmissão

Um único relé Single Pole – Single Throw (SPST), como o usado neste projeto, consiste em 5 Terminais: 5V, GND, Normalmente Abertos (NO), Normalmente Fechar (NC) e Comum (COMM). Uma vez que precisamos controlar este relé com a ajuda do Arduino, um transistor é usado com um pino adicional chamado Pin de controle no módulo de retransmissão.

Pinos do relé 5VTrabalho do Projeto

Um projeto simples, no qual Arduino UNO controla um relé de 5V, é explicado aqui. O funcionamento do projeto baseia-se no funcionamento do Relé e na capacidade do Arduino para controlar o relé. Vamos discutir o funcionamento do projeto.

Como mencionado anteriormente, ao conectar Arduino com módulo de retransmissão de 5V, pretendemos operar uma carga CA como uma lâmpada. Em vez de usá-lo diretamente, nós criamos uma pequena aplicação onde um LDR é usado para detectar a intensidade da luz e ligar e desligar automaticamente o relé.

Sob condições normais de iluminação, a saída do LDR estará na faixa de 80 – 90 (o intervalo é 0 – 255). Quando as condições de iluminação ficam escuras (pode ser feito cobrindo o LDR com mão), a saída do LDR irá pular para 130 – 140. Essa condição pode ser usada para disparar o Relé 5V e ligar a luz.

Vantagens e desvantagens

Vantagens: a vantagem principal e importante de conectar um relé de 5V com o Arduino é que ele pode ser alimentado pelo próprio Arduino.

Desvantagens : um relé baseado em transistor pode não ser ideal para uso prolongado, pois sempre haverá ruído na bobina do relé. Uma opção adequada será usar isolamento adicional como um opto-isolador ou eliminando completamente o relé eletromecânico e substituindo-o pelo relé de estado sólido.

Aplicações

  • Interfacing a 5V Relay with Arduino abre a porta para uma grande quantidade de aplicações. Embora a principal tarefa do relé seja controlar uma carga, como esse relé está sendo operado pelo Arduino torna um projeto interessante.
  • Algumas das técnicas e métodos com os quais podemos controlar o relé são: Bluetooth, controle de infravermelhos (IR), Transmissor de RF – Par de Receptor ou mesmo usando a Internet.
  • A Arduino Home Automatica requer a combinação de Arduino e muitos módulos de relé (dependendo do número de cargas).

Vídeo de construção e saída

 

 

 

Fonte: http://www.electronicshub.org/use-5v-relay-arduino/

Ligação ao Arduino dispositivos de Delphi através de uma porta serial COM simples.

Arduino com Delphi XE8 ~ LiquidCrystal e Temperatura

 

Ligação ao Arduino dispositivos de Delphi através de uma porta serial COM simples.

> Função

  • LED On / Off controle do interruptor
  • Leia Temperatura do sensor
  • Enviar mensagem para LiquidCrystal

Código Completo para Download: Projeto Delphi e Código Arduino.

 

 

 

Fonte: http://c2design5sh.blogspot.com.br/2015/08/iot-arduino-with-delphi-xe8.html

 

 

 

 

AUTOMAÇÃO NO CULTIVO DE MICROALGAS

Título: AUTOMAÇÃO NO CULTIVO DE MICROALGAS
Autores: SANTOS, Cainã Santana dos
COSTA, Tiago Marcelino Ferreira da
Palavras Chave: Automação
Arduino
Biodiesel
Microalgas
Engenharia de Controle e Automação
Data: 1-Ago-2017
Resumo: Grande poluição causada pelo uso de combustíveis fósseis e o alto custo de extração e tratamento deste tipo de combustível tem levado à busca por encontrar fontes alternativas de combustíveis por causa da grande poluição causada pelo uso de combustíveis fósseis e do alto custo de extração e tratamento deste tipo de combustível. O cultivo de microalgas tem aumentado para pesquisas cujo o objetivo é produzir o biodiesel, por não causar danos ao meio ambiente, por ser economicamente mais viável e ocupar menos espaço para ser produzidos. Diante do exposto, este trabalho teve como objetivo elaborar um processo de automação de medição e supervisão do processo de produção de microalga Chlorella minutissima para a produção de biodiesel. Para tal, foi elaborado um sensor para executar leituras de absorbância do meio de cultivo no laboratório de Qualidade, Meio Ambiente e Bioenergia – USP. Os cultivos são realizados em triplicata, em fotobiorreatores de acrílico com 40 l de capacidade. Um pequeno volume do meio de cultivo é periodicamente drenado, por meio de uma bomba esguicho de água de 12 V, para dentro do sensor. O aparato é constituído dentro de uma caixa metálica e no interior desta caixa passa um tubo de PVC de 1/2” que recebe aberturas nos 2 lados onde são alocados 2 quadrados de vidro de 1 cm2 para o encaixe, de um lado, do Led RGB como emissor de luz que trabalha nos comprimentos de onda das cores vermelha (690 nm) e verde (540 nm) e, do outro lado, o LDR como coletor .As informações geradas pelos dispositivos são processadas pelo microcontrolador Arduino ATmega integrado com shild Ethernet W5100, com sensor de temperatura DS18B20 e um módulo de sensor de pH para solução, e são exibidas em um supervisório. Desta forma, a monitoração da evolução do processo de cultivo das microalgas pode ser visualizada remotamente. Foram realizados três analises, duas contendo uma quantidade de microalgas e uma somente de água, a solução de água se mostrou 0% de absorbância e outras duas demostrou valores mais significativos.
URI: http://hdl.handle.net/123456789/496
Aparece nas Colecções: Engenharia de Controle e Automação

Sistemas Operacionais de Tempo Real – Timers

Introdução

Estava desenvolvendo algumas idéias para um novo artigo técnico, quando encontrei perdida, no fundo de uma gaveta virtual, uma biblioteca de rotinas em C que desenvolvi há algum tempo. É uma preciosidade!!! Eu mesmo já utilizei essas funções em vários projetos. Estou aqui disponibilizando esse material para você.

Vou contar um pouco a história dessa biblioteca. Houve uma época em que o meu trabalho era focado em projetos de desenvolvimento de sistemas dedicados baseados em processadores da família 8051. Desenvolvemos uma célula de carga digital, um sistema de monitoramento ambiental, um mini CLP, um sistema de monitoramento e controle de um processo químico, sistema de controle de elevadores etc. Daí surgiu a ideia de elaborar funções e rotinas padronizadas, pois quase todos esses sistemas tinham alguma coisa em comum, como por exemplo teclas, displays etc. e deveriam operar em tempo real. O objetivo foi diminuir o tempo gasto para o desenvolvimento de um novo projeto. Antes de prosseguir, recomendo a leitura do artigo Sistemas Operacionais de Tempo Real – Introdução, onde são abordados alguns conceitos que serão aplicados neste artigo.

É necessário apresentar aqui alguns esclarecimentos a respeito da filosofia usada na elaboração dessas rotinas. Eu parti do princípio de que os nossos sistemas são de tempo real e que realizam periodicamente algumas funções rotineiras, tais como verificar um teclado, atualizar displays, administrar LEDs de sinalização, realizar medidas, etc. Outras ações são tomadas por demanda, ou seja, apenas quando ocorrem. Essas demandas podem ser periódicas ou assíncronas (aleatórias). Daí já reconhecemos o primeiro elemento a ser implementado no nosso Sistema Operacional: um temporizador (Timer). Para quem não sabe, os processadores tradicionais da família 8051 têm apenas 2 temporizadores, enquanto outras versões oferecem pelo menos mais um. Antes de continuar, acho interessante recordarmos a arquitetura dos microcontroladores da família MCS-51 e os modos de operação dos seus temporizadores. Na parte final desse artigo será desenvolvido um pequeno exemplo prático, cujo código poderá ser compilado e simulado.

TIMERS da família MCS-51

Para ilustrar o que será abordado aqui, vamos nos referenciar aos microcontroladores de fabricação da ATMEL, com a arquitetura baseada no 8051, cujo documento completo você pode consultar aqui: ATMEL 8051 Microcontrollers Hardware Manual. Na Figura 1 podemos observar a arquitetura interna de um microcontrolador AT89S8253, que continua sendo produzido, mostrando em destaque o bloco dos temporizadores.

Timers - Diagrama em blocos da arquitetura interna de um microcontrolador
Figura 1: Diagrama em blocos da arquitetura interna de um microcontrolador AT89S8253

 

Sem entrar nos detalhes referentes aos contadores / temporizadores Timer 0 e Timer 1 dessa família de microcontroladores, basta dizer que eles podem ser programados para funcionarem em 4 modos distintos de operação:

  • Modo 0: O temporizador é configurado como um contador de 13 bits, que pode receber um valor inicial e conta para cima. Na transição do valor limite superior 0x1FFF para  0x0000, é acionado um flag de sinalização;
  • Modo 1: Similar ao modo 0, porém é configurado o contador para 16 bits;
  • Modo 2: O temporizador é configurado como um contador de 8 bits, com um registro de 8 bits associado para recarregar o valor inicial automaticamente. Na transição, é acionado um flag;
  • Modo 3: Nesse modo de operação, o Timer 0 opera como 2 contadores distintos de 8 bits, enquanto o Timer 1 nesse modo de operação permite que se congele a contagem.

Convenções para o uso dos Timers

Para o objetivo de projetar uma biblioteca com rotinas padronizadas, foi definido que o Timer 0 seria o temporizador padrão do sistema e o Timer 1 também poderia ser usado para isso, se acaso não fosse necessário usá-lo para gerar baud-rate da comunicação serial.

O período de interrupção do temporizador deve ser o maior possível e baixo o suficiente para atender às necessidades prioritárias do sistema. Para que se entenda o motivo disso, observe o seguinte exemplo:

Suponhamos que:

  • Um microcontrolador que, por restrições de sua arquitetura e do oscilador (clock) utilizado, possa executar no máximo 10.000 instruções por segundo;
  • Uma rotina de interrupção provocada pelo temporizador execute 20 instruções na média a cada interrupção.

Se numa hipótese absurda o temporizador for dimensionado para gerar 500 interrupções por segundo, a rotina de interrupção vai consumir todo o tempo disponível para executar as instruções do microcontrolador (500 x 20 = 10.000)! Se por exemplo esse número puder cair para 50 interrupções por segundo, sem prejudicar a operação do sistema, a rotina de interrupção vai consumir apenas 10% do total disponível (1.000), deixando os outros 90% para as demais atividades do microprocessador.

A compreensão do que foi ilustrado nesse exemplo é fundamental. As rotinas que são executadas com maior frequência devem ser otimizadas para serem executadas no menor tempo possível e na menor frequência possível também. Voltando ao exemplo das 500 interrupções, se acaso a rotina de interrupção executasse apenas 18 instruções ao invés das 20, já sobrariam 1.000 instruções por segundo que poderiam ser executadas por outras atividades. Em muitos casos isso é suficiente. Note que para esse exemplo em particular, só analisamos uma das soluções possíveis para viabilizar a operação do sistema. Poderia-se também lançar mão de outros recursos, como por exemplo aumentar a frequência do oscilador do microcontrolador.

Assim a frequência da interrupção do nosso timer deve ser dimensionada de modo que:

  • A função que deverá ser executada com maior frequência possa ser atendida pelas interrupções do timer no menor tempo necessário para isso (e maior possível), definindo assim as especificações do timer de referência do sistema;
  • Outras temporizações mais lentas sejam realizadas como múltiplos da interrupção do timer e implementadas por meio de temporizadores virtuais de software.

Um temporizador virtual de software é uma estrutura no programa em que a cada temporizador é associado um valor inicial, que se traduz num número inteiro de interrupções do Timer 0, e um flag de sinalização. A cada interrupção do Timer 0, o temporizador de software é decrementado e testado se zero. Se for zero, é ligado o flag para avisar que a contagem de software foi terminada e o temporizador é reinicializado para o seu valor inicial. O tratamento do final de contagem é realizado no programa principal, testando-se o flag e reinicializando-o depois.

O timer de referência deverá funcionar no modo 2 de operação. Observe que a programação do Timer 0 depende da frequência de clock do microcontrolador, do fator de divisão do clock, que nas CPUs tradicionais do MCS-51 é de 12 vezes, e da frequência requerida de interrupção. Um último limitante é que o valor inicial do Timer nessa configuração é de no máximo 255 (8 bits). Na biblioteca também foi desenvolvido um padrão para a programação do Timer 1, especialmente se não for usado para gerar baud-rate.

Detalhes da Biblioteca em C

O código em C a seguir foi desenvolvido para o compilador KEIL C51 μVision, na versão de avaliação. Se você quiser testar o programa exemplo que desenvolveremos no final deste artigo, recomendo que você baixe e instale esse programa.  O arquivo de biblioteca com os trechos de código em C para a utilização dos timers de forma padronizada está dividido em segmentos. O primeiro segmento define uma série de constantes, que podem ser ajustadas conforme as especificações do projeto. Veja o trecho do código a seguir.

Nesse código há alguns parâmetros que precisam ser alterados, conforme o projeto:

  • #define   FREQUENCIA_DO_CLOCK_DA_CPU 12.0e+6 // Hz —->  12 MHz, por exemplo.

Inicializar essa constante com o valor do clock do seu microcontrolador.

  • #define   FATOR_DE_ESCALA_CLOCK_TIMER    12.0f     // Divide o clock por 12

Valor do pre-scaler.

  • #define   FREQUENCIA_DE_INTERRUPCAO_TIMER_0 5e+3  // Hz —- > 5 kHz, por exemplo.

Define a frequência da interrupção do timer.

São apenas esses três parâmetros que devem ser inicializados. Não é necessário alterar outras partes do código!

O segundo segmento da biblioteca refere-se às inicializações dos timers, conforme o modo de operação, e os comandos para iniciar a operação do temporizador. Observe que nesse segmento é mostrada a rotina principal (void main(void)) e indicado onde devem ser inseridos os trechos do código.

O terceiro segmento mostra como são definidas as rotinas de interrupção.

EXEMPLO

A seguir vamos desenvolver o nosso programa de exemplo. Nesse programa, será programado o Timer 0 no modo 2 de operação, com o microcontrolador operando com um clock de 4 MHz e uma frequência de interrupção de 1,5 kHz. Confira o código no quadro abaixo.

Se você quiser simular o programa exemplo acima e explorá-lo um pouco mais, siga os seguintes passos:

  • Instale o KEIL C51 μVision;
  • Baixe o arquivo Testa_Timer.zip;
  • Instale os arquivos de Testa_Timer.zip num diretório para testes;
  • Navegue até o diretório de testes e acione o arquivo Testa_Timer.uvproj (2 “clickes”)  (Figura 2).

Timers - Arquivos no diretório de teste
Figura 2: Arquivos no diretório de teste

Nesse instante deverá abrir o programa Keil e a tela deverá ser a retratada na Figura 3. Esse painel permite navegar no código em C, editá-lo e compilá-lo. Não é necessário fazer isso para realizar a simulação, mas você poderá posteriormente alterar alguns parâmetros do código e testar o programa com as novas alterações.

Timers - Programa Keil pronto com o programa exemplo carregado
Figura 3: Programa Keil pronto com o programa exemplo carregado

A seguir coloque o programa no modo de Debug (Figura 4, Figura 5 e Figura 6) para que se possa iniciar a simulação.

timers - Selecionando o modo Debug do programa
Figura 4: Selecionando o modo Debug do programa

Antes de entrar no modo de depuração, aparece na tela a mensagem da Figura 4. “Clicke” no  “OK” para continuar.

Timers - Aviso de que no modo de avaliação, o código fica limitado a 2K
Figura 5: Aviso de que no modo de avaliação, o código fica limitado a 2K

timers - Modo Debug de operação
Figura 6: Modo Debug de operação

 

Observe que já estão destacados os painéis de monitoramento do Timer 0 e do Port 3, cujo bit 1 deverá ser alternado a cada término de contagem do temporizador de software. As duas variáveis principais (bFlagTimerDeSoftware e nTimerDeSoftware) poderão ser monitoradas na janela Watch 1 durante a simulação.

É possível utilizar as teclas de função F11 para executar o programa passo a passo ou F5 entrar em execução. Recomendo que você inicie a simulação utilizando o passo  a passo para poder observar detalhadamente como que funciona o mecanismo de operação desse programa.

Resumo

Neste artigo técnico foram apresentados alguns conceitos relativos à utilização de temporizadores de hardware de um microcontrolador associados a temporizadores de software para a implementação de arquiteturas de software típicas de  sistemas operacionais de tempo real. Também foi apresentada e explicada uma biblioteca padronizada para a utilização dos timers de microcontroladores da família MCS-51, codificada em C, para ser compilada no programa da Keil. Depois foi desenvolvido um programa exemplo para que você possa simular o que foi apresentado e observar os detalhes dessa implementação.

Este artigo é o segundo da série de artigos que abordam algumas funções comuns em projetos de sistemas embarcados de tempo real. Confira os demais artigos (em breve).

Sistemas Operacionais de Tempo Real

Bibliotecas de funções e rotinas padronizadas em linguagem C para MCS-51

  • Timers (este artigo) – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso dos Timers do MCS-51;
  • Displays de 7 segmentos – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso em displays de 7 segmentos;
  • Teclados Matriciais – É apresentada uma biblioteca desenvolvida em linguagem C para varredura, leitura, debounce, identificação da tecla acionada e desvio para a rotina de tratamento. A forma como as rotinas foram escritas, permitem sua fácil reutilização em outros projetos;
  • Periféricos – É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso de alguns periféricos, tais como conversores A/D, sensor de temperatura e memórias seriais.

Fonte: https://www.embarcados.com.br/rtos-timers/

Curso de programação em Arduíno para automação -EMENTA

Já pensou em projetar a sua própria casa do futuro, desenvolver um braço robótico ou sistemas de automação para as mais diversas aplicações, sejam elas industriais, residenciais, ou por diversão ? Controlar a iluminação e ventilação de seu quarto usando seu smartphone ! Nós como fãs do software livre não poderíamos deixar de ministrar um curso de programação para Hardware Livre utilizando a plataforma de prototipagem eletrônica Arduíno.

Para realizar este curso são necessários alguns pré-requisitos como ter noções de lógica de programação e conhecimentos básicos de HTML , ter noções de eletrônica.

Tópicos abordados neste treinamento :

  • Introdução
  • Conhecendo a plataforma Arduíno.
  • Base da programação em Arduíno.
  • Estrutura de comentários.
  • Funções base.
  • Pinmode.
  • Entrada e saída de dados 1
  • Portas digitais.
  • Portas Analógicas.
  • Tempo.
  • Bibliotecas.
  • #INCLUDE.
  • #DEFINE.
  • Variáveis.
  • Classe de variáveis.
  • Tipos de dados e modificadores.
  • Funções.
  • Operadores de comparação.
  • Operadores booleanos.
  • Operadores de incremento e decremento.
  • Estruturas de controle de fluxo.
  • Comandos If, Else, For.
  • Comandos Switch Case, While, Do While.
  • Comunicação serial.
  • Operadores matemáticos.
  • Trigonometria.
  • Entrada e saída de dados 2
  • Sinais PWN.
  • PulseIn  – pino, valor, tempo de resposta.
  • Shields para Arduíno e seu uso.
  • Sensores para Arduíno e seu uso.
  • Projetos em Arduíno.
  • Comandando um motor de passo.
  • Programação Ponte H
  • Conectando e configurando display lcd .
  • Projeto de Automação Residêncial.

A carga horária total deste curso é de 40 horas.

FONTE: http://www.linuxforce.com.br/curso-de-arduino-para-automacao/

Do Paper Circuit à programação de Arduino com Scratch: uma sequência didática para aprendizagem do conteúdo de energia nos anos iniciais do Ensino Fundamental

toucboard2

Elaine Silva Rocha Sobreira1 , Alessandra Aparecida Viveiro2 , João Vilhete Viegas d’Abreu3 1Programa de Pós-Graduação Multiunidades em Ensino de Ciências e Matemática – Universidade Estadual de Campinas, Unicamp – Campinas, São Paulo, Brasil 2Faculdade de Educação, Universidade Estadual de Campinas, Unicamp – Campinas, São Paulo, Brasil 3 Núcleo de Informática Aplicada à Educação – NIED, Universidade Estadual de Campinas, Unicamp – Campinas, São Paulo, Brasil elainesilvarocha@gmail.com; alessandraviveiro@gmail.com; jvilhete@unicamp.br

Abstract.

The present article describes a didactic sequence, developed in science classes of the 5th grade of elementary school in a public school located in a city in the Greater São Paulo, Brazil. The objective was to develop strategies so that students could expand their knowledge on the subject of energy through the installation and programming of electrical circuits using low cost or recycled materials and also prototyping boards. The work had as its starting point the construction of paper circuits following to build up circuits with sensors and actuators using the Arduino board programmed for Scratch utilization and Makey Makey shield as well, for power conduction studies. Resumo. O presente artigo descreve uma sequência didática, desenvolvida nas aulas de ciências do 5º ano do Ensino Fundamental, em uma escola pública de um município da Região Metropolitana de São Paulo, Brasil. Tem por objetivo relatar uma prática pedagógica desenvolvida em uma escola pública, que procurou contribuir para que os estudantes ampliassem seus conhecimentos em relação ao conteúdo de energia através da montagem e programação de circuitos elétricos utilizando materiais de baixo custo ou reaproveitados, além de placas de prototipagem. O trabalho teve como ponto de partida a construção de circuitos de papel, seguindo para a construção de circuitos com sensores e atuadores utilizando a placa Arduino programada com Scratch, além da placa Makey Makey para estudos de condução de energia. 1. Introdução e Justificativa A necessidade de um acesso mais amplo dos indivíduos à cultura científica justifica a defesa do ensino de Ciências nos diferentes níveis de escolarização, desde os anos iniciais. Para se desenvolver um aprendizado efetivo, faz-se necessário a superação de aulas meramente expositivas, pautadas na memorização, avançando para um trabalho que envolva práticas diversificadas, contemplando, por exemplo, a abordagem ciência-tecnologia-sociedade(- ambiente) (CTS/CTSA), a experimentação em uma abordagem investigativa e a exploração das tecnologias digitais de informação e comunicação (TDIC) (Viveiro & Zancul, 2014). O potencial pedagógico das novas tecnologias, apesar de ser reconhecido, ainda carece de aprofundamento nas práticas pedagógicas. Almeida e Valente (2012) reforçam a necessidade de se desenvolver práticas de web currículos, em que as TDIC estejam imbricadas no desenvolvimento do currículo em atividades pedagógicas, de modo que estes recursos sejam utilizados no processo de aprendizagem, extrapolem as fronteiras da sala de aula, superando os currículos apresentados apenas nos livros e estabelecendo relações com as práticas cotidianas nos diversos espaços de saber que envolvem a sociedade. Nesta mesma linha, estes autores, em outro estudo, abordam a necessidade de se fazer a integração da tecnologia ao currículo com base nas facilidades oferecidas pela Web 2.0, num contexto no qual a convergência das trajetórias das tecnologias e do currículo é totalmente viável (Almeida & Valente, 2011). Essa relação das TDIC com o currículo pode se tornar muito significativa quando aliada à aprendizagem dos conteúdos de ciências, dentro de uma abordagem CTS/CTSA. A partir de diversos autores, Santos (2007, p. 2) afirma que um currículo organizado na perspectiva CTS tem como objetivo básico propiciar “a educação científica e tecnológica dos cidadãos, auxiliando o aluno a construir conhecimentos, habilidades e valores necessários para tomar decisões responsáveis sobre questões de ciência e tecnologia na sociedade e atuar na solução de tais questões”. O ensino de ciências deve trabalhar nesta perspectiva desde os anos iniciais, buscando a formação integral do indivíduo. Para tanto, alguns temas são bastante favoráveis. É o caso do tema energia, a partir do qual pode-se integrar as TDIC com o currículo de ciências, permitindo o desenvolvimento de uma aprendizagem prática, reflexiva e criativa, possibilitando a criação de espaços e recursos que propiciem um diálogo “sobre as questões energéticas, em diferentes perspectivas, conhecimentos e experiências” (Nishida et al., 2014, p. 668). Na literatura científica, há alguns trabalhos interessantes que integram o uso das TDIC, incluindo placas de prototipagem, para o ensino e aprendizagem envolvendo os conteúdos relacionados à energia. Ramos e Andrade (2015), por exemplo, tiveram como objetivo o desenvolvimento de um instrumento eletrônico de baixo custo que fosse capaz de medir o consumo de energia elétrica e de água de forma simultânea, de forma a auxiliar o ensino de Engenharia por meio da construção de um objeto de ensino para replicação em oficinas. Já Leal e colaboradores (2015) desenvolveram um dispositivo robótico (protótipo) com objetivo de conseguir maior aproveitamento de energia solar capturada por placas fotovoltaicas. Machado e Queiroz (2015) trabalharam com alunos dos anos iniciais do Ensino Fundamental, desenvolvendo uma sequência de atividades. Partiram de uma experiência de condução de eletricidade utilizando uma batata doce para acionar uma calculadora e acender um LED. Em seguida, houve a construção de uma maquete controlada por Arduino, envolvendo fenômenos físicos e tecnológicos referentes à energia elétrica. Na última etapa, discutiram sobre atitudes que promovem a economia de energia elétrica e formas alternativas de produção.

Tendo em vista esses pressupostos, este texto tem por objetivo relatar uma prática pedagógica desenvolvida em uma escola pública, que procurou contribuir para que os estudantes ampliassem seus conhecimentos em relação ao conteúdo de energia através da montagem e programação de circuitos elétricos utilizando materiais de baixo custo ou reaproveitados, além de placas de prototipagem. Todos os 22 alunos envolvidos no processo já tinham um contato prévio com o ambiente de programação Scratch através da criação de animações, porém não conheciam a possibilidade de integração com placas físicas como o Arduino e Makey Makey, sendo estes recursos totalmente desconhecidos pelos alunos, os quais tiveram o primeiro contato à partir deste trabalho. Destaca-se, aqui, a fase inicial do trabalho, voltada às primeiras aproximações com conceitos e práticas. O trabalho se aproxima daquele desenvolvido por Machado e Queiroz (2015), as quais iniciaram com uma atividade concreta (condução de eletricidade por batata doce) e pela utilização de vídeos para enriquecer a discussão do tema, seguindo para a construção com Arduino. O diferencial do trabalho aqui relatado está na integração de recursos variados, com o intuito de abordar diferentes aspectos que envolvem o tema energia. Este artigo foi organizado da seguinte forma: a seção 2 apresenta a criação de circuitos elétricos para compreensão do tema de energia abordando os “Paper Circuits”, a placa Arduino com uso de sensores e atuadores, as placas Makey Makey e o Arduino programado com Scratch 2.0 offline. A seção 3 descreve a sequência didática e a seção 4 apresenta os resultados e discussões. Por fim, a seção 5 traz considerações e propostas para trabalhos futuros. 2. Criação de circuitos elétricos para compreensão do conceito de energia Pensando no contexto de ensino de ciências para crianças, é importante trabalhar com vivências, propiciar situações para que coloquem a “mão-na-massa”, favorecendo a construção de significados para os fenômenos observados. Nesse sentido, para a compreensão de como se dá a dinâmica de funcionamento de um circuito elétrico, buscou-se a utilização de materiais acessíveis e seguros para os alunos manipularem e que fornecessem uma diversidade de possibilidades. Materiais como circuitos de papel e o uso de sensores e atuadores conectados na placa Arduino permitem vivenciar desde a ligação de um simples LED até a geração de energia por meio do uso de placas fotovoltaicas e motores com hélices de energia eólica. O Makey Makey, por sua vez, permite experiências criativas de condução de energia. A seguir, descreve-se brevemente algumas possibilidades de uso destes materiais e a facilidade de programação do Arduino através do Scratch 2.0 offline, tendo em vista a importância da utilização das novas tecnologias digitais e da programação para “envolver o aluno em atividades participativas, que estimulem seu raciocínio, em consonância com uma prática formativa e não meramente armazenadora de informações” (Oro, Pazinato & Gross, 2015, p.105). 2.1. Criação de circuitos de papel Os circuitos de papel, ou “Paper Circuits”, foram difundidos através do trabalho de Jie Qi em sua pesquisa de mestrado, cujo objetivo era apresentar circuitos eletrônicos de uma maneira acessível, facilitando a compreensão conceitual e tornando intuitivo o trabalho com componentes físicos. Ao situar estes conceitos como mídias criativas e expressivas, Jie buscou promover um espaço lúdico onde se pode aprender e fazer a eletrônica (Qi, 2012). Esses circuitos são possíveis através da utilização de simples componentes, como papel, LED, fita condutiva de cobre ou alumínio e uma bateria de 3 Volts. Para acender um LED, basta conectar a bateria ao LED através de um loop completo, combinando o lado positivo do LED com o lado positivo da bateria através da fita adesiva condutiva, que pode ser colada em uma folha de papel (o mesmo deve ser feito com o lado negativo). Isso permite com que o fluxo de eletricidade da bateria siga através da fita condutiva até o LED, fazendo com que a luz possa acender. Pela facilidade de montagem, familiaridade dos alunos com a maior parte do material (papel sulfite, fita adesiva e baterias de relógios) e possibilidade fácil e prática de desmontar e refazer, possibilitando corrigir e reorganizar o circuito, optou-se por iniciar o trabalho com circuitos elétricos através desta proposta. Na Figura 1, é possível verificar a montagem de um circuito de papel, através da ligação da fita de cobre com o LED e a bateria, ao dobrar o papel a fita condutiva do lado positivo do LED fecha o circuito.

Figura 1. Montagem de um circuito com papel

De acordo com Qi (2012), a facilidade em se trabalhar com circuitos de papel vai além da familiaridade com o material necessário, contemplando também o baixo custo dos materiais utilizados, o que reduz a preocupação em quebrar ou desperdiçar materiais preciosos. Isso favorece a experimentação e retira a preocupação em errar, que são vitais para a aprendizagem e pensamento criativo. Isto porque a fita de cobre pode ser facilmente cortada se uma conexão estiver incorreta, ou descolada se for colocada no local errado, incentivando os usuários a fazerem modificações, quando necessário, sem se preocupar com dano estético ou de material. 2.2. Placa Arduino, sensores e atuadores O Arduino (Figura 2 – Esquerda) é uma plataforma Open Source de prototipagem eletrônica. Foi desenvolvido em 2005 no Ivrea Interaction Design Institute, na Italia, por Massimo Banzi e sua equipe, que tinha por objetivo criar uma ferramenta fácil para prototipagem rápida, destinado a estudantes sem experiência em eletrônica e programação (https://www.arduino.cc/). As placas Arduinos são capazes de ler entradas (como a luz de um sensor, o acionamento de um botão ou uma mensagem de Twitter) e transformá-lo em uma saída (ativar um motor, ligar um LED, publicar algo online). Seu ambiente de programação é o software Prossessing, baseado na linguagem C, porém também permite ser programado pelo Scratch 2.0 offline, através da configuração e instalação de alguns programas, sendo eles a IDE do Arduino, Python, PySerial e PyMata. Existe um pacote com instalador direto, sendo possível encontrar o arquivo e o tutorial de instalação no site Hackeduca, através do link: http://bit.ly/2bbEOC9.

Dentre os sensores e atuadores do Arduino, alguns deles podem facilitar o desenvolvimento do trabalho envolvendo conceitos de energia com estudantes dos anos iniciais. Por exemplo, pode-se trabalhar com a construção de circuitos que envolvem a ligação de polos positivos e negativos, acendendo LEDs, fazendo a leitura de sensores e ligando dispositivos através de placas de energia solar ou funcionamento de motores, permitindo que os alunos possam manipular e visualizar em tempo real as ligações e reações decorrentes através da ligação dos circuitos. 2.3. Placa Makey Makey para condução de energia O Makey Makey (Figura 2 – Direita) é uma placa de circuito impresso com um microcontrolador Arduino ATMEGA32U4, que funciona substituindo as funções do mouse e/ou do teclado, através de conexões com fios de “garra jacaré”. Seu poder inovador está na característica de conexão com materiais pouco condutivos como, por exemplo, massa de modelar, pessoas, líquidos ou até mesmo frutas e legumes. Essas conexões podem virar uma extensão criativa do computador, favorecendo a interação, pois utiliza o protocolo de dispositivo de interface humana (HID) para se comunicar com o computador, permitindo enviar sinais das teclas pressionadas, cliques e movimentos do mouse (Silver & Rosenbaum, 2016). Dispensa qualquer conhecimento prévio sobre programação ou eletrônica, basta conectar os cabos e utilizar em qualquer programa de computador, desde um simples editor de texto, páginas da Web ou até mesmo ambientes de programação como o Scratch.

Figura 2. Esquerda: Placa Arduino Uno. Disponível em: https://www.arduino.cc/en/Guide/MacOSX. Direita: Placa Makey Makey frente e verso. Disponível em: http://www.makeymakey.com/

2.4. Programação do Arduino através do Scratch 2.0 offline

Figura 3. Blocos disponíveis para programação do Arduino no Scratch 2.0 offline

Com a instalação dos programas citados, é possível programar o Arduino através do Scratch 2.0. O diferencial é a inserção de comandos na aba “Mais blocos”, conforme demonstrado na Figura 3. O Arduino programado com Scratch pode ser utilizado para auxiliar o aluno no processo de aprendizagem, tornando a tecnologia um instrumento do seu desenvolvimento pessoal (Bastos, Borges & D’Abreu, 2010). 3. Desenvolvimento da sequência didática O trabalho foi desenvolvido no contexto de uma pesquisa de intervenção, com abordagem qualitativa, em que a pesquisadora teve uma participação ativa, atuando como pesquisadoraparticipante. Foi desenvolvido em uma escola pública municipal, localizada na Grande São Paulo, Brasil, com uma turma de 22 alunos do 5º ano do Ensino Fundamental. A turma tem redução de número total de alunos por ser uma classe de inclusão, com uma aluna surda que faz leitura labial. O conteúdo energia foi escolhido de acordo com o currículo de ciências que seria abordado no trimestre. Apesar dos alunos já conviverem com diferentes tipos de energia e terem contato com este termo na mídia, que frequentemente trata de temas como apagões, crise das usinas hidrelétricas, aumento dos preços dos combustíveis, dentre outros, o seu conceito é abstrato e difícil de compreender apenas através de recursos teóricos. Com o intuito de concretizar os conhecimentos teóricos e contextualizá-los no cotidiano dos alunos através de experiências práticas, esta sequência didática foi desenvolvida. O objetivo principal foi que os alunos fossem capazes de identificar algumas fontes de energia e entender a sua aplicação na vida cotidiana em diferentes ambientes. Os objetivos específicos envolveram: compreender como as diferentes fontes de energia são utilizadas no nosso cotidiano; conhecer os elementos de um circuito elétrico; identificar diferentes fontes de energia; entender como ocorre a transformação de um tipo de energia para outro. Como uma forma de diagnosticar os conhecimentos prévios dos alunos, em grupo, eles levantaram hipóteses para responder as seguintes questões: Para que precisamos de energia? De onde vem a energia? Após a avaliação diagnóstica e discussão dos saberes dos alunos, foram realizadas as seguintes etapas práticas: 1- Construção de um circuito de papel para acender um LED utilizando os seguintes materiais: bateria de 3V, fita adesiva de core, papel sulfite e LED. Foi retomada a conversa da aula anterior sobre circuitos elétricos, verificando como a energia chega até os eletrodomésticos. A aula iniciou-se com o vídeo: “A eletricidade e a lâmpada elétrica”, disponível em: http://youtu.be/pqpVONj4wmY e discussão. Os estudantes receberam orientação sobre como fazer a identificação dos polos positivos e negativos do LED e da bateria e desafiados a utilizar as fitas adesivas como fios condutores de energia, para formar um circuito completo. 2- Utilização do jogo de simulação PhET Kit de construção de circuito DC (Figura 4), para ligação de circuitos, disponível em: http://bit.ly/2baQPur. 3- Apresentação da placa Arduino e os comandos de programação disponíveis no Scratch. Proposta de montagem de circuito com LED e LDR através das portas do Arduíno de 5v, Gnd e porta digital para acender um LED e a função das portas digitais para acender um sensor LDR. Foram oferecidas fichas do Scratch (Figura 5) preparadas como um tutorial para acender o LED e outro sobre o acionamento do LDR e proposto um desafio no Scratch para criar uma programação com uma condicional para acender o LED através da leitura do LDR.

Figura 4. Simulação de um circuito simples

4- Utilização de um motor com hélice para geração de energia eólica com o intuito de acionar movimentos no Scratch. A aula iniciou com uma discussão do vídeo Energia Eólica, do Jornal Nacional exibido em 09/06/2012, disponível em: http://youtu.be/XsuxJM6cX2s. Em seguida, os estudantes receberam novas fichas do Scratch para fazer a ligação do motor, e a proposta de criação de um desafio no Scratch para criar ações decorrentes do acionamento da turbina de energia eólica.

Figura 5. Fichas do Scratch confeccionadas como tutorial para conexão do LED e LDR no Arduino e programação no Scratch 2.0 offline 5- Utilização de mini placas de energia solar (material reaproveitado de luminárias de jardim). A aula foi iniciada com uma discussão do vídeo Espelhos e Robôs geram energia solar exibido no Jornal da Globo em 2010, disponível em: http://youtu.be/WDQdhBVZd6o. Em seguida, foi oferecido aos alunos fichas Scratch para acionar atuadores através da placa e propor um desafio para relacionar a ligação realizada com alguma animação no Scratch. 6- Utilização das placas Makey Makey para discussão da condução de eletricidade. A aula iniciou com o vídeo “Mad Science – Eletricidade e condutores”, disponível em: http://bit.ly/2aPZZLS. Foi explicado para os estudantes as ligações do Makey Makey e eles receberam materiais condutores e não condutores (massa de modelar, copo com água, clipes de metal, palitos de madeira, tampinhas de garrafas PET, argolinhas de alumínio, bananas e carretéis de plástico) para testar qual deles fecharia o circuito. Foram desafiados a criar uma animação no Scratch que funcionasse através dos comandos dos materiais condutores. 4. Resultados e discussões Na avaliação diagnóstica foi detectado que os alunos tinham uma variedade de respostas para o uso da energia, sinalizando o uso para: conservar alimentos, iluminar a cidade, funcionar o comércio, sacar dinheiro, evitar acidentes de transito (semáforos funcionando) e ligar eletrodomésticos. No entanto, desconheciam as diversas fontes de energia, quase todos alunos responderam que a energia vem da água, uma aluna disse que vem da “usina elétrica”, um aluno disse que vem do poste de luz e outro que vem da tomada. Apenas uma aluna respondeu que a energia também pode vir do sol. Em relação a transformação de energia, a maioria dos alunos respondeu que não, apenas um aluno disse que “sim, se a energia se transformar novamente em água sim” e a aluna que falou da energia do sol disse que “a energia solar pode transformar em elétrica”. Isto demonstrou o desconhecimento das fontes alternativas de energia, de sua possibilidade de transformação e, até mesmo, de onde vem a energia que utilizam. Para que pudessem partir da noção de onde vem a energia que utilizam, antes de conhecer outras fontes, assistiram a vídeos e participaram de discussões à respeito da produção de energia em usinas hidrelétricas, discutindo também como a energia percorre o caminho até as residências chegando, enfim, na tomada. Quando os estudantes foram desafiados a construir o circuito de papel, eles tentaram utilizar a fita adesiva como fio condutor, mas não conseguiram perceber o modo de fazer a conexão da bateria nos dois polos. Sendo assim, todos os grupos ligaram o LED direto na bateria e utilizaram a fita de cobre como simples adesivo para fixar o material no papel (Figura 6, esquerda). Foi discutida a primeira ligação em uma roda de conversa e, com exemplos reais de como a ligação de uma lâmpada é feita, eles perceberam a necessidade de ligar o LED através do fio.

Figura 6. Esquerda: utilização da fita condutiva apenas como adesivo. Direita: ligação da fita como condutora dos polos positivos e negativos.

Desta forma, retomaram a atividade e discutiram nos grupos formas de realizar a ligação. O grupo 1 discutia que, se o lado da “perna maior” do LED era positivo, precisava colocar uma fita condutiva também maior para ligar no polo positivo e grudaram a fita adesiva no polo positivo e tentaram dobrar a outra conexão (negativa) em cima da folha, conectando 2x no lado positivo da bateria, precisaram de intervenção para entender como colocar a fita dos dois lados da bateria. Um aluno do grupo 2 chegou à conclusão que deveria colocar o fio negativo do lado de baixo da bateria e o fio positivo do lado de cima que tinha o sinal de “+”, desta forma, conseguiram estabelecer a ligação (Figura 6, direita). Os estudantes dos primeiros grupos que conseguiram foram ajudando os demais.

No jogo PhET de simulação para ligação de circuitos, após a montagem de circuitos simples, os alunos testaram diversas associações de montagens, acrescentaram outras quantidades de lâmpadas, baterias, etc. Alguns alunos descobriram que ligações erradas não apenas deixavam de funcionar, mas também era possível causar curto-circuito e disseram “Nosso jogo pegou fogo!”. Na primeira aula de Arduino, o aluno 1 comentou: “Por que as pessoas complicam nossa vida, estava tão fácil fazer o circuito com a fita no papel?”, a professora interviu e questionou se não havia nenhuma mudança de possibilidades do Arduino com o circuito de papel e, após o aluno observar a programação, ele chegou à conclusão que no papel apenas acendia e não era possível programar, já no Arduino ele poderia decidir se o LED iria piscar com frequência diferenciada, além de ter o sensor para fazer a leitura da luz. Conseguiu diferenciar a relação entre circuitos programados e não programados. A aluna 2 escreveu em seu relato da aula: “aprendi como ligar fios na prática, muito mais sobre o lado positivo e o negativo, e também sobre o vídeo que a professora passou para agente assistir me ajudou bastante eu não sabia que a energia vinha da água”. No decorrer das aulas, os conhecimentos dos alunos sobre energia foram sendo ampliados gradativamente. Começaram a utilizar o nome correto dos tipos de energia (elétrica, luminosa, térmica, química, sonora, cinética e mecânica), além dos sensores, placas e os diversos materiais utilizados nas aulas. Na aula de condução de energia do Makey Makey, primeiramente os alunos responderam uma ficha com alternativa colocando as hipóteses prévias sobre qual material poderia conduzir energia, depois realizaram as experiências e comprovaram se suas hipóteses iniciais eram verdadeiras ou falsas. A surpresa maior deles foi descobrir que pessoas e bananas podem conduzir eletricidade, pois na concepção deles apenas o que tinha metal poderia conduzir eletricidade. 5. Considerações e trabalhos futuros Nessa sequência de aulas, os estudantes tiveram contato com diversos materiais e experimentaram na prática a ligação de circuitos, a geração, condução e transformação de energia, além de conhecer as fontes alternativas, ampliando seus conhecimentos em relação ao tema. Também foram capazes de relacionar com o cotidiano e perceber a utilidade prática de cada conceito, desenvolvendo assim, conceitos do trabalho relacionado a CTSA. Iniciar o trabalho com circuitos de papel facilitou a compreensão do aluno, não apenas pelo fato de ser um material acessível, mas, inclusive, pelo fato de, nesta proposta, todas as ligações estarem visíveis, facilitando a compreensão das ligações da Protoboard (placa com furos e conexões condutoras para montagem de protótipos de circuitos elétricos) utilizada para conexão com Arduino. Isso reforça a possibilidade de utilizar materiais mais complexos com alunos dos anos iniciais, desde que eles sejam iniciados com propostas mais simples em processo gradativo de aprendizagem dos conceitos. Além disso, a utilização de ambientes de programação acessíveis como o Scratch que garantiu a autonomia dos alunos durante o processo. Como continuidade do trabalho, os estudantes irão finalizar os estudos desenvolvendo um projeto de criação de jogos no Scratch com interação com as interfaces físicas, utilizando os conhecimentos adquiridos em relação ao uso dos circuitos de papel, Arduino e Makey Makey. 6.

Referências: Almeida, M. E. B. de e Valente, J. A. (2011) Tecnologias e currículo: Trajetórias convergentes ou divergentes? 1. ed. Editora Paulus, São Paulo. Almeida, M. E. B. de e Valente, J. A. (2012) Integração currículo e tecnologias e a produção de narrativas digitais. Currículo sem Fronteiras, v. 12, n. 3, p. 57-82. Bastos, B. L., Borges, M. e D’Abreu, J. (2010) Scratch, Arduino e o Construcionismo: ferramentas para a educação. Anais do Seminário de Tecnologia Educacional de Araucária “Desafios e Possibilidades para Tecnologia Educacional”. Disponível em: . Acesso em 26 de maio de 2016. Machado, P. M. S E Queiroz, J. R. de O. (2015) Ensino de ciências nos anos iniciais: despertando competências conceituais e atitudinais. Anais do X Encontro Nacional de Pesquisa em Educação em Ciências – X ENPEC. Nishida, A. K., Braga, J. C., Monteforte, A. e Benassi, R. F. (2014) Jogo educacional sobre consumo de energia elétrica. Anais do SBIE. Disponível em: . Acesso em 28 de maio de 2016. Oro, N. T., Pazinato, A. M., Teixeira, A. C. e Gross, A. J. (2015) A Olimpíada de Programação de Computadores para estudantes do ensino fundamental: a interdisciplinaridade por meio do software Scratch. Anais do WIE. Disponível em: . Acesso em 26 de maio de 2016 Qi, J. (2012) The Fine Art of Electronics: Paper-based Circuits for Creative Expression. Submitted to the Program in Media Arts and Sciences, School of Architecture and Planning in partial fulfillment of the requirements for the degree of Master of Science in Media Arts and Sciences at the Massachusetts Institute of Technology. Ramos, M. C. e Andrade, V. S. (2015) Desenvolvimento, construção e calibração de uma central de monitoramento de consumo de energia elétrica e de água utilizando o microcontrolador Arduino. Anais do ENEDS. Ramos, R. L., Castro, L. F. O., Bertagnolli, S. C. e Hübler, P. N. (2015) Uso da plataforma Arduino para criar um dispositivo robótico otimizando o aproveitamento de energia solar. Anais do Computer on the Beach. Santos, W. L. P. (2008) Contextualização no ensino de ciências por meio de temas CTS em uma perspectiva crítica. Ciência & Ensino. Silver, J. e Rosenbaum, E. (2016) MaKey MaKey. An Invention Kit for Everyone. MIT Media Lab’s Lifelong Kindergarten. Disponível em: . Acesso em 25 de maio de 2016 Viveiro, A. A. e Zancul, M. C. S. (2014) Perspectivas para a formação de professores dos anos iniciais da escolarização em relação aos conteúdos de ciências. In: Jackson Gois (Org.). Metodologias e processos formativos em ciências e matemática. 1. ed. São Paulo: Paco Editorial, p. 9-26

V Congresso Brasileiro de Informática na Educação (CBIE 2016)

Anais do XXII Workshop de Informática na Escola (WIE 2016)

Fonte: http://www.br-ie.org/pub/index.php/wie/article/viewFile/6852/4730

Programação, Robótica e Música Para Baixinhos

Exemplo de ensino da programação e robótica em sala de aula. Evidentemente que o primeiro protótipo lhe dará um trabalhão para fazer, porém depois de pronto, você possui matéria para meio ano letivo, nesse pequeno e encantador brinquedinho Cover. A didática fica por sua conta. Quem tiver o interesse em desenvolver esse projeto com Raspberry PI + Arduino Mega + Arduino Nano, estamos aí…

Não esqueça, o Youtube é uma rede Social.

CONTROLANDO ARDUINO COM APLICAÇÕES EM DELPHI

Uma dica para quem quiser obter comunicação entre arduino e o delphi, para desenvolver interfaces que possibilita controlar o arduino através dodelphi, desenvolver aplicações para projetos de automação e outros projetos. Para conseguir esta comunicação com o delphi será necessário ainstalação do componente TComPort, pois é este componente que lhe dará todo suporte para que você consiga obter a comunicação quanto ao envioe o recebimento de dados com arduino.Para instalar o componente TComPort, é preciso fazer o download do componente no LINK: http://www.cuin.com.br/wp-content/uploads/2013/05/COMPONENTE.rar 
Instalando o componente utilizarei a versão Delphi 7:1º Passo:
Depois de baixar o componente, salve ele em uma pasta de preferencia a pasta que você utiliza pra salvar outros componentes.
2º Passo:
 Abra o delphi é necessário encerrar as aplicações abertas para isto clique em FILE e clique em CLOSE ALL

Projeto Valkyrie

Você pode usá-lo para automação residencial, bem como controlar dispositivos como braço robo, robôs etc. Valkyrie está ligado à IOT usando Wi-Fi, BLE, Bluetooth clássico, UHF RF Transceiver e XBee, usando o protocolo universal chamado V-API. Este é Valkyrie o caminho futuro do gesto e voz controle.

Características do projeto Valkyrie:

  • processamento de movimento em tempo real inovadora
  • serviço de controle de voz
  • detecção de controle por gestos inteligentes
  • aplicações para smartphones
  • funcionalidade de Bem-Estar
  • API aberta para desenvolvedores
  • Várias interfaces de comunicação

Luva: Projeto Valkyrie é destinado a completar o desafio “SpaceGlove”. Para os 2 dias que trabalharam nesse projeto nós fizemos uma luva de couro e material elástico que é confortável para o uso diário e trabalha cerca de 70 horas em modo de transmissão de energia integral.

Com essa luva, fizemos experiências para controlar muitos dos dispositivos domésticos padrão (lâmpadas, luzes, aquecedor de fã, tiras de luz LED, TV, caixa de configuração) com gestos baseados tais como slide, de cima para baixo, para baixo-up etc Depois que fizemos um serviço que está transmitindo dados a partir da luva a um iPhone, e nós temos modificado a base de dados gesto, e acrescentou gestos personalizados. Com precisão de 10% que têm distinguido com sucesso 16 gestos diferentes e adicionou suporte para mais de 60.

Centro de controle: . Para controlar muitas interfaces precisamos de um centro de controle que está repetindo sinais recebidos a partir de qualquer das interfaces de comunicação e enviá-lo para as outras interfaces
As seguintes interfaces são suportados:

  • Wi-fi
  • Bluetooth Low Energy
  • Classi Bluetooth
  • XBee (ZigBee)
  • 433 MHz transceptor de rádio, e
  • comunicação USB

 Nós integramos muitas bibliotecas e de comunicação único e universal e implementou-lo em um V-API (Valkyrie API). A ideia na V-API é que é pode ser usado com qualquer tipo de dispositivos e usando o protocolo universal você pode facilmente escrever os códigos para a comunicação. O V-API é explicado em detalhes no slide 17 da documentação de hardware e firmware incluídos nos recursos.

Luva das posições dos sensores e descrições:

AccGyro

force-sensor graphic

heart-rate-sensor

As aplicações móveis: Nós desenvolvemos 2 aplicações de interface com o centro de comando (e a luva) – uma para Android e um para iOS. O aplicativo Android usa apenas o serviço de detecção de voz usando o google agora pesquisar e se o comando é reconhecido que envia a solicitação HTTP POST para o nosso serviço on-line (imp elétrica). O serviço Android está trabalhando no telefone, bem como no relógio Android. O aplicativo iOS suporta serviço feito sob encomenda Reconhecimento de voz, controle de automação residencial usando a voz ou entrada directa na aplicação, e informações da estação meteorológica. O nosso serviço de bem-estar está verificando a sua frequência cardíaca automaticamente a cada 30 minutos ou continuamente enquanto você está treinando. Ele também pode contar seus passos e detectar sua qualidade de sono. O aplicativo também pode ser usado para upload de novo firmware para a luva e para criar mais gestos de ser reconhecidos pela luva e ligá-los para executar uma variedade de ações.

iPhoneScreens

No momento, temos uma luva totalmente funcional, a aplicação iOS com todas as propriedades que precisamos, controles remotos para computadores (luva agindo como dispositivo HID), controle de telefone embora o serviço HID BLE, controle de casa inteligente com os hábitos e gestos já implementadas, controle robo braço, controle de jogo de computador, controle rover / carro gesto, controle remoto da TV inteligente e muitos mais por causa do protocolo V-API universal que pode ser usado em muitos lugares.

Q & A:

  • Não há gravidade no espaço aberto – podemos usar um transmissor magnético para determinar o ponto “zero” no espaço e usá-lo para calibrar e sentir a gravidade pseudo e velocidade angular.

  • É difícil usar a maioria dos dispositivos de comunicação GHz no espaço – É por isso que nós temos transceptores de 433 MHz  no Centro de Controle. As bandas de VHF e UHF são capazes de penetrar na atmosfera terrestre e transmitir a comunicação de baixo ruído da terra para o espaço. Isto é usado pelos radioamadores para fazer QSOs utilizando as estações espaciais internacionais como repetidor.

  • velocidade de dados de baixo se o dispositivo controlado é muito longe da terra – não há muito que possamos fazer sobre isso, então decidimos fazer macros personalizadas (por exemplo, se você está controlando braço robótico), você faz o movimento uma vez com a mão então este é enviado para o braço robótico, que memoriza o movimento e fazê-lo pelo comando. Por exemplo no vídeo temos usado este sistema para agarrar a caixa e movê-lo algumas polegadas atrás.
  • Conexão cai enquanto controla algo – Se não há nenhuma conexão para 300 ms, a operação pára até que a ligação não for retomada.
  • Carregar – estamos considerando o carregamento sem fio, porque com as novas tecnologias no carregamento sem fio é possível cobrar 800 mAh por menos de 40 min.
  • Consumo de energia – é 13 – 15 mA no modo de transmissão.
  • você pode usar dispositivos externos (como celulares com Android, Bluetooth Joystic) para controlar dispositivos periféricos Control Center – Sim, pode-V API é um protocolo universal para comunicação, todos os relatórios recebidos são repetidos para as outras interfaces de comunicação.

Imagens da luva feita durante os 2 dias do desafio Apps Space: sistema de sensor de pressão real.

IMG_2025_photoshop

 

Desenvolvimento futuro

  • Para tornar totalmente funcional Aplicativo para Android
  • Para adicionar mais sensores para a estação de controle
  • Para melhorar e tornar as bibliotecas V-API claramente legíveis para C, C ++, C #, Java, Java Script, Objective C
  • A cooperar com muitas universidades e outras instituições de ciência em todo o worlд
  • Para tornar a placa de circuito impresso flexível para a luva
  • Para desenvolver personalizados Bluetooth Serviços de Energia baixa para ser fácil de usar por desenvolvedores Android / iOS
  • Para adicionar mais documentação e estabelecer centro de suporte para suportar os desenvolvedores usando o nosso V-API
  • Para fazer algumas variações a luva por exemplo, negócios, esporte, casual e fazer o hardware para ser fácil mutável
  • Testes oficiais
  • Lançamento do projeto (Se começarmos em 2015/06/01 até o final de setembro ’15 teremos um produto)

 

https://open.nasa.gov/innovation-space/valkyrie/

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

Arduino e comunicação sem fio: módulo NRF24L01+

Como configurar e programar a conexão sem fio direta entre Arduinos usando o módulo NRF24L01+ para transmitir comandos e receber respostas.

O módulo NRF24L01+ é bastante popular e bem documentado, e algumas das bibliotecas que o suportam vem acompanhadas de bons programas de exemplo.


nfr001

Neste artigo, veremos os elementos básicos de uma aplicação prática: um programa que pode ser instalado tanto no Arduino que estiver atuando como mestre (que comanda as transmissões e recebe os dados), quanto no que estiver configurado como subalterno (que aguarda os comandos e transmite os dados).

Ambos transmitirão e receberão dados: o mestre envia comandos e recebe as respostas do subalterno, e o subalterno aguarda a recepção dos comandos e envia a resposta de acordo com cada comando recebido.

CONHECENDO O NRF24L01+

O chip nRF24L01+, da Nordic, é uma dessas maravilhas da tecnologia moderna: reúne transmissão e recepção em um mesmo componente, consome pouca energia (pode funcionar meses ou até anos com uma pilha AA), transmite/recebe a até 2Mbps e encapsula boa parte da complexidade da comunicação digital via rádio, deixando os microcontroladores livres para se preocupar com as demandas da aplicação.

Ele é usado em periféricos sem fio para computadores, em acessórios esportivos e de jogos eletrônicos, em brinquedos, controles remotos avançados, headsets, joysticks, e em eletrônicos de consumo em geral.

A comunicação do NRF24L01+ é direta, sem roteadores ou outra infra-estrutura. – não é um chip WiFi.

A comunicação usando esse tipo de chip é diretamente entre dispositivos, sem intermediação por roteadores ou similares – não é um adaptador WiFi, nem usa protocolos da Internet, como o TCP e o IP. Normalmente eles atuam em pares (como em um teclado sem fio conectado a um adaptador USB), ou um mestre controla vários subalternos (como em uma rede de sensoreamento na qual um Arduino com esse chip obtém dados de vários outros Arduinos com esse chip, e os registra ou envia para um PC via serial). Outras topologias também são possíveis, inclusive redes estrela com até 6 nós.

nrf002

No mundo Arduino, é frequente ele ser visto na forma de um módulo que inclui não apenas o chip, mas também todos os (poucos) elementos adicionais necessários ao seu funcionamento: um cristal para sincronização precisa, os capacitores e resistores associados a este cristal, e uma antena, frequentemente impressa na própria placa.

Esses módulos são fáceis de encontrar em lojas de eletrônica nacionais, e saem bastante baratos para comprar em quantidade nos grandes sites de comércio eletrônico chineses.

Este artigo foi escrito com um par de módulos iguais a este. Ao escolher um modelo para prototipação, sugiro optar por um que já tenha pinos DIP soldados ou com espaço disponível para soldá-los. Fora isso, vale a pena verificar itens como a antena (ou mesmo a presença de um conector para antena externa), que podem influenciar bastante no alcance.

De modo geral, os demais parâmetros de operação variam pouco entre os modelos, pois dependem basicamente do chip. Os principais são:

  • Opera nas frequências da faixa de 2,4GHz (que é livre para uso sem necessidade de registro na Anatel ou similares)
  • 125 canais
  • Baixíssimo consumo de energia
  • Velocidades selecionáveis entre 250Kbps e 2Mbps
  • Modulação FSK/GSK
  • Suporte a comunicação multipontos
  • Capacidade de evitar interferência e de saltar entre frequências

A comunicação entre o módulo nRF24L01+ e o Arduino ocorre usando o protocolo SPI e, embora o módulo opere a 3,3V (e assim precise ser alimentado por meio do pino 3V3 do Arduino), ele aceita e envia sinais compatíveis com o nível lógico de 5V do Arduino Uno e seus similares, sem precisar de conversão.

ARDUINO E NRF24L01+: COMO CONECTAR

A pinagem dos meus módulos nRF24L01+ é de 8 pinos, e foi conectada ao Arduino Uno como segue:

Os números de pinos do Arduino mencionados acima referem-se ao uso da popular bibliotecaRF24 em um Arduino Uno, na forma como configurei para este artigo – outras configurações podem assumir outros valores.

Os pinos CE e CSN podem ser conectados a outros pinos do Arduino que não o 9 e o 10, se necessário – mas isso exigirá alteração no nosso programa de exemplo, no trecho em que faz referência a esses pinos.

Ainda, existem módulos com pinagens diferentes da exibida: verifique a documentação do seu, e adeque. E se o seu Arduino tiver os pinos da comunicação SPI em outras posições (como ocorre com o Leonardo e o Mega), adeque também.

Não plugue os pinos diretamente a uma breadboard: cada par ficará em curto entre si. Uma alternativa simples é usar jumpers macho-fêmea para ligar.

ARDUINO E NRF24L01+: COMO PROGRAMAR

O exemplo a seguir considera 2 Arduinos Uno, cada um conectado a um módulo NRF24L01+, e ambos próximos entre si1. Lembre-se de instalar previamente a biblioteca RF24.

Nosso programa implementa os 2 modos de operação: mestre e subalterno. A instalação é a mesma em ambos os Arduinos.

O mesmo código deve ser instalado em ambos os Arduinos, sem alteração. Durante a execução, um deles será o mestre, e o outro será o subalterno. Para configurar um deles como o mestre, passe um resistor entre seu pino 2 e o pino GND – o programa irá procurar por essa conexão para saber qual papel deve assumir. Não há problema em trocar, durante a execução, qual deles será o mestre – mas se/enquanto ambos estiverem simultaneamente como mestre ou como subalterno, a comunicação não será bem-sucedida.

O programa a seguir se baseia na transmissão de pacotes de dados, com tamanho fixo (sempre uma matriz de 0 a 5 inteiros), entre os Arduinos. O primeiro inteiro da matriz será sempre o identificador do tipo de pacote (um questionamento, uma resposta, etc.), e nos demais o programa pode colocar livremente os dados que deseja comunicar: o estado de uma porta, um sensor, o tempo decorrido desde algum evento, etc.

O quadro a seguir indica uma saída possível do programa rodando no mestre:

Enviei comando 11
Recebi resposta de interrogacao: 8325
 
Enviei comando 21
Recebi resposta de um ping enviado ha 985ms.

Enviei comando 11
Não houve resposta
 
Enviei comando 11
Recebi resposta de interrogacao: 8436

O programa define 2 tipos de questionamento e suas respectivas respostas, e controla o envio e recebimento de todos eles:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9,10);

const uint64_t PIPE_COMANDO = 0xE8E8F0F0E1LL;
const uint64_t PIPE_RESPOSTA = 0xE8E8F0F0E2LL;


const int CMD_INTERROGA=11;
const int CMD_RESPONDEINTERROG=12;
const int CMD_PING=21;
const int CMD_RESPONDEPING=22;

int msg[5];

const byte pinoChave=2;
boolean temMensagem;

void setup() {
  Serial.begin(9600);
  pinMode(pinoChave,INPUT_PULLUP);
  radio.begin();
  radio.openWritingPipe(PIPE_COMANDO);
  radio.openReadingPipe(1,PIPE_RESPOSTA);
  radio.startListening();
}

void enviaMsg() {
  radio.stopListening();
  radio.write(msg, sizeof(msg));
  radio.startListening();
}
 
void interroga(int comando) {
  msg[0]=comando; 
  msg[1]=millis() % 32768;
  enviaMsg();
  Serial.print("Enviei comando ");
  Serial.println(msg[0]);
  for (int i=0; i<500; i++) {
    temMensagem=radio.available();
    if (temMensagem) {
      break;
    }  
    delay(4);
  }  
  if (temMensagem) {
    boolean concluido=false;
    while (!concluido) {
      concluido=radio.read(msg, sizeof(msg));
    }  
    switch (msg[0]) {
      case CMD_RESPONDEINTERROG:
        Serial.print("Recebi resposta de interrogacao: ");
        Serial.println(msg[1]);
        break;
      case CMD_RESPONDEPING:
        Serial.print("Recebi resposta de um ping enviado ha ");
        Serial.print((millis() % 32768)-msg[1]);
        Serial.println("ms.");
        break;
      default:
        Serial.print("Recebi resposta desconhecida ou impropria:");
        Serial.print(msg[0]);
        Serial.print(" ");
        Serial.println(msg[1]);
    }  
  } else {
    Serial.println("Nao houve resposta");
  }    
  Serial.println(" ");
} 

void responde() {
  int resposta=0;
  if (radio.available()) {
    boolean concluido=false;
    while (!concluido) {
      concluido=radio.read(msg, sizeof(msg));
    }  
    switch (msg[0]) {
      case CMD_INTERROGA:
          resposta=random(8000,9000);
          Serial.print("Recebi comando de interrogacao e vou responder: ");
          Serial.println(resposta);
          msg[0]=CMD_RESPONDEINTERROG;
          msg[1]=resposta;
          enviaMsg();
          break;
      case CMD_PING:
          msg[0]=CMD_RESPONDEPING;
          enviaMsg();
          Serial.print("Recebi comando ping e ja respondi: ");
          Serial.println(msg[1]);
          break;
        default:
          Serial.print("Recebi comando desconhecido ou improprio:");
          Serial.println(msg[0]);
      }  
  } else {
    Serial.println("Nao ha mensagens disponiveis");
  }  
} 
 
 
void loop() {
  if (digitalRead(pinoChave)==LOW) {
    if (random(0,5)==3) interroga(CMD_PING);
    else interroga(CMD_INTERROGA);
  } else {
    responde();
  }  
  delay(1000);
}

As linhas iniciais, em vermelho, executam uma sequência já bem conhecida de referenciar bibliotecas e instanciar um objeto para acesso aos métodos dela.

As 2 últimas linhas do bloco em vermelho oferecem algo diferente, entretanto: são elas quedefinem as pipes (“dutos”) por onde serão transmitidos os dados nas duas direções: o envio de comandos e a recepção de respostas2

A seguir, em laranja, temos definições essenciais para o funcionamento do programa: os tipos de mensagens que serão enviadas e/ou recebidas. Veremos mais detalhes a seguir, mas note que são 2 pares de constantes: CMD_INTERROGA com CMD_RESPONDEINTERROG e CMD_PING com CMD_RESPONDEPING. Também em laranja temos a definição da matrizmsg, composta de 6 (0 a 5) números inteiros. Essa mesma matriz será usada para enviar e receber as mensagens.

A inicialização do programa está em verde, e começa ativando a Serial e definindo o modo dopino 2 (definido em pinoChave), que será usado mais adiante para verificar se um Arduino deve agir como mestre (se houver um resistor entre o pino 2 e o GND) ou como subalterno (se não houver).

A seguir, ainda em verde, vem a inicialização e configuração inicial do rádio. Note que definimos as 2 pipes (radio.openWritingPipe e radio.openReadingPipe) e colocamos o rádio em modo de recepção de pacotes (radio.startListening), que será nosso modo básico de operação (exceto quando for a hora de transmitir algo, como veremos a seguir).

Assim na vida como no NRF24L01: para falar bem, acaba sendo necessário parar de ouvir, nem que seja por um instante.

Em cor salmão temos a enviaMsg(), uma rotina de uso geral usada pelas funções que vêm a seguir. O que ela faz é muito simples: desativa o modo de recepção de pacotes (radio.stopListening), aí transmite o conteúdo que estiver armazenado na matriz msg, e volta a ativar o modo de recepção de pacotes.

Agora, antes de ver as linhas imediatamente a seguir, vamos dar um grande salto, diretamente para o final do programa, no trecho marcado em marrom. É o loop, a função que o Arduino executa continuamente. Veja como ele é simples – a cada execução:

  1. Se o estado do pino 2 for LOW (ou seja, se ele estiver conectado ao Terra, indicando que este Arduino deve agir como o mestre):
    • Se um número sorteado entre 0 e 4 for 3, chama a função interroga() passando como parâmetro CMD_PING – e, nos demais casos do sorteio, chama a função interroga passando como parâmetro CMD_INTERROGA.
  2. Se o estado do pino 2 não for LOW, conclui-se que este Arduino é o subordinado, e assim é chamada a função responde().

Note que a complexidade do programa foi toda removida do loop e transportada para as 2 funções mencionadas: interroga() e responde(). O loop se limita a chamá-las, dependendo de se identificar como mestre ou subalterno. No caso do mestre, o loop ainda escolhe entre interrogar passando como parâmetro o comando PING ou o comando INTERROGA.

A função interroga() só é executada no mestre, e se encarrega de enviar um comando, aguardar a resposta do subordinado e processá-la.

Retorne agora para o trecho em roxo, que é o início da função interroga(), executada apenas no Arduino que estiver como mestre. Note que a sua primeira linha move para o primeiro elemento da matriz cmd o valor recebido como parâmetro pela função, que – já sabemos – será CMD_PING ou CMD_INTERROGA.

A segunda linha move para o segundo elemento da matriz os 2 últimos bytes da funçãomillis(), que conta o número de milissegundos desde a inicialização. Isso é relevante apenas para o comando CMD_PING, e veremos a razão a seguir. A seguir a nossa já conhecida função enviaMsg() é chamada, e uma descrição do que acaba de acontecer é enviada para o monitor serial.

Neste momento a transmissão já está completa, mas nós queremos receber uma resposta do Arduino subordinado – e aguardar por essa resposta é o que fazem os 2 trechos em cor dourada da mesma função interroga(). Note que é um loop simples, que repetirá 500 vezes o delay de 4 milissegundos (o tempo total será algo pouco acima de 2 segundos), a não ser que a funçãoradio.available() (que informa que um pacote foi recebido pelo rádio) retorne um valor positivo antes disso. Se tiver mensagem, o trecho em cinza será executado, senão a mensagem em dourado no final da função, informando que não foi recebida nenhuma resposta, será exibida.

O trecho em cinza na função interroga() só tem um aspecto realmente diferente: ele usaradio.read para mover para a matriz msg o conteúdo do pacote recebido do rádio (se vários tiverem sido recebidos, ele continua lendo até chegar ao último). A seguir, dependendo do que estiver no primeiro elemento da matriz (CMD_RESPONDEINTERROG ou CMD_RESPONDEPING), ele exibe a resposta da interrogação, ou calcula quanto tempo faz desde que o ping foi enviado (lembra que havíamos colocado o valor de millis() no pacote antes de enviá-lo? Ele terá sido transmitido de volta para nós, como veremos a seguir) e exibe o resultado.

A função responde() só é executada no subalterno, e aguarda por comandos, respondendo-os conforme chegam.

Finalizando, em cor fúcsia, temos a função responde() que, como sabemos, só executada no Arduino que não estiver como mestre. Note que ela inicia com um loop similar ao do trecho em cinza da função anterior, para receber na matriz msg o pacote que tiver sido recebido do rádio – mas, ao contrário da função anterior, ela não tem limite de tempo de espera para isso, porque o subalterno não terá nada para fazer enquanto o mestre não lhe enviar um comando. Após receber um pacote, ele seleciona (via switch) o que fazer, dependendo do comando que tiver sido expresso no primeiro elemento da matriz cmd:

  • se tiver sido um CMD_INTERROGA, envia um CMD_RESPONDEINTERROG, colocando no segundo elemento da matriz um número aleatório entre 8000 e 9000 (aqui você colocaria o valor de um sensor, ou o que estivesse monitorando, em uma aplicação prática).
  • se tiver sido um CMD_PING, envia um CMD_RESPONDEPING, sem alterar o conteúdo do segundo elemento da matriz recebida, que conterá o valor de millis() que foi enviado pelo mestre.

Agora releia o programa para observar que em nenhum momento fizemos referência à seleção de canal, velocidade de transmissão, número e intervalo de tentativas de retransmissão, e outros elementos que o NRF24L01+ oferece. A configuração default é adequada para boa parte dos usos mas, quando você precisar modificar, os métodos da biblioteca RF24 estarão à sua disposição

Note ainda que as funções essenciais de tratamento de erro na camada de aplicação – comando impróprio, resposta imprópria, resposta não recebida a tempo – estão presentes e, como o restante do código, podem ser adaptados à sua aplicação e topologia. Boas transmissões!

  1.  A distância, a presença de ruído eletromagnético (seu telefone sem fio, o roteador, o forno de microondas e vários aparelhos com controle remoto podem interferir) e outros elementos do ambiente podem interferir no resultado.
  2.  Os identificadores de pipes constam no programa como números de 5 bytes expressos em hexadecimal e com o identificador LL (que indica o tipo “long long“) ao final. Eles podem ser escolhidos arbitrariamente mas, caso seu programa vá ter mais de um canal de recepção simultâneos, os 4 primeiros bytes deles devem ser idênticos entre si.

 

Este artigo foi publicado em 10/06/2015 por Augusto Campos em: http://br-arduino.org/2015/06/arduino-sem-fio-nrf24l01.html

Cirurgia de Interface Neural em Baratas

Se você quer começar a aprender sobre princípios de engenharia neural, mas tem um orçamento limitado, aqui estão as instruções sobre como construir seu próprio RoboRoach (beta) e investigar microeletrônica e design de interface neural:

Nota: Este vídeo instrucional foi criado para o RoboRoach (beta). Se você estiver usando o mais recente Blueooth RoboRoach, por favor consulte o “Cirurgia de Interface Neural” experimento: https: //backyardbrains.com/experiment … e é atualizado em: http://youtu.be/EsrorUT_Svc

Link: https://backyardbrains.com/

Wifi Bee

Introdução

Wifi Bee é um XBee Pro tomada autônoma compatível com nó MCU, útil para Rede de Sensores sem Fios. Ele integra Microchip IEEE 802.11 Wi-Fi módulo transceptorMRF24WB0MA e um AVR MCU ATmega328P 8bits. O Smart e o XBee Pro Soquete compatível com uma perspectiva inteligente,  torna-o muito fácil de integrar em seu produto. ATmega328P poderia ser programado diretamente sob o IDE de código aberto Arduino quando você ligá-lo ao UartSBee ou Grove – XBee portador . Os pinos de SPI em MCU são ligados aos pinos correspondentes do MRF24WB0MA para comunicar uns com os outros, enquanto alguns dos outros pinos (DIO, AD, PWM, etc.) são levados para fora para os pinos 20 de 2,0 milímetros de pinos macho. Por favor, note que não há firmware dedicado para Wifi Bee ainda agora, mas você pode usar o firmware deWiShield de AsyncLabs. Por favor, certifique-se de que você pode usá-lo antes de comprar.

Modelo: WLS48188P

350px-Seeedstudio_Wifibee_MRF24WB0MA

Características

  • Cabeçalhos compatíveis xbee
  • Programável usando Arduino IDE
    • Arduino Duemilanove bootloader pré-programado
  • Suporta baixa potência e baixa taxa de dados Wi-Fi.
  • 802.11b compatível
  • WEP, WPA-PSK, WPA2-PSK Segurança
  • LEDs para PWR e indicação de conexão Wi-Fi.

Idéias de Aplicação

  • Rede local sem fio
  • Rede de Sensores sem fio usando Grove – XBee Transportador
  • Conectividade com a Internet
  • Construa aplicativos de rede sem fim, com uIP TCP / IP Stack
    • Ideal para pessoas que querem aprender e experimentar com TCP / IP Stack

Esquemático

750px-Wifi_Bee_v0.91b

Especificação chave

Item Mínimo Típico Máximo
Operar tensão 3.0V 3.3V 3.6V
Temperatura de trabalho 0 ° C a + 70 ° C
Freqüência de trabalho 16MHz
MCU ATmega328P

Mecânicas Dimensões

Wifi Bee é de 27,2 milímetros x 35,7 milímetros de tamanho.

Equipamento

450px-Seeedstudio_WifiBee_Parts

 

Definição e classificação Pin

Pino # Tipo Pad Descrição Arduino Pin Número
3V3 1 Fornecimento de entrada VCC, + 3.3V
TX 2 Saída Uart porta Tx 1 (DIO)
RX 3 Entrada Porta Uart Rx 0 (DIO)
PB0 4 Input / Output ATmega328P PB0 8 (DIO)
! REAJUSTE 5 Entrada ATmega328 porta Repor
PD7 6 Input / Output ATmega328P PD7 7 (DIO)
PD6 7 Input / Output ATmega328P PD6 6 (DIO)
PD5 8 Input / Output ATmega328P PD5 5 (DIO)
! DTR 9 Entrada Usado para programar o ATmega328P
GND 10 GND GND
PC1 11 Input / Output ATmega328P PC1 1 (entrada analógica) / 15 (DIO)
PC0 12 Input / Output ATmega328P PC0 0 (entrada analógica) / 14 (DIO)
AD7 13 Entrada ATmega328P ADC7 7 (entrada analógica)
VREF 14 Entrada Porta ATmega328P AREF
AD6 15 Entrada ATmega328P ADC6 6 (entrada analógica)
INT1 16 Input / Output ATmega328P PD3 3 (DIO)
PC3 17 Input / Output ATmega328P PC3 3 (entrada analógica) / 17 (DIO)
PC2 18 Input / Output ATmega328P PC2 2 (entrada analógica) / 16 (DIO)
SCL 19 Input / Output ATmega328P PC5 5 (entrada analógica) / 19 (DIO)
SDA 20 Input / Output ATmega328P PC4 4 (entrada analógica) / 18 (DIO)

Uso

Instalação de hardware

400px-Bee_Stem_Connected_to_Wifi_BEE_and_A_Twig

Grove – XBee Carrier – Conectado a Wifi Abelha e alimentado por USB

Programação

Configuração de rede sem fio

Esta seção apresenta uma visão geral sobre como configurar uma rede doméstica com um roteador WiFi apropriado para Wifi Bee.

 

 

600px-WifiBee_Network_Architecture

Wireless Sensor Network – Demonstração de Arquitetura com Wifi Abelha Nodes

  1. Entre para interface de configuração web do roteador Wi-Fi usando um navegador web. Normalmente, um endereço IP padrão como 192.168.0.1 e um ID de login:admin e Senha: senha é fornecida pelo fabricante do roteador. Usa isto.
  2. No caso acima, o endereço IP 192.168.0.1 router é também o endereço IP do gateway da rede sem fio. A máscara de sub-rede para esse endereço IP é255.255.255.0
  3. Defina um nome ou SSID para a rede sem fio. Vamos configurá-lo para homenetwork. Esse nome será usado ao longo do tutorial.
  4. Qualquer nó que conecta a um roteador recebe um endereço IP através de DHCP. Mas, Wifi Bee não suporta DHCP. Temos de atribuir um endereço IP estático.Muitos roteadores fornecem reserva de endereço usando o endereço MAC para dispositivos de rede. Na seção de configuração da LAN do roteador sem fio, reserva de endereço IP 192.168.0.4 para Wifi Bee.
    1. Digite o endereço IP a ser reservada como 192.168.0.4. Este é o endereço IP de Wifi Bee
    2. Você precisa digitar o endereço MAC exibido na Wifi Abelha na forma de AB: CD: EF: GH: IJ: KL
    3. Dê o nome do dispositivo como WIFIBEE. Este nome pode ser qualquer palavra e não muito importante.
  5. Configure as opções de segurança da rede. Wifi Bee suporta Open (Segurança desativada), WEP (Wired Equivalent Privacy), WPA-PSK (Wi-Fi Protected Access Pre-Shared Key) e WPA2-PSK (Wi-Fi Protected Access 2 com chave pré-compartilhada). Definir uma opção de segurança adequado. Essa configuração é usada por Wifi Bee para estabelecer conexão.
    1. Vamos definir a opção de segurança para WPA-PSK.
    2. Modo WPA-PSK requer WPA-PSK Segurança Encryption chave de rede. Defina esta chave para 12345678
  6. Consulte o guia do usuário do roteador para a configuração de outra configuração como se conectar a internet, etc ..

Baixando e configurar a biblioteca para executar os exemplos de aplicação

Os exemplos de aplicação usa a biblioteca WiSheild de Asynclabs. Não há outra firmware dedicado para Wifi Bee. Esta biblioteca usa uip pilha TCP / IP de Adam Dunkels.Esta biblioteca é fornecida sob a GPL v2 pelo autor original. Assim, qualquer aplicação que pode ser construído com WiShield também deve ser compatível com GPLv2.

  1. Faça download da biblioteca de WiShield .
  2. Extraia o conteúdo para bibliotecas Arduino diretório / / WiShield.
  3. A biblioteca vem com muitos exemplos de aplicação. Ele é escrito de uma forma configurável de modo que apenas a funcionalidade necessária é construído. Isso economiza FLASH.
    • Esta configuração é feita em /libraries/WiShield/apps-conf.h.
    • Descomente o modo desejado para o aplicativo que você está construindo como web-server ou WEB-CLIENT ou aplicativo de soquete, etc .. em arquivo/libraries/WiShield/apps-conf.h.
    • Por exemplo, se você quiser construir um Web Application Server a APP_WEBSERVER #define deveria ter sido uncommented e todos os outros modos são comentados. Esta mudança exige reconstruir da biblioteca. Daí fechar e re-aberto Arduino IDE.
  4. Vamos construir o exemplo WebServer.
    • Defina a configuração do modo como APP_WEBSERVER em /libraries/WiShield/apps-conf.h.
    • Abrir bibliotecas / WiShield / examples / WebServer / esboço / WebServer.pde em Arduino IDE
    • Defina o local_ip [] array para {} 192,168,0.4. Este endereço IP Wifi Bee como configurado acima.
    • Defina o gateway_ip [] array para {} 192,168,0,1. Este é o endereço IP do roteador como configurado na configuração da rede acima.
    • Defina o subnet_mask [] array para {} 255,255,255,0. Esta é a máscara de sub-rede para a rede local sem fio.
    • Definir SSID prog_char [] para {“homenetwork”}. Esse nome também foi atribuído durante a configuração da rede.
    • O próximo passo é definir o security_type para opções de segurança configuradas durante a configuração da rede. Situado a 2 (ou seja, WPA), conforme configurado no roteador Wi-Fi.
      • //unsigned char security_type = 2; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2
    • Também definir const prog_char security_passphrase[] PROGMEM = {"12345678"}
  5. O esboço WebServer.pde modificado parece com o código listado abaixo.
  6. Defina o tipo de placa de Arduino Duemilanove e compilar o esboço.
  7. Enviá-lo Wifi Abelha e pressione o botão Reset
  8. Se tudo correr bem o Wifi Bee conecta a homenetwork e o LED azul (LED Wi-Fi) brilha
  9. Abra um navegador da web a partir de um PC conectado à homenetwork e digite a URL http://192.168.0.4
  10. Você iria receber a mensagem Hello World!! I am WifiBee. Hello World!! I am WifiBee.

 / * 
   * Servidor Web: exemplo WebServer.pde Modificada.  
   * Um exemplo de servidor web simples usando a biblioteca WiShield e WiBee.  
   * /

 #include <WiShield.h>

 #define WIRELESS_MODE_INFRA 1
 #define WIRELESS_MODE_ADHOC 2

 // parâmetros de configuração sem fio ----------------------------------------
 unsigned char local_ip [] = {192, 168, 0, 4}; // endereço IP de Wifi Bee
 unsigned char gateway_ip [] = {192, 168, 0, 1}; // router ou gateway IP address
 unsigned char subnet_mask [] = {255, 255, 255, 0}; // máscara de sub-rede para a rede local sem fio
 const ssid prog_char [] = {PROGMEM "homenetwork"}; // máximo de 32 bytes

 unsigned char security_type = 2; // 0 - aberto;  1 - WEP;  2 - WPA;  3 - WPA2

 // WPA / WPA2
 prog_char const security_passphrase [] = {PROGMEM "12345678"}; // máximo 64 caracteres.  O nome da rede.

 // WEP chaves de 128 bits
 // chaves amostra HEX
 wep_keys prog_uchar [] = {PROGMEM 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // chave 2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // chave 3
				 };

 // Configurar o modo sem fio
 // Infra-estrutura - se conectar ao AP
 // Adhoc - se conectar a outro dispositivo WiFi
 unsigned char wireless_mode = WIRELESS_MODE_INFRA;

 unsigned char ssid_len;
 unsigned char security_passphrase_len;
 // ------------------------------------------------ ---------------------------

 void setup ()
 {
	 WiFi init (.);
 }

 // Este é o site que é servido pelo servidor web
 webpage prog_char const [] = {PROGMEM "HTTP / 1.1 200 OK \ r \ n Content-Type: text / html. \ r \ n \ r \ n <center> <h1> Olá mundo !! Estou WifiBee </ h1 > </ center> "};

 void loop ()
 {
	 . WiFi run ();
 }

Exemplos

Servidor Web simples que envia valor do sensor ao navegador Web

  • Use a configuração de rede, como descrito acima.
  • Use a Grove – XBee portador para a programação e poder.
  • Configurar aplicativos de conf.h, de tal forma que apenas o modo APP_WISERVER é usado.
  • Compilar e carregar o seguinte esboço para Wifi Bee usando Arduino IDE, como descrito por exemplo acima.
  • Pressione o botão de reset. Aguarde até que o Wifi Bee se conectar à rede Wi-Fi (LED azul acende).
    • Informações detalhadas da comunicação de rede pode ser visto; se, terminal de porta serial é aberta em Arduino IDE (com 57600 baud).
  • Abra um navegador da web a partir de um PC conectado à homenetwork e digite a URL http://192.168.0.4
  • WifiBee serve o valor do sensor para o browser. O código HTML é escrito de tal maneira que auto refresca a cada 10 segundos.

 

/ * 
 * Um esboço simples que usa WiServer e Seeedstudios Wifi abelha para servir uma página web. 
 * Um sensor analógico está ligado a A2 de Wifi Bee (usar Grove - XBee Carrier).  Este valor é enviado para o Cliente (um navegador da web).  A página HTML é preparado com base no valor do sensor.  Ele também tem direção Para refrescar-se automaticamente. 
 / * Este exemplo baseia-se SimpleServer.pde.  
 / * Para que este exemplo funcione, modificar o arquivo de aplicativos de conf.h como abaixo;  apenas no modo APP_WISERVER está habilitado:  
  -------------------------------------------------- ------------------ 

  // Aqui, incluem o arquivo de cabeçalho para o aplicativo (s) que usamos em nosso projeto. 
  // # Definir APP_WEBSERVER 
  // # Definir APP_WEBCLIENT 
  // # Definir APP_SOCKAPP 
  // # Definir APP_UDPAPP 
  #define APP_WISERVER 
  -------------------------------------------------- -------------------- 
  * /

 #include <WiServer.h>

 #define WIRELESS_MODE_INFRA 1
 #define WIRELESS_MODE_ADHOC 2

 // parâmetros de configuração sem fio ----------------------------------------
 unsigned char local_ip [] = {192, 168, 0, 4}; // endereço IP do WifiBee
 unsigned char gateway_ip [] = {192, 168, 0, 1}; // router ou gateway IP address
 unsigned char subnet_mask [] = {255, 255, 255, 0}; // máscara de sub-rede para a rede local
 const ssid prog_char [] = {PROGMEM "homenetwork"}; // máximo de 32 bytes

 unsigned char security_type = 2; // 0 - aberto;  1 - WEP;  2 - WPA;  3 - WPA2

 // WPA / WPA2
 prog_char const security_passphrase [] = {PROGMEM "12345678"}; // máximo 64 caracteres

 // WEP chaves de 128 bits
 // chaves amostra HEX
 wep_keys prog_uchar [] = {PROGMEM 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // chave 2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // chave 3
				 };

 // Configurar o modo sem fio
 // Infra-estrutura - se conectar ao AP
 // Adhoc - se conectar a outro dispositivo WiFi
 unsigned char wireless_mode = WIRELESS_MODE_INFRA;
 unsigned int SensorValue;
 unsigned char ssid_len;
 unsigned char security_passphrase_len;
 // Fim de parâmetros de configuração sem fio ----------------------------------------

 int contador;
 // Esta é a nossa função porção página que gera páginas web
 boolean sendMyPage (char * URL) {

     // Verifique se os jogos URL pedido "/"
     if (strcmp (URL, "/") == 0) {
         // Impressão de Uso WiServer e funções println para escrever o conteúdo da página
         WiServer print ("<html>.");

         // Instrua o browser web para refersh a cada 10 segundos
         . WiServer print ("<head> <meta http-equiv = \" Atualizar \ "content = \" 10 \ "> </ head>"); 
         WiServer println ("<H1> WifiBee Conectado ... <H1>.");
         WiServer print ("<H2> Sensor Valor =.");
         . WiServer impressão (SensorValue); //A2 está conectado a um sensor exernal. O valor RAW é enviado para o cliente.
         WiServer print ("</ h2> </ html>.");
         return true;
     }
     // URL não encontrado
     return false;
 }

 void setup () {

   // Inicializar WiServer e tê-lo usar a função sendMyPage para servir páginas
   . WiServer init (sendMyPage);

   // Ativa a saída de série e pedir WiServer para gerar mensagens de log (opcional)
   Serial . begin ( 57600 ) ;
   . WiServer enableVerboseMode (true);
 }

 void loop () {
   SensorValue = analogRead (A2); // A2 está conectado a um sensor exernal via interface em Grove Grove - XBee Transportador.
   // Run WiServer
   WiServer server_task ().;
   delay (10);
 }

 

Cliente Web simples que envia sensor de feeds para Pachube.com

This section will be revised later

  • Use a configuração de rede, como descrito acima.
  • Use a Grove – XBee portador para a programação e poder.
  • Configurar aplicativos de conf.h, de tal forma que apenas o modo APP_WISERVER é usado.
  • Compilar e carregar o seguinte esboço para Wifi Bee usando Arduino IDE, como descrito por exemplo acima.
  • Pressione o botão de reset. Aguarde até que o Wifi Bee se conectar à rede Wi-Fi (LED azul acende).
    • Informações detalhadas da comunicação de rede pode ser visto; se, terminal de porta serial é aberta em Arduino IDE (com 57600 baud).
  • Wifi Bee alimenta periodicamente os dados para Pachube.com

 

/ * 
*Um esboço simples que usa WiServer biblioteca e WifiBee de Seeedstudio para enviar sensor de
   * Alimentar para pachube.com; 
   * Esta versão é modificado SimpleClient.pde.  Direitos de autor cabe ao autor original.  
 / * Para que este exemplo funcione, modificar o arquivo de aplicativos de conf.h como abaixo;  apenas no modo APP_WISERVER está habilitado:  
  -------------------------------------------------- ------------------ 
  // Aqui, incluem o arquivo de cabeçalho para o aplicativo (s) que usamos em nosso projeto. 
  // # Define APP_WEBSERVER 
  // # Define APP_WEBCLIENT 
  // # Define APP_SOCKAPP 
  // # Define APP_UDPAPP 
  #define APP_WISERVER 
  -------------------------------------------------- -------------------- 
  * /


 #include <WiServer.h>

 #define WIRELESS_MODE_INFRA 1
 #define WIRELESS_MODE_ADHOC 2

 // parâmetros de configuração sem fio ----------------------------------------
 unsigned char local_ip [] = {192, 168, 0, 4}; // endereço IP do WifiBee
 unsigned char gateway_ip [] = {192, 168, 0, 1}; // router ou gateway IP address
 unsigned char subnet_mask [] = {255, 255, 255, 0}; // máscara de sub-rede para a rede local
 const ssid prog_char [] = {PROGMEM "homenetwork"}; // máximo de 32 bytes

 unsigned char security_type = 2; // 0 - aberto;  1 - WEP;  2 - WPA;  3 - WPA2

 // WPA / WPA2
 prog_char const security_passphrase [] = {PROGMEM "12345678"}; // máximo 64 caracteres

 // WEP chaves de 128 bits
 // chaves amostra HEX
 wep_keys prog_uchar [] = PROGMEM 
 {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // chave 2
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // chave 3
 };

 // Configurar o modo sem fio
 // Infra-estrutura - se conectar ao AP
 // Adhoc - se conectar a outro dispositivo WiFi
 unsigned char wireless_mode = WIRELESS_MODE_INFRA;

 unsigned char ssid_len;
 unsigned char security_passphrase_len;
 // Fim de parâmetros de configuração sem fio ----------------------------------------


 // Funções que imprime os dados a partir do servidor
 void printData (char * dada, int len) {

   // Imprima os dados retornados pelo servidor
   // Observe que os dados não é null-rescindido, podem ser divididos em pacotes menores, e
   // Inclui o cabeçalho de HTTP.
   while (len -> 0) {
     Serial . print ( * ( data ++ ) ) ;
   } 
 }

 int SensorValue = 0;
 // Prepara dados para o feed
 anular pachubefeedData () 
 {
    SensorValue = analogRead (A2); // Leia sensor analógico ligado a A2 (Use Grove - Interface XBee Carrier)
    WiServer. print ( sensorValue ) ;
 }



 // Endereço IP para pachube.com
 uint8 ip [] = {173, 203, 98, 29};

 Char hostName [] = "www.pachube.com \ n X-PachubeApiKey: YOUR_API_KEY_HERE \ n Connection: close"; // Substitua YOUR_API_KEY_HERE, com a sua chave API
 caractere url [] = "/api/12345.csv?_method=put"; // Substitua 12345 com o seu número de alimentação

 // Um pedido que os postos de dados para Pachube
 POSTrequest postPachubeFeed (ip, 80, hostname, url, pachubefeedData);


 void setup () {
     // Inicializar WiServer (vamos passar NULL para a função principal que serve uma vez que não precisa servir páginas web)
   . WiServer init (NULL);

   // Ativa a saída de série e pedir WiServer para gerar mensagens de log (opcional)
   Serial começar (57600).;
   . WiServer enableVerboseMode (true);

   // Já a função ProcessData chamado quando dados são devolvidos pelo servidor
   . postPachubeFeed setReturnFunc (printData);
 }


 Quando os dados devem ser recuperados // Tempo (em Millis)
 long updateTime = 0;

 void loop () {

   // Verifique se é hora de enviar uma atualização
   if (millis ()> = updateTime) {
     postPachubeFeed submit ().;    
     // Enviar uma outra atualização após um min
     updateTime + = 60;
   }

   // Run WiServer
   WiServer server_task ().;

   delay (10);
 }

 

Lista de materiais (BOM) / Lista de peças

 
Parte Quantidade Valor Pacote
C1 1 10u C_TAN_3X3.5
C2, C3 2 1U 0603
C4 1 100n 0603
J1 1 CK_2X3_2.0 CK_2X3_2.0
PWR 1 vermelho LED0603
R1 1 10k 0603
R2, R3, R4, R5, R7 5 4.7k 0603
R6 1 1k 0603
U1 1 OPEN_BEE XBEE_EXT_SMD
U3 1 MRF24WB0MA MRF24WB0MA
U4 1 ATmega328P_MU1040 MLF32X
WIFI 1 azul LED0603
X1 1 16MHz XTAL_3X2

Apoio

Se você tiver dúvidas ou outras idéias de design melhores, você pode ir ao nosso fórum ou deseja discutir.

 

Recursos

 

Link: http://www.seeedstudio.com/wiki/Wifi_Bee

nRF24L01 – Bibliotecas e Exemplos

MySensors

Construir uma rede de rádio habilitada para malha entre seus sensores usando o Arduino Biblioteca MySensors NRF24L01 . O site MySensors também contém instruções fáceis de seguir e exemplos Arduino para ajudá-lo a criar seus próprios sensores sem fio.

AVRLib

Uma porta Arduino do tinkerer.eu biblioteca. Ele funciona com os módulos Sparkfun nRF24L01 +. Nota: Esta biblioteca suporta um pequeno (mas útil) subconjunto dos recursos oferecidos pelo chip nRF24L01.

Ver também repositório github

RadioHead

Uma biblioteca cheia de recursos com suporte para muitos rádios diferentes, não apenas nRF24L01: AQUI

RF24

Atualizado recentemente / Otimizada (2014) Biblioteca NRF24L01 para Arduino, ATTINY,Due, e Raspberry Pi inclui recursos / correções de vários garfos e grandes atualizações RF24 Repo

Outra biblioteca nRF24L01 no github RF24 repo – Estas bibliotecas também incluem Raspberry Pi bibliotecas / motoristas.

Mirf

Download -> Mirf.zip Outra garfo de Mirf que cobre núcleos ATTINY repositório github

Documentação

Pins:

  • MISO -> 12
  • MOSI -> 11
  • SCK -> 13

Configurável:

  • CE -> 8
  • CSN -> 7

Propriedades:

byte Čepin
CE Pin controla RX / TX, padrão 8.
byte csnPin
CSN Pin (Chip não selecione), padrão 7.
canal de byte
Canal RF 0-127 ou 0-84 em os EUA, padrão 0.
byte payload
Tamanho em bytes, padrão 16, max 32.

NB: canal e carga deve ser o mesmo para todos os nós.

Métodos:

void init (void)
// Inicializar o módulo, definir os modos de pinos para os pinos configuráveis ​​e inicializar o módulo SPI.

  Exemplo:
 Mirf.csnPin = 9;
 Mirf.cePin = 7;

 Mirf.spi = & MirfHardwareSpi;  // Definir o motorista SPI

 Mirf.init ();
setRADDR void (byte * addr)
Defina o endereço de recebimento. Os endereços são cinco bytes de comprimento.

  Exemplo:
 Mirf.setRADDR ((byte *) "addr1"); 
setTADDR void (byte * addr)
Defina o endereço de envio.

  Exemplo:
 Mirf.setTADDR ((byte *) "addr1");
Configuração (void)
Definir canal e largura de carga útil. Power up no modo de RX e lave FIFO RX.

  Exemplo:
 Mirf.payload = 32;
 Mirf.channel = 2;
 Mirf.config ();
bool dataReady (void)
Existe dados pronto para ser recebido ?.

  Exemplo:
 if (Mirf.dataReady ()) {
   // Obter os dados para brincar.
 }

void getData(byte *data)

Obtenha os dados recebidos. ‘Dados’ deve ser um array de bytes Mirf.payload longo.

  Exemplo:
 byte data [Mirf.payload]
 Mirf.getData (data);
send void (byte *data)
Enviar dados. ‘Dados’ deve ser Mirf.payload bytes.
bool isSending (void)
Retorna verdadeiro se ainda tentando enviar. Se o chip ainda está em modo de transmissão, então este método irá devolver o chip de modo a receber.

  Exemplo:
 Mirf.send (data);

 while (Mirf.isSending ()) {
  // Wait.
 }

 // Chip está agora em modo de recepção.

NB: Os lotes estão disponíveis mais informações a partir dos registros de status relacionadas acknolagement ou estado de falha. Veja Mirf.cpp: 218.

bool rxFifoEmpty (void)
RX Fifo vazio.
bool txFifoEmpty (void)
TX Fifo vazio.
byte getStatus (void)
Retorne o registrador de status.
void powerUpRx (void)
Power Up chip e definir o modo de receber. Também claro envio interrupções.
powerUpTx vazio (void)
Power Up em modo tx.
Exemplos

Veja exemplos de pastas no arquivo zip.

Outra documentação

Também ver esta extensa nRF24L01 How-To na WIKI ArduinoInfo .info AQUI

 

Link: http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01

Eagle – Diagramação de circuitos eletrônicos

Há uma série de softwares para a confecção de diagramas de circuitos eletrônicos, sendo encontrados tanto os que são pagos como os gratuitos. Neste tutorial será abordado o software Eagle que se tornou bastante popular e pode ser obtido aqui.

O Eagle em sua versão gratuita restringe a área de trabalho em 10 x 8 cm e 2 camadas, no entanto, estas limitações ainda permitem a confecção de circuitos de significativa complexidade, o que tem garantindo a sua popularização entre hobistas.

Assim que o Eagle é iniciado, surge a tela abaixo:
eagle_inicial
Neste ponto, é necessário iniciar um novo projeto o que pode ser feito em:

File–>New–>Project

Assim que criado o projeto, o próximo passo é criar o esquemático a partir de:

File–>New–>Schematic

Neste ponto deve surgir uma tela similar à exibida logo abaixo:

esquematico
Para adicionar um componente ao diagrama basta clicar no botão Add que se encontra na barra lateral esquerda. Neste momento surge a tela:
eagle_inicial componente
Se for inserido mega8* no campo de pesquisa de componentes, surgirão todos os componentes cadastrados e cujos nomes se iniciam por “mega8”. Se, por outro lado, for inserido mega8-P no campo de pesquisa, apenas o componentes com este nome específico é que será localizado.
Para visualizar toda a biblioteca de componentes sem a aplicação de filtros, basta deixar vazio o campo de pesquisa e pressionar ENTER.
Uma vez escolhido o componente desejado, basta pressionar OK e inseri-lo no diagrama.

Há diversos tutoriais do EAGLE na internet, assim, para aqueles que querem se aprofundar no assunto, segue abaixo uma série de links interessantes:

Outro programa bastante interessante e que permite elaborar circuitos como se estivessem no protoboard é o Fritizing. Na figura abaixo está um exemplo de circuito em que uma placa Arduino é conectada a outros componentes do protoboard.

fritzing

Sensor de temperatura DS18B20

O sensor DS18B20 utiliza o protocolo de comunicação 1-Wire. Este protocolo permite a conexão de inúmeros dispositivos numa mesma rede, utilizando apenas 1 fio para a troca de dados.

O sensor DS18B20 fornece temperaturas entre -55°C e 125°C com uma precisão de ±0.5°C no intervalo de -10°C to +85°C. Vide datasheet. Ele é identificado na rede 1-Wire a partir de um código único de 64 bits.

Na figura acima são observados os seus pinos no encapsulamento TO92. Nota-se que o pino GND corresponde ao terra, VDD a 5V e no pino DQ é fornecida a informação de temperatura.
 Um microcontrolador pode ler informações deste sensor utilizando um único fio e resistor de pull-up, sendo normalmente utilizado um resistor de 4k7 ohms.

No circuito abaixo observa-se a conexão do sensor com uma placa arduino, sendo que foi escolhida a porta digital 2 do arduino para a leitura do sensor.

ds18b20_schem
Com este circuito, é possível monitorar as temperaturas amostradas pelo sensor utilizando o código  abaixo. As bibliotecas OneWire e DallasTemperature podem ser obtidas aqui. Basta descompactar as bibliotecas no diretório “libraries” do ambiente arduino.
#include "OneWire.h"
#include "DallasTemperature.h"


#define ONE_WIRE_BUS 2       // sensor conectado na porta digital 2


OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
Serial.begin(9600);
sensors.begin();
}

void loop() {
sensors.requestTemperatures();

Serial.print(“Temperatura no sensor 1 : “); // pode haver mais
Serial.println(sensors.getTempCByIndex(0)); // do que um sensor
}

Para verificar as temperaturas amostradas, basta pressionar a tecla “Serial Monitor” no ambiente de programação arduino e visualizar uma tela similar à figura abaixo:

ds18b20Janela

Circuitos Eletrônicos Diversos

Circuito de Leitor de Cartão Sim

Esse é um leitor de Chip Sim de telefones celulares, ele usa um ci MAX232 para fazer a leitura do chip a partir de uma porta seria de computador. Cartão Sim é um circuito integrado do tipo smart card utilizado para identificar, controlar e armazenar dados de telefones celulares de tecnologia GSM (Global System for Mobile Communications) .
O  Cartão Sim costuma armazenar dados como informações do assinante, agenda, preferências (configurações), serviços contratados, SMS e outras informações. SIM quer dizer Subscriber Identity Module (“módulo de identificação do assinante”).
———————————————————————————————————————-

Circuito Detector de microondas

O Circuito Detector de Microondas indica a presença de radiação na gama de micro-ondas. É possível testar transmissores, celulares e qualquer aparelho nessa faixa de frequência. Esse detector tem um alcance que pode chegar a 10 m. O sinal de Microondas e captado pela antena receptora, amplificado e chega ao detector onde é emitido um sinal sonoro .
———————————————————————————————————————-

Painel solar Caseiro com Diodos

Este é um painel solar caseiro feito de diodos, tanto ele pode ser feito de diodos comuns desde que sejam em capsulas de vidro transparentes, como também podem ser feitos de LEDs. O Módulo do painel de energia solar consiste de 20 diodos, ele fornece uma tensão de 2,5 a 3 volts, e a sua corrente fica em torno de 35 mA usando luz solar direta.
O módulo é composto por quatro blocos conectados em paralelo, cada bloco de cinco diodos ligados em série. Cada diodo de é capaz de fornecer uma tensão a 0,5 volts.
———————————————————————————————————————-

Circuito Medidor de Campo de baixa frequencia LF

O Circuito acima é um Medidor de Campo de Baixa Freqüência LF, este detector foi projetado principalmente para o monitoramento de campo eletromagnético de baixa frequência e eletricidade estática perto de equipamentos, bem como a detecção de cabos de tensão, transmissores de rádio ocultos ou outros dispositivos de RF LF. O detector tem seis escala DE segmento de LED. O primeiro segmento é sempre aceso e significa que o aparelho está ligado.
———————————————————————————————————————-

Isca de Peixe Eletrônica

Este dispositivo emite um som que atrai peixes, as configurações de som são definidas por duas resistências variáveis, trimpots, que devem ser ajustadas para um melhor desempenho. Essa Isca Eletrônica pode utilizar fone de telefone, modificado para serem usados embaixo d´água. Usado o aparelho da seguinte maneira, de 5-10 segundos, a intervalos de 15-20 segundos.
———————————————————————————————————————-

Como testar display de LCD

Os displays de LCD (Cristal liquido) São comuns em quase todos os aparelhos eletroeletrônicos, eles trabalham pela mudança nas propriedades de reflexão (polarização) do filme de cristal líquido (líquido composto de cristais com propriedades específicas). Para torná-lo sinais precisamos de uma pequena tensão AC de poucos mA. A tensão DC se usada no mostrador de cristal líquido pode funcionar, mas irá danificar os segmentos do cristal  líquido.
O AC também é muito perigoso, é possível reduzir a corrente através de uma resistência variável RP 1.
———————————————————————————————————————-

Circuito de controle de Tenção por temperatura

Este circuito regula automaticamente a tensão ou a velocidade de um motor de um ventilador de PC, isso em função da temperatura, Um termistor deve ser preso ao local onde se deseja fazer a detecção de calor. O circuito irá manter o ventilador a uma velocidade baixa, enquanto a temperatura do dissipador de calor é mantido a um nível muito baixo, quando a temperatura sobe, a velocidade do ventilador também irá aumentar.
Além disso o circuito usa um LM317, regulador de tensão que suporta até 1,5A de corrente, já o termistor NTC é do tipo que diminui a sua resistência quando a temperatura aumenta a partir da sua superfície.
———————————————————————————————————————-

Circuito Mixer de Audio de Baixo Custo

 

Este é um pratico circuito que usa apenas um transistor e pode mixar  3 entradas de áudio com uma excelente qualidade. Este circuito além de ser de baixo custo, fácil de construir, também tem um consumo minimo, podendo ser ligado juntamente com o amplificador, transmissor, ou o equipamento gerador de áudio. Ele pode ser alimentado por uma bateria 9 volts e o seu componente principal é o  transistor BC109.
———————————————————————————————————————-

Circuito medidor de Intensidade de Campo

Este é mais um circuito de medidor de intensidade de campo, ele é ideal para testar a funcionalidade de pequenos transmissores de Rádio. O medidor mostra a presença de ondas de RF que vão de 100kHz até 100MHz. A indicação da intensidade de sinal pode ser medida através de um microamperímetro de 200µA.
———————————————————————————————————————-

Circuito Amplificador Valvulado

Elas voltaram! Sim cada vez mais tem aparecido circuitos, principalmente amplificadores utilizando Válvulas eletrônicas. O circuito acima é bem simples, ele é um amplificador de áudio valvulado, que utiliza apenas uma válvula ECL82. Ele é ideal para a utilização em toca discos antigos, ou ser acoplado a um receptor de rádio valvulado.
———————————————————————————————————————-

Circuito Amplificador de Audio usando TIP31

Este é um amplificador que usa transistores, e em sua saída ele utiliza um transistor TIP31. Com apenas 3 transistores ele tem uma excelente amplificação, além de ser econômico e fácil de construir,. Este projeto é ideal para iniciantes e os transistores BC549, BC307 e o TIP31C podem ser substituídos sem problema.
———————————————————————————————————————-

Circuito Simples de Controle de Velocidade de Motor DC

Não é difícil controlar a velocidade de um motor de corrente continua, mas muitas vezes não temos componentes na mão e só resta o improviso. Este circuito aproveita a queda de tensão através de ponte de díodos retificadores para produzir uma tensão variável para um motor de corrente contínua. Ele não é tão eficiente como um circuito comutador, mas tem as virtudes da simplicidade. As quatro pontes de onda completa estão ligados de modo a que cada um tem dois pares de díodos em série e em paralelo, que dá uma queda de tensão de cerca de 1,4 V cada, de acordo com a corrente de carga.
———————————————————————————————————————-

Circuito de Proteção contra Inversão de Polaridade usando Mosfet

O esquema de ligações acima é um circuito de Proteção contra Inversão de Polaridade de fonte usando Mosfet.  Ele é ideal para pequenos circuitos de baixo consumo, onde pode ocorrer inversões de polaridade acidentais. O circuito usa os transistores Mosfet, canal n para ligação a terra e canal p para ligação no positivo.
———————————————————————————————————————-

Circuito Indicador Bicolor de Estado do Fusível

Este Circuito é um Indicador luminoso  Bicolor do Estado do Fusível que  pode incrementar ainda mais sua fonte ou bancada, pois ele usa um Led Bicolor para indicar as condições do fusível do circuito. O fusível queimado o Led fica vermelho e o fusível em bom estado o Led é verde.
———————————————————————————————————————-

Circuito de Alarme de Interrupção de Luz

Este é um circuito muito útil que pode ser usado para diversas aplicações, como um alarme residencial, sistema de passagem industrial, etc. Ele consiste em um Led que emite uma luz para um fototransistor  quando a luz é cortada o IC 555 dispara, emitindo um som de alerta.
———————————————————————————————————————-

Circuito Detector de Movimento Infravemelho

Este circuito é um detector de movimento Infravermelho de baixo custo que pode ser usado em montagens com Arduino. Ele pode ser construído utilizando sucatas de videos K7, seus componentes principais são um fototransistor e um LED IR ,  seu desempenho é bom, podendo ser usados em montagens sem PCI.
———————————————————————————————————————-

Circuito Gerador de Indutância de 1000H

Indutores podem ser simulados facilmente usando amplificadores operacionais, o circuito acima foi desenvolvido para ter uma indutância de 1000 Henry. Usando este projeto você pode construir um circuito ressonante com uma frequência central de menos de 1 Hz. O comportamento lento permite que você use instrumentos de medição convencionais para pesquisar circuitos em tempo real. Ele pode também ser utilizado como parte de um filtro.
———————————————————————————————————————-

Circuito Descarregador de Bateria Simples

O circuito deste descarregador de bateria pode ser melhorada pela adição de um díodo Schottky (D3). Isto assegura que uma célula de NiCd não é descarregada para menos de 0,6-0,7 V, mas apenas menos de 1 V, tal como recomendado pelos fabricantes de baterias. Um efeito adicional é o LED D2 que pisca quando a bateria é ligada aos terminais e está com carga. O circuito é baseado num multivibrador astável operando a uma frequência de cerca de 25 kHz.

 

———————————————————————————————————————-

Fonte 12V sem Transformador

Muitos circuitos podem ser alimentados diretamente a partir de uma tomada, desde que se tome muito cuidado e com a ajuda de um capacitor em série (C1). A desvantagem desta fonte é que, geralmente, apenas meia onda da rede de distribuição pode ser usada para produzir uma tensão DC. Uma solução óbvia é a utilização de um retificador de ponte para executar a retificação de onda completa, o que aumenta a quantidade de corrente que pode ser fornecida e permite que o capacitor de filtro seja menor.
A corrente é de cerca de 15 mA. Um último aviso: este tipo de circuito é diretamente ligado à tensão da rede, pode ser letal. Você nunca deve entrar em contato com este circuito! É essencial alojar o circuito de forma segura numa caixa adequada.
———————————————————————————————————————-

Conversor 12Volts para 3Volts

Este é um circuito simples e barato para converter a tensão de 12V a uma tensão de 3 Volts que pode ser usado na alimentação de microcontroladores. penas alterações nos resistores de 270 ohms e 390 ohms podem fazer a saída de 3 volts chegar aos 3,3Volts que é mais adequada a alguns circuitos. A corrente deste circuito depende do tipo de LM317 que é usado, para correntes elevadas ele deve ter um  dissipador de calor adequado.
———————————————————————————————————————-

Projeto completo Inversor de Tensão

Este é um projeto de inversor de tensão DC/AC completo que possui rede de comutação e carregamento automático. Isso quer dizer que ele é ligado automaticamente logo que a rede elétrica cai, e ao retornar ele desliga e começa a carregar a bateria, isso automaticamente quando inversor de alimentação está desligado. Este projeto é baseado no oscilador Inversor 4047 e é um projeto completo.
———————————————————————————————————————-

Circuito Detector de Umidade

Este circuito é um detector de umidade muito simples e tem apenas alguns componentes e pode ser utilizado para a ativação de outros equipamentos eletrônicos. O sensor é construído a partir de dois pedaços de cobre, colocadas a uma curta distância um do outro. Quando a resistência elétrica do pedaço de cobre cair abaixo de um determinado valoro relé dispara. O circuito tem um baixo consumo e requer 5 V de alimentação DC.
———————————————————————————————————————-

Circuito Sensor Capacitivo

Este circuito pode ser usado para diversas utilidades como  por exemplo, uma chave eletrônica escondida,  ou qualquer dispositivo que precise apenas ser tocado para ser acionado. O relê pode ser ativado ao colocar a sua mão sobre a placa. Para uma operação apropriada, o terra do circuito deve ser eficiente, por isso a necessidade de ligação a uma tomada, a isolação é feita através de um capacitor. Cuidado a efetuar essa ligação!
———————————————————————————————————————-

Simples Detector de Eletricidade Estática

 O detector de eletricidade estática acima é muito simples, ele é usado para detectar campos elétricos próximos. Você pode facilmente demonstrar um campo estático, caminhando sobre um tapete e depois tocar a ponta do detector sobre ele. Quando o detector é colocado ao lado de uma televisão ou monitor de computador, ele é ativado pela alta tensão que acelera os elétrons no tubo de imagem.
Um 2N3819 que é um transistor de efeito de campo é utilizado como o sensor de campo estático. Um fio de terra ou pequena antena de rádio telescópica é conectado à porta do FET. O fio de fonte é ligado à terra e o fio de drenagem está ligado a um medidor de 0-1 mA.
———————————————————————————————————————-

Circuito de Fonte 12 volts para porta USB

Usando este circuito podemos converter 5V DC a partir da porta USB do computador para 12V DC. O coração deste circuito é IC LT1618 , conversor de tensão por impulso constante, o IC tem uma ampla gama de tensão de entrada de 1,8 a 18V DC e tensão de saída pode ser de até 35V DC. As resistências do circuito R1, R2 definem a tensão de saída. Pino 9 é o pino de desligamento, menos de 0,3 V a este pino irá desligar o IC.
2 e C3 deve ser de pelo menos 15V.
Menos de 0,3 V no pino de desligamento desativará o IC.
A tensão de saída é regulada pela equação seguinte R1 = R2 ((Vout / 1.263V) -1).
———————————————————————————————————————-

Inversor para Lâmpada Fluorescente 40 Watts

Este é certamente um circuito de baixo custo para quem quer fazer um inversor para lâmpadas fluorescentes de até 40W. Ele permite usar um tubo de lâmpada de 40 watts (ou dois tubos de 20 watt em série). Certamente é muito fácil de construir e não há necessidade da placa de circuito impresso. O transformador é uma barra de ferrite (de um rádio antigo) e o fio de enrolamento pode ser de um transformador velho.O diâmetro do  fio do enrolamento  primário pode ser de 0,28 mm e secundário 0,61 mm de diâmetro (diâmetros de fios não são críticos). Use fita isolante ou fita adesiva para separar os enrolamentos.
———————————————————————————————————————-

Mini Transmissor de FM DE 3v com Bobina na PCI

O circuito acima é um esquema e PCI de um transmissor de FM de 3Vdc que é uma solução simples para quem precisa de um transmissor de áudio de baixa potência. Ele transmite áudio usando um microfone de eletreto que é muito sensível e bem pequeno. A frequência do transmissor, conforme construída é ajustável por meio do capacitor de 15 pF, a bobina é incorporado na placa de circuito impresso e não precisa de ajustes.
———————————————————————————————————————-

Circuito de Alarme de Alta Temperatura

O acima circuito é um alarme que nos alerta quando existe um grande aquecimento, seu componente principal é o termistor TH1, sua resistência varia entre 10K a 25 ° C e cerca de 1K a 94 ° C. O alarme é ativado quando a temperatura é maior do que o padrão ajustada pelo usuário  O termistor deve estar localizado longe do resto do circuito e o circuito pode ser alimentado por uma bateria 9V ou uma fonte.
O ajuste pode ser efetuado por imersão do termistor TH1, na água que se sabe a  temperatura e ajustando o TR2 até  a temperatura desejada. O cabo que liga o circuito com o TH1 devem ser blindados.
———————————————————————————————————————-

Rádio AM usando Porta NAND

Este circuito de recepção de AM explora o comportamento de uma porta NAND como um amplificador de áudio. Este receptor é bem compacto e simples. Devido a sua antena de haste de ferrite, há um forte efeito direcional que permitem aumentar ou diminuir o volume do áudio (por vezes muito forte), virando o receptor para a esquerda ou direita em um plano horizontal. O potenciômetro de 4M7 é o controle de volume.
———————————————————————————————————————-

Simples Circuito Detector de Radioatividade

O Circuito acima é um Detector de Radioatividade, ou seja, também chamado de detector de radônio, radon ou radão, que é um gás radioativo liberado a partir do urânio, ele é invisível, insípido e inodoro. Encontra-se em concentrações variadas por todo o mundo. Alguns lugares têm níveis mais elevados de radônio do que outros, o que torna um detector de radônio uma precaução de segurança inteligente para todos.
———————————————————————————————————————-

Simples Circuito Receptor Escuta para Aviação

As comunicações entre aeronaves comerciais com o solo pode ser interessante, divertido e às vezes até mesmo curioso. No entanto rádios que recebem em frequências de 20MHz sté 400MHz, banda comumente usada para aviões (militares e comerciais) não são facilmente encontrados. E os scanners pode ser complicados, grandes e caros. Com esse circuito fácil de construir você pode escutar os aviões e outras dezenas de transmissões.
Lista de peças
R1, R3 47K Resistor 1/4W
R2 10K Resistor 1/4W
R4 Resistor 1/4W 47K
R5 5K Pot Taper Linear
R6 Resistor 1/4W 22K
C1, C2, C3, C6 Capacitor Disco 0.001uF Cerâmica
C4 Capacitor Disco 2.2pF Cerâmica
C5 1pF Capacitor Disco de cerâmica
C7 15UF capacitor eletrolítico 15V
C8 Capacitor variável 18pF
D1 Diodo 1N82
Q1 2N918 Transistor NPN
L2 Indutor 1.8uH
L1 é feito enrolando duas voltas de fio 22 AWG  um forma de 5/32 “broca”. Este indutor pode ser modificado para alterar o intervalo de frequência do circuito e R5 ajusta a sensibilidade.
———————————————————————————————————————-

Um simples receptor de Rádio Multibanda

Existem alguns projetos que são simples é bem funcionais, que apesar da simplicidade, quando montados dão uma satisfação imensa. Uma delas é a de rádios de galena ou  cristal, que atualmente não usam mais a galena, que foi substituída por diodos ou mesmo transistores.  Este circuito apresentado aqui é um receptor de cristal simples, com um estágio de amplificação AF.  Só que com um grande diferencial, ele abrange a faixa de radiodifusão AM, as bandas de HF e chega até parte do VHF, usando uma chave de onda e três bobinas diferentes em combinações.
Esse radio é tão simples que é possível brincar mudando as bobinas e seu nome original é Il Fido.
———————————————————————————————————————-

Super Ouvido Eletrônico Amplificado

Imagine um super Ouvido Eletrônica Amplificado que é capaz de captar sons super fracos, mesmo a longas distâncias. Este circuito pode detectar sons muito distantes. O coração do circuito é um amplificador de volume constante. Todos os sinais captado pelo microfone são amplificados a um nível constante de cerca de 1 volt pico-a-pico.
Deste modo os sinais de áudio são amplificados e as amplitudes elevadas são limitadas e as baixa são amplificadas. Esta operação é realizada por Q3, modificando a polarização de Q1 (daí o seu ganho CA) por meio de R2. Uma característica notável deste circuito é o funcionamento da bateria de 1.5V e uma corrente de 7.5mA.
———————————————————————————————————————-

Circuito Carregador de Pilha Alcalina

Mostramos aqui diversos carregadores, para diversos tipos de pilhas e baterias, mas esse é um circuito de carregador bem diferente, pois ele pode ser usado em  pilhas alcalinas. Essas pilhas são normalmente usadas por equipamentos que precisam de uma descarga de energia rápida e de alta corrente, como brinquedos, câmeras digitais, etc. A pilha alcalina tem uma  composição  eletrolítica de pasta básica de NaOH hidróxido de sódio, que tem alta condutividade elétrica, assim  conduz a energia mais rapidamente e fornece mais corrente.
———————————————————————————————————————-

Pisca-Pisca LED para durar 10 anos

Esse é um um pisca-pisca de LED super-eficiente, ele uso baterias alcalinas AA, que segundo seu criador deve fazer ele piscar durante dez anos contínuos sem precisar trocar as pilhas. Existem vários segredos para a eficiência do circuito. Talvez o mais importante e que o LED é diretamente alimentado por descarga capacitiva, o capacitor C2
———————————————————————————————————————-

Tacômetro Digital para Bicicleta

O circuito acima é de um tacômetro digital para bicicletas, ele usa 2 interruptores rele reed para coletar os dados de velocidade da bicicleta. Os ímãs permanentes são conectados na roda para ativar o reed a cada passagem . A velocidade é digitalmente exibida.
O circuito deve ser freqüentemente calibrado com o auxílio de um outro tacômetro pré-calibrada.
———————————————————————————————————————-

Lanterna Solar Portátil

O circuito acima é de uma lanterna solar portátil que usa painéis solares de 6 volts por 5 watts. Com a ajuda desse tipo de painel foto-voltaico, podemos construir um econômica lanterna solar bem simples, mas eficiente e verdadeiramente portátil. Ela usa um módulo de LED branco de alta potência (1watt).

Arduino: Conexão à Internet sem Ethernet Shield

Arduino Ethernet

Veremos uma maneira alternativa de enviar dados do nosso arduino para um Servidor Web (Web Server) sem a necessidade de Shields.

Antes de iniciar, gostaria de falar um pouco das vantagens e desvantagens deste processo.

Vantagens

1- Conforme dito acima, não é necessário nem um shield especifico para Ethernet poupamos por 1 lado.

2- Não haverá a necessidade de se preocupar com bibliotecas especificas de Ethernet shield.

“O que muitas vezes pode nós dar uma grande dor de cabeça, dependendo do modelo de seu shield”

3- Os dados recebidos por essa aplicação pode ser tratados e usados em algum outro modulo para gerar gráficos, planilhas etc.

Desvantagens

1- Para que seu projeto funcione perfeitamente, terá que hospedar seu arduino em um computador com acesso a internet.

2-  Nesta maquina terá uma aplicação desktop que irá gerenciar a comunicação arduino e Servidor, se por acaso tiver que usar essa maquina apenas para o arduino se comunicar sem outros serviços. Vai encarecer a longo prazo está técnica.

Se for o seu caso é recomendado o uso de shield.

 

Montagem

Vamos a montagem do exemplo feita no arduino, com 1 sensor de temperatura LM35 e 1 led

 

Esquema_bb

 

O led está ligado no pino 3 digital.

O LM35 ligamos da segunite forma (a parte reta do sensor deverá estar para frente).

Da Esquerda para direita

Pino 1 –  5 volts do arduino.

Pino 2 – entrada analogica A0 do arduino.

Pino 3 – Ground.

Código

Para entender melhor o código e como funciona o LM35, é bem simples.

Em determinada temperatura o LM35 emite um mili voltagem que através de uma simples conversão matemática é possível encontrar a temperatura aproximada lida.

Veja a explicação passo a passo no comentário do código.

 

/*
Conversor Analógico->Digital de 10 bits (1024).

O valor máximo que pode entrar no A/D é 5V.
Sendo assim, quando entrar:
-> 5V o valor lido será 1023
-> 2.5V o valor lido será 511 ou (1023/2)
-> 0V o valor lido será 0
Resumindo, é uma regra de três normal onde:
5V – 1023
X  – Y
*/
int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0; //valor Lido convertido para temperatura
int led =3; //pino do led

void setup() {
Serial.begin(9600); //Inicializa comunicação Serial
pinMode(led, OUTPUT); //Seta como saída
}

void loop() {
valorLido = analogRead(pinoSensor); //lê a porta analogica do LM35
temperatura = (valorLido * 0.00488);  // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius
valorLido =temperatura;
Serial.println(temperatura);//imprime na serial
char c =Serial.read();      //espera um char na serial

//se for 1 liga o led

if(c == ’1′){

digitalWrite(led,HIGH);

//se for 0 desliga ou mantém desligado
}else if(c==’0′){
digitalWrite(led,LOW);

}

delay(5000); //espera 5 segundos para fazer nova leitura
}

Veja o vídeo:

 

Os fontes da aplicação java e do Servidor web, deixarei no link abaixo.

Para proceder com este exemplo você terá que ter as seguintes instalação na sua maquina e/ou no Servidor:

Java JDK

NetBeans ou Eclipse configurado com Apache TomCat (Preferível).

MySQL 1.5 ou Superior

Bibliotecas Apache HTTP e RXTX do Arduino (Já inclusa no download).

Observação : A aplicação local e o servidor Java estão apenas configurados para  receber apenas 1 parâmetro do arduino (temperatura do LM35).

Lembre-se que ao copiar a aplicação Desktop Java não esquecer de copiar a dll rxtxSerial, essa dll que fará a aplicação Java mapear o arduino através do Windows.

Para enviar mais de um parâmetro de seu arduino será necessário modificar algumas linhas de código na aplicação Desktop , Servidor e adicionar os Campos no Banco de dados.

Existe várias formas de resolver está solução, sinta-se a vontade para modificar os fontes.

Este exemplo poderá ajudar na montagem do servidor web e banco de dados:

www.tecnologiaeciencia.com.br/projeto-arduino-com-ethernet-shield-sensor-aplicacao-web-java

Link dos Fontes

http://www.mediafire.com/download/316tpi2g1vwckbd/fontes.rar

 

Leia mais em: http://tecnologiaeciencia.com.br/arduino-conexao-a-internet-sem-ethernet-shield-javaino/#sthash.Uq3boCrD.dpuf