domingo, 9 de setembro de 2018

Git e GitHub - Um rápido guia de comandos

Muita gente sabe que em desenvolvimento de software, uma coisa bem complicada é controlar as versões do código ao longo do processo de desenvolvimento ou manutenção. Ninguém gosta de estar empacado em um projeto que não funciona, desejando voltar para uma versão de 1h30 atrás onde tudo estava funcionando sem problemas.

A coisa fica ainda mais difícil quando há mais de uma pessoa escrevendo código para o mesmo projeto. E afim de evitar a troca de pendrives com arquivos como projeto01_v4_versao_final_de_verdade.zip, sendo passado de mão em mão, os softwares de versionamento de código vieram corrigir esse problema.

O artigo Tudo que você queria saber sobre Git e GitHub, mas tinha vergonha de perguntar explica muito bem o que é o Git, e o que é o GitHub, e traz todo um passo a passo de como começar a usar versionamento de código no seu desenvolvimento.

O que quero fazer aqui é, de forma simples e resumida, listar os principais comandos que uso para:

  • Criar um repositório local
  • Adicionar os arquivos para serem controlados pelo Git
  • Fazer commit (adicionar todas as mudanças ao Git)
  • Criar versões do projeto
  • Hospedar o repositório no GitHub
  • Voltar para uma versão passada do projeto

Vamos a eles:

Criar um repositório local

git init



Adicionar os arquivos para serem controlados pelo Git

Adicionar arquivos pelo nome

git add [nome_do_arquivo]


Adicionar todos os arquivos do projeto

git add *



Fazer commit

git commit -m "mensagem"


Criar versões do projeto (ref)

Criando Tags ou Versões comentadas de um projeto

git tag -a v0.1 -m “Projeto default”

Lista as versões de um projeto

git tag -n


Trocando de versões

git checkout v0.2


Ver diferenças entre versões

git diff v0.1 v0.2



Hospedar o repositório no GitHub

Configuração do Repositório remoto no GitHub

git remote add [nome_do_repositorio] [url_do_repositorio]
ou
git remote add origin git@github.com:[seu_nome_de_usuario_no_GitHub]/[nome_do_repositorio].git


Adicionando o repositório local ao GitHub

git push -u origin master


Transferindo as tags para o GitHub

git push origin --tags


Voltar para uma versão passada do projeto

git reset --hard





sexta-feira, 9 de outubro de 2015

Instalando o Ambiente de desenvolvimento do Arduino

Olá galera!

Hoje eu vou mostrar como fazer o download do Ambiente de desenvolvimento (IDE) do Arduino!




É tudo muito simples e rápido. Ele roda em Windows, Linux e MAC OS.

Vamos aos passos:
  1. Acesse a página de download do site:
    https://www.arduino.cc/en/Main/Software
  2. Escolha o sistema operacional
  3. Doe ou não dinheiro pelo uso do software (pois é gratuito)
  4. Download! :D

  5. Abra o arquivo de instalação (que já instala a IDE e o driver USB das placas)

  6. Next... Next... Next...
  7. Espera...
  8. Pronto!

Agora plugue sua placa, e escolha ela no software.


Escolha um dos zilhões de exemplos de tudo que você possa imaginar.


Manda compilar e gravar ("Carregar") e divirta-se!


Agora é só começar a programar o seu próprio programa.


Diego


Links interessantes
Arduino (Wikipedia)
Getting Started with Arduino (começando com Arduino)

quinta-feira, 18 de junho de 2015

Scorpion, o Robô construtor autônomo


Olá galera!

Hoje vou compartilhar um making of, ou simplesmente um apanhado de informações sobre os passos do desenvolvimento do tão temido Traballho de Conclusão de Curso, ou somente, TCC!

Ok, o que é um robô autônomo?

A grande diferença que a palavra autônomo dá ao robô, é principalmente, saber lidar com o ambiente a sua volta, com o uso de sensores. Então é isso que diferencia um robô que fica parado ou se move sobre locais pré-determinados (como trilhos), de um robô que se move de acordo com o ambiente que o cerca.

A ideia de construir um robô autônomo veio de alguns exemplos, como a sonda Curiosity, que é um robô autônomo que pousou em Marte para fazer explorações e análises da superfície do planeta. Durante a navegação pelo planeta, ela utiliza 4 pares de câmeras chamadas Hazard avoidance cameras (câmeras para evitar perigos ou obstáculos) para observar o ambiente a sua volta.



Outro exemplo são os robôs de reconhecimento de plantas das usinas nucleares de Chernobyl e Fukushima, que devem não só ter total percepção do ambiente, mas também um hardware capaz de se locomover por destroços, escadas e quaisquer outros obstáculos.


Vamos agora para o nosso projeto:



Scorpion




O Scorpion (nome do nosso robô) é basicamente composto por três partes principais:

  • Base móvel
  • Braço robótico
  • Unidade de controle



Base móvel

Para a base, optamos pela Base móvel diferencial. É um forma bem simples de controlar um robô, tanto em hardware quanto em software. Funciona posicionando dois motores de cada lado da base (com uma roda "boba" para sustentação) e de acordo com o acionamento em cada um dos motores, é possível ir para frente, para trás ou fazer curvas.



Esses motores nas laterais são motores de passo (28BYJ-48 + Driver ULN2003). São bem fáceis de usar, e já tem várias bibliotecas prontas para Arduino.




Para saber para onde ir, usamos 7 sensores de distância ultrassônicos (HC-SR04). Também bem fácil de mexer com bibliotecas para Arduino.



Eles foram posicionados de forma que pudessem perceber a localização e inclinação do robô dentro do espaço de testes, a todo momento. Para que ele pudesse, baseado nas leituras, corrigir a sua trajetória e se alinhar.






A precisão do sensor de distância (teoricamente) é de 3 mm, porém na prática as medições são muito ruidosas, variando até 1 cm em leituras repetidas com o robô parado. Então foi necessário fazer um filtro digital de média móvel, ou filtro FIR (Finite Impulse Response), para limpar o ruído e proporcionar uma medição mais confiável.


Braço robótico


O projeto de um braço robótico não é algo fácil. São inúmeros fatores que influenciam na definição das características do braço como alcance necessário, graus de liberdade, material, capacidade de carga necessidade ou não de contra-peso, etc. Então resolvemos desenhar o nosso próprio braço já personalizado para a nossa aplicação. Utilizamos MDF cortado a laser pelo baixo custo, por ser leve, mas ainda assim com uma boa resistência mecânica.

Precisávamos de um braço robótico com pelo menos 3 graus de liberdade. São duas articulações de movimento do braço, e mais movimento de rotação do braço, que podemos considerar um "grau de liberdade virtual", sendo que esse movimento é conseguido com a base diferencial e não com uma articulação do braço.



Para movimentar o braço, precisamos de atuadores que devem ser capazes de responder a demanda de carga que é dada pela massa total da estrutura do braço e pela massa das estruturas a serem manipuladas. Então escolhemos servomotores comumente usados por hobbistas usuários de Arduino (DGServo – S05NF e Hitec – HS422):




O componente final do braço robótico é a garra que vai efetivamente manipular os objetos. Utilizamos uma garra atuada por um pequeno servomotor (S05NF). Ela é de alumínio, e tem uma embreagem antitravamento que conecta o servomotor às engrenagens da garra. Isso melhora a pega da garra e evita danos ao motor.





Unidade de controle

Para controlar toda essa parafernália, nós usamos o estimado e aclamado Arduino. Que é uma placa de desenvolvimento open-source (hardware livre) de fácil desenvolvimento. Usamos o Arduino Mega, que é uma das muitas placas "Arduino". Nela tem um microcontrolador de 8 bits da Atmel (o ATmega2560). A placa nos dá acesso a 54 pinos de I/O e tem um clock de 16 MHz.



Então o Arduino é o responsável por:

  • Fazer a leitura constante dos sensores
  • Processar esses dados de leitura
  • Guiar o robô com os motores de passo da base até o destino
  • Controlar o movimento do braço robótico quando for necessário
E para facilitar o acesso aos pinos do Arduino (ou seja, para não ficar uma medusa de fios), nós fizemos uma placa de expansão ou "Shield" que encaixa no Arduino Mega e dá acesso aos pinos de uma forma mais confortável para cada aplicação.





O shield dá acesso direto (no formato do conector) a:
  • Pinos de alimentação de 7V a 9V (por bateria conectada ao shield)
  • Botão liga/desliga com LED de sinalização
  • Botão de reset
  • 5 servo motores
  • 2 motores de passo (compatível com a pinagem do driver ULN2003)
  • 10 sensores ultrassônicos
  • Mais 21 I/Os de uso geral
  • Mais barramentos de pinos de 7V-9V, 5V e de GND
Veja como ficou:






Para uma explicação (MUITO) mais detalhada de todos os passos dessa construção, dê uma olhada na nossa monografia.


E finalmente...
Veja aqui o vídeo do robô sambando na cara do recalque!



Agradecimento especial aos meus queridos companheiros de trabalho e amigos, Allan Dinato e André Ferro.


Diego



Faça você! (Links do artigo)

GitHub - Código Arduino e Projeto Eagle do shield para Arduino Mega
Shield do Arduino Mega a venda no Curta Circuitos (projeto público, sem lucros)
Desenho do braço e base para corte a laser
Monografia do Projeto Robô Construtor Autônomo

sábado, 7 de fevereiro de 2015

Arc Reactor - Homem de Ferro

Olá galera!

Hoje vamos tietar um filme fantástico, o Homem de Ferro! Como?
Vamos construir um Arc Reactor! :D

(esse não é o resultado final...)

Pré-Requisitos:
Nenhum... bora lá!


Ok, vamos a lista de materiais:

  • 13 LEDs azuis (de alto brilho se quiser gastar um pouco mais)
  • 6 resistores de 220 Ω
  • 1 resistor de 560 Ω
  • 1 bateria de 9 V
  • 1 cabeçote de videocassete (se é que as pessoas ainda lembram o que é isso... XP)
  • alça de mala ou fichário
  • pedaço de plástico (CD transparente, pasta escolar ou tupperware)
  • fios, folhas de lixa, fita isolante, ferro de solda e estanho


Vamos lá!

O mais difícil de achar é o videocassete (lembra dele?). Se você mora em uma cidade grande, é bem capaz que exista uma daquelas antigas lojas de "lixo" eletrônico. Fui a uma dessas e o cara me deu o videocassete...



Dele só usaremos o cabeçote. Na verdade você pode usar qualquer outro tipo de base para o arc reactor, eu escolhi usar o cabeçote por já ser do tamanho que eu queria, ser de metal, e ter o circulo de bobinas que ficaram muito legais.



Com a folha de lixa, lixe bem as cápsulas dos LEDs para a luz ficar difusa e uniforme. Corte o plástico translúcido em um circulo do mesmo diâmetro do cabeçote, e lixe também para difundir a luz.



Forre a parte de dentro do cabeçote com fita isolante (para não ter nenhum curto-circuito).



A ligação dos LEDs é bem simples:



Relembrando como faz para acender um LED (você já aprendeu em...):

Deixei todos os LEDs com 10 mA (o que dá um brilho legal). Em cada LED azul cai aproximadamente 3,2 V, então para saber que resistor usar calculamos:

  • Para os 12 LEDs das extremidades:

Lei de ohm:




Tensão no resistor:




Então, o resistor (para 10 mAserá:



Vamos usar o valor comercial mais próximo, 220 Ω

Obs: multipliquei a tensão que cai no LED por 2 porque eles estão em série.


  • Para o único LED no centro do Arc Reactor:
Tensão no outro resistor:



Então, o resistor (para 10 mAserá:



Vamos usar o valor comercial mais próximo, 560 Ω


Ok, já temos os valores dos resistores. Mas se por um lado o circuito é simples, soldá-los em um circulo já não é tão fácil. Treine bem e tome cuidado para não deixar nada se curto-circuitar.



Agora é só colocar o plástico lixado e o circulo de bobinas que pegamos do cabeçote. Pode fixar tudo com cola quente, ou com parafusinhos.

Fixe o Arc Reactor e a bateria na alça de fichário (ou solução equivalente). Vai servir para você "vestir" o Arc Reactor por baixo da roupa.



Vamos ver como ficou:



Sinceramente eu não vejo diferença... ;)


Diego

quinta-feira, 5 de fevereiro de 2015

Circuit Scribe - A caneta que desenha circuitos na hora!

Olá galera!

Hoje vou mostrar uma coisa que me deixou de queixo caído...


É uma caneta de bolinha (assim como a sua bic velha...) que escreve... veja só... trilhas condutivas!!!



Esse foi um projeto da empresa startup Electroninks Incorporated da Universidade de Illinois em Urbana-Champaign. Eles usaram o site de crowfunding Kickstarter, e levantaram US$674,425.

Felizmente eu fui um dos muitos apoiadores e ganhei a minha Circuit Scribe. Dá uma olhada nela funcionando:


Tá com inveja? Arranja a sua :)


Diego

sexta-feira, 23 de janeiro de 2015

Que haja a luz(zinha)! Como ligar um LED???

Olá galera!

Esse é o excelentíssimo primeiro post desse blog. E se o bom Odin assim permitir, será o primeiro de muitos!



Pré-Requisitos:
Nenhum... bora lá!


Agora, eu te pergunto... Você sabe acender um LED?





Agora é a hora que os filhos da p... estudantes de curso técnico e de engenharia vão dar risada... Mas apesar de ser algo trivial, acender um LED (propriamente) não é algo tão simples para um hobbysta ou para um novato (n00b). E eu como um Engen00b estou aqui para ensinar falar para esses.



Ok, mas o que é um LED? (prometo não me estender XP)





O LED é um diodo que emite luz. Tá, mas o que é um diodo? É um componente eletrônico que só deixa a eletricidade passar em um sentido.


Hmmm, então já deu para perceber que se eu ligar ao contrário, a bagaça não vai funcionar! Isso quer dizer que os terminais (ou perninhas) são diferentes e tem nome. Vamos conhecê-los:




O terminal ânodo é o positivo e (curiosamente...) o catodo é o negativo.

Mas, com o componente na mão, como saber qual "perninha" é o catodo e qual é o ânodo? Há 3 maneiras:


1) Se você ainda não tiver cortado os terminais depois de soldar em uma placa, o terminal mais curto é o catodo. E o mais comprido é o ânodo.





2) Nos LEDs redondos, há um "corte" reto na cabeça do LED, o terminal do lado desse corte é o catodo, e o outro é o ânodo.





3) O modo mais seguro de saber é olhando os terminais dentro da cápsula. O terminal maior é o catodo, e o menor é o ânodo.





Agora você já sabe o que é um LED e sabe até quais são e como identificar seus terminais, e agora?



Como ligar o bendito LED???
É só ligar na bateria e pronto? Não!!! (vai funcionar, mas não corretamente, podendo até danificar o LED)


O circuito de como ligar o LED é esse:




Uma alimentação, um resistor série para regular a corrente, o LED e o terra. Pronto!


Mas qual a tensão de alimentação? E qual resistor? Vamos lá...


Exemplo: VCC = 5 V e LED vermelho


Todo LED tem uma queda de tensão específica que varia pela sua cor. Você pode ver isso no datasheet do LED (procure por "Forward Voltage"), mas como eu sou legal, aqui vai uma tabelinha que ajuda muito:




Ok, vamos praticar a Lei de Ohm? :D


Nossa fonte é de 5 V, e 1,8 V vão cair no LED vermelho. Agora é só saber que corrente precisamos. Para fins práticos, pode considerar 20 mA para acender o LED com seu brilho máximo seguro. Então vamos as contas:



Lei de ohm:



Tensão no resistor:



Então, o resistor será:




Pronto!!!

Se quiser um brilho menor, varie a corrente na hora de calcular o resistor (de 3 mA até 20 mA).


Agora você já sabe fazer luz! Sabe calcular e ajustar o brilho do LED. Parabéns!


Divirta-se!



Diego