Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Tiny-GPS I²C interface by Stefan Tomanek <email@example.com> Using this software, your handy little ATTiny 2313/4313 starts reading NMEA sentences from a serial GPS receiver connected to its RXD pin. These sentences are interpreted and stored in RAM, where the data can be accessed via the I²C/TWI bus connected to the SCL (PB7) and SDA (PB5) pins. Currently, only the GPGGA and GPRMC sentences are interpreted; the data is accessible in the following format (see nav_data_t in nav_structs.h and nmea_data_t in nmea_structs.h): byte content 0 bit flags (from lsb to msb): 0 NMEA signal is valid (1<<NMEA_RMC_FLAGS_STATUS_OK) 1 latitude alignment North (1<<NMEA_RMC_FLAGS_LAT_NORTH) 2 longitude alignment East (1<<NMEA_RMC_FLAGS_LON_EAST) 1 day 2 month 3 year (2 digits) 4 hour 5 minute 6 second 7 latitude degrees 8 latitude minutes 9/10 latitude fractions of a minute, BCD format 11 longitude degrees 12 longitude minutes 13/14 longitude fractions of a minute, BCD format 15/16 altitude in m (signed, 16 bit) 17 altitude fractions of metres, BCD format 18 signal quality 19 number of satellites used Additionaly, a sonar device can be connected to PD2 (trigger) and PD6/ICP (echo): when configured, the controller continuously uses the ultrasonic sensor to measure the distance to any obstacle in direction of the device, which is offered via TWI and presented in cm. 20/21 distance in cm (unsigned, 16 bit) An optical flow sensor can also be fitted to the controller via PA0 (CLK) and PA1 (DIO); the detected movement is accumulated in the optical_data_t struct accessible via TWI, the registers are cleared once the entire nav_data_t struct is read. 22/23 movement in x direction (signed, 16 bit) 24/25 movement in y direction (signed, 16 bit) The default I²C address is 0x11 and can be changed by editing 'config.h'. The controller polls the GPS receiver with the baud rate of 38400 bps, which is also configurable. To enable reliable TWI communication at 400kHz, the controller has to be clocked at 8 MHz (using the internal RC oscillator is fine). When using multiple sensors, employing an ATTiny4313 controller (due to flash/SRAM constraints of the 2313) is _highly_ recommended. Wiring: .--v--. -| |- VCC GPS <--| T |--> I²C SCL -| i |--> Optical CSEL Optical DIO <--| n |--> I²C SDA Optical CLK <--| y |- Sonar Trigger <--| 4 |- -| 3 |- -| 1 |- -| 3 |- GND -| |--> Sonar Echo `-----´