Currently working with Ultra Low Power nodes project (formerly ULPNode), I was searching for a small but powerfull gateway.
What job for this gateway ?
My goal is to be able to do a lot of thing with the gateway, even having an IHM with touch screen for example. I also want the Gateway act as a Node Management. The gateway must have a Web Interface to be able to do some basic action such as Node configuration (ID, NetId, Sensors configuration of attached node, …)
The gateway will be responsible of node ID attribution, acting like a DHCP server, once a new node is discovered and/or put in configuration mode, it can be connected to the network just like a classic computer, the Gateway will dedicate to it a specific Node ID, and once this node ID will be affected, the possibility to configure the node through the gateway web interface.
Another function of the Gateway will be to push the data to a IoT server (local or cloud) such as Emoncms or whatever dashboard available like Blynk (for phone and tablet), Adafruit, Particle Dashboard or freeboard. Today I did not found any descent (for free) IoT management data, hoping this will change in the next couple of months with IoT growing (but if you know good one, just let me know).
Oh, last but not least, I do not want to use a Raspberry Pi for this, really a personal choice, but for something reliable running 7/24 I absolutely do not trust any SD card when starting a database on it. In all case, one day, time will give me reason, SD will die starting by strange lockout and behavior. Except setting the system into read only mode, no way for me!
Moreover I want the gateway to be smart enough to be moved my hand from one point to another for quick testing, connected with a Lipo for example. That said, I started to design a Gateway with classic connection for testing.
What’s on ?
The gateway will host several funny things like
- Socket to plug a Spark Core or Particle Photon
- Pins to connect I2C or SPI OLED 128×64
- Pins to connect 2.2″ or 1.8″ TFT LCD
- RFM69 or RFM12B on board module
- Lipo Battery connector for testing and move the Gateway (no charger on board)
- 3V3 On board regulator for harvesting devices if any to avoid pumping from Particle Regulator
- Data connection for any cheap ebay ASK RX receiver
- FTDI connection for those who want to debug serial or send data over real serial
- 2 x grove I2C connector to connect other I2C devices
I started this design long time ago, with Spark Core available. If it was today, may be I use some kind of ESP8266 or OAK, but I love Particle Photon and their future dashboards, so, I keep it like this. But I think this is totally tweakable to change socket for hosting a ESP8266 or OAK board
Design ?
Schematic are very simple, it’s just more “wiring stuff” than any smart components placement. This boards keeps things minimal but powerfull. It can be easily hand soldered in less than 10 minutes. I’ve put
- An optional cheap regulator if you think you will need more current than the on board Particle regulator can drive.
- 2 x 10uF capacitors around the regulator
- 2 x 4K7 pullups resistors on I2C bus
- RMF69 / RFM12B optional RF receiver of course (need it)
- That’s all !!!!
Schematics
Here are the schematic of this board
Bill of Material
Reference from Seeedstudio Open Part Libray SKU but can be ordered on any provider, Digikey, Mouser. Link to the BOM file on my github.
For SPARK connector I use IC socket that I cut on needed size, for other connectors, I usually buy 40 pins headers (male and female) on ebay that I cut at the needed size (Example)
Board Pictures
Working code
I worked on a French project that use OLED Display and RFM69 module using Lowpowerlab RFM69 library so I ported the RFM69 library to work on Spark core, you’ll find it in the full working project. But you’ll need to grab the code you need, it’s really a project with lot of libraries into and must be compiled with spark-dev (not with Particle Web IDE). You can find this french project here
The future ULPNode gateway will work with another RF lib called RadioHead, but for now I did not realized the port since we can’t have a classic “library” folder (see https://github.com/spark/spark-dev/issues/71)
Same thing for U8Glib display library which I like to port, but still no success to do it (see https://community.particle.io/t/using-u8glib-for-spark-super-beginner-question-alert/5794/59)
Reference
- Full sources files on github (BOM, schematics, board and eagle cad files)
- you can order the PCB using great Oshpark PCB service
That said, I hope you’ll find this shield useful and you’ll do a lot of funny things with this simple board, let me know if you use it and what you do 😉
Charles