Skip to main content

Mongoose OS

Recently I was experimenting on the Mongoose OS. It is an open source IoT platform for developing applications on ESP32, ESP8266, STM32, TI CC3200 and TI CC3220 microcontrollers. It supports a simplified version of Javascript (mJS) and C/C++ as the development language for calling the OS APIs.
What are the features that impressed me?

1. Installation

There is only 1 executable. (mos.exe) to be downloaded. Just clicked on the EXE and the web based IDE is displayed. Then I connect up ESP32 using the selected serial port, flashed the firmware and connect to my WIFI network. That's it! The MCU is setup! Amazingly simple.

2. Connection to MQTT

After the initial setup, the connection to MQTT is only a few clicks away and the ESP32 is setup to send/receive message from MQTT server. Zero code for this entire process. Super impressed!!

Publishing to the MQTT is only a single line of code.

let topic = 'myesp32/topic';
let res =, JSON.stringify({ a: 1, b: 2 }), 1);
print('Published:', res ? 'yes' : 'no');

Subscribing to a topic is also very straightforward.
let topic = 'myesp32/topic';
MQTT.sub(topic, function(conn, topic, msg) {
  print('Topic:', topic, 'message:', msg);
}, null);

3. Cross Platform

I have only experimented on ESP8266 and ESP32 on cross-platform support. Just like Arduino, after selecting the correct board type, the same piece of sketch can work on both the ESPs.

4. Connecting to Google Cloud IoTCore

Connecting to Google Cloud IoTCore is straightforward. In my opinion, the author has shielded most of the underlying security handshaking work. The detail instructions on the setup can be found here. The more challenging portion is the understanding of Google Cloud Platform and the rest of the related products. More of the setup details will be discussed in future post.

Concluding Thoughts

My take is, there are lots of potential for this platform. The ability to connect to MQTT server out of the box is a very big plus. Once the Cloud IoTCore goes in beta, more followup posts will be discussed on the connectivity.

Related Posts:


Popular posts from this blog

DIY Sonoff RF Bridge

Tasmota recently supported the RF bridge by iTead which allowed for RF 433 remote devices to be controlled/controlling using Sonoff products. e.g A handphone can be used to control a remote RF device or an RF remote control can use to control a WIFI enabled device.

By using Tasmota, I can control the device using MQTT. This idea fits exactly to my smart home plan. Here is the schematic:

I cheated a bit by having ESP01 mounted on a breakout board. This breakout board converts all the external pins to 5v which simplified the wiring and I do not need to use a voltage level shifter. Moreover, the Arduino 3.3v power does not have enough current to power the ESP reliably and I have to power it via the 5V from Arduino Uno. Next, I used an Arduino Uno prototype shield with a tiny breadboard to hold all the components together. For the RF 433 transmitter/receiver, I am using the development kits when I purchased the all-in-one Arduino development kits. An antenna is added for more sensitivity.

Using ESP-Link transparent bridge (ESP-01 and Arduino Pro Mini)

Recently stumbled across an interesting open source project ESP-Link. Its main purpose is to network-enable a non-network microcontroller (MCU) such as Arduino Uno, Pro mini or Nano using ESP8266. The author termed it as "Transparent Bridge". The ESP and MCU  communicate via the serial link and there is a companion Arduino library EL-Client for the MCU to connect up the network using MQTT, REST, TCP and UDP.
Setup I have put together an ESP-01 and an Arduino Pro Mini for this experiment. I have chosen a 3.3 version Pro mini so that I do not need to do any voltage level shifting between the I/O pins. In order to have a stable voltage source, the ESP8266 is powered by Pro Mini and the Pro Mini "RAW" pin is connected to a 5v USB power source. The RAW pin can take voltage up to 12V. The reset pin of Pro Mini is connected to GPIO 0 of ESP-01. This enables the ESP-01 to reset the Pro Mini.

I have linked up an APDS 9960 sensor to it and periodically send the luminosity a…