Tutoriais

Interface entre Microcontrolador PC – Parte 2

21 Comentários

No seguimento do último post, e como já sabemos comunicar entre PC e Micro-controlador, surge outro desafio: Controlar os outputs e visualizar o estado dos inputs do nosso Arduino, através do computador.

Para exemplificar como fazer, vamos usar neste exemplo o Arduino Mega.

arduino_02


Ferramentas necessárias:

  • Visual Basic 2008
  • Programa de programação do Arduíno Mega
Passo 1 – Programação o Arduino – pinos Digitais

O Arduíno Mega possui 53 pinos. Para este exemplo iremos usar desde o pino 22 até ao 53.

Como exemplo, configuraremos os pinos da seguinte maneira:

  • Pino 22 até 37 – definir como inputs (entradas).
  • Pino 38 até 53 – definir como outputs (saídas).

arduino_03

Exemplo para um input (pino 22) e um output (pino 40):

Declaração de variáveis:

O Arduino permite que um determinado pino digital possa ser input ou output, para tal, existe uma função que permite essa configuração.

arduino_04

pinMode () – http://arduino.cc/en/Reference/pinMode

Definidos os nossos pinos, de seguida pretendemos comanda-los. Os inputs (entradas) ler o estado deles, e os outputs (saídas) ligar ou desligar.

arduino_05Protocolo de comunicação que iremos estabelecer entre o Computador e o Micro-controlador

arduino_06

Funções necessárias na programação do arduino

digitalRead() – permite ler o estado de um pino;

digitalWrite() – permite alterar o estado do pino;

arduino_07

Esquema exemplo:

  • input no pino 22;
  • output no pino 40;

arduino_08

Passo 2 – Programação o Arduino – pinos Analógicos

O Arduíno Mega possui 16 pinos analógicos (A0 – A15). Para este exemplo iremos usar dois pinos A0 e A8.

Protocolo de comunicação que iremos estabelecer entre o Computador e o Micro-controlador.

arduino_09 arduino_10

arduino_11

Funções necessárias na programação do arduino

analogRead() – permite ler o valor de um pino analógico;

arduino_12

Passo 3 – Programação VB

Layout exemplo

arduino_13

Código VB

Botão d22 para receber o estado do pino digital como sendo input:

Private Sub d22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles d22.Click

Dim receber As String

Try

SerialPort1.Write(“a”)

System.Threading.Thread.Sleep(500)

receber = SerialPort1.ReadExisting()

TextBox_22.Text = receber

Catch

End Try

End Sub

Botão para colocar o pino 40 a on

Private Sub on_40_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles on_40.Click

SerialPort1.Write(“s”)

End Sub

Botão para colocar o pino 40 a off:

Private Sub on_40_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles on_40.Click
SerialPort1.Write(“s”)
End Sub

Botão para visualizar o input analógico 0:

Private Sub ana_0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ana_0.Click

Dim receber As Integer

Dim progressbar As Integer

Try

SerialPort1.Write(“A”)

System.Threading.Thread.Sleep(500)

receber = SerialPort1.ReadExisting()

tb_1.Text = receber

progressbar = receber

progressbar = (receber * 100) / 1023

MyVerticalProgressBar1.Value = progressbar

Catch

End Try

End Sub

Botão para visualizar o input analógico 0:

Private Sub ana_8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ana_8.Click
Dim receber As Integer
Dim progressbar As Integer
Try
SerialPort1.Write(“I”)
System.Threading.Thread.Sleep(500)
receber = SerialPort1.ReadExisting()
tb_9.Text = receber
progressbar = receber
progressbar = (receber * 100) / 1023
MyVerticalProgressBar9.Value = progressbar
Catch
End Try
End Sub

Conclusão

A plataforma Arduíno caracteriza-se pela versatilidade e facilidade de implementar qualquer tipo de projecto que necessite de uma componente electrónica. Com uma “simples” placa, podemos dar “asas a imaginação” e desenvolver projectos fantásticos. Esperamos que este artigo ajude os mais novatos a entrarem no mundo do Arduíno e contamos com experts para explorar esta área. Aguardem pelos próximos artigos!

Artigos relacionados

Download: Código Fonte

Autor: Pedro Pinto
Partilhar:
Tags:
Também pode gostar

Comentários

21

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de jorge teixeira

    Antes de mais muitos parabéns pela iniciativa, gostaria de dar a sugestão, ja a tempo ando com um projecto pessoal de criar um interface de domotica caseiro, mas preciso de mais bases de programação, será possível fazerem um tutorial de como criar um interface controlado a partir do browser usando modulo de ethernet shield ou mesmo em wireless zigbee ? Desta forma poderiamos criar um interface web para comunicar com o arduino e colocar tirando a dependência do PC. um abraço e muitos parabens Pedro Pinto

    1. Avatar de Vitor
      Vitor

      Também ando com várias experiências “caseiras” com o arduino, mas o que não tenho é conhecimento de electrónica.

      tens um pequeno exemplo aqui: http://arduino.cc/en/Tutorial/WebServer

      mas com uma pesquisa, consegues arranjar código de programas mais elaborados.

  2. Avatar de Ricardo

    Se quiseres fazer esse projecto recorrendo a módulos ele irá ficar muito caro e ocupará muito espaço. A forma barata de o fazer requer conhecimentos mais avançados de electrónica e programação tanto de uC como da própria parte da UI de controlo no Browser.

    Teria de ser realmente um tutorial muito extenso!

    O sistema Arduino é bom para protótipos, para implementar ideias, mas não para sistemas finais. A não ser que se use a base Arduino numa nova PCB dedicada, mas mesmo assim a programação C para uCs não é difícil e permite mais margem de manobra.

    Aconselharia a fazeres uma lista de componentes e ficarás espantado com o preço.

    O sistema ZigBee é o ideal para domótica e é menos complexo. Para além de que quando usado com Transceivers de 2.4 GHz permitem reduzir o tamanho da antena e utilizar módulos mais pequenos.

    Cumprimentos

    1. Avatar de jorge teixeira

      boas .. a ideia é fazer por exemplo controlo de temperatura de uma sala conseguir ligar um aquecedor (por exemplo) e luzes.. no minha pesquisa ja tenho o material todo.. arduino , ethernet shield (por cabo mas tem vantagens) uma carta de 4 reles que activam a 5v (220v a 10A cada), sensor de temperatura e de luminosidade. pronto depois ja estao a ver a coisa.. o meu problema é como criar interface e guardar o “site” dentro do arduino para nao precisar de um pc.. tenho o ethernet shield mas ja vi que nao fiz a melhor escolha pois nao tem o sdcard como o WizNet… alguem que tenha alguma sugestao de como fazer a ligaçaõ do arduino e ir buscar o interface a um servidor externo que diga..

      1. Avatar de jorge teixeira

        esqueci-me de dizer ao todo gastei uns 45€ (ebay rulezz) nao acho que seja assim tao caro montar um sistema de domotica como este..

        1. Avatar de Ricardo

          Até que não ficou muito caro, porque se trata de algo simples.

          O sistema Gumstix ou outro do género parece ser o indicado para o teu caso. Mas fica caro quando usado apenas para isso.

          http://www.gumstix.com/

          1. Avatar de Ricardo

            Em relação ao interface:

            PHP + C -> comunicação por sockets

          2. Avatar de lmx1
            lmx1

            boas..
            no teu caso usava apenas C num ambiente multithread…o que procuras é criar um servior certo?

            cmps

          3. Avatar de jorge teixeira

            boas a todos a ideia é mesmo o arduino ser o server (se possivel) independente de qualquer maquina… mas o conteudo do interface( imagens flash etc) poderia ir buscar a rede…. tendo na rom apenas o indispensabilidade para ler as temperatura e estados dos reles…

          4. Avatar de jorge teixeira

            parece interessantemas realmente mt caro… 😛

      2. Avatar de Vitor
        Vitor

        é disto que procuras então: http://snifasoldas.blogspot.com/2011/02/1-projecto-arduino-controlo-de.html

        tens que “injectar” o codigo…cuidado com o espaço do micro

        1. Avatar de jorge teixeira

          é mesmo isto.. 😛 obrigado pela referencia

  3. Avatar de Daniel©
    Daniel©

    Ja aprendi coisas novas com estas explicaçoes, muito bom, pois tenho um arduino, tenho de aprender visual basic para começar a brincar com isto 🙂

    1. Avatar de bigkax
      bigkax

      Se não souberes mais nenhuma linguagem de programação VB é uma linguagem boa e simples para iniciantes, mas se souberem alguma linguagem e já estiveres habituado a ela basicamente desde que tenhas acesso a uma parta “Serial”…

    2. Avatar de lmx1
      lmx1

      Boas..
      eu acho pessoalmente que seria uma melhor jogada investir numa linguagem que seja livre de drm…

      cmps

  4. Avatar de PeLug
    PeLug

    Viva pessoal
    Ha já uns tempos que também tenho um arduino e ethernet shield. Já fiz uns trabalhos utilizando PICs, mas realmente o arduino é muito mais versátil e fácil de implementação para um prototipo. A parte interessante é realmente realizar projecto com interface web.
    Minha pergunta, alguém me poderia dizer como posso ter acesso ao meu Arduino (IP=192.168.1.XXX) que está após o router, via internet (isto a partir de um pc fora da rede). O arduino tem IP fixo, e está ligado via RJ45? Quando digo aceder é aceder ao webserver que está no Arduino.

    Cumps e Parabens pelo tema.

    1. Avatar de Vitor
      Vitor

      Tens que configurar o Router de modo a que os pedidos externos (quando é utilizado o IP atribuído pelo ISP) sejam encaminhados para um determinado IP (no caso o IP que a shield ethernet tem).

      Problema: saber o IP do ISP (facilmente contornavel) e não tens segurança nenhuma.

  5. Avatar de PeLug
    PeLug

    Obrigado pela dica. É que existem varios software que fazem o mesmo
    (Ex: TeamViewer, diga-se de passagem Muito Bom 🙂 ), e queria aplicar o mesmo conceito ao arduino.

    Cumprimentos

  6. Avatar de jorge teixeira

    Um aparte . Arduino Vs Netduino qual o melhor?

  7. Avatar de fábio e.c.fag.
    fábio e.c.fag.

    estou fazendo dois projetos de mecatrônica, e não conhecia o arduino…lendo seus posts pudde ver q ele se encaixava perfeitamente nos meu projetos, mas a minha maior dúvida é a seguinte: é possível controla lo via internet? Ou melhor, fazer com q ele acione atuadores via internet?

  8. Avatar de Renato
    Renato

    qual a senha de administrador para alterar as configurações do aplicativo?