i2c devices not appearing using GrovePi+ with new Up2 Grove IoT Development Kit

deadprogram
deadprogram New Member Posts: 5

I have been unable to get either of the grove i2c devices that were included with the new Up2 Grove IoT Development Kit to appear using i2cdetect with the latest Ubuntu 16.04 server image that I downloaded form here:
https://downloads.up-community.org/download/up-squared-iot-grove-development-kit-ubuntu-16-04-server-image/

I tried plugging each device into i2c-1, i2c-2, and i2c-3 however neither were not detected by the scan. Is there something additional that is needed for them to work?

Thanks in advance!

Comments

  • deadprogram
    deadprogram New Member Posts: 5

    A few updates on my attempts to get it to work.

    This is the kit I have:
    https://up-shop.org/home/176-up-squared-iot-grove-development-kit-us.html

    This is the OS I have installed on it:
    https://downloads.up-community.org/download/up-squared-iot-grove-development-kit-ubuntu-16-04-server-image/

    I updated the BIOS to v3.3 https://downloads.up-community.org/download/up-squared-uefi-bios-v3-3/

    I connected the GrovePi+ shield. Then I have plugged in the LCD to the Grove LCD display into the "i2c-1", "i2c-2", or "i2c-3" ports on the GrovePi+ board.

    When I run "sudo i2cdetect -y -r 4" no devices appear. I expected that the i2c address of the GrovePi+ (0x04) and also the i2c addresses of the LCD display (0x3E and 0x62) would appear. Seems that i2c-4 is not the i2c mapped to the HAT.

    I then tried "sudo i2cdetect -y -r 5" and a single device appears (0x04) when nothing is plugged in. That is as expected.

    However, when either the LCD or the temperature/humidity sensor from the official kit are plugged in, I am unable to detect any devices.

    Did some further experimentation with both the UP2 and also a Raspberry Pi Model 3 B+ using the GrovePi+ that came with my UP2 kit.

    The GrovePi+ on the Raspberry Pi was able to i2cdetect the following devices:

    • Grove LCD w/backlight
    • Grove I2C temperature/humidity sensor
    • SSD1306 OLED that I had in my workshop

    I was also able to run code using the SSD1306 on the Raspberry Pi with the GrovePi+ as expected.

    Now back to the UP2 board.

    I am able to scan bus 5 and find the GrovePi+. However, when either the LCD or the temperature/humidity sensor are plugged in, unable to detect. Interestingly the SSD1306 shows up when performing an i2cdetect on scan bus 5. However, after just a couple of calls to the device, the i2c bus locks up, showing all of the addresses busy when performing a subsequent i2cdetect. Unplugging the SSD1306 and replugging in causes it to reappear in the i2cdetect scan.

    I thought perhaps it was an issue with i2c bus speed. I tried to follow the instructions at https://wiki.up-community.org/GrovePi#BIOS_Setup however 2 problems:

    • there is no "HAP configuration" menu in the BIOS. There is, however, a "HAT configuration" menu.
    • there is no option under the "HAT configuration" menu to change the i2c speed for any of the i2c buses.

    Is anyone successfully using the UP2 with Ubuntu and the i2c devices that are included in the official dev kit?

  • intel_stewart
    intel_stewart New Member Posts: 2

    Ron, I've used all the devices in the kit and some more, nunchuck, grove oled displays, square and rectangular. But i cant get i2c detect to work. The i2c is just buffered 5V, and is used for the firmata connection to the atmel device on the grove-pi+. I used the Arduino Create IDE, so i can easily share some of my working code. Most MRAA/UPM examples work fine, once you add the mraa, subplatform line to enable the grove-pi+, as i think that also sets up the UP2 GPIO. ie even if you are not using gpio, or analog ports the i2c wont work without that subplatform enabling.
    Caveat, digital input, eg just a button read, will likely kill the i2c bus, and cause timeouts, as will too many devices. Each grove device has i2c termination resistors, so adding too many eg 3 or more will fail after a while. Sometimes an hour, sometimes sometimes minutes.

  • deadprogram
    deadprogram New Member Posts: 5

    Thanks for replying Stewart.

    I'd initially tried just using the devices from my code before i even tried i2cdetect, but when it did not work as expected, that is when I tried scanning.

    I was able to get a SSD1306 i2c display working as expected, as mentioned in my previous post. However, the devices shipped with the kit did not work either from running my code.

    I only plugged in a single device at a time, to avoid termination issues etc.

  • deadprogram
    deadprogram New Member Posts: 5

    Something about my last post was bugging me. I realized I had tried scanning on all devices, but had not just connected, despite what I said. So yes, i2c bus scanning is broken. However, @intel_stewart you are absolutely correct: I can just connect on bus 5 to whatever address I expect, and it does work! Thanks again for the response.

  • deadprogram
    deadprogram New Member Posts: 5

    One last noteworthy item. If you DO use i2cdetect the UP2 i2c bus can no longer be used until after a reboot. I was able to connect only because I did not run the scanner first.

    The wiki at https://wiki.up-community.org/Pinout_UP2#I2C_ports says I should be able to run i2cdetect but does not work as documented there.

  • waynepiekarski
    waynepiekarski New Member Posts: 28 ✭✭

    Did you all end up resolving this question? I cannot even get the i2c bus to work now in April 2019, so was hoping for some guidance on this. https://forum.up-community.org/discussion/3650/i2cdetect-y-1-failing-with-i2c-designware-808622c1-04-controller-timed-out#latest

  • ccalde
    ccalde New Member Posts: 348 ✭✭✭

    Hi @waynepiekarski ,

    To connect your device via I2C bus you could follow the updated instructions from UP wiki:
    https://wiki.up-community.org/Pinout#I.C2.B2C