Elétron Livre: Novembro 2009
Vídeo-aulas de Program-ME
Estamos disponibilizando oficialmente no site da Globalcode as primeiras vídeo-aulas sobre Program-ME. Este formato é muito simples de produzir e esperamos feed-backs para melhorar ele e profissionalizar ainda mais. Assim que tivermos mais feed-backs vamos produzir as próximas.
A primeira vídeo-aula está dividida em quatro partes e vai da introdução ao Arduino / Program-ME até o desenvolvimento do primeiro programa.
Parte 1: Introdução ao Arduino / Program-ME
Parte 2: Program-ME vs. Arduino (precisa fazer login no site)
Parte 3: Configurando Program-ME (precisa fazer login no site)
Parte 4: Desenvolvendo um primeiro aplicativo (precisa fazer login no site)
Postado por Unknown às 11:47 18 comentários:
Marcadores: Program-ME, video-aula, vinicius
Controlando dispositivos via Web com o Program-Me
Controlar dispositivos elétricos com o PROGRAM-ME é muito fácil, o principal cuidado que devemos tomar é com a capacidade máxima de corrente do chip ATMEGA que é de 40 mA (5V) .
Portanto para controlar dispositivos elétricos que necessitem de correntes superiores a 40mA , tensões superiores aos 12v disponíveis no Program-Me ou que trabalhem com corrente alternada (CA), será necessário associar alguns componentes entre os terminais dos PROGRAM-ME e o dispositivo a ser controlado.
Notem que um dos diferenciais do Program-Me, é já possuir on-board 4 transistores IRF510 que permitem controlar dispositivos externos sem qualquer hardware adicional, porém neste exemplo não iremos utilizar eles pois necessitamos de 5 interfaces.
Normalmente utilizamos um transitor na saída do Program-Me para dar um ganho na capacidade de corrente. Quando o dispositivo a ser controlado opera com corrente alternada (CA), ou necessita de uma corrente superior a suportada por transistores comuns, adicionamos além do transitor um relé.
Obs: Nos terminais da bobina do relé é necessário adicionar um diodo para proteger a junção do transistor, pois a bobina do relé gera uma tensão reversa ao ser desenergizada e que poderia danificar o transistor (vejam no diagrama elétrico da interface de relés os diodos D1 a D5) .
Com o circuito apresentado neste post, poderemos controlar até 5 dispositivos elétricos utilizando o PROGRAM-ME, sendo que o diferencial deste projeto é que vamos adicionar ao Program-Me um shield Wi-Fi (WiShield) que permitirá comandar os dispositivos remotamente de qualquer conexão internet.
O shield Wi-Fi utilizado é o da foto abaixo que é produzido pela AsyncLabs e custa por volta de US$ 50 nos Estados Unidos. Pode-se também utilizar um shield ethernet que pode ser encontrado aqui no Brasil por R$75 ,neste caso abrindo-se mão da conexão sem fios.
Seguem abaixo as características do Shield:
• 802.11b Wi-Fi certified
- 1Mbps and 2Mbps throughput speeds
• Supports both infrastructure (BSS) and ad hoc (IBSS) wireless networks
• Ability to create secured and unsecured networks
- WEP (64-bit and 128-bit)
- WPA/WPA2 (TKIP and AES) PSK
- Sleep mode: 250µA
- Transmit: 230mA
- Receive: 85mA
- Slave select (SS): Arduino pin 10 (port B, pin 2)
- Clock (SCK): Arduino pin 13 (port B, pin 5)
- Master in, slave out (MISO): Arduino pin 12 (port B, pin 4)
- Master out, slave in (MOSI): Arduino pin 11 (port B, pin 3)
• Interrupt (Uses only one of the following, depending on jumper setting)
- INT0: Arduino pin 2 (port D, pin 2)
- DIG8: Arduino pin 8 (port B, pin 0)
• LED: Arduino pin 9 (port B, pin 1)
- To regain use of this pin, remove the LED jumper cap
• 5V power
Basicamente o projeto consiste em rodar um servidor Web no Program-Me, disponibilizando uma página simples onde podemos selecionar quais dos 5 dispositivos desejamos ligar ou desligar. O shield Wi-Fi permite a interface de rede entre o roteador wireless da rede local e o Program-Me.
O primeiro passo é acoplar o shield Wi-Fi ao Program-Me (figura abaixo) e depois carregar o sketch do servidorWeb, onde configuramos uma página Web simples que permitirá o controle de algumas saídas do Program-Me.
Neste caso utilizei como base o WiServer sketch apresentado no próprio site do fabricante do shield (http://asynclabs.com/wiki/index.php?title=AsyncLabsWiki), apenas adaptando a quantidade de dispositivos controlados para 5 dispositivos e modificando a formatação da página Web de forma a ficar compatível com o projeto que eu necessitava.
Montei então a placa para as interfaces dos 5 relés (figura abaixo), onde utilizei uma placa padrão que é facilmente encontrada nas lojas de componentes eletrônicos.
Na figura abaixo temos o diagrama elétrico da placa de interface de reles:
Conectei então essa interface em 5 portas de saída do Program-Me conforme figura abaixo:
No sketch é necessário atribuir um IP e uma máscara de rede para o Shield, sendo possível também utilizar segurança WEP (64-bit and 128-bit), WPA/WPA2 (TKIP and AES) PSK .
Abaixo temos o trecho do sketch onde são executadas as configurações de rede.
// Parametros de configuracao da rede wireless ----------------------------------------
unsigned char local_ip[] = { 192,168,10,200};   // Endereco IP do WiShield
unsigned char gateway_ip[] = { 192,168,10,1};   // Endereco do gateway ou roteador
unsigned char subnet_mask[] = { 255,255,255,0};   // mascara de rede local
const prog_char ssid[] PROGMEM = { "PROGRAM_ME"};      // SSID da rede (max 32 bytes)
unsigned char security_type = 0;   // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2
const prog_char security_passphrase[] PROGMEM = { "12345678"};   // max 64 caracteres
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // Key 3
// configuracao do wireless mode
// WIRELESS_MODE_INFRA - conexao com um AP
// WIRELESS_MODE_ADHOC - conexao direta com outro dispositivo WiFi (por exemplo com o PC)
* O sketch completo deste projeto está disponível no final deste post.
Testando o dispositivo
Por volta de 15 segundos após ligar o conjunto, o shield Wi-Fi sintoniza a rede local e a página já fica disponível para acesso no endereço configurado para o shield. (neste caso 192.168.10.200)
Ao entrar no Browser com o endereço associado ao Shield é apresentada a seguinte tela:
Ao clicarmos com o mouse em cima do link de um dos relés, o Program-Me muda o estado da porta correspondente ao relé selecionado, ligando ou desligando o dispositivo que estiver conectado nos terminais desse relé.
A tela abaixo mostra o estado após selecionarmos o rele 1 na tela anterior.
Os comando podem ser executados facilmente de qualquer browser, inclusive de telefones celulares com Wi-Fi ou que tenham serviço de dados habilitado.
Vale lembrar que além do Servidor Web, podemos ter um cliente Web rodando em paralelo desde que o ATMEGA equipado seja um 328.
Esse tipo de configuração em paralelo permitirá por exemplo que a sua aplicação colete informações de um site de terceiros na internet e essas informações sejam utilizadas nas páginas hospedadas no PROGRAM-ME.
Outra implementação interessante que pode ser executada seria conectar sensores (temperatura, humidade, fumaça etc) e monitorar essas informações via Web com o Program-Me.
Bem pessoal é isso, espero que gostem do post e que ele sirva de inspiração para muitas idéias legais de aplicação.
* WebServer para controle via WEB de 5 dispositivos eletricos usando o Program-Me
//carrega as bibliotecas necessarias para o funcionamento do WiServer
#include WiServer.h
// configura as saidas do Program-Me que serao utilizadas para controlar os reles
#define ledPin1 14
#define ledPin2 15
#define ledPin3 16
#define ledPin4 17
#define ledPin5 18
unsigned char local_ip[] = { 192,168,10,200}; // Endereco IP do WiShield
unsigned char gateway_ip[] = { 192,168,10,1}; // Endereco do gateway ou roteador
unsigned char subnet_mask[] = { 255,255,255,0}; // mascara de rede local
const prog_char ssid[] PROGMEM = { "PROGRAM_ME"}; // SSID da rede (max 32 bytes)
const prog_char security_passphrase[] PROGMEM = { "12345678"}; // max 64 caracteres
boolean states[5]; //array que armazena os estados dos reles
char stateCounter; //variavel temporaria para indexar os reles
char tmpStrCat[64]; //variavel utilizada no processamento da pagina Web
char stateBuff[4]; //variavel utilizada no processamento de texto durante conversao de boleana para string (boolToString())
char ledChange; //indica alteracao no estado dos reles
strcat(returnBuffer, "ON"); //retorna "ON" se o rele estiver ligado
strcat(returnBuffer, "OFF"); //retorna "OFF" se o rele estiver desligado
void printStates() //envia para a porta serial/USB o estado dos reles quando ocorrer alguma solicitacao de alteracao
for (stateCounter = 0 ; stateCounter < 5; stateCounter++)
Serial.print("Estado do Rele ");
Serial.print(stateCounter+1);
void writeStates() //atualiza o estado das saidas do Program-Me acionando os reles
digitalWrite(ledPin4, states[3]);
digitalWrite(ledPin5, states[4]);
// Esta é a funcao que gera a pagina Web
Serial.println("Iniciada Impressao da pagina");
//verifica qual link da pagina foi clicado e define qual rele deve-se alterar o estado
if (URL[1] == '?' && URL[2] == 'R' && URL[3] == 'E' && URL[4] == 'L')
ledChange = (int)(URL[5] - 49); //determina qual foi o link clicado na pagina.
states[stateCounter] = !states[stateCounter]; // inverte o estado do rele selecionado
Serial.print("Alterado estado do rele "); //informa na serial/USB que houve alteracao de estado
Serial.println(ledChange+1);
//retorna o usuario para a pagina principal
if (strcmp(URL, "/") == false)
WiServer.print("Program-Me Server");
WiServer.print("
Sistema de controle de dispositivos via WEB utilizando o PROGRAM-ME\n");
Selecione o Rele que deseja alterar o status :\n");
for (stateCounter = 0; stateCounter < 5; stateCounter++) //for each led
numAsCharBuff[0] = (char)(stateCounter + 49); //soma 49 para obter o caracter ASCII comecando por 1
numAsCharBuff[1] = '\0'; //strcat espera uma string de caracteres e nao apenas um
//Essa string e um caracter + um string terminator.
tmpStrCat[0] = '\0'; //inicializa a string
strcat(tmpStrCat, "
tmpStrCat[12] = (char)(stateCounter + 49); //adiciona o numero do Rele
tmpStrCat[13] = '\0'; //finaliza a string apropriadamente
strcat(tmpStrCat, ">Rele ");
strcat(tmpStrCat, " "); //nos temos agora algo similar a Rele 1: Off
// Inicializa o WiServer e prepara ele para fornecer acesso a pagina
// Configura as portas do Program-Me selecionadas para os reles como saida
Serial.begin(9600); //configura a porta serial/USB para 9600bps
//Inicializa o array que armazena o estado dos reles colocando os reles em OFF
states[3] = false;
states[4] = false;
Postado por José Luiz Sanchez Lorenzo às 17:11 10 comentários:
Marcadores: José Luiz, Program-ME, relé, shield, Tomada, Wi-Fi
Globalcode no mundo de Eletrônica & Robótica
A Globalcode está a todo o vapor na área de Eletrônica e Robótica, estamos formando um time sensacional e finalizando diversos projetos nos quais investimos muita energia ao longo deste ano:
A produção do primeiro lote comercial do Program-ME, o Arduino da Globalcode, depois da realização do programa de testes;
Inicio da primeira turma da Academia do Programador, que utiliza o Program-ME como instrumento didático;
Lançamento da comunidade no Ning com diversos profissionais como fazendo coisas interessantes;
Lançamento do blog de eltrônica e robótica: Eletron Livre
Participação na Robotec Fair em Curitiba com dois Workshops : SunSpot e Arduino
Definição de convênio universitário devido ao interesse de Universidades usarem o Program-Me durante o curso para ensino de programação e eletrônica;
Apresentação de diversos robos e palestras nos eventos Java, veja a foto do show de Robos no The Developer's Conference 2009;
É neste clima que a Globalcode lançou ontem dois novos cursos na linha de Eletrônica e Robótica:
1) Eletrônica e computação física com Arduino - Módulo I - Básico
2) Robótica com Arduino
Comemoramos hoje a primeira matricula do curso "Robótica com Arduino", oferecendo uma bolsa para o curso "Eletrônica e computação física com Arduino" para o Aluno #1, que tem 25 anos de experiência programando diversas linguagens e fazendo suporte a infra estrutura.
Gerente de projetos e TI na R2 a 15 anos, trabalhando para diversos clientes internacionalmente. Guilherme Carneiro Poyares dos Reis, da R2 Tecnologia em informação, um grande amigo da Globalcode e do Vinicius Senger há mais de 10 anos.
Parabéns a todos os envolvidos pelas primeiras realizações!
Postado por Yara Senger às 09:04 3 comentários:
Marcadores: academiadoprogramador, cursos, Program-ME, Yara
Academia do Programador - Turma 1
Começamos nesta segunda-feira, 16 de novembro, a primeira turma da Academia do Programador. Depois de uma longa jornada trabalhando em materiais, códigos e o desenvolvimento da placa Program-ME temos o orgulho de contar com um treinamento como este que pode convencer mais e mais as pessoas a programarem e se profissionalizarem na área.
Lógica binária, hexadecimal, linguagens compiladas, linguagens interpretadas, de baixo nível, de alto nível e assim por diante...
Hoje tem mais: vamos começar a estudar ferramentas de desenvolvimento, desenvolver um Olá Mundo com Java e iniciar com o Program-ME.
Estamos muito satisfeitos e esperamos melhorar mais e mais este treinamento com o feed-back desta turma!