Jump to content

Component: API (Interface Board) (API Slave Devices): Difference between revisions

From Flowcode Help
No edit summary
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder""
 
(8 intermediate revisions by 3 users not shown)
Line 17: Line 17:
==Component Source Code==
==Component Source Code==


Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_temp/Interface_Board_Comp.fcfx FC_Comp_Source_temp/Interface_Board_Comp.fcfx]
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_Interface_Board_Comp.fcfx FC_Comp_Source_Interface_Board_Comp.fcfx]


Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_temp/Interface_Board_Comp.fcfx FC_Comp_Source_temp/Interface_Board_Comp.fcfx]
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Interface_Board_Comp.fcfx FC_Comp_Source_Interface_Board_Comp.fcfx]


==Detailed description==
==Detailed description==


A board designed to allow PC access to embedded style electronic signals at 3V3 or 5V.


Includes: ADC / DAC / I2C / IO / Servo / SPI / UART


USB Firmware allows control via a USB connection. Works with a Windows PC but should also work with other USB master based devices.


WIFI Firmware allows control via a WIFI network connection. Works with any networked device including devices via the internet. WIFI connection requires the use of the UART peripheral and so this is not available for Slave functionality when using the WIFI firmware.


Board supplied with firmware as requested. Firmware can be changed using a PICkit 3 or PICkit 4 device or similar Microchip programmer.


To setup the WIFI to work with your own network you first need to power up the board using a USB connection or by applying a 5V power supply between the 5V and GND pins. Next connect to the WIFI network hosted by the board with the network name InterfaceBoard using password all in lowercase as the Password. Visit the website at page 192.168.4.1 and then enter your WIFI network details into the form provided. On clicking ok the board will store the details in none volatile memory and attempt to connect to your network and establish a local IP address. If all goes ok here then the Interface Board network should dissappear.


Refer to your router configuration page to see the IP address of the device.


If the WIFI network is not available then the board will revert back to it's setup mode allowing the network to be changed. Once network connection is available again the board will automatically reconnect.


The latest updates can be found on [https://github.com/RowlandTechnology/Interface-Board?fbclid=IwAR3rMT-68u1Q9deWpEar0Ewq8fB2wmS6cR1nGipBTVmb9xiaD29BcwVQPE8 github]






''No detailed description exists yet for this component''


==Examples==
==Examples==
Line 82: Line 79:




===Rapid Development - Virtualised SPI===
A feature of the App Developer Slave interface is to use the component for rapid development.
The App Developer Slave hardware can be used to take communications from the Flowcode simulation and transfer them to a real world device allowing for easy code generation and test without having to download to a target microcontroller device.
The CS pin and SPI Prescaler are set via the properties of the Injector component.
The SPI Master component is linked to the Injector component via the Injector property.
The Injector component is linked to the App Developer Slave component via the App Developer Slave property.
{{Fcfile|IB_SCADASlave_SPI.fcfx|Interface Board App Developer Slave SPI Demo}}
===Rapid Development - Virtualised I2C===
A feature of the App Developer Slave interface is to use the component for rapid development.
The App Developer Slave hardware can be used to take communications from the Flowcode simulation and transfer them to a real world device allowing for easy code generation and test without having to download to a target microcontroller device.
The I2C Master component is linked to the Injector component via the Injector property.
The Injector component is linked to the App Developer Slave component via the App Developer Slave property.
{{Fcfile|IB_SCADASlave_I2C.fcfx|Interface Board App Developer Slave I2C Demo}}
===Rapid Development - Virtualised UART===
A feature of the App Developer Slave interface is to use the component for rapid development.
The App Developer Slave hardware can be used to take communications from the Flowcode simulation and transfer them to a real world device allowing for easy code generation and test without having to download to a target microcontroller device.
The Baud rate and optional RS485 Properties are set via the properties of the Injector component.
The UART component is linked to the Injector component via the Injector property.


The Injector component is linked to the App Developer Slave component via the App Developer Slave property.




{{Fcfile|IB_SCADASlave_UART.fcfx|Interface Board App Developer Slave UART Demo}}




Line 138: Line 94:


===ADCSample10===
===ADCSample10===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample10'''
| width="90%" class="mtx-class-macrohead" | '''ADCSample10'''
|-
|-
| colspan="2" | Reads the voltage present on an Alanog pin as an 10-bit value range 0-1023 
| colspan="2" | Reads the voltage present on an Alanog pin as an 10-bit value range 0-1023 
Line 157: Line 113:


===ADCSample8===
===ADCSample8===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADCSample8'''
| width="90%" class="mtx-class-macrohead" | '''ADCSample8'''
|-
|-
| colspan="2" | Reads the voltage present on an Alanog pin as an 8-bit value range 0-255 
| colspan="2" | Reads the voltage present on an Alanog pin as an 8-bit value range 0-255 
Line 176: Line 132:


===I2CInitialise===
===I2CInitialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CInitialise'''
| width="90%" class="mtx-class-macrohead" | '''I2CInitialise'''
|-
|-
| colspan="2" | Initialsie the I2C module ready for communications 
| colspan="2" | Initialsie the I2C module ready for communications 
Line 200: Line 156:


===I2CReceive===
===I2CReceive===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CReceive'''
| width="90%" class="mtx-class-macrohead" | '''I2CReceive'''
|-
|-
| colspan="2" | Receive a byte using the I2C bus 
| colspan="2" | Receive a byte using the I2C bus 
Line 224: Line 180:


===I2CRestart===
===I2CRestart===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CRestart'''
| width="90%" class="mtx-class-macrohead" | '''I2CRestart'''
|-
|-
| colspan="2" | Put the I2C Module into Restart mode 
| colspan="2" | Put the I2C Module into Restart mode 
Line 243: Line 199:


===I2CSend===
===I2CSend===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CSend'''
| width="90%" class="mtx-class-macrohead" | '''I2CSend'''
|-
|-
| colspan="2" | Transmit a byte using the I2C bus 
| colspan="2" | Transmit a byte using the I2C bus 
Line 267: Line 223:


===I2CStart===
===I2CStart===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStart'''
| width="90%" class="mtx-class-macrohead" | '''I2CStart'''
|-
|-
| colspan="2" | Put the I2C Module into Start mode 
| colspan="2" | Put the I2C Module into Start mode 
Line 286: Line 242:


===I2CStop===
===I2CStop===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CStop'''
| width="90%" class="mtx-class-macrohead" | '''I2CStop'''
|-
|-
| colspan="2" | Put the I2C Module into Stop mode 
| colspan="2" | Put the I2C Module into Stop mode 
Line 305: Line 261:


===I2CTransInit===
===I2CTransInit===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransInit'''
| width="90%" class="mtx-class-macrohead" | '''I2CTransInit'''
|-
|-
| colspan="2" | Initialises the I2C Transaction mode with the 7-bit device address 
| colspan="2" | Initialises the I2C Transaction mode with the 7-bit device address 
Line 334: Line 290:


===I2CTransReceive===
===I2CTransReceive===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransReceive'''
| width="90%" class="mtx-class-macrohead" | '''I2CTransReceive'''
|-
|-
| colspan="2" | Receives an I2C Transaction on the selected I2C channel. Returns the number of bytes received. 
| colspan="2" | Receives an I2C Transaction on the selected I2C channel. Returns the number of bytes received. 
Line 363: Line 319:


===I2CTransSend===
===I2CTransSend===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''I2CTransSend'''
| width="90%" class="mtx-class-macrohead" | '''I2CTransSend'''
|-
|-
| colspan="2" | Sends an I2C Transaction on the selected I2C channel. Returns the number of bytes sent. 
| colspan="2" | Sends an I2C Transaction on the selected I2C channel. Returns the number of bytes sent. 
Line 392: Line 348:


===IOGetInputPin===
===IOGetInputPin===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOGetInputPin'''
| width="90%" class="mtx-class-macrohead" | '''IOGetInputPin'''
|-
|-
| colspan="2" | Sets the selected digital pin to an input and reads the input state. 
| colspan="2" | Sets the selected digital pin to an input and reads the input state. 
Line 411: Line 367:


===IOSetOutputPin===
===IOSetOutputPin===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IOSetOutputPin'''
| width="90%" class="mtx-class-macrohead" | '''IOSetOutputPin'''
|-
|-
| colspan="2" | Sets the selected digital pin to an output and assigns the output state. 
| colspan="2" | Sets the selected digital pin to an output and assigns the output state. 
Line 435: Line 391:


===Initialise===
===Initialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
| width="90%" class="mtx-class-macrohead" | '''Initialise'''
|-
|-
| colspan="2" | Initialise the comms to the Arduino board ready for commands to be sent. 
| colspan="2" | Initialise the comms to the Arduino board ready for commands to be sent. 
Line 449: Line 405:


===PWMDisable===
===PWMDisable===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMDisable'''
| width="90%" class="mtx-class-macrohead" | '''PWMDisable'''
|-
|-
| colspan="2" | Disable a PWM output 
| colspan="2" | Disable a PWM output 
Line 468: Line 424:


===PWMEnable===
===PWMEnable===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMEnable'''
| width="90%" class="mtx-class-macrohead" | '''PWMEnable'''
|-
|-
| colspan="2" | Enable a PWM output 
| colspan="2" | Enable a PWM output 
Line 487: Line 443:


===PWMSetDuty8===
===PWMSetDuty8===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetDuty8'''
| width="90%" class="mtx-class-macrohead" | '''PWMSetDuty8'''
|-
|-
| colspan="2" | Sets the duty for the PWM output 
| colspan="2" | Sets the duty for the PWM output 
Line 511: Line 467:


===PWMSetPrescaler===
===PWMSetPrescaler===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PWMSetPrescaler'''
| width="90%" class="mtx-class-macrohead" | '''PWMSetPrescaler'''
|-
|-
| colspan="2" | Sets the prescaler for the PWM output 
| colspan="2" | Sets the prescaler for the PWM output 
Line 530: Line 486:


===SPIInitialise===
===SPIInitialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIInitialise'''
| width="90%" class="mtx-class-macrohead" | '''SPIInitialise'''
|-
|-
| colspan="2" | Initialsie the SPI module ready for communications 
| colspan="2" | Initialsie the SPI module ready for communications 
Line 549: Line 505:


===SPIPrescaler===
===SPIPrescaler===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPIPrescaler'''
| width="90%" class="mtx-class-macrohead" | '''SPIPrescaler'''
|-
|-
| colspan="2" | Modify the speed of the SPI bus 
| colspan="2" | Modify the speed of the SPI bus 
Line 573: Line 529:


===SPITransfer===
===SPITransfer===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransfer'''
| width="90%" class="mtx-class-macrohead" | '''SPITransfer'''
|-
|-
| colspan="2" | Transfer a byte using the SPI bus 
| colspan="2" | Transfer a byte using the SPI bus 
Line 597: Line 553:


===SPITransferTrans===
===SPITransferTrans===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SPITransferTrans'''
| width="90%" class="mtx-class-macrohead" | '''SPITransferTrans'''
|-
|-
| colspan="2" | Transfer an array of bytes using the SPI bus 
| colspan="2" | Transfer an array of bytes using the SPI bus 
Line 631: Line 587:


===ServoDisable===
===ServoDisable===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ServoDisable'''
| width="90%" class="mtx-class-macrohead" | '''ServoDisable'''
|-
|-
| colspan="2" | Disable a Servo output 
| colspan="2" | Disable a Servo output 
Line 650: Line 606:


===ServoEnable===
===ServoEnable===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ServoEnable'''
| width="90%" class="mtx-class-macrohead" | '''ServoEnable'''
|-
|-
| colspan="2" | Enable a Servo output 
| colspan="2" | Enable a Servo output 
Line 669: Line 625:


===ServoSetPosition8===
===ServoSetPosition8===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ServoSetPosition8'''
| width="90%" class="mtx-class-macrohead" | '''ServoSetPosition8'''
|-
|-
| colspan="2" | Sets the position as an 8-bit value 
| colspan="2" | Sets the position as an 8-bit value 
Line 693: Line 649:


===UARTBaud===
===UARTBaud===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTBaud'''
| width="90%" class="mtx-class-macrohead" | '''UARTBaud'''
|-
|-
| colspan="2" | Control the communications rate of the UART module 
| colspan="2" | Control the communications rate of the UART module 
Line 717: Line 673:


===UARTCheckRX===
===UARTCheckRX===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTCheckRX'''
| width="90%" class="mtx-class-macrohead" | '''UARTCheckRX'''
|-
|-
| colspan="2" | Check to see if the UART module has received any data 
| colspan="2" | Check to see if the UART module has received any data 
Line 736: Line 692:


===UARTInitialise===
===UARTInitialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTInitialise'''
| width="90%" class="mtx-class-macrohead" | '''UARTInitialise'''
|-
|-
| colspan="2" | Initialise the UART module ready for communications 
| colspan="2" | Initialise the UART module ready for communications 
Line 755: Line 711:


===UARTReceive===
===UARTReceive===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTReceive'''
| width="90%" class="mtx-class-macrohead" | '''UARTReceive'''
|-
|-
| colspan="2" | Receives a data byte from the UART. Recommend calling the UARTCheckRx function first to ensure data is available. 
| colspan="2" | Receives a data byte from the UART. Recommend calling the UARTCheckRx function first to ensure data is available. 
Line 774: Line 730:


===UARTSend===
===UARTSend===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''UARTSend'''
| width="90%" class="mtx-class-macrohead" | '''UARTSend'''
|-
|-
| colspan="2" | Send a byte via the UART module 
| colspan="2" | Send a byte via the UART module 
Line 798: Line 754:


===WIFIGetIP===
===WIFIGetIP===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WIFIGetIP'''
| width="90%" class="mtx-class-macrohead" | '''WIFIGetIP'''
|-
|-
| colspan="2" | Gets the IP address of the board. Allows you to setup and get the assigned address via USB before using over WIFI, Use the WIFIIsConnected first to check the WIFI is active.  
| colspan="2" | Gets the IP address of the board. Allows you to setup and get the assigned address via USB before using over WIFI, Use the WIFIIsConnected first to check the WIFI is active.  
Line 812: Line 768:


===WIFIIsConnected===
===WIFIIsConnected===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WIFIIsConnected'''
| width="90%" class="mtx-class-macrohead" | '''WIFIIsConnected'''
|-
|-
| colspan="2" | Checks to see if the WIFI is active and connected 
| colspan="2" | Checks to see if the WIFI is active and connected 
Line 826: Line 782:


===WIFISetSSID===
===WIFISetSSID===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WIFISetSSID'''
| width="90%" class="mtx-class-macrohead" | '''WIFISetSSID'''
|-
|-
| colspan="2" | Assign the SSID and password for the network you wish to connect the board to. Stores the parameters into ROM for later USB free setup. 
| colspan="2" | Assign the SSID and password for the network you wish to connect the board to. Stores the parameters into ROM for later USB free setup. 
Line 851: Line 807:
==Property reference==
==Property reference==


{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
| width="90%" class="mtx-class-macrohead" | '''Properties'''  
|-
|-
|-
|-
Line 862: Line 818:
| colspan="2" |  
| colspan="2" |  
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Connection Properties
| width="90%" class="mtx-class-propfolder" | Connection Properties
|-
|-
|-
|-
Line 886: Line 842:
| colspan="2" | Decides how the scan is terminated 
| colspan="2" | Decides how the scan is terminated 
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | API Peripherals
| width="90%" class="mtx-class-propfolder" | API Peripherals
|-
|-
|-
|-
Line 930: Line 886:
| colspan="2" |  
| colspan="2" |  
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Logging
| width="90%" class="mtx-class-propfolder" | Logging
|-
|-
|-
|-

Latest revision as of 14:37, 13 July 2026

Author Matrix TSL
Version 1.0
Category API Slave Devices


API (Interface Board) component

Connects to an Interface Board 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 / DAC / Servo See Instructables for open source project files.

Component Source Code

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

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

Detailed description

A board designed to allow PC access to embedded style electronic signals at 3V3 or 5V.

Includes: ADC / DAC / I2C / IO / Servo / SPI / UART

USB Firmware allows control via a USB connection. Works with a Windows PC but should also work with other USB master based devices.

WIFI Firmware allows control via a WIFI network connection. Works with any networked device including devices via the internet. WIFI connection requires the use of the UART peripheral and so this is not available for Slave functionality when using the WIFI firmware.

Board supplied with firmware as requested. Firmware can be changed using a PICkit 3 or PICkit 4 device or similar Microchip programmer.

To setup the WIFI to work with your own network you first need to power up the board using a USB connection or by applying a 5V power supply between the 5V and GND pins. Next connect to the WIFI network hosted by the board with the network name InterfaceBoard using password all in lowercase as the Password. Visit the website at page 192.168.4.1 and then enter your WIFI network details into the form provided. On clicking ok the board will store the details in none volatile memory and attempt to connect to your network and establish a local IP address. If all goes ok here then the Interface Board network should dissappear.

Refer to your router configuration page to see the IP address of the device.

If the WIFI network is not available then the board will revert back to it's setup mode allowing the network to be changed. Once network connection is available again the board will automatically reconnect.

The latest updates can be found on github



Examples

Direct Slave Access

Here is a simple demo to switch on and off digital pin 5.


Simple Interface Board Demo








Macro reference

ADCSample10

ADCSample10
Reads the voltage present on an Alanog pin as an 10-bit value range 0-1023 
- BYTE ADCChannel
Range: 0-5 
- UINT Return


ADCSample8

ADCSample8
Reads the voltage present on an Alanog pin as an 8-bit value range 0-255 
- BYTE ADCChannel
Range: 0-5 
- BYTE Return


I2CInitialise

I2CInitialise
Initialsie the I2C module ready for communications 
- BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
- BYTE Baud
0=100KHz, 1=400KHz, 2=1MHz 
- VOID Return


I2CReceive

I2CReceive
Receive a byte using the I2C bus 
- BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
- BOOL Last
Last byte to receive: Range 0-1 
- BYTE Return


I2CRestart

I2CRestart
Put the I2C Module into Restart mode 
- BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
- VOID Return


I2CSend

I2CSend
Transmit a byte using the I2C bus 
- BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
- BYTE DataOut
 
- BOOL Return


I2CStart

I2CStart
Put the I2C Module into Start mode 
- BYTE Channel
Channel Index: Range 0 - I2C Bus Count - 1 
- VOID Return


I2CStop

I2CStop
Put the I2C Module into Stop mode 
- BYTE Channel
 
- VOID Return


I2CTransInit

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


I2CTransReceive

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


I2CTransSend

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


IOGetInputPin

IOGetInputPin
Sets the selected digital pin to an input and reads the input state. 
- BYTE Pin
Range: 0-17 
- BOOL Return


IOSetOutputPin

IOSetOutputPin
Sets the selected digital pin to an output and assigns the output state. 
- BYTE Pin
Range: 0-17 
- BOOL State
Range: 0-1 
- VOID Return


Initialise

Initialise
Initialise the comms to the Arduino board ready for commands to be sent. 
- VOID Return


PWMDisable

PWMDisable
Disable a PWM output 
- BYTE Channel
Range: 0-1 
- VOID Return


PWMEnable

PWMEnable
Enable a PWM output 
- BYTE Channel
Range: 0-1 
- VOID Return


PWMSetDuty8

PWMSetDuty8
Sets the duty for the PWM output 
- BYTE Channel
Range: 0-1 
- BYTE Duty
Range: 0-255 
- VOID Return


PWMSetPrescaler

PWMSetPrescaler
Sets the prescaler for the PWM output 
- BYTE Prescaler
 
- VOID Return


SPIInitialise

SPIInitialise
Initialsie the SPI module ready for communications 
- BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
- VOID Return


SPIPrescaler

SPIPrescaler
Modify the speed of the SPI bus 
- BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
- BYTE Prescaler
Range: 0-2 
- VOID Return


SPITransfer

SPITransfer
Transfer a byte using the SPI bus 
- BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
- BYTE DataOut
 
- BYTE Return


SPITransferTrans

SPITransferTrans
Transfer an array of bytes using the SPI bus 
- BYTE Channel
Channel Index: Range 0 - SPI Bus Count - 1 
- UINT Count
Number of bytes to send and receive 
- BYTE DataOut
Outgoing data 
- BYTE DataIn
Incoming data 
- VOID Return


ServoDisable

ServoDisable
Disable a Servo output 
- BYTE Channel
Range: 0-5 
- VOID Return


ServoEnable

ServoEnable
Enable a Servo output 
- BYTE Channel
Range: 0-5 
- VOID Return


ServoSetPosition8

ServoSetPosition8
Sets the position as an 8-bit value 
- BYTE Channel
Range: 0-1 
- BYTE Position
Range: 0-255 
- VOID Return


UARTBaud

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


UARTCheckRX

UARTCheckRX
Check to see if the UART module has received any data 
- BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
- BYTE Return


UARTInitialise

UARTInitialise
Initialise the UART module ready for communications 
- BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
- VOID Return


UARTReceive

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


UARTSend

UARTSend
Send a byte via the UART module 
- BYTE Channel
Channel Index: Range 0 - UART Bus Count - 1 
- BYTE Data
Data Byte to send. Range: 0-255 
- VOID Return


WIFIGetIP

WIFIGetIP
Gets the IP address of the board. Allows you to setup and get the assigned address via USB before using over WIFI, Use the WIFIIsConnected first to check the WIFI is active.  
- STRING Return


WIFIIsConnected

WIFIIsConnected
Checks to see if the WIFI is active and connected 
- BOOL Return


WIFISetSSID

WIFISetSSID
Assign the SSID and password for the network you wish to connect the board to. Stores the parameters into ROM for later USB free setup. 
- STRING SSID
Name of the network you wish to connect to 
- STRING Password
 
- VOID Return


Property reference

Properties
Connection Type
 
Connection Properties
Auto Detect Port
Allows the component to auto detect the interface board COM port. Requires the latest Flowcode serial comms DLL to function correctly. 
Scan Results
Lists the IP addresses found during the last scan, Overwrites the selected WIFI IP property when changed. 
Scan Start
Address to set the scan start point. For example 10 might generate 192.168.1.10 depending on your IP setting. Scan then proceeds from there so for example 11, 12, 13, ..., 254, 255. Default 0 
End Scan
Decides how the scan is terminated 
API Peripherals
Digital IO
 
Analog Input
 
Analog Output
 
PWM Output
 
I2C Bus
 
SPI Bus
 
UART
 
SERVO
 
Logging
Console Log
Create an automatic console log of the commands sent to the device 
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 
Show Raw
Shows the raw data stream via a console window