cohaolain / CruiseControl-ESP8266

This is a project I'm working on so I can have cruise control in my car. It uses GPS in order to monitor the speed of your vehicle, and shows your speed on the OLED display. It allows you to set your desired speed limit using two push buttons. If you speed, the device screams - the pitch changing with your speeding.

Home Page:https://cohaolain.ie

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ESP8266 Cruise Control (GPS/OLED)

Build Status

This is a project I'm working on so I can have cruise control (ish) in my car.

It uses GPS in order to monitor the speed of your vehicle, and shows your speed on the OLED display.
It allows you to set your desired speed limit using two push buttons.
If you speed, the device screams - the pitch changing with your speeding.

I will write a better description at some point.

Hardware

  • ESP8266
    • I used a Heltec WiFi Kit 8
      • Which the manufacturer & retailer have about 5 completely different pinout diagrams for.
      • Eventually found a correct one after much digging 😤.
      • You can find it here: Heltec Wifi Kit 8 - Pinout Diagram
    • Not actually using the WiFi capabilities of this myself, yet.
  • OLED display
    • Ideally compatible with u8g2. The WiFi Kit 8 already has such a display (128x32), quite handy.
      • It just took a while to figure out which pinout diagram to use 😤.
  • GPS module
    • I used a module with a NEO-6M.
      • I had bought a MakerHawk module that claimed to have a NEO-6M. It actually turned out to be a NEO-7.
        I wanted to use the module's EEPROM to store our GPS receiver settings, but the newer version doesn't support EEPROM.
        The NEO-7 module still had the EEPROM soldered on, but it was inaccessible. So I'd to return that.
        Then I got myself a shiny new NEO-6M module!
    • EEPROM is useful so we
      • Don't need to connect the RX pin of the GPS module (I ran out of easily usable pins on my ESP8266)
      • Don't need to rely on the BBR (battery-backed RAM)
    • The default settings are changed so that we
      • Have a higher navigation refresh rate (5hz compared to 1hz)
      • Use the automotive navigation profile
      • Turn off the flashing light (timepulse)
      • Increase the baud rate (9600 to 19200)
      • Change what data the module actually provides
    • Breadboards, pushbuttons, a buzzer, wires, resistors etc.

Will include a schematic in the future.

Libraries

If you're using the PlatformIO IDE, you can install all required libraries with the single line:

platformio lib -g install TinyGPSPlus U8G2

You need to have platformio binary in your PATH. You can do this by adding the following to the bottom of your ~/.bashrc:

export PATH=$PATH:~/.platformio/penv/bin

Alternatively, use the relevant library-installation interface in your IDE of choice (e.g. PlatformIO or Arduino).

  • SoftwareSerial
    • For communicating with the GPS module
  • TinyGPS++
    • For dealing with all that GPS data
  • u8g2
    • For all our display interfacing needs
  • ESP8266WiFi
    • For (now), this is just to turn off the WiFi capabilities of the ESP8266.

About

This is a project I'm working on so I can have cruise control in my car. It uses GPS in order to monitor the speed of your vehicle, and shows your speed on the OLED display. It allows you to set your desired speed limit using two push buttons. If you speed, the device screams - the pitch changing with your speeding.

https://cohaolain.ie


Languages

Language:C++ 99.1%Language:C 0.9%