Excelente artigo!
Parabéns ao autor e ao editor!!!
Viva,
O arduino é um fenómeno recente na comunidade de aquariofilia, mas tem dominado o "tempo de antena" da discussão de muitos tópicos neste e noutros fóruns.
Pedi ao Hugo Figueiredo que escrevesse uma série de artigos sobre o Arduíno - como se fosse para uma criança de 5 anos entender (que é mais ou menos o equivalente aos meus conhecimentos de electrónica)
Obrigado Hugo pelo excelente artigo. Fico ansiosamente à espera dos próximos.
Texto e fotos: Hugo Figueiredo
Um abraço,
Ricardo Pinto
Arduino for a 5-year old boy - Tudo o que sempre quis saber, mas teve vergonha de perguntar
Por Hugo Figueiredo
Nos últimos tempos a palavra Arduino tem-se vindo a massificar em fóruns de aquariofilia e será com certeza das palavras mais procuradas. Muitos deles criaram inclusive sub-fóruns próprios para o efeito. O que é afinal o Arduino e em que medida nos pode ajudar a manter e gerir aquários?!
Num conjunto de artigos procuraremos responder a esta e outras questões relacionadas com o Arduino tentando sempre que possível apresentar casos práticos para comprovar a facilidade com que qualquer pessoa, mesmo uma criança de 5 anos, pode “trabalhar” com um Arduino.
O que é o Arduino?
O Arduino não é mais que um controlador/programador de baixo custo, programado através de uma linguagem universal C/C++ e com toneladas de informação e utilizadores em todo mundo. É baseado, como a maioria dos controladores em portas de entrada e saída que podem ser manipuladas consoante o projecto a realizar.
A juntar a tudo isto temos ainda a sua real facilidade de comunicar com um vulgar computador via porta USB, que não só serve para a comunicação bidireccional entre PC e Arduino propriamente dita, mas também fornece a este corrente para realizar os mais diversos projectos sem necessidade de fontes de alimentação ou aparelhos mais sofisticados.
Assim, um PC e uma Placa Arduino é tudo o que é necessário para começarmos o nosso projecto. Sem mais utensílios, sem mais aparelhos e sem soldaduras.
O meu primeiro Arduino
Muito bem, chegou a hora de adquirir um Arduino. Onde, como e o que comprar?
Primeiro que tudo há que escolher que tipo de board (ver Fig. 2) se adequa melhor ao nosso projecto. Existem praticamente uma dezena de tipos de boards que podemos escolher, qual é então a diferença entre elas? Bem, a diferença é essencialmente no número de portas que se repercute depois no tamanho da board. Num exemplo prático podemos dizer que para controlar uma bóia de nível só precisamos de uma porta, pelo que uma board nano ou micro é suficiente.
Já para um projecto de controlo de um aquário com iluminação, alimentação, bóias de nível, alertas SMS, etc possivelmente iremos precisar de uma board Mega. A principal diferença é mesmo a nível de portas e tamanho mas normalmente começa-se mesmo para original e maior, Arduino Mega!
Fig.2 - Diferentes tipo de boards
Escolhida a board, é preciso agora saber onde a comprar. O ebay é sempre um local acessível, rápido e fácil para “estas coisas”, há só que ter cuidado a quem/onde se compra porque há as boards originais e as imitações asiáticas. De referir apenas que as boards asiáticas são 100% compatíveis e em tudo iguais às originais, só que mais baratas…
Normalmente e para quem quer começar a “brincar” com um Arduino existem os kits, que para lá da board em si, trazem um conjunto de componentes quer nos permitem interagir com o Arduino, tais como, leds de varias cores, resistências electrónicas, motores Step, infravermelhos, leitores de cartões, ecrãs, etc… É uma boa aposta para quem quer começar!
Mas afinal em que é que um Arduino me pode ajudar na manutenção do meu aquário?
A maneira mais fácil e simplista de responder a isto é: em tudo!!! E é verdade, porque as possibilidades são praticamente infinitas, mas vamos expor aqui alguns exemplos que serão depois aprofundados individualmente em artigos posteriores:
Controlo da iluminação – Esqueçam os relógios temporizadores, o Arduino controla automaticamente a hora a que as luzes ligam/desligam. E sobretudo para quem use iluminação que possa ser “dimável” (permite regular a intensidade da luz) como T5/T8 ou leds, um Arduíno é de grande utilidade pois permite-nos escolher o horário em que queremos certa intensidade, podendo assim não só poupar energia como simular melhor as diversas intensidades do sol no habitat natural ao longo de um dia.
Sistema de reposição de água – Com um conjunto de bóias de nível que custam meia dúzia de euros e uma bomba de baixo caudal, podemos montar um sistema de reposição de água totalmente automático.
Sistema automático de trocas de água – Analogamente à reposição mas agora com uma bomba de mais caudal e, eventualmente, uma electroválvula.
Arrefecimento/aquecimento – Com um simples termómetro digital, podemos por exemplo, fazer ligar/desligar ventoinhas para controlar a temperatura do aquário ou até mesmo da própria calha de iluminação. Com mais alguma tecnologia podemos registar a temperatura ao longo do dia para percebermos as flutuações existentes.
PH/ORP/Salinidade – Com uma sonda de PH e/ou ORP e/ou Salinidade podemos não só monitorizar estes parâmetros, como registá-los numa base de dados para verificar flutuações.
Controlo de bombas (ou 220V) – Ligar/desligar automaticamente bombas ou qualquer equipamento de 220V.
Alertas - Bem aqui o limite é mesmo a nossa imaginação. Inundação, nível da água, temperatura, PH/ORP/salinidade, falta de electricidade no quadro, etc…
Adição de elementos/comida – Controlo de bombas doseadoras, balling, adição de phytoplancton, etc..
Esperamos com este artigo ter despertado a curiosidade e o interesse no mundo do Arduino, por isso não percam o próximo capítulo: Chegou o meu Arduino, e agora?
Artigo original publicado em: Arduino for a 5 year old boy
Não perca a continuação
2ª Parte: Chegou o meu kit – E agora?
Última edição por Ricardo Pinto; 24-10-11 às 21:22.
Excelente artigo!
Parabéns ao autor e ao editor!!!
Bom post!
Vou seguir com interesse.
Saudações
Sérgio Magro Jacinto
A experiência é obtida imediatamente depois de ter sido necessária.
Family Aqua Fun
Hugo e Ricardo por acaso já tinha pensado num tópico deste género, mas ainda bem que começaste pois as tuas capacidades não só narrativas mas de escritor destas e quaisquer outras coisas estão a milhas das minhas ehhehe...
Fico contente que o assunto demonstre realmente interesse em todos, pois vai ajudar muitos certamente e assim será tudo não só mais compreensível mas facilmente acessível a todos mesmo.
Aguardo com expectativa o próximo episodio desta primeira "season" para esta bela saga.
Para quando podemos descarregar o:
Arduino.for.a.5-year.old.boy.S01E02.TXT ?![]()
Última edição por Baltasar Parreira; 12-09-11 às 00:05.
Assim está bem, um paço a paço.
Era mesmo o que eu pretendia saber, fico à espera dos próximos episódios.
E se forem colocando as referências do material ainda fica melhor, estilo para fazer uma reposição de água, é preciso o artigo x, y e z.
Fica muito grato por este artigo e em ânsias pelos próximos.
"Uma jornada de duzentos quilómetros começa com um simples passo."
Rui? Quem é o Rui?Rui por acaso já tinha pensado num tópico deste género, mas ainda bem que começaste pois as tuas capacidades não só narrativas mas de escritor destas e quaisquer outras coisas estão a milhas das minhas ehhehe...
O autor deste texto é o Hugo Figueiredo. É para ele que devem endereçar todos os parabéns e elogios.
Eu sou o puto de 5 anos
Um abraço,
Excelente Hugo, continua!!![]()
Deixo já agora uma sugestão.
Como foi dito pelo Ricardo e mt bem, este assunto gera mt interesse.
Não seria altura de criar um espaço para o Arduino?
Este podia mt bem ser o 1º post e até um sticky da secção!![]()
Obrigado malta!
confesso que fiquei um pouco surpreso pelo convite do Ricardo para escrever sobre o Arduino, afinal pessoas que percebem mais de arduino que eu há aos pontapés aqui mesmo no forum, mas depois de falar com ele percebi a ideia.
E a ideia é começar das bases (como eu comecei há poucos meses) e não se cair no risco de ser "viciado" pelo domínio do assunto, saltando etapas que são tão simples que um verdadeiro entendido (que não é o meu caso)julgaria desnecessárias.
Eu tive um professor de programação (Pascal ou C, já não me recordo) no 10º ano que me disse uma coisa que me ficou para o resto da vida:
"Um manual deve servir para que uma pessoa que não percebe nada de programação, nem nunca abriu um computador, consiga trabalhar no programa!"
E aqui é um pouco essa a ideia! No final, o objectivo é que com todos os artigos, alguém que nunca sequer ouviu falar em Arduino, consiga perceber como fazer, por isso aos verdadeiros entendidos nisto do Arduino, desculpem alguma linguagem mais banal, e simplista, mas no início também tive essa dificuldade de encontrar informação sobre as bases...
Isto é mesmo para uma criança de 5 anos!!!![]()
Confirmo! Desafiei o Hugo a escrever sobre o Arduino porque reparei que provavelmente ele sentiu as mesmas dificuldades que qualquer um de nós sente a tentar acompanhar os tópicos sobre o Arduino. Portanto, pareceu-me a pessoa ideal para escrever sobre isto. Igualmente, o facto de ter conhecido o Hugo pessoalmente facilitou a minha escolha.E a ideia é começar das bases (como eu comecei há poucos meses) e não se cair no risco de ser "viciado" pelo domínio do assunto, saltando etapas que são tão simples que um verdadeiro entendido (que não é o meu caso)julgaria desnecessárias.
Mas a ideia deste tópico é enriquecer este artigo com os conhecimentos e dúvidas de toda a gente.
E isso tem toda a lógica.
Quem mexe já com o arduino à algum tempo vai ter tendencia em omitir factos que como tu dizes, para ele já são banais.
Tu, embora percebas de programação, tás a começar agora a mexer no arduino e é a altura ideal para ires documentando as tuas descobertas e progressos.
Da minha parte, se alguma vez precisares de ajuda em alguma coisa diz.
Abraço
Da tua e de todos!Da minha parte, se alguma vez precisares de ajuda em alguma coisa diz.
Obrigado!![]()
Boa tarde
Este tópico, NMHO deveria ser trancado a comentários...
Já se viu que tem e terá participação.
A participação de todos nós, penso que será parasitária, pois parece-me que a ideia base da criação deste tópico irá ficar desvirtuada...
Eu sugeria, que de alguma forma, todos os comentários fossem colocados num sub-post (um post Filho) deste post... deixando o post Pai disponível e livre (limpo) para todos aqueles que o querem consultar.
Assim sendo, sugeria que todos os posts já aqui colocados fosse de alguma forma transferidos.
Caso contrário, toda e qualquer consulta será muito mais difícil.
Espero que me tenha feito conseguir entender.
Abraço
Pedro Ferrer
Eu posso!
Eu quero!
Eu consigo!
Boa tarde,
Primeiro de tudo desculpem ser mais uma.
Este topico é mesmo para mim
Vou seguir com atenção, para ver se aprendo alguma coisa
Concordo com o Pedro Ferrer.
Cumprimentos
Concordo e não concordo.Este tópico, NMHO deveria ser trancado a comentários...
Já se viu que tem e terá participação.
A participação de todos nós, penso que será parasitária, pois parece-me que a ideia base da criação deste tópico irá ficar desvirtuada...Percebo o teu ponto de vista. É de facto uma chatice quando tópicos bons ficam cheios de comentários estúpidos, em que nada têm a ver com o assunto principal - como este meu comentário agora
E que tal esta ideia... Como tenho acesso ao 1º post, posso fazer tipo um índice. Quando se colocar o 2º artigo, eu coloco um link directo no 1º post. Facilitaria a consulta e quem tivesse dúvidas ou quiser acrescentar alguma coisa pode "parasitar" o tópico à vontade.
Pois é um pau de 2 bicos, como se costuma dizer.
Por um lado é importante que se mantenha a informação junta, indexada e de fácil procura e acesso, por outro é igualmente importante que haja discussão, ideias, projectos, etc...
Acho que indexando os artigos se consegue um bom compromisso entre os 2 bicos![]()
Está disponível a 2ª parte do artigo "Arduino for a 5 year old", escrito pelo Hugo Figueiredo.
Arduino for a 5 year old boy Part II - H2O + Something
O Hugo tem escrito estes artigos de uma forma magistral e até eu (um ignorante nestas coisas) começo a ficar tentado em mandar vir um Kit para mim.
Muito brevemente vou publicar a versão portuguesa aqui neste tópico e indexando ao 1º post. Só me falta descobrir como inserir o código num post. Como vocês fazem? Inserem o código dentro do (Quote)?
Um abraço
Pois o vBulletin suporta uma tag para isso penso ser a "code" que dá muito jeito pois mantém o código identado e não o desformata.
Já tentei procurar aqui mas parece estar desactivada, pois para alem de não aparecer nos icons do editor, mesmo metendo manualmente não surte qualquer efeito, talvez pedindo a administração se podem ligar isso?
Agora com a versão nova até poderá ser mais simples ehehhe...
Pois já tinha reparado que não temos a tag Code, mas usa a quote, que o efeito é idêntico, digo eu!
PARTE II Chegou o meu kit – E agora?
Por Hugo Figueiredo
O meu primeiro Arduino
Muito bem, mesmo não percebendo nada de electrónica, decidiste arriscar e compraste um “Arduino Starter KIT”. E agora?
Bom, antes de mais há que referir que existem imensos kits, com mais ou menos funcionalidades, mais ou menos potencial e mais ou menos “gadgets” que podem interessar para o controlo e manutenção de um aquário. Vamos por isso abordar um kit básico onde não pode faltar, para lá da board Arduino, claro está, pelo menos mais estes 6 componentes:
Estes são os componentes ideias e básicos para quem quer começar a “brincar” com um Arduino, sobretudo se não percebe muito de electrónica (como é o meu caso).
Muito bem! Temos o Arduino, temos os componentes, vamos agora preparar o PC para poder comunicar com o “isto tudo”.
No site do projecto (www.arduino.cc), para lá da imensidão de informação interessante e importante, podemos fazer o download do driver - http://arduino.cc/en/Main/Software - e instalá-lo no PC.
Estando o driver instalado é necessário instalar igualmente o programa que nos irá permitir interagir com o Arduino via porta USB, que pode ser descarregado no mesmo link do driver referido em cima.
O meu primeiro programa
Driver instalado!!! IDE instalado!!! Vamos então começar a desenvolver o nosso primeiro programa…
O interface do programa é muito simples e intuitivo (Fig.1) e com poucos minutos de manuseamento desaparecem grande parte das dúvidas.
Fig.1
Tudo o que precisamos está na barra de menus superior, onde os botões mais importantes são:
Em todos estes tipos de aplicação, e quem está mais por dentro de programação sabe que isto acontece sempre independentemente da linguagem utilizada, há sempre aquele primeiro teste para vermos se o básico está a funcionar. O conhecido “Hello World”. Neste caso do Arduino o “Hello World” é fazer piscar um led. Há duas formas de o fazer, ou usando um dos leds que vem com o kit, ou mais facilmente usando um led que já vem embutido na placa, mais precisamente no pin13.
O próprio IDE tem bastantes exemplos de código para diversas funções entre os quais um para este efeito, mas basicamente o código para fazer piscar o led embutido na placa é:
/*
Blink
Este código faz piscar um led.
Usando o pin13 do Arduino podemos usar o led que vem embutido
na placa.
*/
int ledPin = 13; // LED embutido no pin13
void setup() // Exceuta uma única vez
{
pinMode(ledPin, OUTPUT); // Configura o pin para saída (OUTPUT)
}
void loop() // Executa continuamente
{
digitalWrite(ledPin, HIGH); // Liga o LED
delay(1000); // Espera 1 segundo
digitalWrite(ledPin, LOW); // desliga o LED
delay(1000); // Espera 1 segundo
}
Tudo o que temos de fazer para testar o código é fazer o upload (clicando no botão descrito em cima) para o Arduino e ver o led a piscar.
Funcionou?
Perfeito, conseguiste fazer piscar um led, e o que parecia no início deste processo um “bicho de sete cabeças”, é agora encarado como “até simples” e abre portas para o futuro (e já agora para a imaginação também).
Como está estruturado o código do Arduino
Como se pode confirmar pelo código acima, fazer piscar um led pode parecer de início uma tarefa praticamente impossível, sobretudo para quem nunca lidou com programação, mas depressa percebemos que afinal não é assim tão complexo. Vamos então “descascar” o código e perceber como se estrutura um código para o Arduino.
O(s) Comentário(s)
O código começa por um comentário:
Basicamente a ideia é explicitar o que este código faz, bem como fazer referência a particularidades do próprio código. Quem não está muito habituado a programar pode não achar importante mas quem programa todos os dias como eu, sabe que muitas vezes um bom comentário poupa horas de trabalho e de chatices, pelo que na programação, e em relação aos comentários há sempre uma regra a ter em mente e aplicar:/*
Blink
Este código faz piscar um led.
Usando o pin13 do Arduino podemos usar o led que vem embutido
na placa.
*/
Comentários nunca são de mais
Uma pessoa que nunca viu programação à frente, deve ler os comentários e conseguir perceber o que o programa faz, mesmo não percebendo o código.
Para fazer um comentário temos duas formas - ou como aparece no exemplo em cima abrindo com “/*” e fechando com “*/” ou se for apenas para comentar numa linha podemos usar também “//”.
NOTA: É importante referir que um comentário é isso mesmo, ou seja, comenta o código, pelo que nada do que é escrito em comentário é usado pelo código.
Definição de Variáveis/Constantes
É nesta área que devemos definir todas as variáveis, constantes, atribuições, procedimentos, funções, etc, que precisamos para o nosso código. Podemos dizer que se trata da área de atribuição/definição. Aqui não vamos ainda usar nada, apenas definir para poder usar mais tarde!int ledPin = 13; // LED embutido no pin13
Setup()
Tudo o que estiver dentro da função Setup() é executado uma única vez, mal o código entra em funcionamento, pelo que dependendo do que queremos fazer, podemos usar esta área em conformidade. No nosso exemplo do led, é aqui que dizemos que o pin13 irá funcionar como pin de saída. Devemos colocar nesta área tudo aquilo que queremos que só execute uma vez e/ou tudo aquilo que não sofrerá alteração ao longo do código.void setup() // Exceuta uma única vez
{
pinMode(ledPin, OUTPUT); // Configura o pin para saída (OUTPUT)
}
Loop()
Já a função loop() é executada ininterrupta e continuamente, o que significa que chegando ao fim, volta ao início e assim sucessivamente. No nosso exemplo é aqui de dizemos para o led ligar/desligar, e é pela forma como esta função funciona que só o precisamos de fazer uma vez. Dizemos primeiro para ligar e depois para desligar e como a função está sempre em loop, o led está sempre a ligar/desligar.void loop() // Executa continuamente
{
digitalWrite(ledPin, HIGH); // Liga o LED
delay(1000); // Espera 1 segundo
digitalWrite(ledPin, LOW); // desliga o LED
delay(1000); // Espera 1 segundo
}
Resumindo e de forma mais simplista temos em qualquer código Arduino o seguinte:
- Comentário Inicial
- Área de Definição
- Setup()
- Loop()
Breadboard
Fig.2
Este componente que vem com o kit, é de extrema importância e é normalmente utilizado na fase de testes e da montagem de circuitos, pois facilita-nos imenso o trabalho. Esta “placa” serve para fazermos ligações de forma simples sem termos de andar a soldar (e dessoldar muitas vezes). Uma breadboard e um jogo de fios de ligação são essenciais para qualquer projecto Arduino.
Estas placas estão configuradas da seguinte forma:
As duas colunas das extremidades (representadas por “+” e “-“ na Fig. 2) estão ligadas individualmente entre si, ou seja, toda a coluna está interligada.
Já na parte de dentro é ao contrário, ou seja, são as linhas que estão ligadas entre si. Linha 1 de “a” a “e”, linha 1 de “f” a “j”, etc…
Normalmente usam-se as colunas das extremidades para ligar Ground (GND) e Power (5v) (Fig. 3) e assim sempre que precisamos de algum dos 2 (e tipicamente precisamos para praticamente tudo) temos muitos furos disponíveis.
Fig.3
Com uma breadboard podemos ligar/desligar, testar, alterar com a facilidade de puxar ou colocar um fio, sem soldaduras, ou instrumentos mais complicados.
Resistências
Ora bem, antes de mais convém referir que não sou um entendido em electrónica (longe disso) e que ainda me faltam muitos termos técnicos para poder dizer que percebo sequer o básico, pelo que peço desculpa por algum termo electrónico menos bem empregue ou alguma gralha. Este tema das resistências será por ventura o mais longe que esta série de artigos irá a nível de electrónica. Parte-se do princípio que os conceitos básicos de electrónica estão entendidos, assim como está entendido que trabalhar com electrónica pode sempre ser perigoso, mesmo estando nós a falar de 5V (normalmente o que usamos no Arduino).
Assim, temos apenas este tópico sobre resistências para tentar perceber o que são, para que servem e sobretudo, porque é que em quase tudo o que ligamos ao Arduino tem de ter uma resitência.
Basicamente uma resistência serve para limitar a corrente eléctrica num determinado circuito.
Porque temos então de limitar a corrente quando trabalhamos com um Arduino?
Temos de o fazer porque o Arduino só aceita ou fornece 40mA, pelo que é através das resistências que temos de limitar a corrente do que ligamos ao Arduino para não haver sobre-carga. Confuso? Vamos a um exemplo prático - Uma bóia de nível, por exemplo!
Se queremos ligar uma bóia de nível ao Arduino, temos de usar uma resistência para não exceder os 40mA (uma bóia tem bem mais). Olhando para a “famosa” lei de ohm temos:
R(esistência) = V(oltagem) / A(mperagem) (R = U/I)
Ora neste caso, sabemos que o Arduino tem de máximo 40mA e 5V (se alimentado pela porta usb do PC), mas não vale a pena trabalhar no limite, pelo que podemos fazer as contas a 20mA:
5V/20mA = 0,25, ou 250 ohms
Podemos então usar uma resistência próxima deste valor porque muitas vezes as contas não dão certas para resistências normalizadas pelo que temos de usar uma normalizada próximo do valor de cálculo.
Para percebermos qual é o impacto da alteração de uma resistência, usamos a mesma lei de ohm e temos:
A = V / R, ou, A = 5V / 270ohm = 0,0185A que são 18mA.
Vejamos, por exemplo, se podemos usar uma resistência de 220ohm.
5V/220ohm = 22.7mA, como o limite são os tais 40mA, como vimos, podemos igualmente usar uma resistência de 220ohm.
Estes cálculos podem e devem ser feitos para qualquer componente que quisermos ligar ao Arduino, sempre tendo presente o limite de 40mA que o Arduino suporta.
E assim damos por terminado mais um artigo. A partir do próximo vamos começar a entrar mais dentro do código e de exemplos práticos. Aproveitando este exemplo das bóias de nível que usámos para as resistências, vamos ver como montar um sistema de reposição de água e um de troca de água automática.
Texto & Fotos: Hugo Figueiredo
Ricardo Pinto: O meu muito obrigado ao Hugo Figueiredo por mais um artigo desta "saga". Parabéns, está muito bom!
Há 1 Membros navegando neste tópico. (0 registrados e 1 visitantes)