Archives for 

shield

Arduino Bluetooth Shield Source Code and Tutorial

arduino bluetooth shield master to slave

arduino bluetooth shield master to slave

 

This is a tutorial on how to use Arduino Bluetooth shield.

To use this bluetooth shield, you have to plug it on the Arduino Uno board as shown in the image above.

This Bluetooth shield can be programmed to be a master or slave. If Bluetooth shield is programmed into the master, the bluetooth shield will make ‘a name’ for bluetooth connectivity.

In addition, it will set the baudrate and will be looking for signals bluetooth enabled. After finding an active bluetooth signal, This bluetooth shield will try to make the process of “pairing” and if the appropriate settings, then it will be connected.

Here is an example program “Master Bluetooth Shield”

#include <SoftwareSerial.h> // Software Serial Port

#define RxD 6
#define TxD 7
#define DEBUG_ENABLED 1

String retSymb = “+RTINQ=”; // start symble when there’s any return
String slaveName = “;SeeedBTSlave”; // caution that ‘;’must be included, and make sure the slave name is right.
int nameIndex = 0;
int addrIndex = 0;

String recvBuf;
String slaveAddr;

String connectCmd = “\r\n+CONN=”;

SoftwareSerial blueToothSerial(RxD,TxD);

void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();
//wait 1s and flush the serial buffer
delay(1000);
Serial.flush();
blueToothSerial.flush();
}

void loop()
{
char recvChar;
while(1)
{
if(blueToothSerial.available()) //check if there’s any data sent from the remote bluetooth shield
{
recvChar = blueToothSerial.read();
Serial.print(recvChar);
}
if(Serial.available()) //check if there’s any data sent from the local serial terminal, you can add the other applications here
{
recvChar = Serial.read();
blueToothSerial.print(recvChar);
}
}
}

void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print(“\r\n+STWMOD=1\r\n”); // set the bluetooth work in master mode
blueToothSerial.print(“\r\n+STNA=SeeedBTMaster\r\n”); // set the bluetooth name as “SeeedBTMaster”
blueToothSerial.print(“\r\n+STAUTO=0\r\n”); // Auto-connection is forbidden here
delay(2000); // This delay is required.
blueToothSerial.flush();
blueToothSerial.print(“\r\n+INQ=1\r\n”); //make the master inquire
Serial.println(“Master is inquiring!”);
delay(2000); // This delay is required.

//find the target slave
char recvChar;
while(1)
{
if(blueToothSerial.available())
{
recvChar = blueToothSerial.read();
recvBuf += recvChar;
nameIndex = recvBuf.indexOf(slaveName); //get the position of slave name

//nameIndex -= 1;
//decrease the ‘;’ in front of the slave name, to get the position of the end of the slave address
if ( nameIndex != -1 )
{
//Serial.print(recvBuf);
addrIndex = (recvBuf.indexOf(retSymb,(nameIndex – retSymb.length()- 18) ) + retSymb.length());//get the start position of slave address
slaveAddr = recvBuf.substring(addrIndex, nameIndex);//get the string of slave address
break;
}
}
}

//form the full connection command
connectCmd += slaveAddr;
connectCmd += “\r\n”;
int connectOK = 0;
Serial.print(“Connecting to slave:”);
Serial.print(slaveAddr);
Serial.println(slaveName);
//connecting the slave till they are connected
do
{
blueToothSerial.print(connectCmd);//send connection command
recvBuf = “”;
while(1)
{
if(blueToothSerial.available()){
recvChar = blueToothSerial.read();
recvBuf += recvChar;
if(recvBuf.indexOf(“CONNECT:OK”) != -1)
{
connectOK = 1;
Serial.println(“Connected!”);
blueToothSerial.print(“Connected!”);
break;
}
else if(recvBuf.indexOf(“CONNECT:FAIL”) != -1)
{
Serial.println(“Connect again!”);
break;
}
}
}
}while(0 == connectOK);
}

arduino bluetooth shield slave to computer master tutorial

arduino bluetooth shield slave to computer master tutorial

If you set it as a slave bluetooth shield, then this will be passive. This bluetooth shield will set the baudrate and put a name of bluetooth connectivity.

After that, it will wait until there is a device that finding and trying to ‘pairing itself’. If the settings are appropriate, then both bluetooth device will be connected.

Here is an example program “Slave Bluetooth Shield”

#include <SoftwareSerial.h> //Software Serial Port
#define RxD 6
#define TxD 7

#define DEBUG_ENABLED 1

SoftwareSerial blueToothSerial(RxD,TxD);

void setup()
{
Serial.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();

}

void loop()
{
char recvChar;
while(1)
{
if(blueToothSerial.available())
{//check if there’s any data sent from the remote bluetooth shield
recvChar = blueToothSerial.read();
Serial.print(recvChar);
}
if(Serial.available())
{//check if there’s any data sent from the local serial terminal, you can add the other applications here
recvChar = Serial.read();
blueToothSerial.print(recvChar);
}
}
}

void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print(“\r\n+STWMOD=0\r\n”); // set the bluetooth work in slave mode
blueToothSerial.print(“\r\n+STNA=SeeedBTSlave\r\n”); // set the bluetooth name as “SeeedBTSlave”
blueToothSerial.print(“\r\n+STOAUT=1\r\n”); // Permit Paired device to connect me
blueToothSerial.print(“\r\n+STAUTO=0\r\n”); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print(“\r\n+INQ=1\r\n”); // make the slave bluetooth inquirable
Serial.println(“The slave bluetooth is inquirable!”);
delay(2000); // This delay is required.
blueToothSerial.flush();
}

The Easiest Arduino Uno Bluetooth Shield

arduino bluetooth seeedstudio shield

arduino bluetooth seeedstudio shield

The easiest Arduino Uno Bluetooth shield for your Arduino Uno project is SeeedStudio Bluetooth Shield. Simply by plugging the Bluetooth Shield on your Arduino Uno and it has been ready for use. SeeedStudio bluetooth shield work using serial communication. You can choose two pins from Adruino Uno (from pin D0 to D7) to be used as Software Serial Port – Transmite Data (TX) and Receive Data (RX). You can choose RX and TX pins by sliding ‘jumper pin’ on the port that you want (D0 to D7).

arduino bluetooth seeedstudio shield tutorial

arduino bluetooth seeedstudio shield tutorial

 

Arduino Uno Bluetooth Shield ( SeeedStudio Bluetooth Shield ) Features :

  1. Input Voltage: 3.3V
  2. Baudrate: 9600, 19200, 38400, 57600, 115200, 230400, 460800
  3. Seeeduino/Arduino compatible
  4. Up to10m communication distance in house without obstacle
  5. UART interface (TTL) with programmable baud rate (SPP firmware installed)
  6. Default Baud rate: 38400, Data bits: 8, Stop bit: 1, Parity: No parity
  7. Default PINCODE:”0000”
  8. A full set of configuration commands
  9. On board PCB Antenna
  10. FCC Part 15 Certificated

 

Arduino uno bluetooth shield

Arduino uno bluetooth shield

You can still use all the Arduino pin bluetooth although this shield cover Arduino Uno board.  This Bluetooth shield provides 2 grove connectors (digital and analog) for you to install the grove module.

Pad TypeDescription
PIO1Status instruction port of Bluetooth module can be read by Arduino A1 port: low-disconnected, high-connected.
BT_RXUART Data input of Bluetooth module.
BT_TXUART Data output Bluetooth module.
Two Grove connectorsOne is Digital (D8 and D9), the other is I2C/Analog (A4 and A5).

 

arduino bluetooth shield master to slave

arduino bluetooth shield master to slave

You can set this shield bluetooth become a master or slave. For a tutorial and sample programs (source code program) you can also read on this blog.

arduino bluetooth shield slave to computer master tutorial

arduino bluetooth shield slave to computer master tutorial

You can connect this bluetooth shield with the other one (2 different bluetooth shield).

You can also connect a Bluetooth shield with a laptop or computer.

You can also connect a Bluetooth shield with the smartphone.

arduino bluetooth shield slave to master tutorial

arduino bluetooth shield slave to master tutorial

Arduino LCD and Keypad Shield

lcd keypad shield - arduino shield

lcd keypad shield – arduino shield

Arduino LCD Shield that widely used is made by DFRobot.

DFRobot combines LCD Shield and Keypad Shield in one module. This LCD shield using a 16×2 character LCD components, and 5 buttons that you can use to create a menu option on your project.

This Arduino LCD keypad shield can be mounted on the Arduino Uno. And like Arduino shield in general, you can install it by plugging in the top of Arduino Uno.

lcd keypad shield - datasheet

lcd keypad shield – datasheet

You will still be able to use all Arduino pins, although it is installed by sticking the Arduino Board. This diagram illustrates that this LCD Arduino provide pins which replaces the function of the pins on the Arduino board. You can still access + 5V, 3.3V, and ground pin, which has been provided on the LCD keypad shield.

PinFunction
Analog 0Button (select, up, right, down and left)
Digital 4DB4
Digital 5DB5
Digital 6DB6
Digital 7DB7
Digital 8RS (Data or Signal Display Selection)
Digital 9Enable
Digital 10Backlit Control

It uses 8 pin arduino, and you can take advantage of the other pins for sensors or other purposes. Pin A1 to detect the five buttons, while the digital pin 4 to 10 is used to control the LCD.

lcd keypad board - arduino shield

lcd keypad board – arduino shield

Source Code for Arduino LCD Keypad Shield

lcd keypad shield - datasheet

lcd keypad shield – datasheet

Here is the Arduino programming tutorial for LCD keypad shield. Arduino LCD keypad shield used is described in this article.

How to install LCD keypad shield on arduino uno simply by plugging in the arduino board. This tutorial will explain 3 arduino program. The first source code explains how to display characters on the LCD shield. Source code number two explains how to read keys on the keypad shield. And source code number three is the incorporation of lcd shield source code and keypad shield source code.

Source code to display characters on the LCD

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print(“avrchip.com”); // print a simple message
}

void loop()
{
lcd.setCursor(9,1); // move cursor to second line “1” and 9 spaces over
lcd.print(millis()/1000); // display seconds elapsed since power-up

}

 

 

Source code to read keys on keypad shield

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>
// define some values used by the panel and buttons
int button = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5

// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
// For V1.1 us this threshold
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;

// For V1.0 comment the other threshold and use the one below:
/*
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
*/
return btnNONE; // when all others fail, return this…
}

void setup()
{

}

void loop()
{
button = read_LCD_buttons(); // read the buttons
}

 

LCD keypad shield source code

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5

// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
// For V1.1 us this threshold
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;

// For V1.0 comment the other threshold and use the one below:
/*
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
*/
return btnNONE; // when all others fail, return this…
}

void setup()
{
lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print(“Push the buttons”); // print a simple message
}

void loop()
{
lcd.setCursor(9,1); // move cursor to second line “1” and 9 spaces over
lcd.print(millis()/1000); // display seconds elapsed since power-up
lcd.setCursor(0,1); // move to the begining of the second line
lcd_key = read_LCD_buttons(); // read the buttons

switch (lcd_key) // depending on which button was pushed, we perform an action
{
case btnRIGHT:
{
lcd.print(“RIGHT “);
break;
}
case btnLEFT:
{
lcd.print(“LEFT “);
break;
}
case btnUP:
{
lcd.print(“UP “);
break;
}
case btnDOWN:
{
lcd.print(“DOWN “);
break;
}
case btnSELECT:
{
lcd.print(“SELECT”);
break;
}
case btnNONE:
{
lcd.print(“NONE “);
break;
}
}

}