Node.js for Microcontrollers
Use Low.js with far lower system requirements.
- low.js starts up instantly, while Node.js does not (0.6 to 1.5 seconds wait time on Raspberry Pi 2).
- low.js only uses a fraction of the disk space and memory which Node.js requires, leaving more resources for other processes.
Low.js vs Alternatives
low.js vs. Arduino
Programs written for the Arduino microcontroller board platform are called Sketches and are written in simplified C/C++ language with the Arduino API.
Arduino is widely used, so for almost any purpose somebody has already written a library and an example which can be used as a template for a new project.
Its biggest flaws are:
- It is hard to let the program do multiple things in parallel, especially as not all APIs calls are non-blocking.
- While Arduino on ESP32 does have networking/Wifi support, building fully featured servers still need lots of manual work.
These two flaws are strengths of low.js.
low.js vs. ESP-IDF
ESP-IDF is the low-level development framework for programming the ESP32 chips, provided by the chip maker Espressif itself.
Programming with ESP-IDF requires knowledge of C/C++ and of microcontrollers internals (interrupts, FreeRTOS). For a programmer with this knowledge, it is a very flexible framework to program with, allowing the user to get the most out of the ESP32 chips.
In fact, low.js itself is developed on top of a modified version of ESP-IDF.
Still, as we were able to confirm in several projects, low.js is far easier and less time consuming to program with than with ESP-IDF, often producing the same results with far less lines of code.
low.js vs. Espruino
- The API of Espruino is far less powerful than the API of low.js is, as Espruino does not provide the Node.js API, which would not fit into the smaller microcontrollers. Espruino provides some API calls which mimic Node.js API calls, such as
fs.writeFile, however they do not work the same way.
fs.writeFilefor example is blocking (there does not seem to be any way to write a file asyncronly with Espruino).
low.js vs. MicroPython
MicroPython is a port of Python for microcontrollers, just as low.js is a port of Node.js for microcontrollers. With both microcontrollers can be programmed easily.
The arguments for low.js vs. MicroPython are the same as for Node.js vs. Python:
- The API of low.js is asynchronous first, making it easy to scale projects.
As low.js is in early development, things change fast with the goal of full Node.js compatibility. Because of this, there is no version numbering yet. These are nightly builds compiled directly from the GIT repository.
The versions for PCs are provided so developments can be tested on the PC without having to transfer them to the microcontroller first.
|Platform||Architecture||Version / Date||File Size|
|Linux x86/x64||32 bit (i686)||2019-01-25||0.99 MB||Download|
|Linux x86/x64||64 bit||2019-01-25||0.92 MB||Download|
|Linux ARM||32 bit (ARMv6/v7)||2019-01-25||0.87 MB||Download|
|Linux ARM||64 bit (ARMv8)||2019-01-25||0.89 MB||Download|
|macOS||64 bit||2019-01-25||0.76 MB||Download|
|ESP32-WROVER||To flash/install on ESP32-WROVERs, you need to use lowsync, which can be installed via npm.
See the examples or documentation for more details.
You may like also:
- How To Create Secure MQTT Broker
- How To Enable Free HTTPS on your website
- How To Install Node.js on Ubuntu
- How to install MongoDB in ubuntu
- How to Install InfluxDB on Ubuntu
- What is Jinja
- How to Install PyCharm on Ubuntu
One thought on “Node.js for Microcontrollers”
Hello. I can’t download any of tars provided:
WARNING: The certificate of ‘www.lowjs.org’ is not trusted.
WARNING: The certificate of ‘www.lowjs.org’ doesn’t have a known issuer.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: https://www.neonious-iot.com/lowjs/downloads/lowjs-linux-x86_64-20190125.tar.gz [following]
–2021-04-18 21:05:19– https://www.neonious-iot.com/lowjs/downloads/lowjs-linux-x86_64-20190125.tar.gz
Resolving http://www.neonious-iot.com (www.neonious-iot.com)… 18.104.22.168
Connecting to http://www.neonious-iot.com (www.neonious-iot.com)|22.214.171.124|:443… connected.
HTTP request sent, awaiting response… Read error (The TLS connection was non-properly terminated.) in headers.