The IoTBox was born out of the realisation that we needed a physical “tool” to show how we can interact with other systems – such as IBM Maximo. We have always talked about how easy it is to integrate – but how could we prove it?.
The IoTBox started with the ability to use REST calls to update systems with temperature readings. This was useful, but hardly IoT!. Next, MQTT support was added – the temperature can be sent, along with Button presses to an MQTT broker and the RGB LED and screen can be changed with MQTT messages. This, combined with Node Red, allows us to manipulate messages, create alerts and provide ‘intelligence’ to the small processor in the IoTBox.
However, although we can talk to our servers and pcs across the Internet – this is not really cloud based.
With this in mind, I decided to also add the ability for the IoTBox to talk with IBM’s Internet of Things Foundation. This cloud offering is free to use for development and includes services such as Node Red, Real Time Analytics, Time Series databases and of course – Watson!.
The IoTF Real Time Analytics Team have made some great enhancements recently: The ability to create alerts from sensor values – this includes E-mail, Node Red calls and now IFTTT integration!.
The IoTBox will use both modes of IoTF – Quickstart (no registration required) and Registered (allows the full use of IoTF).
The new IoTF Registered mode allows the LED and OLED screen to be controlled by the IoTF cloud.
For example, a cloud based Maximo offering can create a work order based on a temperature reading from the IoTBox. The LED on the IoTBox could turn blue and a message on the screen will alert the user to the new work order number.
This is now very easy to do!. In the following post, I will detail the full steps required to connect to IBM’s IoTF cloud service.
Here are the pinouts that are defined in the firmware for the IoTBox based on the ESP12 adapter board shown below. It is possible to solder directly to the ESP chip if space is tight but you will need to take into account the various pull ups (eg CH_PD) if you do so.
In order to do the initial programming and testing of the module, install the VCC, GND, GPIO0 cables and pins for TX and RX. If you are using a larger box, you may use jumper pins for all of the connections.
tx on programmer
rx on programmer
to I2C – SCL screen (GPIO4 is sometimes mislabelled labelled as GPIO5 on breakout board!!!)
resistor 150 ohm to led = RED
data pin for 1-wire ds18b20 (or dht22 with 10k resistor to vcc)
push to make switch (optional:held high via 10k resistor?). Other side of switch is at GND
to I2C – SDA screen
resistor 150 ohm to led = BLUE
resistor 150 ohm to led = GREEN
3.3 volts (NOT 5v!)
n/c (held high on the breakout board)
Potentiometer / Light detection
(Corrected Pins for the colours Blue and Green)
You will need to do an initial flash of the IoTBox chip which will then allow you to do the upgrades from the built in menu. Connect a 3.3v USB FTDI programmer to TX/RX and GND. Connect GPIO0 to GND and then power up the module from a source that supports around 300ma (do not power from the FTDI module).
Here is the commandline to flash the esp8266, (please remember that the esp8266 is 3.3v only – the 5v usb interfaces will kill it!)
(All on one line, may need python2.7 installed for esptool.exe. My USB programmer is using COM2)
Here is the final parts list for the IoTBox. Each item links to the version that I used. They may link to multipacks (I built 30-35 IoTBoxes) but you only need 1 unless noted.
During the beta testing I have tried and killed many boxes and components to get this far. Hopefully it will save you some time and expense. Note that many items came via China to reduce the unit price.
I took my idea to a few people – the inventors of NodeRed and a couple of members of the team and they thought that the idea was sound – produce a simple IoTBox that we can use in demonstrations to show how connected devices can make use of our products. I was then asked “Can we have 30 ready in a few weeks?”. I had better work fast!.
The IoTBox is a small 5x5cm device with an OLED screen that displays MQTT messages, an RGB LED to show MQTT messages as a status colour, a button that triggers an MQTT message and a waterproof temperature sensor that sends MQTT messages and/or a REST call. It can be updated “OTA” and is powered by the USB connector.
These articles will show you how to build one.
Background to IoTBox
Back in December 2014, I started to look at a new Wifi chip that had just been released as a means of Internet enabling various Arduino projects that I had been thinking about. I soon realised that this processor (the ESP8266) was actual more powerful than the Arduino and much much cheaper.