ESP8622/RFM69 Wifi Gateway

Following the UKHASnet hackweekend there has been an increase in the popularity and extent on the UKHASnet network. I’m currently in the process of setting up a new gateway and repeater node in NE London. The repeater node is going to be solar powered and mounted on a balcony and while its hoped that this node will be in range of other gateways I thought it would be sensible to also install a gateway node. I recently caught up that the versatile and cheap ESP8266 can be reflashed with the an arduino environment and that with the correct ESP8266 module it is possible to access the SPI bus.

Hardware

Components

  • ESP8266-3 Module
  • RFM69HW
  • RFM69 Breakout Board PCB
  • MCP1700 3.3v Voltage Regulator

Construction

ThIMG_0663e initial prototype was deadbug wired onto the back of a breakout PCB, the RFM69 was soldered into its footprint apart from the Digital I/O pins which kapton tape was placed under. The ESP8266 module was connected up and the now spare header pins were used for a serial connection to the ESP8266. When using the ESP8266 it is necessary to setup the GPIOs in a particular manner to ensure it boots correctly.

 

  • GPIO0 – this pin is monitored by the bootloader, when it is pulled to ground the module will boot into the programming mode, if left floating it’ll boot into the main program.
  • GPIO2 – this needs to be pulled high via a resistor (such as 1K)
  • GPIO15 – pull this to ground via a 10k resistor

To connect up the SPI it was necessary to wire up

  • GPIO12 – MISO
  • GPIO13 – MOSI
  • GPIO14 – Clock/SCK
  • GPIO15 – NSS

After a lot of head scratching it turns out that I had mislabeled the pins on my newly delivered RFM69 breakout board and after reorganising the wiring I was then able to get the ESP8266 communicating with the RFM69 radio module.IMG_0662

To program the ESP8266 its necessary to have a serial connection:

  • Rx
  • Tx
  • GND
  • GPIO0 (pull to ground to boot into programming mode)

Software

  1. First install the Arduino ESP8266 add-on using the Board Manager (Sparkfun Guide) and then select ‘Generic ESP8266 Module’
  2. Download the esp8266_gateway code.
  3. Currently it requires hardcoded gateway settings (though I hope to move this to WifiManager eventually). Rename NodeConfig-template.h to NodeConfig.h and then update the settings.
  4. Boot the ESP8266 with GPIO0 pulled to ground and then upload the code to the module.
  5. On booting the ESP8266 starts an open Access Point which you can log into and enter which network you want it to join.
  6. It’ll then reboot and start acting as a UKHASnet gateway, debug is outputted to the serial port.

 Future Plans

  • Next step is to get a PCB made (probably via Dirty PCB)
  • Adapt WifiManager to allow the UKHASnet gateway settings (therefore avoiding any hardcoded settings).
  • Get the gateway onto hasnet.supplies as a simple kit.