Your First Upload

Dario Di Maio edited this page Oct 15, 2016 · 14 revisions
Clone this wiki locally


If you are not used with Arduino and its enviroments, here there is a step by step guide with relevant screenshots. Is based on Windows, but is similar for people that use Arduino IDE under Linux.

Even if Souliss allows you to run on wireless and RS485 (see supported transceivers) the first examples are always based on Ethernet/WiFi because it gives a quick starting point and out-of-the-box Android control with SoulissApp.


You should be able at least to compile and have the Blink example running on your board, if not start from the Getting started guide from Arduino.

Verify that you are using a supported IDE, you may need to install manually the cores for your board.

Is suggested to use the IDE for Souliss in portable mode, create a folder called portable in the main IDE folder as shown in the below image

Note, once in portable mode the IDE doesn't longer apply any previous setting and you need to reinstall libraries and cores. Using the portable mode is ensured that previous version of libraries and cores doesn't conflict with your actual configuration.

Lets start

In this guide it will be shown how to load the e01_HelloWorld sketch on an Arduino Ethernet or any other compatible board/shield based on Wiznet W5100, if you have an Ethernet Shield based on Microchip ENC28J60 the reference example is e01_HelloWorld_uIP

Get the latest Souliss framework code

From your IDE, using the Library Manager you can download the latest public available release

Type souliss in the search bar, and click on Install

You can also install manually the library, from the download page use the zip file and import into the Arduino IDE.

For Arduino Ethernet or Shield based on Wiznet W5100 (official Arduino Ethernet Shield)

Now you should see the souliss library into the Example menu, select the first example in the ethernet submenu

In the description of the example are listed the hardware devices for which that example is configured

The example e01_HelloWorld get the IP address in DHCP from your router, so you don't need to setup any network configuration in your sketch. This isn't always true, but is the easiest way to start.

For ESP8266 WiFi Nodes

The ESP8266 is a SoC that can run as standalone, you can load Souliss using the ESP8266 cores for Arduino IDE.

The example e01_Hello_ESP8266 is a starting point that use DHCP to get an IP address from your router. You can use static IP addressing as per other example released with Souliss, just need to change the configuration accordingly.

As option you can use the ESP8266 as bridge with another AVR node using the USART or an RS485 transceiver for longer distances.

For Arduino Ethernet or Shield based on Microchip ENC28J60

The Microchip ENC28J60 Ethernet controller doesn't offer an embed IP stack, so you should use the uIP stack included in vNet. Due to RAM size constrain, in this case the IP address is static and assigned in the sketch and no DHCP support is offered.

So just change the below lines in your sketch to match a valid IP address in your network as in the reference example e01_HelloWorld_uIP.ino

// Define the network configuration according to your router settings
uint8_t ip_address[4]  = {192, 168, 1, 77};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4]  = {192, 168, 1, 1};
#define Gateway_address 77
#define myvNet_address  ip_address[3]       // The last byte of the IP address (77) is also the vNet address
#define myvNet_subnet   0xFF00
#define myvNet_supern   Gateway_address

Ensure that the last byte in ip_address match the Gateway_address and then compile and load the sketch.

Open SoulissApp and connect to your device

Connecting you smartphone on the same LAN/WLAN network where your Arduino Ethernet is connected, it will be enough to open SoulissApp to see the IP address of your nodes displayed.

Now SoulissApp will guide you through the first setup process, it will collect from the Gateway the list of Typicals (Typicals are the functionality available with the node) and so without any further configuration SoulissApp can control your node.

What's Next

If what you got looks promising, consider that this is just a few of the potential of Souliss. There are several steps that you can move forward:

  • Build a network with multiple nodes
  • Include in your network nodes connected in wireless (point-to-point) and wired (RS485)
  • Create logic that runs on nodes in a distributed fashion, without be based on a central node
  • Use openHAB as automation server to connect your nodes to Internet