Code Monkey home page Code Monkey logo

ttgo-t-beam-car-tracker's Introduction

This project is no longer maintenaned.

๐Ÿš˜ Car GPS tracker with TTGO-T-Beam

ESP32 + GPS + LoRa + GSM (optional)

This is an Arduino project for the TTGO T-Beam ESP32 development board, which has LoRa chip onboard. Cayenne backend provides very nice web visualization, and also provides free Android/iPhone apps, where you can watch your car's position and indoor climate. This project uses Cayenne Low Power Payload packet format to transfer GPS coordinates and some car's indoor climate data. It has adaptive packet rate, meaning that when the car moves, tracker starts to 'burst' sending packets to update the trajectory as precise as possible. The myDevices Cayenne for LoRa connection is made through The Things Network LoRaWAN cloud.

You can find docs about Cayenne Low Power Payload (LPP) here.

I'll try to describe whole project setup as best I can.

1. Backend setup

  1. If you don't already have it, set up The Things Network account
  2. Create new Application in TTN Applications Console
  3. Add a new device for your new TTN application and select ABP Activation Method
  4. Insert Network Session Key, App Session Key and Device Address to file config.h in Arduino project
  5. Upload sketch to your board, you can program the T-Beam using the Arduino ESP32 board Heltec_WIFI_LoRa_32
  6. In your TTN application, in section Payload formats select Cayenne LPP
  7. In Integrations section, select Cayenne
  8. Fill Process ID (choose any name you prefer), select Default Access Key and click on Add integration
  9. Log in to myDevices Cayenne, on the top click on + and enter project name
  10. Click on Add new -> Device/Widget -> LoRa -> The Things Network -> Cayenne LPP
  11. Choose your Name and fill out DevEUI (copy Device EUI from TTN Console). Then select Activation Mode -> Already Registered, Tracking -> This device moves. Click Add device.
  12. If your tracker already sent any data to TTN, you'll see bunch of data fields. You can drag them to your Cayenne project.
  13. Install the Cayenne mobile app to your Android/iPhone.

That's it ๐Ÿ˜ƒ

Cayenne Screenshot

This is how it will look like when data is received by TTN and Cayenne.

Cayenne Tracker screenshot

Cayenne data fields

  • After these steps, you will see these data fields in Cayenne Dashboard:

Cayenne data fields sent by Tracker

Note: In GPS field, there is also GPS altitude information available.

Optional fields, you can choose to send them in the program:

  • Analog Input (5): Battery voltage (in volts)
  • Analog Input (6): If tracker is moving, this field is GPS speed, in km/h
  • Analog Input (7): Number of satellites, that the GPS module currently 'sees'
  • Analog Input (8): Approximate tracker's altitude calculated from barometric air pressure

2. Wiring

โš ๏ธ You need to connect the T-Beam LoRa DIO1 pin marked as Lora1 to the pin 33 - So that the ESP32 can read that output from the Lora module. Optionally you can also connect the Lora2 output to GPIO 32, but this is not needed here.

Connect the BME/BMP280 module's SDA line to pin 21 and SCL to pin 22 on the TTGO. If you want a more reliable data line (if the wires are long for some reason), you can add pull-up resistors on SDA and SCL lines. Any value from 2.2k to 10k should be OK. VCC of the module to 3V3 and GND to GND of course.

3. Libraries needed

Update config.h

If you haven't already, update with your own TTN keys - ABP authentication

TTN Keys

These are the keys you will need from the TTN console (marked yellow).

TTN Keys

Hardware

  • TTGO-T-Beam
    • ESP32 + GPS + LoRa

TTGO-T-Beam

  • A6 GSM/GPRS module (work in progress, not yet implemented!)
    • For places without LoRaWAN coverage - sends a link to Google Maps position via an SMS

A6 GSM/GPRS

  • BME/BMP280 module
    • For temperature, humidity, and atmospheric pressure reporting
    • Fully implemented and working with the sketch

BME/BMP280 module BMP280

Reference

TTGO-T-Beam Specifications

ESP32
  ESP32 Version REV1
  WiFi
  Bluetooth 
  4MB Flash
  3D Antenna
 
LORA
  Working voltage:      1.8 ~ 3.7v
  Acceptable current:   10 ~ 14mA
  Transmit current:     120mA @ +20dBm
                         90mA @ +17dBm
                         29mA @ +13dBm
  Operating frequency:  433MHz / 868MHz / 915MHz
  Transmit power:       +20dBm
  Receive sensitivity:  -139dBm @ LoRa &  62.5 KHz & SF=12 &  146bps
                        -136dBm @ LoRa & 125 KHz   & SF=12 &  293bps
                        -118dBm @ LoRa & 125 KHz   & SF=6  & 9380bps
                        -123dBm @ FSK  &   5 KHz   & 1.2Kbps
  Frequency error:       +/-15KHz
  FIFO space:            64 byte
  Data rate:             1.2K ~ 300Kbps @ FSK
                         0.018K ~ 37.5Kbps @ LoRa        
  Modulation Mode:       FSK, GFSK, MSK, GMSK, LoRa TM, OOK
  Interface form:        SPI
  Sleep current:         0.2uA @ SLEEP
                         1.5uA @ IDLE
  Operating temperature: -40? - +85?
  Digital RSSI function
  Automatic frequency correction
  Automatic gain control 
  RF wake-up function
  Low voltage detection and temperature sensor
  Fast wake-up and frequency hopping
  Highly configurable data packet handler

GPS
  GPS modules NEO-6M, 3V-5V power supply Universal
  Destined module with ceramic antenna, signal super
  Save the configuration parameter data EEPROM Down
  With data backup battery
  There are LED signal indicator
  Default Baud Rate: 9600

Power
  IP5306 2A Battery PMIC
  LED, Blue - User controller
  LED, Red - GPS 1PPS
  LED, Red/green - battery charged/power on
  Button, reset switch
  Button, user readable
  Switch, power on/battery charge
  USB
  CP2104-GMR

TTGO T-Beam Pin Map

TTGO Pin map

First prototype

Prototype Car Tracker 1 Prototype Car Tracker 2

TODO

  • A6 GSM module is not yet implemented
    • I'll be adding this "backup" comms feature someday
  • Add serial terminal console via WiFi AP
    • To watch output & debug messages (Websockets?)

Further improvement

You are welcome to contribute to this project in any way. (Submit an issue, bug report, fork and improve...) Suggestions & feedback is much appreciated.

Credits

  • Thanks to DeuxVis for his Lora-TTNMapper-T-Beam which came as an inspiration for this project
  • Huge thanks goes to my beloved wife for helping me to buy us a new car ๐Ÿ˜ƒ I love you Evka.โค๏ธ

ttgo-t-beam-car-tracker's People

Contributors

tekk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ttgo-t-beam-car-tracker's Issues

TTN Device Data dropouts

Hi,

During my tests the TTH Gateway Console shows there is data received every interval (60 seconds) but the TTN Device Data shows many dropouts although the sketch and hardware setup is still unchanged. The serial monitor does not report any relevant issues, looks all normal. Not sure if this is TTN related or if it has something to do with your sketch. What do you think?

Best regards, Hans.

Disable debug

First of all thanks for sharing this project! Maybe you can assist me with disabling debugging the sketch. When I comment (//) the line:

#define DEBUG 1 // for real use comment this out

an error is generated saying #elif with no expression. Can you tell me how to disable debugging when using the tracker for real?

Problems with app

Hi first of all thanks for sharing this project, i made 2 ttgo t beams work, i have found 2 problems that mabey you have found already.
first is fast batery usage, works for 6-7 hours
Cayenne on pc the maps works but not not on the app.

sorry for my english
Verry nice work thank you

Movement as trigger for uplink

Hi,

First I would like to thank you for sharing this project, I've been using it for quite some time and I think it's a nice integration of CayenneLPP with the T-Beam.
In my testing I've discovered that the short TX_Interval is only triggered if movement is detected during an uplink tranmission.
nextPacketTime = (kmph > MOVING_KMPH ? SHORT_TX_INTERVAL : TX_INTERVAL); // depend on current GPS speed

I would like to adjust the code so that the interval for regular uplinks can be very low to save LoraWAN airtime and that the transmission interval can be very high during movement so that I can have an accurate tracking device. However, I would like the GPS movement to trigger the short interval and not the succesful transmission.

Currently, if the car I'm tracking is in stop & go traffic at exactly the regular time interval, the movement in between the regular intervals is not detected. It would be nice to do some GPS polling on the device and have any observed movement (above the speed treshold) trigger the high interval. This GPS polling interval can be higher than the regular TX_Interval as to save LoraWAN airtime without losing tracking accuracy.

I'm looking into examples that use this type of GPS polling to see if I can integrate it in this project. I'm no coding expert so coding this completly myself is a bit too far fetched I'm afraid. Thought you might think this is relevant as well, let me know what you think about this idea!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.