Back to

List of supported sensors


There is a connector on smart citizen to connect additional sensors. Does anyone know where to find a list of supported sensors. and does the data from a supported sensor “automagicaly” appear in the dashboard?

I would be interested in something like this: Grove - Multichannel Gas Sensor (


Hi Edvardas,

The complete list of supported (for now) sensors is in this file, we still need to write a proper documentation. When you connect one of the supported sensors when booting the kit will auto-detect it and enable it for publishing.


The data from this sensors is only saved on the sd card, for now we don’t support displaying this on the platform only the default urban board sensors will be displayed.

This is a resumed list for the sensors we support until now:

Smartcitizen Gases Pro Board - supports 3 electrochemical alphasense sensors, temperature and humidity.
Smartcitizen PM Board Supports 2 Plantower PMS5003 sensors, I2C extension, 4 ADC pins, 2 GPIO and a UART Serial port.

Seeed Groove ADC
Adafruit INA219 Supports Bus voltage, Shunt voltage, Current and Load voltage.
DS18B20 Water Temperature
Atlas Scientific Temperature
Atlas Scientific PH
Atlas Scientific Conductivity Supports reading conductivity and Specific gravity.
Atlas Scientific Dissolved Oxygen Suports Dissolved Oxygen and DO Saturation.
Chirp Soil Moisture Supports Soil Moisture, Soil Moisture percent (requires calibration), Temperature and Light.
Seeed Grove SHT31 Temperature/Humidity
SparkFun ToF Range Finder Sensor - VL6180 Souprts distance and Light.
Adafruit BME680 Supports Temperature, Humidity, Barometric Pressure and VOC gas.
Seeed Groove OLED screen (96x96) Cycles through sensor readings.

We will work on documenting the process of integrating new sensors, so anyone can do it and share it with the community!
As soon as we have any update we will post it here.



As usual, we added a WIP page on the documentation that relates to this. You can find it here.

Hope it helps!

Concerning OLED Display.
I have the Seeed Oled V2 (128x128).
I connect it to the Aux Board (via 6 way multiway I2C board) and it does not work. I did not do anything else but plug in the grove connector. I did press the button once for 5 secs until red light shows. Then press briefly once again to restart the device.

The most likely cause of it not working is my repair of I2C Grove connector that I broke is ineffective. But just to check, please can you detail what I must do to enable OLED display for SCK 2.1
I looked everywhere for documentation on this without success. Its just mentioned that OLED 96x96 is supported.
My reason to use the OLED display is to confirm whether the grove connection (Aux) is working, also curiosity what information it displays. I need to know if I need to order a replacement board from seeed and wait (and wait and wait) for it to arrive.


Hi Bryn,

We implemented support for this display a loong time ago, and it hasn’t been reviewed since then so it’s possible that the code need’s some work. Right now I don’t have a screen with me, so I can not check if it is working, as soon as I get one i will let you know.

To confirm if the problem comes from your damaged connector you can try connecting to your kit’s shell and use the command i2c this will tell you if the display it’s being detected and in which address.

If the connector is ok you should see a device under the auxiliary I2C bus with the address of your display.

Hope this helps!

1 Like

OK thanks !
I will do that when I have finished platform io install and imported the various SCK projects into it.

Hi Victor,

OK, I installed Platform IO, then went about installing the libraries listed.
Most of them found and installed OK, but there were some issues I need help with.
ArduinoZero PMUX Report Library - Not found

DS2482 Library - 2 libraries with the same name, Authored by Guenther and Schaefer. I picked the first one, is it right ?

Flash Storage Library and Flash Storage - There is only one

MCP342X Library - 3 libraries with the same name : Gonzalez, Kazumi, Marple. Which one to pick ? I picked first one.

SmartSmart Citizen Kit Gases Pro Board Library - not found

Please advise if any of these are real problems, and suggested solution.


It did help, thank you.

My Oled display is alive and well at I2C address 0x3c

So, I assume the problem is in the code or in the config.

It may well be that the display is incompatible with the library.
First place to look should be to determine what I2C address is expected by the code. Progress…

… the code expected to see address 0x3c which matches.

I will check the config tomorrow. I assume the default config is to be found somewhere in the repository. Otherwise I will have to look at the flash drive on the device.

OK… Next day…

Overnight in the small hours after midnight I noticed that the OLED appeared to be working. I did not check what it was saying in any detail.

This morning its blank again. :frowning:

Daytime I checked the config via USB Terminal commands and discovered:
(a) the i2C address remains active
(b) the grooove OLED device is enabled in config with a time period of 60 seconds.
(c.) the Grooove OLED device returns a reading of null as seen on the terminal output.
(d) I have verified that the OLED Device and its I2C cable remains operational (by plugging it into another project.)

From this I assume its working in a technical sense and configured.

Are you able to shed any light (!!) on what is going on here ?
Has output of the OLED been turned off by a logical condition in code for some reason ?
How can I turn it on again ?

Looking in the code, I see (in Sckaux.cpp) there are public methods for ‘print’ and ‘displayReading’ but nowhere in the code base can I find these methods being called.
I also see in SckAux.cpp a public method called ‘getBusyState’ which returns always ‘true’ for the OLED. Unsure if this is important, as I have not (yet) analysed the code base. there’s a lot of it…
I can see in the code that the OLED should display a Logo when the device is started, so should see that (if nothing else). But I am not seeing it.

It has also occured to me that my device is a 128x128 type, whereas code expects 96x96.
This did not cause a problem when using the original Seeed library to drive the device, but I am unsure about the U8g2 driver library.
The U8G2 Library seems to support the Seeed Grove OLED Display 1.12" (128x128 pixels) via the class U8G2_SH1107_128X128_1_HW_I2C found in U8g2lib.h, so my assumption was correct. This library is included in the build (via SckAux.h) for current version of firmware, so we are good to go…

In sensors.h (in ‘lib’) I see the following entry :frowning: // Later this will be moved to a Actuators.h file
// Groove I2C Oled Display 96x96
OneSensor { BOARD_AUX, 250, SENSOR_GROOVE_OLED, “GR_OLED”, “Groove OLED”, 0, false, false, 1, },
The two highlighted settings refer to ‘enabled’ and ‘controllable’
I am unsure if this is important/relevant but if I felt confident building the firmware I would be trying ‘enabled’ set to ‘true’; but at this stage I am not confident using platformio to build the code base, in particular at this stage unsure if I have all of the dependencies sorted out to build without any errors

Thanks, Cheers

1 Like