ESP32 LoRa 1-CH Gateway, LoRaWAN, and the Things Network
Arduino IDE Setup
To set up the gateway software you'll need to install the ESP32 Arduino core as well as the library dependencies of the ESP32 LoRa Gateway sketch.
Arduino Board Setup
The example code and libraries for this board are all written for the Arduino IDE. If you haven't already done so, you'll need to install the Arduino core for ESP32. The ESP32 Arduino core must be installed manually. You can find the core files on espressif's GitHub: https://github.com/espressif/arduino-esp32. Follow the Installation Instructions to add the core to your Arduino IDE.
Adding a Custom Board
Although it's possible to upload code to the board using the standard board definitions, we recommend customizing the core to add support for the SparkX ESP32 LoRa Gateway.
To add the custom board, begin by downloading the board's variant file here below.
Then unzip the contents into ...{Arduino Sketchbook}/hardware/espressif/esp32/variants.
Next, copy the text below and add it to the bottom of ...{Arduino Sketchbook}/hardware/espressif/esp32/boards.txt:
=SparkX ESP32 LoRa Gateway sparkx_esp32_lora.upload.tool=esptool sparkx_esp32_lora.upload.maximum_size=1310720 sparkx_esp32_lora.upload.maximum_data_size=294912 sparkx_esp32_lora.upload.wait_for_upload_port=true sparkx_esp32_lora.serial.disableDTR=true sparkx_esp32_lora.serial.disableRTS=true sparkx_esp32_lora.build.mcu=esp32 sparkx_esp32_lora.build.core=esp32 sparkx_esp32_lora.build.variant=sparkx_esp32_lora sparkx_esp32_lora.build.board=ESP32_DEV sparkx_esp32_lora.build.f_cpu=240000000L sparkx_esp32_lora.build.flash_size=4MB sparkx_esp32_lora.build.flash_freq=40m sparkx_esp32_lora.build.flash_mode=dio sparkx_esp32_lora.build.boot=dio sparkx_esp32_lora.build.partitions=default sparkx_esp32_lora.menu.PartitionScheme.default=Default sparkx_esp32_lora.menu.PartitionScheme.default.build.partitions=default sparkx_esp32_lora.menu.PartitionScheme.minimal=Minimal (2MB FLASH) sparkx_esp32_lora.menu.PartitionScheme.minimal.build.partitions=minimal sparkx_esp32_lora.menu.PartitionScheme.no_ota=No OTA (Large APP) sparkx_esp32_lora.menu.PartitionScheme.no_ota.build.partitions=no_ota sparkx_esp32_lora.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 sparkx_esp32_lora.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (Large APPS with OTA) sparkx_esp32_lora.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs sparkx_esp32_lora.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 sparkx_esp32_lora.menu.FlashMode.qio=QIO sparkx_esp32_lora.menu.FlashMode.qio.build.flash_mode=dio sparkx_esp32_lora.menu.FlashMode.qio.build.boot=qio sparkx_esp32_lora.menu.FlashMode.dio=DIO sparkx_esp32_lora.menu.FlashMode.dio.build.flash_mode=dio sparkx_esp32_lora.menu.FlashMode.dio.build.boot=dio sparkx_esp32_lora.menu.FlashMode.qout=QOUT sparkx_esp32_lora.menu.FlashMode.qout.build.flash_mode=dout sparkx_esp32_lora.menu.FlashMode.qout.build.boot=qout sparkx_esp32_lora.menu.FlashMode.dout=DOUT sparkx_esp32_lora.menu.FlashMode.dout.build.flash_mode=dout sparkx_esp32_lora.menu.FlashMode.dout.build.boot=dout sparkx_esp32_lora.menu.FlashFreq.80=80MHz sparkx_esp32_lora.menu.FlashFreq.80.build.flash_freq=80m sparkx_esp32_lora.menu.FlashFreq.40=40MHz sparkx_esp32_lora.menu.FlashFreq.40.build.flash_freq=40m sparkx_esp32_lora.menu.FlashSize.4M=4MB (32Mb) sparkx_esp32_lora.menu.FlashSize.4M.build.flash_size=4MB sparkx_esp32_lora.menu.UploadSpeed.921600=921600 sparkx_esp32_lora.menu.UploadSpeed.921600.upload.speed=921600 sparkx_esp32_lora.menu.UploadSpeed.115200=115200 sparkx_esp32_lora.menu.UploadSpeed.115200.upload.speed=115200 sparkx_esp32_lora.menu.UploadSpeed.256000.windows=256000 sparkx_esp32_lora.menu.UploadSpeed.256000.upload.speed=256000 sparkx_esp32_lora.menu.UploadSpeed.230400.windows.upload.speed=256000 sparkx_esp32_lora.menu.UploadSpeed.230400=230400 sparkx_esp32_lora.menu.UploadSpeed.230400.upload.speed=230400 sparkx_esp32_lora.menu.UploadSpeed.460800.linux=460800 sparkx_esp32_lora.menu.UploadSpeed.460800.macosx=460800 sparkx_esp32_lora.menu.UploadSpeed.460800.upload.speed=460800 sparkx_esp32_lora.menu.UploadSpeed.512000.windows=512000 sparkx_esp32_lora.menu.UploadSpeed.512000.upload.speed=512000 sparkx_esp32_lora.menu.DebugLevel.none=None sparkx_esp32_lora.menu.DebugLevel.none.build.code_debug=0 sparkx_esp32_lora.menu.DebugLevel.error=Error sparkx_esp32_lora.menu.DebugLevel.error.build.code_debug=1 sparkx_esp32_lora.menu.DebugLevel.warn=Warn sparkx_esp32_lora.menu.DebugLevel.warn.build.code_debug=2 sparkx_esp32_lora.menu.DebugLevel.info=Info sparkx_esp32_lora.menu.DebugLevel.info.build.code_debug=3 sparkx_esp32_lora.menu.DebugLevel.debug=Debug sparkx_esp32_lora.menu.DebugLevel.debug.build.code_debug=4 sparkx_esp32_lora.menu.DebugLevel.verbose=Verbose sparkx_esp32_lora.menu.DebugLevel.verbose.build.code_debug=5
sparkx_esp32_lora.name
This custom board file specifies the SPI and built-in LED pins. Without it, you'll need to re-define them in your sketch.
Once the custom board has been added to the ESP32 core, open Arduino and select "SparkX ESP32 LoRa Gateway" under the Tools > Board > ESP32 Arduino menu.