SMART SUITCASE - The Follower Friend


Project Introduction

As any frequent flyer knows, hauling around a passport, carry-on luggage and suitcase while navigating through an airport can be a real hassle, and the situation is made worse if the traveller in question has any physical health issues.
I have come up with an ingenious solution to this issue: a smart carry-on suitcase named "SMART SUITCASE - The Follower Friend" - which follows the traveller around automatically.


Project Abstract

The Smart suitcase has the user interface through which user can choose either Manual mode or Automatic Mode. In manual mode, the user gets facilities of location tracking, smart lock and USB charging. While in Automatic mode, user gets an additional functionality of suitcase following the user.

    Smart suitcase has four main features -
  1. To follow the user automatically

  2. Location tracking
  3. Location Tracking becomes very important nowadays, especially when the suitcase is stolen. The suitcase has GPS & GSM modules which allow user to track the suitcase anywhere in the world. It sends the location coordinates to the Local Server and user just need to open a webpage on his/her computer or mobile, where he/she will find a Link to Google Maps with the suitcase Location Coordinates.

  4. Charge any device
  5. Not just mobile phone, user can charge his/her tablets, eBooks, cameras, or any USB chargeable device using the USB socket available on the suitcase.

  6. An android app controlled digital lock
  7. A lock and unlock feature is also built into the suitcase. The user can not only unlock his/her bag mechanically but also with the help of smart ANDROID App in smartphone. The user has to enter password to unlock the bag via application. Also, ultrasonic sensors detect if the user has walked away and automatically lock it when he/she is not nearby.


Block Diagram


Project Development

For now, I am focussing on first feature i.e. to make the suitcase follow the user.
I decided to mount one ultrasonic receiver on the suitcase - in the front right corner and to make a tiny, low power ultrasonic beacon which is ultrasonic transmitter which user will have to carry The suitcase will use signals from this beacon to navigate to the user and follow him/her.

1. Making Ultrasonic trasmitter beacon

I used 40 Khz ultrasonic transmitter. The circuit diagram of transmitter is shown below. I used general purpose PCB to make trasmitter circuit & I soldered the components and preprared the tracks by hand. Below is shown the transmitter PCB with 9V battery.

2. Making Ultrasonic receiver

I used 40 Khz ultrasonic receiver. The circuit diagram of receiver is shown below. I used general purpose PCB to make trasmitter circuit & I soldered the components and preprared the tracks by hand. Below is shown the receiver PCB.

3. Making main control board

I used attiny 44. I used two A4953 motor drivers for driving two geared dc motors. I connected output of ultrasonic receiver to ADC input of attiny 44.
Below is shown the schematic & board layout of the same designed in eagle.

Here is the milled board & soldered board.

4. Designing platform of suitcase in solidworks & 3d printing the required parts

First I designed the wheels for my suitcase & 3d printed them. I used these wheels as rear wheels for my suitcase. Then I designed the part to attach wheels with the platfoem & 3d printed them.

Here is the final assembly of suitcase platform.

5.Designing casing for transmitter circuit, reveiver circuit, & main control board

I designed the casing for receiver circuit in solidworks & 3D printed it.

Similarly, I also designed the casing for transmitter circuit in solidworks & 3D printed it.

6. 3D Printing

All 3D printed objects are shown below:

7. Embedded Programming

I used Atmel studio to write code in embedded C.

The code is based on the following algorithm:
1. If receiver gets signal from transmitter AND distance between transmitter & receiver is more than 7cm , rotate both motors in clockwise direction (so that suitcase will move forward).
2. If receiver gets signal from transmitter AND distance between transmitter & receiver is less than 7cm , stop both the motors. (so that suitcase will stop once it reaches near to the user).
3. If receiver does not get signal from transmitter, then first suitcase will move in right direction (Right turn) for 10sec, after that it will start rotating in left direction (Left turn) until receiver gets the signal from transmitter.

Here is the code:

 /*
 * GccApplication3.c
 *
 * Created: 26-05-2017 21:06:13
 * Author : cchaital
 */ 

#include 
# define F_CPU 1000000UL
#include 
#include 
uint8_t ADCLow;     // ADCL variable
uint16_t ADCFull;   // ADCL + ADCH variable
#define set(port,pin) (port |= pin) // set port pin
#define clear(port,pin) (port &= (~pin)) // clear port pin
#define IN1_1 (1 << PA3) // IN1_1
#define IN2_1 (1 << PA2) // IN2_1
#define IN1_2 (1 << PB2) // IN1_2
#define IN2_2 (1 << PA7) // IN2_2
void motor_forward();
void motor_backward();
void motor_stop();
void motor_left_turn();
void motor_right_turn();

int main(void)
{
	int i=0;
	ADMUX |= (0 << REFS0); // set the voltage reference
	ADMUX |= (0 << REFS1); //
	ADMUX |= (0 << ADLAR); // left adjust the result
	ADMUX |= (0 << MUX3) | (0 << MUX2) | (0 << MUX1) | (1 << MUX0); // select the ADC pin ADC1 PB2
	ADCSRA |= (1 << ADEN); // Enable ADC
	ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // prescaler to 128

    while (1) 
    {
		
	ADCSRA |= (1 << ADSC); // Start the conversion
	while (ADCSRA & (1 << ADSC)); // Wait till the conversion is done
	ADCLow = ADCL; // get the ADCL 8 bits
	ADCFull = (ADCH<<8 | ADCLow);
	if((ADCFull>=300) && (ADCFull<=800))
	{
		motor_forward();
		i=0;
	}
	else if(ADCFull>=800)
	{
		motor_stop();
		i=0;
	}
	else if(i<6)
	{
		motor_right_turn();
		_delay_ms(100);
		motor_stop();
		i++;
	}
	else 
	{
		motor_left_turn();
		_delay_ms(100);
		motor_stop();
	}
	_delay_ms(1000);
	/*while(1)
	{
	motor_left_turn();
	}*/
	}
}

void motor_backward()
{
	set(PORTA,IN1_1);
	set(PORTA,IN2_2);
	clear(PORTA,IN2_1);
	clear(PORTB,IN1_2);
}

void motor_forward()
{
	clear(PORTA,IN1_1);
	clear(PORTA,IN2_2);
	set(PORTA,IN2_1);
	set(PORTB,IN1_2);
}

void motor_stop()
{
	clear(PORTA,IN1_1);
	clear(PORTB,IN1_2);
	clear(PORTA,IN2_1);
	clear(PORTA,IN2_2);

}
void motor_left_turn()
{
	set(PORTA,IN2_1);
	set(PORTA,IN2_2);
	clear(PORTA,IN1_1);
	clear(PORTB,IN1_2);
	
}

void motor_right_turn()
{
	clear(PORTA,IN2_1);
	clear(PORTA,IN2_2);
	set(PORTA,IN1_1);
	set(PORTB,IN1_2);	
}
 

8.Preparing suitcase from foam/Thermocol

I prepared the suitcase using thermocol. Here is my final suitacse with receiver mounted on it.


8.Project Slide & Video

Here is my project slide :


Here is my project video :


9.Preparing handle for suitcase by milling the foam

From the comments of my global evaluator, I came to know that I forgot to use subtractive process during project development.
So, I decided to make a handle for suitcase by milling the foam.

I designed the handle in rhino.



Then I milled the handle on Roland milling machine Model A MDX-40



Here is the handle...

Here is the handle mounted on the suitcase...

You can download files here...