Component: Air Quality (BME688) (Environmental)
Author | MatrixTSL |
Version | 1.0 |
Category | Environmental |
Contents
Air Quality (BME688) component
An air quality sensor connected using a standard I2C bus. Capable of detecting indoor and outdoor air quality including CO2 H2 VOCs and VSCs.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_BME688_AirQualitySensor.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_BME688_AirQualitySensor.fcfx
Detailed description
The App Developer (Arduino Mega) component allows an Arduino Mega board to be controlled from within the Flowcode simulation runtime.
To allow Flowcode to communicate and control the Arduino Mega hardware the board must first be pre-programmed with dedicated firmware.
The firmware hex file and Flowcode source project can be downloaded from here.
Arduino Mega App Developer Firmware
More information about the workings of the firmware project can be found on the FiniteStateMachine page.
The COM port to the Arduino hardware is selected via the SCADA_Ard_Mega component COM port property.
When building the component into a App Developer project remember to expose the COM port property to allow the end user to select the correct port for the hardware.
The console window can display data in two modes which is set via a component property.
- fixed statistics showing IO / ADC inputs / PWM
- scrolling log showing all commands and returns
Examples
Pin Mapping
Here is a table showing how the App Developer Slave digital pins are mapped on the device.
App Developer Slave Digital Pin | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
Device Port Pin | E0 | E1 | E2 | E5 | G5 | E3 | H3 | H4 | H6 | H6 | B4 | B5 | B6 | B7 | J1 | J0 | H1 | H0 | D3 | D2 | D1 | D0 | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 | D7 | G2 | G1 | G0 | L7 | L6 | L5 | L4 | L3 | L2 | L1 | L0 |
Arduino Style Pin | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
Here is a table showing how the App Developer Slave analogue pins are mapped on the device.
App Developer Slave Analogue Pin | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Device Port Pin | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 |
Arduino Style Pin | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 |
Here is a table showing how the App Developer Slave peripheral pins are mapped on the device.
App Developer Slave Peripheral Pin | I2C 0 SDA | I2C 0 SCL | SPI 0 MOSI | SPI 0 MISO | SPI 0 SCK | UART 0 RX | UART 0 TX | UART 1 RX | UART 1 TX | UART 2 RX | UART 2 TX | PWM 0 | PWM 1 | PWM 2 | PWM 3 | PWM 4 | PWM 5 | PWM 6 | PWM 7 | PWM 8 | PWM 9 | PWM 10 | PWM 11 | PWM 12 | PWM 13 | PWM 14 | PWM 15 |
Device Port Pin | D1 | D0 | B3 | B4 | B5 | D2 | D3 | H0 | H1 | J0 | J1 | B7 | G5 | B5 | B6 | B7 | B4 | H6 | E3 | E4 | E5 | H3 | H4 | H5 | L3 | L4 | L5 |
Arduino Style Pin | D20 | D21 | D50 | D10 | D11 | D19 | D18 | D17 | D16 | D15 | D14 | D13 | D4 | D11 | D12 | D13 | D10 | D9 | D5 | D2 | D3 | D6 | D7 | D8 | D46 | D45 | D44 |
Macro reference
Initialise
![]() |
Initialise |
Initialises the I2C bus and sets up the device ready for operation. Returns 1 if the device has been found and is communicating. | |
![]() |
Return |
PerformGasResistanceCycle
ReadGasResistance
![]() |
ReadGasResistance |
Reads the resistance of the gas in ohms from the last heating cycle. | |
![]() |
Return |
ReadHumidity
![]() |
ReadHumidity |
Collects the humidity and returns as a floating point value in percent. | |
![]() |
Index |
Forced Mode = 0 / Parallel Mode = 0-2 | |
![]() |
Return |
ReadPressure
![]() |
ReadPressure |
Collects the pressure and returns as a floating point value in pascal. | |
![]() |
Index |
Forced Mode = 0 / Parallel Mode = 0-2 | |
![]() |
Return |
ReadRegister
![]() |
ReadRegister |
A simple example showing a generic way to read a register using I2C. | |
![]() |
Address |
![]() |
Return |
ReadTemperature
![]() |
ReadTemperature |
Collects the temperature and returns as a floating point value in degrees C. | |
![]() |
Index |
Forced Mode = 0 / Parallel Mode = 0-2 | |
![]() |
Return |
SetMode
![]() |
SetMode |
Sets the mode of the sensor to low power sleep, forced or parallel | |
![]() |
Mode |
0=Sleep, 1=Forced, 2=Parallel | |
![]() |
Return |
WriteRegister
![]() |
WriteRegister |
A simple example showing a generic way to write a register using I2C. | |
![]() |
Address |
![]() |
Data |
![]() |
Return |