3
|
twi0_sda
|
blue
|
4
|
+5V
|
red
|
|
5
|
twi0_sck
|
green
|
6
|
gnd
|
black
|
or I2C-1,
27
|
twi1_sda
|
blue
|
28
|
twi1_sck
|
green
|
Run i2c detection on bus 0: i2cdetect 0; and the device is detected on 0x62, the default address.
Start by trying a Python version that uses smbus (or smbus2). But all registers read 0.
Try Garmin's LIDARLite_RaspberryPi_Library. Note that the library hard coded the i2c bus to i2c-1. The code compiles and runs fine without modification. Add code to do a register dump,
Add 0.5 sec delay. It prints distance at about 1 Hz. The max update rate appears to be 300Hz , possibly limited by 100KHz I2C speed. Occasionally, there are errors and the kernel prints error message,
0x00 0x05 ACQ_COMMAND 0x01 0x26 STATUS 0x02 0x80 SIG_COUNT_VAL 0x04 0x08 ACQ_CONFIG_REG 0x09 0x67 VELOCITY 0x0c 0xe8 PEAK_CORR 0x0d 0x3d NOISE_PEAK 0x0e 0x9a SIGNAL_STRENGTH 0x0f 0x00 FULL_DELAY_HIGH 0x10 0x9e FULL_DELAY_LOW 0x11 0x01 OUTER_LOOP_COUNT 0x12 0x05 REF_COUNT_VAL 0x14 0x00 LAST_DELAY_HIGH 0x15 0x05 LAST_DELAY_LOW 0x16 0x34 UNIT_ID_HIGH 0x17 0x30 UNIT_ID_LOW 0x18 0x00 I2C_ID_HIGH 0x19 0x00 I2C_ID_LOW 0x1a 0x00 I2C_SEC_ADDR 0x1c 0x00 THRESHOLD_BYPASS 0x1e 0x00 I2C_CONFIG 0x40 0x00 COMMAND 0x45 0x14 MEASURE_DELAY 0x4c 0x43 PEAK_BCK 0x52 0x00 CORR_DATA 0x53 0x00 CORR_DATA_SIGN 0x5d 0x00 ACQ_SETTINGS 0x65 0x00 POWER_CONTROL
sunxi_i2c_do_xfer()985 - [i2c1] incomplete xfer (status: 0x48, dev addr: 0x62)This is using armbian 5.38 with linux image sun8i 3.4.113.
Try to display the distance on the 1.8" LCD. The simplest way is just to redirect the fb console. Use con2fbmap to map a tty console to the fb. And to set to a large font,
sudo setfont -C /dev/tty1 /usr/share/consolefonts/Lat15-TerminusBold14.psf.gzFor something fancier, need a graphics library. The SDL library can be used. Python Pygame can be set to use SDL to test it out. Pygame works fine on the LCD. It is very desirable to stay with Python. So SWIG is used to add python interface to the Garmin library. With that, the LCD displays the distance nicely. However, there are some unresolved issues with console/framebuffer management. The other option is just to write to the framebuffer directly as images. Note that the format is hardware dependent; for this particular LCD, the format is packed 16-bit RGB (5/6/5).