You are on page 1of 37

Team name: “Player”

Project Report on “Follow Me Cooler”

Group F

David Merigian

Quang Nguyen

Prashant

Adhikari

Prem Bikram Singh Basnet

EGR 604

Dec 3rd, 2018 (Fall)


Table of Contents
Project Description...................................................................................................................................... 3
Specifications and Validation....................................................................................................................... 3
Features................................................................................................................................................... 3
Specifications........................................................................................................................................... 5
Concepts...................................................................................................................................................... 5
Concept 1................................................................................................................................................. 6
Concept 2................................................................................................................................................. 6
Concept 3................................................................................................................................................. 7
Working Drawing Packages......................................................................................................................... 8
Assembly drawing with BOM and balloons............................................................................................8
Exploded view with BOM......................................................................................................................... 8
Component prints of all non-standard parts........................................................................................10
Electrical Schematics.............................................................................................................................. 13
Analysis of key items.................................................................................................................................. 14
Total mass and center of mass............................................................................................................... 14
Power requirement................................................................................................................................ 14
Torque calculation................................................................................................................................. 15
Motor Specification and criteria............................................................................................................ 15
Flowchart................................................................................................................................................... 17
Source Code............................................................................................................................................... 24
Arduino Source code incorporating GPS, Compass, Bluetooth, Ultrasonic Sensor and Polulu motor
driver shield............................................................................................................................................ 24
Arduino Source code for extra feature which includes displaying temperature inside the cooler in a LCD
............................................................................................................................................................... 30
Source code for LCD display............................................................................................................... 30
Source code for thermocouple..........................................................................................................31
Budget....................................................................................................................................................... 32
User Manual.............................................................................................................................................. 33
Battery installation................................................................................................................................. 33
Software installation.............................................................................................................................. 33
Assembly of the cooler.......................................................................................................................... 36
Safety..................................................................................................................................................... 36

2
Project Description

The main objective of this project is to devise an operator controlled “Follow Me Cooler”

which follows the operator to a desired destination via GPS tracking and obstacle detection that

helps users by carrying beers cans inside the cooler. In this project, an Arduino is used to build a

“Follow Me Cooler” that connects to a smartphone via Bluetooth and uses GPS to navigate. The

“Follow Me Cooler” is the mechanical platform that is designed to hold the beer cooler and to

narrow the distance to the user by comparing the coordinate over the GPS module. This mechanical

platform adopted the Arduino Uno microcontroller, the Bluetooth module, the Adafruit compass

module, and the Parallax GPS module. Also, the “Follow Me Cooler” communicate with the

Android phone to determine the user’s location. Moreover, the cooler has the obstacle avoidance

features, that allows it to sense the obstacles and avoid them on its path. Another interesting

feature of the Cooler is measuring the temperature inside the Cooler using the thermocouple

module and displaying the temperature on the Liquid Crystal Display (LCD). The total cost of

the project is approximately 200$.

Specifications and Validation

Features
 Physical Requirements

 Hold beer and ice

 Appropriate dimensions

 Appropriate load capacity

 Follow user with GPS

 User display

 Internal Temperature of cooler


 Collision avoidance

 Obstacles may be the wall, the people around, or any objects on the path that

the sensors sense.

 Mobility in moderate environments

 Moderate environments to include continuous paved surfaces (common asphalt or

concrete with up to a 10-degree incline or decline, with normal expansion joints

and/or pedestrian ramps), grass (trimmed to appropriate length which would

satisfy most HOA agreements, free of sudden depressions or hills), or well-

maintained gravel (packed for normal foot traffic, average size not to exceed one-

half inch)

 Moving forward/reverse

 Steering/turning radius

 Speed

 Battery

 Rechargeable

 Moderate Battery Life

 Affordable
Specifications
The specifications regarding the validation of the project are as follows:

Metric Value Units

Load Capacity - 12 beers, 5lb bag of ice 20 < load < 50 lbs

Volumetric Capacity of cooler, cubic or 20 < volume < 30 Quarts

rectangular shape

Follow GPS within a range of user 0 < distance < 20 Meters

distance with bluetooth

Internal Temperature displayed on LCD 0 < value < 100 F degrees

Collision Avoidance of Obstacles over 2-inch 0 < distance < 150 cm

tall

Forward and reverse speed to match the user 0 < speed < 3.0 mph

Turning radius Width of the cooler < radius < 3 times inches

width of cooler

Battery life at maximum speed Up to 30 minutes minutes

Rechargeable Battery 3 to 5 Amp

Hours

Affordable Less than 220 Dollars

Concepts

The design concepts that the team came up with during the design phase are shown and
described in the section below.
Concept 1

Description:

Frame: 3/4x3/4 aluminum type, wielded at joints

Propulsion: Tracks will allow movement across rough terrain, possibly stairs

Obstacle avoidance: Ultrasonic sensor mounted at a slight outward angle will allow

detection of obstacles over 3 inches tall.

Concept 2
Description:

Propulsion: Wheels provides movement in all kind of terrain.

Obstacle avoidance: Ultrasonic sensor mounted at a slight outward angle will

allow detection of obstacles over 3 inches tall.

Concept 3

Description:

Frame: Wood

Propulsion: Tracks will allow movement across rough terrain, possibly stairs
Ground clearance: A ground clearance of 4 inch gets the motor underneath not to

touch the ground.

Pocket: A pocket 0f 10 inch by 10 inch gives sufficient space to mount

Arduinos, Bluetooth, GPS, and driver shield.

Obstacle avoidance: Ultrasonic sensor mounted at slight outward angle will

allow detection of obstacles over 3 inches tall.

Working Drawing Packages


Assembly drawing with BOM and balloons

Exploded view with BOM


Component prints of all non-standard parts

Figure 1: Base frame for the robot


Figure 2: Custom drive shaft for the motors
Electrical Schematics

Figure 3: Electrical Schematic for ‘Follow Me Cooler’

The electrical connection used in the design of “Follow Me Cooler” is shown in Figure [3]. A 9V

cell is used to power the Arduino UNO and a 12V lipo battery is used to provide supply to the two

DC motors via a terminal block in the Polulu VNH5019 Dual Motor Driver Shield. The two DC

motors are connected to the terminal blocks M1A, M1B and M2A, M2B of the driver shield. The

motor driver shield supports peak current upto 30A which is sufficient to drive our cooler wheels.

The bluetooth module (HC-05), GPS module (Ultimate GPS Breakout V3), Compass module

(LSM303DLHC), and an Ultrasonic sensor (HC-SR04) are powered via 5V pin of driver shield.

The Tx pin of bluetooth module HC-05 and Tx pin of GPS module is connected to port 0 and port

3 respectively of the driver shield. The SCL and SDA of the compass module is connected to the
analog input pin A4 and A5 respectively. The Trig and Echo pin of an ultrasonic sensor is

connected to pin 11 and 13 respectively of the driver shield.

Due to insufficient pins in Polulu motor driver shield, we used another Arduino Uno for

LCD and Thermocouple (MAX6675) connection. A 9V cell is used to power the arduino and LCD

along with thermocouple are powered via 5V pin of arduino. SDA and SCL pin of LCD are

connected to the analog input pins of an arduino and SCK, CS and S0 pin of thermocouple are

connected to the digital pins of arduino 8, 9, and 10 respectively.

Analysis of key items


Total mass and center of mass
Total Mass = mr+mc = 9.07kg + 13.60kg = 22.67kg

Power requirement
The starting and running current drawn by the motor connected in series with the motor driver is
tabulated below.
Table 1: Current drawn in different loading conditions

S.N Condition of Operation Starting current (A) Running Current value (A)

1 No load 1.7 1.4


2 Load of the wheels 2.0 1.6 to 1.8
3 With wheel and chassis 3.7 2.0 to 2.5
4 With cooler and weight (~50lb) 4.1 2.3 to 3.0

Similarly, the starting and running voltage draw by the motor connected in parallel with
the motor driver is tabulated below.
Table 2: Voltage drawn in different loading conditions

S. N Condition of Operation Voltage (V)


1 No load 13.05
2 Load of the wheels 12.9
3 With wheel and chassis 11.9 to 12.0
4 With cooler and weight (~50lb) 11.8 to 12.0

From the above two tables, the power (given by current * voltage) requirements for our cooler
under different loading conditions are tabulated below.
Table 3: Current drawn in different loading conditions

S.N Condition of Operation Starting power (W) Running power (W)

1 No load 22.185 18.27


2 Load of the wheels 25.80 20.64 to 23.22
3 With wheel and chassis 44.03 to 44.40 23.8 to 30
4 With cooler and weight (~50lb) 48.38o 49.20 27.14 to 36

Torque calculation
Motors must be able to move cooler up a 5-degree

incline Mass = mr+mc = 9.07kg + 13.60kg = 22.67kg

Free body diagram:

Motor force must exceed Fx

Fx=Ncosθ = (223N)(0.087) = 19.4N

Radius of wheel:

0.127m Torque

Required:

= (F)(d) = (19.4N)(0.127m) = 2.5Nm

UMI 218-1005 12V DC motor, 104RPM worm gear motor stall torque: 18

Nm. (18m/motor)(2 motors) = 36Nm combined


(Output)(coeff. rolling friction) = (36Nm)(0.9) = 4.32Nm

2.5Nm required36Nm output =7% of rated motor

capacity

Motor Specification and criteria

Increasing motor capacity significantly will allow for movement up significantly steeper terrain,

as well as delivering heavier payloads. Battery life will be reduced at high capacity

transportation.
Flowchart
Flowchart showing the ultrasonic, compass, GPS, Bluetooth, Arduino and a Polulu motor driver
shield is shown below.
Start

Is No
SensoDuino App Installed?
Install SensoDuino App

Yes

No
Is Mobile Turn ON Mobile GPS
GPS ON?

Yes

Is Mobile
Bluetooth connected to HC-05 NoConnect HC-05 module to Bluetooth module
module?

Yes

A 18
A

Is
No
SensoDuino App connected Connect SensoDuino app to HC-05 module
to HC-05?

Yes

Is Serial Reconnect App to HC-05 Bluetooth module


data available from HC- No
05?

Yes

Read and Store Phone’s


Latitude and Longitude data
NoConnect HC-05 module to Bluetooth module

19
B

Is serial data No
available from GPS module? Check wire connection of GPS module

Yes

Read and store on-


board GPS module Latitude and Longitude

Is data
Check wire
available from compass module andconnection
No of on-board compass module and Ultrasonic se
Ultrasonic ?

Yes

C
C

Read and store compass


heading angle

Calculate bearing angle using Azimuth angle formula from Phone and GPS module Latitude and Lo

Calculate distance formula using Haversine shortest distance formula

Is bearing No
angle =~ Rotate cooler clockwise
heading angle – 30?

Yes

C
C

Yes
Is obstacle Rotate cooler anticlockwise
detected?

No

Is distance
=~ 5cm? Stop

Move cooler forward

D
Flowchart for some added extra feature which includes displaying degree Fahrenheit temperature

inside a cooler in a LCD monitor using a thermocouple as a temperature sensor is shown below.

Start

Read the temperature


from thermocouple

Convert temperature to Degree Fahrenheit

Print the temperature


in LCD monitor
Source Code
Arduino Source code incorporating GPS, Compass, Bluetooth, Ultrasonic Sensor and
Polulu motor driver shield

//****************EGR 604 ***********************************


//Project: Follow Me Cooler
//Source Code incorporating GPS, Compass, Bluetooth, Ultrasonic, and Polulu motor driver
shield
//Group: F
//David
//Prashant
//Quang
//Prem
//*****************************************************

#include <Wire.h>
#include <Adafruit_Sensor.h> // including libraries for sensors
#include <Adafruit_LSM303_U.h> // including libraries for compass
#include<math.h> // including libraries for mathematical calculation
#include "DualVNH5019MotorShield.h" //including libraries for polulu motor driver
shield #include <Adafruit_GPS.h> // including libraries for adafruit GPS module
#include <SoftwareSerial.h> //inclusing libraries for serial communication
#include <HCSR04.h> // library for ultrasonic sensor

//---------------------------- characters defined for SensoDuino app communication with HC-


05 module
#define START_CMD_CHAR '>'
#define END_CMD_CHAR '\n'
#define DIV_CMD_CHAR ','
#define DEBUG 1

SoftwareSerial mySerial(3, 2); // GPS TX connected to Arduino pin 3 and RX to Arduino 2

Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345); // compass


module initialization

Adafruit_GPS GPS(&mySerial); // GPS serial communication initialization

// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console
// Set to 'true' if you want to debug and listen to the raw GPS sentences.
#define GPSECHO true
DualVNH5019MotorShield md; // md object initialized for motor driver shield

// this keeps track of whether we're using the interrupt


// off by default!
boolean usingInterrupt = false;
void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy

String inText;
float value0, value1, value2; // values initialized for storing latitude and longitude from mobile
app
const int trigPin1 = 13; // trigger pin defined for port 13 in
arduino const int echoPin1 = 11; // echo pin definef for port 11 in
arduino long duration1;
int ult_front;

void setup()
{

md.init(); // initialzing motor driver by calling init function with object md


Serial.begin(9600); // baud rate defined for serial communication

if(!mag.begin())
{
/* There was a problem detecting the LSM303 ... check your connections */
Serial.println("Ooops, no LSM303 detected ... Check your wiring!");
while(1);
}

// 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800
GPS.begin(9600);

// uncomment this line to turn on RMC (recommended minimum) and GGA (fix data)
including altitude
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
// uncomment this line to turn on only the "minimum recommended" data
//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
// For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
// the parser doesn't care about other sentences at this time

// Set the update rate


GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update
rate
// For the parsing code to work nicely and have time to sort thru the data, and
// print it out we don't suggest using anything higher than 1 Hz

// Request updates on antenna status, comment out to keep


quiet GPS.sendCommand(PGCMD_ANTENNA);
// the nice thing about this code is you can have a timer0 interrupt go off
// every 1 millisecond, and read data from the GPS for you. that makes the
// loop code a heck of a lot
easier! useInterrupt(true);

// delay(1000);
// Ask for firmware version
// mySerial.println(PMTK_Q_RELEASE);
}

// Interrupt is called once a millisecond, looks for any new GPS data, and stores
it SIGNAL(TIMER0_COMPA_vect) {
char c = GPS.read();
// if you want to debug, this is a good time to do
it! #ifdef UDR0
if (GPSECHO)
if (c) UDR0 = c;
// writing direct to UDR0 is much much faster than Serial.print
// but only one character can be written at a
time. #endif
}

void useInterrupt(boolean v) {
if (v) {
// Timer0 is already used for millis() - we'll just interrupt somewhere
// in the middle and call the "Compare A" function
above OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
usingInterrupt = true;
} else {
// do not call the interrupt function COMPA
anymore TIMSK0 &= ~_BV(OCIE0A);
usingInterrupt = false;
}
}

uint32_t timer = millis();


void loop() // run over and over again
{

Serial.println("\nSensoDuino 0.18 by TechBitar.com (2013).\n");


int inCommand = 0;
int sensorType = 0;
unsigned long logCount = 0L;

char getChar = ' '; //read

serial

// wait for incoming data


if (Serial.available() < 1) return; // if serial empty, return to loop().
// parse incoming command start
flag getChar = Serial.read();
// Serial.println(getChar);
if (getChar != START_CMD_CHAR) return; // if no command start flag, return to loop().

// parse incoming pin# and value


sensorType = Serial.parseInt(); // read sensor type
logCount = Serial.parseInt(); // read total logged sensor readings
value0 = Serial.parseFloat(); // 1st sensor value which is latitude value from mobile sensoduino
app
value1 = Serial.parseFloat(); // 2rd sensor value which is longitude value from mobile
sensoduino app

// send sensoduino readings to serial monitor/terminal

if (sensorType !=98 && value0>=44 && value0<=42)

return; if (DEBUG) {
Serial.print("Sensor type: ");
Serial.println(sensorType);
Serial.print("Sensor log#: ");
Serial.println(logCount);
Serial.print("Val[0]: ");
Serial.println(value0);
Serial.print("Val[1]: ");
Serial.println(value1);
Serial.println(" ");
//delay(1000);
}

sensors_event_t event; // defining events for compass module


mag.getEvent(&event);

float Pi = 3.14159;

// Calculate the angle of the vector y,x


float heading = (atan2(event.magnetic.y,event.magnetic.x) * 180) / Pi;
Serial.println(event.magnetic.y);
Serial.println(event.magnetic.x);

// Normalize to 0-360
if (heading < 0)
{
heading = 360 + heading;
}
Serial.print("Compass Heading: ");
Serial.println(heading);

// in case you are not using the interrupt above, you'll


// need to 'hand query' the GPS, not suggested :(
if (! usingInterrupt) {
// read data from the GPS in the 'main
loop' char c = GPS.read();
// if you want to debug, this is a good time to do it!
// if (GPSECHO)
// if (c) Serial.print(c);
}

// if a sentence is received, we can check the checksum, parse


it... if (GPS.newNMEAreceived()) {
// a tricky thing here is if we print the NMEA sentence, or data
// we end up not listening and catching other sentences!
// so be very wary if using OUTPUT_ALLDATA and trytng to print out data
//Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false

if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to


false return; // we can fail to parse a sentence in which case we should just wait for
another
}

// if millis() or timer wraps around, we'll just reset


it if (timer > millis()) timer = millis();

// approximately every 2 seconds or so, print out the current


stats if (millis() - timer > 10000) {
timer = millis(); // reset the timer

Serial.print("Fix: "); Serial.print((int)GPS.fix);


Serial.print(" quality: "); Serial.println((int)GPS.fixquality);
if (GPS.fix) {
Serial.print("Location: ");
Serial.print("Location (in degrees, works with Google Maps):
"); Serial.print(GPS.latitudeDegrees, 4);
Serial.print(", ");
Serial.println(GPS.longitudeDegrees, 4);

}
}

//Distance calculation for Ultrasonic sensor


'1' digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro
seconds digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
// Reads the echoPin, returns the sound wave travel time in
microseconds duration1 = pulseIn(echoPin1, HIGH);
// Calculating the distance
ult_front= duration1*0.034/2;
// Prints the distance on the Serial
Monitor Serial.print("ult_front: ");
Serial.println(ult_front);
// delay(1000);

//heading angle calculation


float lat_start=(GPS.latitudeDegrees)* (Pi/180); //start point
float lon_start=(GPS.longitudeDegrees)* (Pi/180); // start point
int R=6371000; //earth radius
float lat_end=(value0)* (Pi/180); // end
point float lon_end=(value1)* (Pi/180);// end
point

float diff= lon_end-lon_start;

float y= sin(diff)*cos(lat_end);
float x= cos(lat_start)*sin(lat_end)-sin(lat_start)*cos(lat_end)*cos(diff);

float angle= (atan2(y,x))* (180/Pi) + 180;


int temp= angle/360;
float angle_new= angle-(temp*360);
//float angle_new= (angle)%360; // angle in degrees
Serial.println("angle is");
Serial.println(angle_new) ;

//distance calculation using haversine formula


float diff2= lat_end-lat_start;
float y1=cos(lat_start)*cos(lat_end)*(sin(diff/2)*sin(diff2/2));
float x1= sin(diff2/2)*sin(diff2/2);
float a= (x1+y1);
float c=2*atan2(sqrt(a), sqrt(1-a));
float d=R*c; // distance between end and start
point Serial.println("distance is");
Serial.println(d);

if (angle_new== heading -30)


{
if (d >=5)
{
if(ult_front<=30)
{
Rotate();
Serial.println("Turning cooler to avoid obstacle");
}
else{
Forward(); // function call
Serial.println("cooler is moving forward");
}
}
else
{
pause(); // function call
}
}
else
{
Rotate(); // function call
Serial.println("Cooler is rotating to find the heading angle");
}

void Forward() // function definition for Forward()


{
md.setM1Speed(250); // setting the PWM of Motor1 to
250 md.setM2Speed(250); // setting the PWM of Motor2
to 250
}

void Rotate() // function definition for Rotate()


{
md.setM1Speed(150); // setting the PWM of Motor1 to 150
md.setM2Speed(-150); // setting the PWM of Motor2 to
-150
}

void pause() // function definition for pause()


{
md.setM1Speed(0); // setting the PWM of Motor1 to 0
md.setM2Speed(0); // setting the PWM of Motor2 to 0
}

Arduino Source code for extra feature which includes displaying temperature inside the
cooler in a LCD
Source code for LCD display

#include <Wire.h>
void setup()
{
Wire.begin();

Serial.begin(9600);
while (!Serial); // wait for serial
monitor Serial.println("\nI2C Scanner");
}

void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address
0x"); if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan


}

Source code for thermocouple

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "max6675.h"

//Declare variable
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3 ,POSITIVE);


MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
void setup() {

lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
// give the MAX a little time to
settle delay(500);
}

void loop() {
// basic readout

lcd.setCursor(1,0);
lcd.write("Deg F = ");//print the phase
lcd.print(ktc.readFahrenheit());//print the temperature
//Serial.println(ktc.readFahrenheit());
delay(2500);
}

Budget:

Part Cost per Cooler


Item Part name number Brand Price/each Quantity Assembly
1 DC Motors N/A $15.00 4 $60.00
2 Pneumatic Wheel N/A Grainger $6.95 2 $13.90

3 Caster N/A Setmas $5.95 1 $5.95

4 Chassis N/A Grainger $7.25 2 $14.50

K-Thermocouple and
5 Module N/A CTYRZCH $12.99 1 $12.99
6 Ultrasonic Sensor N/A Osoyoo $1.00 4 $4.00

HC-05 Bluetooth
7 Bluetooth Module N/A Module $10.57 1 $10.57
8 GPS Module N/A Adafruit $41.00 1 $41.00

9 Compass N/A Adafruit $9.95 1 $9.95


10 LCD display N/A SunFounder $9.99 1 $9.99
11 Batteries (8 Pack) N/A Energizer $4.79 4 $19.16
12 Pillow Block Bearing N/A N/A $5.50 2 $11.00

Aluminium Metal
13 Frames N/A N/A $4.00 1 $4.00

Total $217.01

User Manual
Battery installation
 The system consists of 5200maH 12V LiPo battery which powers the motors. The system
is also equipped with 9v battery to supply the arduino and an electronics separately in
order to protect the main system from current fluctuation. The LiPo battery used is a
rechargeable one. It can be recharged with the adapter connected to the power supply.
 Pay attention to the types and the polarities when installing the batteries

 This follows me cooler contains two lipo batteries each 12 volts connected in parallel
for a motor driver, one 9 volt battery for the Arduino module, Bluetooth module, GPS
module, and Compass. Another 9-volt battery for another Arduino module which is
used for the temperature sensor and LCD display.
 There is a switch for the motor driver power supply so that we can turn on and off
the follow me cooler.

Software installation
One can easily install and use the SensoDuino app in their phone through following steps:

 Step 1:

Open Browser in your android cell phone and go to the link provided below and download

the .apk file of Sensoduino android application and install the application in your

phone.https://m.apkpure.com/sensoduino/com.techbitar.android.sensoduino?fbclid=IwAR1

zNMzC-riJV70zx9zxapH3vltPDTsLuExMWlGAYyrl2Fn-qxOjjIIAdus
 Step 2:

Turn on Bluetooth and pair HC-05 Bluetooth module to your mobile.

 Step 3:

Open SensoDuino application and click on the menu bar and connect Bluetooth to the HC-

05 Bluetooth module which is in a paired device list.


 Step 4:

Mark ✔ to the GPS as Virtual Shields on and mark ✔ to Tx to send GPS data and bearing

angle to Arduino through Bluetooth module. (Note: Bearing angle changes if and only if

we move mobile move from one point to another)


Assembly of the cooler
 Turn on the Switch.

 Wheel alignment

 The Follow me Cooler may turn slightly right or left while moving forward

or backward. The alignment can be fixed by adjusting 4 screws on the

wheels.

 Always check the tightness the screws on the wheels and steering before using

the Follow me Cooler .

 When the follow me cooler is slowing down, the batteries should be replaced.

 The LCD displays the temperature inside the Cooler in Fahrenheit.

Safety
 When the Follow Me Cooler is not used, please turn off the power switch.

 Check the power switch, cord, enclosure and other parts regularly. Do not use if there

is any damages.

 Be careful to avoid damage to the other object when using the Follow Me Cooler in

the room

 Do not touch the rotating wheels

 Avoid hair and cloth getting caught in the wheels

 Use the Follow Me Cooler in the proper outside condition, do not use on the road or in

crowd

 Do not disassemble the Follow Me Cooler and modify the wiring and circuit board.

 Turn off the Follow Me Cooler when touching it

 Do not turn off the Follow Me Cooler while it is still moving. This will cause the extremely

abrupt stop
 Do not operate the Follow Me Cooler if it is not properly functioning

 Avoid immersed in the water

 Do not put the heavy weight that exceeds the recommended weight in the Follow me

Cooler

 Remove all batteries if the Follow Me Cooler will not be used for a long period of time

 Transfer/ Carry

 Turn off the power

 Turn off the phone application

 The Follow Me Cooler should be carried by at least two people because it is bulk and

heavy.

 If the Follow Me Cooler is transfer by cars, it should be placed in the trunk.

You might also like