Component: API (ESP32) (API Slave Devices)

From Flowcode Help
Jump to navigationJump to search
Author Matrix TSL
Version 2.0
Category API Slave Devices


API (ESP32) component

Connects to an ESP32 device running the API Firmware allowing the board to become a slave to the Flowcode Embedded simulation or Flowcode App Developer. Supports: Digital IO / ADC / I2C / SPI / PWM / UART See Flowcode Help Wiki for firmware.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_ESP32_API_Comp.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_ESP32_API_Comp.fcfx

Detailed description

The App Developer (ESP32) component allows an ESP32 board to be controlled from within the Flowcode simulation runtime.

To allow Flowcode to communicate and control the ESP32 hardware the board must first be pre-programmed with dedicated firmware.

The firmware source project can be downloaded from here.

You will need to set your WIFI SSID and Password near the top of Main to allow the ESP module to connect to your network.

ZIP Icon.png ESP32 App Developer Firmware

More information about the workings of the firmware project can be found on the FiniteStateMachine page.


The IP Address to the ESP32 hardware is selected via the SCADA_ESP32 component IP Address property.

When building the component into a App Developer project remember to expose the IP Address property to allow the end user to select the address 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.

Please note pins 34, 35, 36, 39 are only capable of digital inputs and cannot be used as digital outputs.

App Developer Slave Digital Pin 0 1 2 3 4 5 12 13 14 15 16 17 18 19 21 22 23 25 26 27 32 33 34 35 36 39
Device Port Pin A0 A1 A2 A3 A4 A5 A12 A13 A14 A15 A16 A17 A18 A19 A21 A22 A23 A25 A26 A27 B0 B1 B2 B3 B4 B7
GPIO Number 0 1 2 3 4 5 12 13 14 15 16 17 18 19 21 22 23 25 26 27 32 33 34 35 36 39


Here is a table showing how the App Developer Slave analogue pins are mapped on the device.

Please note not all analogue input pins are available as peripheral ADC2 is not accesible when WIFI/Bluetooth is active. Only the pins shown are available.

App Developer Slave Analogue Pin 0 3 4 5 6 7
Device Port Pin B4 B7 B0 B1 B2 B3
GPIO Number 36 39 32 33 34 35


Here is a table showing how the App Developer Slave peripheral pins are mapped on the device.

Please note that PWM channels are tied in pairs and so channel 0 and 1 use the same internal timer peripheral. They will always run at the same frequency and when enabling channel 1 channel 0 duty will be reset to 0% and visa versa.


App Developer Slave Peripheral Pin I2C 0 SDA I2C 0 SCL I2C 1 SDA I2C 1 SCL SPI 0 MOSI SPI 0 MISO SPI 0 SCK SPI 1 MOSI SPI 1 MISO SPI 1 SCK UART 0 RX UART 0 TX UART 1 RX UART 1 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 OneWire
Device Port Pin A13 A12 A15 A14 A13 A12 A14 A23 A19 A18 A26 A25 B0 B1 A0 A2 A4 A5 A12 A13 A14 A15 A16 A17 A18 A19 A21
GPIO Number 13 12 15 14 13 12 14 23 19 18 26 25 32 33 0 2 4 5 12 13 14 15 16 17 18 19 21


PortA = GPIO pins 0 - 31 : A0 = GPIO 0

PortB = GPIO pins 32 - 39 : B0 = GPIO 32

Macro reference

ADCSample10

Fc9-comp-macro.png ADCSample10
Reads the voltage present on an Analog pin as an 12-bit value range 0-4095 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u16-icon.png - UINT Return


ADCSample8

Fc9-comp-macro.png ADCSample8
Reads the voltage present on an Analog pin as an 8-bit value range 0-255 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u8-icon.png - BYTE Return


ADCSampleArray10

Fc9-comp-macro.png ADCSampleArray10
Reads the voltage present on an Analog pin as an 10-bit value range 0-1023 Performs the selected number of samples with the selected time in microseconds in between samples and returns each sample in a single packet 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u8-icon.png - BYTE SampleCount
Range: 1- 32 
Fc9-u16-icon.png - UINT SampleDelay
Delay in us between each sample 
Fc9-u16-icon.png - UINT Samples
10-bit samples returned from the function 
Fc9-void-icon.png - VOID Return


ADCSampleArray8

Fc9-comp-macro.png ADCSampleArray8
Reads the voltage present on an Analog pin as an 8-bit value range 0-255 Performs the selected number of samples with the selected time in microseconds in between samples and returns each sample in a single packet 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u8-icon.png - BYTE SampleCount
Range: 1- 32 
Fc9-u16-icon.png - UINT SampleDelay
Delay in us between each sample 
Fc9-u8-icon.png - BYTE Samples
8-bit samples returned from the function 
Fc9-void-icon.png - VOID Return


ADCSampleAverage10

Fc9-comp-macro.png ADCSampleAverage10
Reads the voltage present on an Analog pin as an 10-bit value range 0-1023. Performs the selected number of samples with the selected time in microseconds in between samples 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u8-icon.png - BYTE SampleCount
Range: 1- 100 
Fc9-u8-icon.png - BYTE SampleDelay
Delay in us between each sample 
Fc9-u16-icon.png - UINT Return


ADCSampleAverage8

Fc9-comp-macro.png ADCSampleAverage8
Reads the voltage present on an Analog pin as an 8-bit value range 0-255 Performs the selected number of samples with the selected time in microseconds in between samples 
Fc9-u8-icon.png - BYTE ADCChannel
Range: 0, 3-7 
Fc9-u8-icon.png - BYTE SampleCount
Range: 1- 100 
Fc9-u8-icon.png - BYTE SampleDelay
Delay in us between each sample 
Fc9-u8-icon.png - BYTE Return


ADCSetPrechargeTime

Fc9-comp-macro.png ADCSetPrechargeTime
Specifies the precharge time for the ADC input readings in microseconds. The longer the time the more immune to noise the reading will be. 
Fc9-u8-icon.png - BYTE ChargeTime
Default 10 
Fc9-void-icon.png - VOID Return


ADCSetReferenceVoltage

Fc9-comp-macro.png ADCSetReferenceVoltage
Specified the reference setting for ADC reads. 
Fc9-u8-icon.png - BYTE RefType
0=AREF, 1=VCC, 3=Internal 1.1V 
Fc9-void-icon.png - VOID Return


I2CInitialise

Fc9-comp-macro.png I2CInitialise
Initialise the I2C module ready for communications 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Baud
0=100KHz, 1=400KHz, 2=1MHz 
Fc9-void-icon.png - VOID Return


I2CReceive

Fc9-comp-macro.png I2CReceive
Receive a byte using the I2C bus 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-bool-icon.png - BOOL Last
Last byte to receive: Range 0-1 
Fc9-u8-icon.png - BYTE Return


I2CRestart

Fc9-comp-macro.png I2CRestart
Put the I2C Module into Restart mode 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-void-icon.png - VOID Return


I2CSend

Fc9-comp-macro.png I2CSend
Transmit a byte using the I2C bus 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE DataOut
 
Fc9-bool-icon.png - BOOL Return


I2CStart

Fc9-comp-macro.png I2CStart
Put the I2C Module into Start mode 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-void-icon.png - VOID Return


I2CStop

Fc9-comp-macro.png I2CStop
Put the I2C Module into Stop mode 
Fc9-u8-icon.png - BYTE Channel
 
Fc9-void-icon.png - VOID Return


I2CTransInit

Fc9-comp-macro.png I2CTransInit
Initialises the I2C Transaction mode with the 7-bit device address 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE DeviceAddress
7-bit Device Address 
Fc9-u8-icon.png - BYTE Baud
0=100KHz, 1=400KHz, 2=1MHz 
Fc9-void-icon.png - VOID Return


I2CTransReceive

Fc9-comp-macro.png I2CTransReceive
Receives an I2C Transaction on the selected I2C channel. Returns the number of bytes received. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Data
Data variable to receive into 
Fc9-u16-icon.png - UINT Count
Number of bytes to receive 
Fc9-u16-icon.png - UINT Return


I2CTransSend

Fc9-comp-macro.png I2CTransSend
Sends an I2C Transaction on the selected I2C channel. Returns the number of bytes sent. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Data
Data to send 
Fc9-u16-icon.png - UINT Count
Number of bytes to send out, MS bit 0x8000 signifies no Stop if set 
Fc9-u16-icon.png - UINT Return


IOGetInputPin

Fc9-comp-macro.png IOGetInputPin
Sets the selected digital pin to an input and reads the input state. 
Fc9-u8-icon.png - BYTE Pin
Range: 0-29 
Fc9-bool-icon.png - BOOL Return


IOSetOutputPin

Fc9-comp-macro.png IOSetOutputPin
Sets the selected digital pin to an output and assigns the output state. 
Fc9-u8-icon.png - BYTE Pin
Range: 0-29 
Fc9-bool-icon.png - BOOL State
Range: 0-1 
Fc9-void-icon.png - VOID Return


Initialise

Fc9-comp-macro.png Initialise
Initialise the comms to the Arduino board ready for commands to be sent. 
Fc9-void-icon.png - VOID Return


OneWireBusReset

Fc9-comp-macro.png OneWireBusReset
Issue a 'ping' on the bus. If there is at least one sensor on the bus then it will generate a presence pulse. Returns 0 if a presense pulse was detected Returns 1 no device was detected 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-bool-icon.png - BOOL Return


OneWireGetDeviceCount

Fc9-comp-macro.png OneWireGetDeviceCount
Returns the number of devices found by the last ScanBus operation. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Return


OneWireGetIDByte

Fc9-comp-macro.png OneWireGetIDByte
Returns a single byte of the 64-Bit lasered ROM code, 255 on error 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Device
Device ID - Range: 0 - NumDevices - 1 
Fc9-u8-icon.png - BYTE ByteIndex
Index of the data byte. 0=FamilyCode, 1-6=Serial, 7=CRC 
Fc9-u8-icon.png - BYTE Return


OneWireInitialise

Fc9-comp-macro.png OneWireInitialise
Initialise the OneWire module ready for communications 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-void-icon.png - VOID Return


OneWireMatchROM

Fc9-comp-macro.png OneWireMatchROM
Performs a reset followed by the MatchROM code and then the 8-bit ROM code. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE FamilyCode
 
Fc9-u8-icon.png - BYTE SerialNumber
 
Fc9-void-icon.png - VOID Return


OneWireReceiveByte

Fc9-comp-macro.png OneWireReceiveByte
Receives a byte from the one wire bus a bit at a time 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Return


OneWireScanBus

Fc9-comp-macro.png OneWireScanBus
Scans the one wire bus to detect all connected devices. Returns the number of one wire devices found. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Return


OneWireSkipROM

Fc9-comp-macro.png OneWireSkipROM
Performs a bus reset and the sends the SkipROM command byte 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-void-icon.png - VOID Return


OneWireTransmitByte

Fc9-comp-macro.png OneWireTransmitByte
Transmit a byte to the one wire bus a bit at a time 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
Fc9-u8-icon.png - BYTE Data
 
Fc9-void-icon.png - VOID Return


PWMDisable

Fc9-comp-macro.png PWMDisable
Disable a PWM output 
Fc9-u8-icon.png - BYTE Channel
Range: 0-11 
Fc9-void-icon.png - VOID Return


PWMEnable

Fc9-comp-macro.png PWMEnable
Enable a PWM output 
Fc9-u8-icon.png - BYTE Channel
Range: 0-11 
Fc9-void-icon.png - VOID Return


PWMSetDuty

Fc9-comp-macro.png PWMSetDuty
Sets the duty for the PWM output 
Fc9-u8-icon.png - BYTE Channel
Range: 0-11 
Fc9-u8-icon.png - BYTE Duty
 
Fc9-void-icon.png - VOID Return


PWMSetFrequency

Fc9-comp-macro.png PWMSetFrequency
Sets PWM frequency in Hz 
Fc9-u8-icon.png - BYTE Channel
Range: 0 - 11 
Fc9-s32-icon.png - LONG Frequency
Frequency (Hz) 
Fc9-void-icon.png - VOID Return


SPIInitialise

Fc9-comp-macro.png SPIInitialise
Initialsie the SPI module ready for communications 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
Fc9-void-icon.png - VOID Return


SPIPrescaler

Fc9-comp-macro.png SPIPrescaler
Modify the speed of the SPI bus 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
Fc9-u8-icon.png - BYTE Prescaler
Range: 0-2 
Fc9-void-icon.png - VOID Return


SPITransfer

Fc9-comp-macro.png SPITransfer
Transfer a byte using the SPI bus 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
Fc9-u8-icon.png - BYTE DataOut
 
Fc9-u8-icon.png - BYTE Return


SPITransferTrans

Fc9-comp-macro.png SPITransferTrans
Transfer an array of bytes using the SPI bus 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
Fc9-u16-icon.png - UINT Count
Number of bytes to send and receive 
Fc9-u8-icon.png - BYTE DataOut
Outgoing data 
Fc9-u8-icon.png - BYTE DataIn
Incoming data 
Fc9-void-icon.png - VOID Return


UARTBaud

Fc9-comp-macro.png UARTBaud
Control the communications rate of the UART module 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
Fc9-u8-icon.png - BYTE Rate
0=1200, 1=2400, 2=4800, 3=9600, 4=19200, 5=38400, 6=57600, 7=115200 
Fc9-void-icon.png - VOID Return


UARTCheckRX

Fc9-comp-macro.png UARTCheckRX
Check to see if the UART module has received any data 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
Fc9-u8-icon.png - BYTE Return


UARTInitialise

Fc9-comp-macro.png UARTInitialise
Initialise the UART module ready for communications 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
Fc9-void-icon.png - VOID Return


UARTReceive

Fc9-comp-macro.png UARTReceive
Receives a data byte from the UART. Recommend calling the UARTCheckRx function first to ensure data is available. 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
Fc9-u8-icon.png - BYTE Return


UARTSend

Fc9-comp-macro.png UARTSend
Send a byte via the UART module 
Fc9-u8-icon.png - BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
Fc9-u8-icon.png - BYTE Data
Data Byte to send. Range: 0-255 
Fc9-void-icon.png - VOID Return


Property reference

Fc9-prop-icon.png Properties
Fc9-conn-icon.png Connection
Fc9-type-10-icon.png ESP IP Address
IP Address of the Raspbery Pi we want to control 
Fc9-type-21-icon.png ESP Port
Port number we want to communicate on. Default 1234 
Fc9-type-16-icon.png Network Interface
Some computers may have several network interfaces such as ethernet ports and wifi access. Select the correct network interface for the network you wish to connect to. Use the IP address to confirm you are connected to the right network. 
Fc9-type-10-icon.png IP Address
IP Address of the selected network interface. 
Fc9-conn-icon.png API Peripherals
Fc9-type-21-icon.png Digital IO
 
Fc9-type-21-icon.png Analog Input
 
Fc9-type-21-icon.png Analog Output
 
Fc9-type-21-icon.png PWM Output
 
Fc9-type-21-icon.png I2C Bus
 
Fc9-type-21-icon.png SPI Bus
 
Fc9-type-21-icon.png UART
 
Fc9-type-21-icon.png OneWire
 
Fc9-type-21-icon.png SERVO
 
Fc9-conn-icon.png Console
Fc9-type-7-icon.png Console Log
Create an automatic console log of the commands sent to the ESP 
Fc9-type-16-icon.png Log Mode
Controls how the console data is formatted. Fixed statistics gives an easy to read overview of the IO, Analog and PWM functionality Command Log gives a more in depth analysis of the outgoing commands and incoming returns ASCII mode allows serial data to be shown in raw text form, other commands are shown as in the Command Log mode