Postagens

Comunicação Arduino via Bluetooth I

Imagem
Outro dia comprei, aproveitando a vinda de amigos dos EUA, alguns gadgets que aqui em Pindorama são caros. Assim vieram um break bluetooth, um acelerômetro (devia ter comprado direto um IMU, que inclui o giroscópio, mas agora já era), um shield GPS e um sensor de impressões digitais. O primeiro binquedim que funcionou foi o break bluetooth. Muito, muito mole. Ele é igulalim esse aí: Os quatro pinos de conexão são Vcc, GND, TX e RX, o que indica uma comunicação serial, ou seja, o Arduino verá o bluetooth como um dispositivo serial. Esse que eu comprei tem um regulador de tensão para poder ser usado em 5V. Outros só podem ser usados em 3.3V, então vc deve alimentá-lo com a saída 3V3 do Arduino e também deve providenciar um divisor de tensão para adequar a comunicação. Liguei a alimentação e os TX/RX nos RX/TX do Arduino (pinos 0 e 1). Testei e funcionou de cara. O inconveniente dessa abordagem é que vc tem que desligar os fios da comunicação toda vez que for atualizar o software...

Usando L398 breaks para controlar motores de passo II

Para ler um pouco mais sobre a teoria desse assunto, aqui   o datasheet do L298, coração da nossa plaquinha e aqui uma documentação a respeito da própria placa. Abaixo, um exemplo simples de software para acionar um motor de passo conectado ao break conforme mostrado no esquema do primeiro post : int IN1=2; int IN2=3; int IN3=4; int IN4=5; int ENB=6; // Obs: a placa que eu usei usa jumpers como enable, int ENA=7; // então nem precisaria de usar esses pinos. // Esse fonte abaixo funciona para os dois tipos de placa. void setup() {  pinMode(ENA,OUTPUT);  pinMode(ENB,OUTPUT);  pinMode(IN1,OUTPUT);  pinMode(IN2,OUTPUT);  pinMode(IN3,OUTPUT);  pinMode(IN4,OUTPUT);  digitalWrite(ENA,HIGH);  digitalWrite(ENB,HIGH); } void loop(){  // O sistema vai acionando as bobinas de maneira   // a promover o giro do rotor.  // O intervalo de 30 milissegundos é necessário   // para que o rotor gire. Quanto menor, ...

Usando L298 breaks para controlar motores de passo I

Imagem
Tem uns breaks muito comuns na net (leia-se Mercado Livre etc) que servem para controlar 2 motores CC ou 1 motor de passo. Tenho um deles, e outro dia quis ligá-lo a um motor de passo mas tive muita dificuldade para achar informações sobre como fazer isso. Daí... ideia para um post, por supuesto! Esse aí é o break. Tem um monte parecido: Esse é o break com a descrição das conexões: Observe que o sistema mostra a conexão para dois motores CC. E como ligar um motor de passo? Abaixo, o esquema que usei. Liguei um motor bipolar (4 ou 5 fios). Para ligar um motor unipolar (6 fios) basta ligá-lo como bipolar, como pode ser encontrado na net. Observe que a conexão é simples: os pinos de comando são ligados ao Arduino, exatamente como seria feito num motor CC. Liga-se então as bobinas como se fossem os motores CC, cada bobina a um dos conectores para os motores CC. A bateria representa a fonte de alimentação do motor, que normalmente não será o Arduino. Observe a necessidade ...

Como treinar o seu tubarão I

Imagem
Eu vinha pensando em construir  algo que voasse. Depois de alguma pesquisa, resolvi que um dirigível seria a melhor forma de começar. Andei procurando no Brasil alguém que fizesse um balão a ser inflado com hélio com dimensões que pudessem ser usadas indoor. Não encontrei. Aí, pesquisando na net, achei esse aqui . Como um amigo vinha de viagem ao Brasil, encomendei um tubarão. O bicho é diversão pura, como vcs podem ver no vídeo abaixo,  que fiz dele, na noite em que chegou. A ideia a partir de agora é usá-lo em oficinas, aulas e palestras de maneira a ensinar desde conceitos simples até coisas mais complexas em automação usando o brinquedo. A primeira coisa que fiz foi hackear o controle remoto dele de modo a que pudesse ser comandado pelo Arduino. Agora posso comandá-lo de muitas formas diferentes. E a estréia dele não poderia ser mais gloriosa. Ontem fiz uma palestra no Lightning Talks , no ITA, e mostrei como ele pode ser comandado pelo controle PS/2, desses de...

Raspberry & sensores: tacômetro efeito Hall

Imagem
Seguindo com o projeto que começou a ser descrito nos posts aqui e aqui , vamos falar do uso de sensores digitais no RPi. Foi dito no último post que os servo-motores de giro contínuo não têm uma referência, ou seja, eles não "sabem" a sua posíção quando a gente os liga. Se queremos usá-lo para tracionar um carrinho, por exemplo, sem problema, porque normalmente a gente sabe onde o carrinho está (vendo-o ou com algum esquema de monitoramento, como um GPS) e o motor só precisa girar a roda obedecendo a comandos. Mas se queremos usar um servo 360 para posicionamento, devemos dar a ele uma referência, ou seja, um modo de identificar uma determinada posição como "0". Aí ele pode se deslocar relativamente a esse ponto, e toda vez que perder essa referência ele pode procurá-la novamente, zerando a posição. Existem muitos (mesmo!) jeitos de se fazer isso. Um dos mais comuns é usar um sensor de efeito Hall . Como conta no artigo do link o grande Newton C. Braga (de ...

Acionando servo-motores de giro contínuo com o Raspberry Pi e Python

Imagem
Agora vejamos como comandar um servo-motor com o Raspberry. Nesse post eu não vou entrar em muitos detalhes sobre o funcionamento de servos, nem sobre como usar o GPIO do Raspberry. Se precisar de mais detalhes, dê um Google sobre servos e leia o post Entendendo o Raspberry GPIO: piscando LED , neste blog. Para acionar um servo precisamos de três fios: alimentação (5 a 6 Vcc), terra e dados. Como um servo, por menor que seja, usa muita corrente, vc deve usar uma fonte separada e não ligar o servo aos pinos 5V e terra do Raspberry, sob pena de queimá-lo. Pode-se usar por exemplo um conjunto com quatro pilhas, ou uma bateria como a que usei e que vcs verão em foto abaixo. O terceiro fio receberá o sinal que comanda o servo. Para controlar um servo devemos enviar um sinal de pulsos com uma determinada frequência. Esses pulsos nada mais são do que um "liga/desliga", quer dizer, o Raspberry deve criar na sua porta um sinal que alterne 0V e 5V com um determinado intervalo de mu...

Entendendo o RaspBerry GPIO: Piscando LED

Imagem
A primeira aplicação que se faz quando se aprende a programar é chamada Hello World. Se estivéssemos aprendendo a programar em Python seria algo assim: print("Hello World!") Ao executar o programa, o resultado na tela é (dãããã!): Hello World! Nas plaquinhas estilo Arduino etc, como a gente não tem um monitor prá escrever Alô Mundo, temos que arrumar uma outra solução. Normalmente se usa um programa que pisque um LED, então o Hello World do Arduino é o Blink: int led = 13; void setup() {                   pinMode(led, OUTPUT);      } void loop() {   digitalWrite(led, HIGH);      delay(1000);                  digitalWrite(led, LOW);       delay(1000);                } No Raspberry Pi, como temos uma tela para usar, podemos rodar o Hello World do Python. Acontece que, para aprendermos um po...