Cat gps tracker and GSM module Power question

I'm working on a fun little project for a friend. She figured it would be nice to know where her cat is hanging out in the neighbourhood.

So I ordered some parts

  • Arduino pro mini 5v version
  • SIM800L module (GSM/GPRS) (Image)
  • GY-NEO6MV2 Module with Antenna GY-GPS6MV2 (GPS) (Image)
  • MP1584 Adjustable 3A DC-DC Converter Step Down Voltage Regulator

Haven't wrote any code yet but I want it to work like this:

  1. User wants to know where the cat is and text to the mobile number of the SIM800L with a certain word in the sms e.g cat

  2. The arduino receives the sms and checks if it contains the word cat, if this is true the GPS will get its coordinates

  3. Arduino sends sms to sender with a google maps url with the coordinates.

I think I will get this working, only the part that I'm not certain about yet is how to power the whole thing.

It needs to be small so my best option I guess is a Li-Po battery, I'm very new to this kind of stuff so what would I need.

The GSM module needs 3.6V - 4.2V Max this thread mentions that you can't just take power from the 5v from the arduino SIM800L issue - Project Guidance - Arduino Forum So I ordered a DC-DC step down regulator to bring the voltage down.

The GPS has a 3V to 5V input, can this all be powered by 1 Li-Po battery, or do I need multiple batteries?

Hopefully someone can explain me what to use and why (I'm a beginner but eager to learn.)

Regards,

PandaNL

The commercial "Pawtrack" product weighs 50 grams (half the weight of a mobile phone).

Forget off the shelf modules. You'll need to build the whole thing using a custom PCB and package it in a custom waterproof resizable collar. The mechanical aspects of the project will be the hardest to do.

This Fitbit teardown video should give you an idea of the mechanical complexity involved.

I understand, and this will sure be the way to go to get the end product, however this doesn't anwser my question how to power this thing.

A single LiPo will do, but takes a lot of electronics design experience.

Modify the Arduino for 3.3v operation. Use a LiPo with a current limit circuit or fuse.

I see I can change the voltage on the arduino pro mini, can I still use the dc to dc step down regulator.

PandaNL:
I see I can change the voltage on the arduino pro mini, can I still use the dc to dc step down regulator.

Why would you want to? Power it straight off the battery and run it at 8mhz, and lose the weight.

Of course, there's another approach - if you make the electronics big and heavy enough, you'll know where the cat is by default - right where you left him.

PandaNL:
I understand, and this will sure be the way to go to get the end product, however this doesn't anwser my question how to power this thing.

You could use POE - just connect using CAT-5.

I vote for DrAzzy's solution...

Say,, two 12V 600A lead-acid storage batteries, with a 7805 regulator, and a 20 pound (8-9kilo?) heat sink. maybe even a solar cell recharge circuit. Oh yeah, extra heavy duty collar for the cat.

Plenty of power endurance and heat dissipation will keep the cat warm in the winter....

Bu kodu deneyin, ben gerekli bağlantıları yaptım ve denedim, sorunsuz çalışıyor. Mesaj olarak konum bilgisini de aldım.

#include <SoftwareSerial.h>
#include <TinyGPS++.h>
TinyGPSPlus gps;
SoftwareSerial sGPS(10, 11); // Gps Modülü Pinleri.
SoftwareSerial sGSM(2, 3); // Gsm Modülü Pinleri.
double EnlemBilgisiAl, BoylamBilgisiAl; //Enlem ve Boylam bilgilerini tutacağımız değişkenler.
void setup()
{
Serial.begin(115200); // Seri iletişim başlatılıyor.
sGPS.begin(9600); // GPS cihazı başlatılıyor. (Neo6mv2)
delay(1000); // Bir saniyelik gecikme sağlanıyor.
sGSM.begin(9600); // GSM cihazı başlatılıyor. (Sim800L)
delay(1000); // Bir saniyelik gecikme sağlanıyor.
sGSM.listen(); // GSM cihazı(Sim800L) dinlenmeye başlıyor.
}
void loop()
{
sGPS.listen(); //// GPS cihazı(Neo6mv2) dinlenmeye başlıyor.
while (sGPS.available()) // GPS cihazı(Neo6mv2) veri okuduğu sürece "while" döngüsü çalıştırılıyor.
{
gps.encode(sGPS.read()); // GPS cihazından okunan veriler çözümleniyor.
if(gps.location.isUpdated()) // GPS konumu güncellendiyse veya cihazdan veri okunduysa bu yordam çalıştırılıyor.
{
EnlemBilgisiAl = gps.location.lat(); // Enlem bilgileri alınıyor.
BoylamBilgisiAl = gps.location.lng(); // Boylam bilgileri alınıyor.
String Enlem = String(BoylamBilgisiAl,6); // Enlem bilgilerini "Enlem" değişkeninde tutuyoruz.
String Boylam = String(longitude,6); // Boylam bilgilerini "Boylam" değişkeninde tutuyoruz.
String link = "Google Maps" + String(Enlem) + "," + String(Boylam); // Konum bilgisini "Link" isimli değişkende tutuyoruz.
Serial.print("Link Google Maps : "); // Serial ekranında yazdırılacak yazıyı belirliyoruz
Serial.println(link); // Serial ekranında yazdırılacak yazıyı belirliyoruz
sGSM.listen(); // GSM cihazı(Sim800L) dinlenmeye başlıyor.
delay(1000);
String cc = sGSM.readString(); // Gsm Modülüne gelen verileri (mesajları) okuyoruz ve bu mesajı "cc" değişkeninde tutuyoruz.
cc.trim(); // Gelen mesajın sağındaki ve solundaki boşlukları kaldırıyoruz.
if (cc.indexOf("ON") >= 0) // Gelen mesajda "ON" dizesini arar, eğer varsa devam eder, yoksa döngüye (loop döngüsüne) tekrar girer. "ON" yazan yere istediğiniz cümleyi yazabilirsiniz. (Türkçe karakter kullanmamaya özen gösterin)
{
MesajGonder(link); // MesajGonder fonksiyonu çağırılır. Fonksiyon sayesinde eğer cep telefonumuzdan "ON" mesajı gelirse, GPS cihazının okuduğu konum bilgisini cep telefonumuza geri gönderir.
sGSM.write("AT+CMGF=1"); // GSM Modülümüzü metin moduna ayarlıyoruz
delay(1000);
sGSM.write("AT+CMGD=1,4"); // Sonradan gelen mesajları daha rahat okumak için tüm mesajları siliyoruz.
delay(1000);
}
delay(5000); // Modülün daha rahat çalışması için döngüye devam etmeden önce 5 saniye ara verdiriyoruz. (Bu süreyi uzatabilirsiniz)
}
}
}
void MesajGonder(String GelenMesaj) // Cep telefonumuza mesaj göndermek için oluşturulan fonksiyon
{
sGSM.println("AT+CMGS="+905052158656"\r"); // Konum mesajının gönderileceği numara bu satırda belirlenir.
delay(1000);
sGSM.println(GelenMesaj); // "link" değişkeni GSM modülünün serialine yazılıyor.
delay(100);
sGSM.println((char)26); // ctrl + z fonksiyonunun HEX kodudur. GSM modülünün serialine yazdığımız "link" değişkenindeki konum bilgisini yukarıda belirtilen telefonu SMS olarak gönderir.
delay(1000);
}

GpsGSMUygulama.ino (3.67 KB)