sexta-feira, 30 de novembro de 2018

Micro Servo Motor 9g


Aprendendo a controlar um servo motor


       Nesse projeto, falarei um pouco sobre os servos, e mostrar seu funcionando. Os servos motores são usados em várias aplicações quando se deseja movimentar algo de forma precisa e controlada. Para isso, deve-se seguir as recomendações de seu datasheet, para não danificá-lo e usá-lo de forma adequada.

Micro servo 9g


Fonte: CFB Cursos

          Nessas imagens, está sendo apresentado o servo motor 9g e suas especificações, levando em conta esses dados, já podemos brincar um pouco com nossos servos. Para isso, siga as recomendações abaixo:

Material de apoio: 

Componentes: 
  • 1 Arduino
  • 1 Protoboard
  • Servo motor 9g
  • 1 Potenciômetro
  • 1 suporte para pilhas AA
  • 4 Pilhas AA
  • Fios Jumpers

Esquemático:


Fonte: Própria Autora

Exemplo 1: Servo controlado com potenciômetro

O servo será controlado com um potenciômetro, de acordo com as posições do potenciômetro, o servo irá rotacionar de 0º à 180º.





Código:

#include <Servo.h>

#define pot A0 //Potenciômetro

Servo s1; //Servo

int angS1; //Ângulo do servo
int a;

void setup() {
  s1.attach(2); //Porta de controle que o serve está ligado
  angS1=0; //Inicializa em 0
  s1.write(angS1); //0 a 180
  Serial.begin(9600);
}

void loop() {
  angS1=map(analogRead(pot),0,1023,0,180);
  s1.write(angS1);
  delay(100);
  
}

Exemplo 2: Servo Automático

O servo está funcionando de forma automática, sua rotação varia de 0º à 180º, apos isso, reinicia o processo.



Código:

#include <Servo.h>

#define pot A0 //Potenciômetro

Servo s1; //Servo

int angS1; //Ângulo do servo

void setup() {
  s1.attach(2); //Porta de controle que o serve está ligado
  angS1=0; //Inicializa em 0
  s1.write(angS1); //0 a 180
  Serial.begin(9600);
}

void loop() {
  angS1=0;
  s1.write(angS1);
  delay(3000);

  angS1=90;
  s1.write(angS1);
  delay(3000);

  angS1=180;
  s1.write(angS1);
  delay(3000);
}

Exemplo 3: Servo com leitura de posição e monitor serial

O monitor serial, mostrará as posições de atuação do servo, há uma leitura de posição de  de 0º , 90º e 180º a cada 3 segundos.



Código:

#include <Servo.h>

#define pot A0 //Potenciômetro

Servo s1; //Servo

int angS1; //Ângulo do servo
int a;

void setup() {
  s1.attach(2); //Porta de controle que o serve está ligado
  angS1=0; //Inicializa em 0
  s1.write(angS1); //0 a 180
  Serial.begin(9600);
}

void loop() {
  angS1=0;
  s1.write(angS1);
  a = s1.read();
  Serial.println(a);
  delay(3000);

  angS1=90;
  s1.write(angS1);
  a = s1.read();
  Serial.println(a);
  delay(3000);

  angS1=180;
  s1.write(angS1);
  a = s1.read();
  Serial.println(a);
  delay(3000);
}

quinta-feira, 29 de novembro de 2018

Sistema de Segurança com Teclado e LCD

Tela de LCD 20x4 e Teclado 4x4

       Nesse projeto, ensinarei a criar um sistema de segurança com teclado e LCD, com Arduino Mega 2560, mas você pode usar o Arduino de sua preferência, que esteja de acordo com os requerimentos do projeto.

    Estarei utilizando o Módulo I2C  para o display LCD, para facilitar a montagem e o uso de portas no Arduino, mas antes vou mostrar a montagem do projeto sem o módulo, caso você ainda não tenha em sua bancada.




Componentes:

  • Arduino Mega 2560;
  • Display de LCD 20x4;
  • Teclado Matricial 4x4
  • Módulo I2C
  • Potenciômetro 1k
  • Mini protoboard
  • Fios Jumpers M-M, M-F;

Esquemático sem o Módulo I2C:

É necessaria a montagem conforme o esquema

Fonte: Própria autora

No Display, aparecerá uma mensagem pedindo a senha de acesso, digite a senha correta e o sistema permitirá o acesso, caso o usuário digite caracteres que não estejam de acordo com a senha correta, será informado ao mesmo, que a senha está inválida, e reiniciará o procedimento.

Faça a inclusão da biblioteca KeyPad, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8

Código sem o Módulo I2C:

/* 
 *  Arduino Sistema de Segurança com Teclado e LCD
 *  Sem o módulo I2C
 */

#include <LiquidCrystal.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca

#define redLED   10 //Defini os pinos de LED
#define greenLED 11

char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição 

const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;

char keyMap [rows] [cols] = 
{ // Define os símbolos nos botões do teclado

  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
  
};

byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);

LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)

void setup()
{

  lcd.begin(16, 2);
  pinMode(redLED, OUTPUT);  //Defina o LED como uma saída
  pinMode(greenLED, OUTPUT);
  setLocked (true);         //estado da senha
  
}

void loop(){

  char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey

  lcd.setCursor(0, 0);
  lcd.print(" Bem vindos");
  lcd.setCursor(0, 1);
  lcd.print(" Digite a senha:");

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       //Defini chaves inválidas
     whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
  {

    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" Chave inválida!");
    delay(1000);
    lcd.clear();
    
  }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  
  if(pozisyon == 4){
    setLocked (false);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("*** Verificado***");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("  Robotica  ");
    lcd.setCursor(0, 1);
    lcd.print("para Leigos");
    delay(7000);
    lcd.clear();
    
  }
  delay(100);
}

void setLocked(int locked)
{
  if(locked)
  {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else
  {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
  }
}


Agora que sabemos o circuito completo do projeto sem o uso do modulo, chegou a hora de usa-lo em nosso projeto.


         Com esse módulo, você consegue controlar um display LCD, seja ele 16x2 ou 20x4, utilizando apenas dois pinos do Arduino : o pino analógico 4 (SDA) e o pino analógico 5 (SCL), que formam a interface de comunicação I2C.


Estrutura do módulo I2C

         Na lateral esquerda do módulo temos 4 pinos, sendo que dois são para alimentação (Vcc e GND), e os outros dois são da interface I2C (SDA e SCL). O potenciômetro da placa serve para ajuste do contraste do display, e o jumper na lateral oposta permite que a luz de fundo (backlight) seja controlada pelo programa ou permaneça apagada.



Fonte: Arduino e Cia


Faça a inclusão da biblioteca LiquidCrystal_I2C

Para controlar esse módulo I2C, utilize a biblioteca LiquidCrystal_I2C, todo o material necessário para a execução desse projeto, está disponível aqui: https://drive.google.com/open?id=1avt-BwGQTLjJHI8wfr1_FjFT0ZkCjaA8

Esquemático com o modulo I2C

Para o Arduino Uno


Para o Arduino Mega

Fonte: Arduino e Cia


Código com o módulo I2C

/* 
 *  Arduino Sistema de Segurança com Teclado e LCD
 *  Com o módulo I2C
 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Incluir biblioteca de LCD (biblioteca padrão)
#include <Keypad.h> //Incluir biblioteca de teclado - primeiro você deve instalar a biblioteca

#define redLED   10 //Defini os pinos de LED
#define greenLED 11

char* password ="1234"; //Crie uma senha
int pozisyon = 0; //keypad posição 

const byte rows = 4; //Número de linhas e colunas do teclado
const byte cols = 4;

char keyMap [rows] [cols] = 
{ // Define os símbolos nos botões do teclado

  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
  
};

byte rowPins [rows] = {2, 3, 4, 5}; //Pinos do teclado
byte colPins [cols] = {6, 7, 8, 9};

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);

//LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // Pinos do LCD. (RS, E, D4, D5, D6, D7)
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);

void setup()
{
  
  lcd.begin (20,4);
  pinMode(redLED, OUTPUT);  //Defina o LED como uma saída
  pinMode(greenLED, OUTPUT);
  setLocked (true);         //estado da senha
  
}

void loop(){

  char whichKey = myKeypad.getKey(); //Define qual tecla é pressionada com getKey
  
  lcd.setBacklight(HIGH);
  lcd.setCursor(4, 0);
  lcd.print("BEM VINDOS!!!");
  lcd.setCursor(0, 2);
  lcd.print("DIGITE A SENHA:");

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       //Defini chaves inválidas
     whichKey == 'B' || whichKey == 'C' || whichKey == 'D')
  {

    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("SENHA INVALIDA!!!");
    delay(1000);
    lcd.clear();
    
  }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  
  if(pozisyon == 4){
    setLocked (false);
    lcd.clear();
    lcd.setCursor(2, 0);
    lcd.print("***VERIFICADO***");
    delay(3000);
    lcd.clear();
    lcd.setCursor(6, 1);
    lcd.print("SALA DA");
    lcd.setCursor(4, 2);
    lcd.print("MECATRONICA");
    delay(7000);
    lcd.clear();
    
  }
  delay(100);
}

void setLocked(int locked)
{
  if(locked)
  {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else
  {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
  }
}

quarta-feira, 28 de novembro de 2018

Acionamento de Leds com módulo bluetooth, e App RemoteXY


Crie o Aplicativo na plataforma RemoteXY, levando em consideração o hardware do projeto.




Faça as configurações necessárias na plataforma, de acordo com seu módulo bluetooth e Arduino IDE, para este caso, as configurações foram feitas para o Arduino Mega.


Após essa etapa, vá em Get Source Code, e faça o que se pede abaixo:



1. Baixe o código-fonte do programa, abra-o no Arduino IDE.
2. Instale a biblioteca RemoteXY para o Arduino IDE.
3. Compile o código-fonte e faça o upload para a placa do Arduino usando o Arduino IDE.
4. Conecte corretamente o módulo Bluetooth à placa Arduino.
5. Instale o aplicativo móvel RemoteXY ver.4.1.1 para smartphone / tablet:
https://play.google.com/store/apps/details…
6. Conecte-se ao Arduino usando o aplicativo móvel.

Feito esses passos, com o aplicativo aberto, ligue e selecione o bluetooth HC-05 (Caso peça a senha: 1234), depois disso, aparecerá seu App pronto.



Todo o conteúdo necessário para o projeto, você encontra aqui: https://drive.google.com/open…
Plataforma RemoteXY : http://remotexy.com/en/

Na montagem do hardware, coloquem mais um fio GND, da placa Arduino para a Protoboard, para o circuito funcionar.

Código Fonte

//////////////////////////////////////////////
//               RemoteXY                   //
//////////////////////////////////////////////

// RemoteXY selecione o modo de conexão e inclua a biblioteca 
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>

#include <RemoteXY.h>

// RemoteXY configurações de conexão
#define REMOTEXY_SERIAL_RX 10
#define REMOTEXY_SERIAL_TX 11
#define REMOTEXY_SERIAL_SPEED 9600


// RemoteXY configurações  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
        { 
          255,3,0,0,0,54,0,8,150,0,
          2,1,38,25,22,11,79,26,31,31,
          79,78,0,79,70,70,0,2,1,38,
          6,22,11,36,26,31,31,79,78,0,
          79,70,70,0,2,1,39,43,22,11,
          12,26,31,31,79,78,0,79,70,70,
          0 
        };
  
// Esta estrutura define todas as variáveis da sua interface de controle
struct 
{

  // variável de entrada
  uint8_t led_2; // =1 if led_2 ON and =0 if OFF 
  uint8_t led_1; // =1 if led_1 ON and =0 if OFF 
  uint8_t led_3; // =1 if led_3 ON and =0 if OFF 

  // Outra variável
  uint8_t connect_flag;  // =1 if wire connected, else =0 


RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define PIN_LED_2 3
#define PIN_LED_1 2
#define PIN_LED_3 4

void setup() 
{
  RemoteXY_Init (); 
  
  pinMode (PIN_LED_2, OUTPUT);
  pinMode (PIN_LED_1, OUTPUT);
  pinMode (PIN_LED_3, OUTPUT);
  
}

void loop() 

  RemoteXY_Handler ();
  
  digitalWrite(PIN_LED_2, (RemoteXY.led_2==0)?LOW:HIGH);
  digitalWrite(PIN_LED_1, (RemoteXY.led_1==0)?LOW:HIGH);
  digitalWrite(PIN_LED_3, (RemoteXY.led_3==0)?LOW:HIGH);

}









Micro Servo Motor 9g

Aprendendo a controlar um servo motor        Nesse projeto, falarei um pouco sobre os servos, e mostrar seu funcionando. Os servos mo...