Only if you received your neonious one at JSConf.EU 2018:
This documentation applies to the newest software 1.1.2. If you got a neonious one for free at JSConf.EU, it has software version 1.0.0 and will not be updated to newer versions. You can however contact us to get it unlocked for newer software versions for a small fee.

1. Development Schedule

Thanks to low.js neonious one is already among the most potent JavaScript based microcontroller boards available on the market. It can be used quite productivly.

Still, it is still in development. To give an understanding, what is still missing and what we are planning to implement in which order, a short incomplete development schedule is listed below:

most important

  1. Connect the LPC822 peripherials through high speed SPI. Currently the ESP32 and the LPC822 talk via UART, which is slow, but makes sense if you want to use both SPI peripherials of the LPC822. For the high speed mode no new hardware will be needed.
  2. Show all locals and globals in the on-board IDE debugger. When paused, it currently shows locals of the current function, but not of the closures the function is in.
  3. I2C support. Currently supported peripherials: GPIO, PWM, ADC, SPI, UART
  4. low.js: https requests (currently https is only supported as server)
  5. I2S and touch support
  6. Support power modes and wake up from JavaScript program
  7. low.js: zlib and crypto modules
  8. npm support (does not really make sense to support npm as long as low.js is incomplete)
  9. low.js: All unit tests of Node.JS shall pass
  10. TypeScript support
  11. Faster JIT compiler. Not much of a priority, because for a typical microcontroller application, the application speed seems to suffice already.
  12. Bluetooth support

least important

2. Access your neonious one

Getting started

  1. Power your neonious one with the supplied USB cable.
  2. Connect to the access point your neonious one is providing (with the name “neonious one <Code>”, with <Code> being the code on the back of the packaging of your neonious one.
  3. The Wifi password is also written down on the back of the packaging of your neonious one.
  4. The boards IP address is 192.168.0.1. Go to http://192.168.0.1/ to reach the website served by the preloaded example program. From here you can reach the IDE through one of the links on the website.
  5. The standard IDE password is "" (empty). So just click on Login to continue.
  6. Double click the README file in the File Explorer.


The pre-installed example program

If any of this does not work, please try:

  1. The preloaded example program might not run. Try to connect to the IDE directly through http://192.168.0.1:8000/ or https://192.168.0.1:8443/ (with certificate warning as no domain is used, secure none-the-less).
  2. The network settings might not be correct. Please reset network settings (see below).
  3. You might have an instable power source or power cable. Please try to switch to another USB power source and cable. In any case, make sure it can provide 0.5 A at 5 V (only used in absolute peak scenarios).
  4. Do a factory reset (see below).

Reset network settings / Factory reset

If you did a mistake while setting your network settings, you might no longer be able to connect to your neonious one. You may then reset the network settings to factory default, which allows you to access your neonious one via the factory access point.

  1. Press and hold the User button
  2. Tap the Reset button
  3. The red and green LEDs will flash alternately
  4. Release the User button as soon as the green light starts flashing (after about 5 seconds). Do NOT hold the User button for 10 seconds, because this will trigger a factory reset, and all your data will be lost.

To do a complete factory reset, do hold the the User button for at least 10 seconds. The right LED will start flashing then. When it is done flashing, all your data will be erased and you will be able to login into a clean neonious one.

Finding your neonious one in an DHCP-enabled network

When connecting to an DHCP-enabled network, your neonious one might get a random IP address and you might have difficulties to determine it. If your board has Internet access in this new network and you did not disable the tracking feature in the IDE settings, you can determine the board's IP address via the Find My Neonious feature:

  1. Go to neonious.com/FindMyNeonious
  2. Enter the 12-digit code from the back of your board’s packaging

If the website does not report the Internet address of your board, you might have entered wrong network credentials.

3. Features of the neonious one IDE

The on-board browser IDE of the neonious one is the primary way to set up and program the neonious one.

An alternative is to use lowrmt, a tool to program the neonious one and other low.js for ESP32 based devices with external IDEs. Allows the user to sync directories to the device, change settings, start/stop programs and more.


A screenshot of the IDE in action

To access the IDE, point your browser to http://192.168.0.1:8000/ or https://192.168.0.1:8443/ if using factory settings. All current versions of the modern browsers are supported.

File Explorer and Editor

The neonious one has it's own file system which you can browse through using the IDE. You can upload and download files and folders. Double-clicking files open them in the IDE.

JavaScript, HTML and other text files can be edited. Syntax highlighting is supported for many formats.

Image files may only be viewed.

Start/Stop Program / Console output

With the icons in the top toolbar you can start, stop or pause the program. The factory setting of the entry point of the program is /src/index.js, but may be changed to any other JavaScript file by selecting the command in the menu which pops up with a right click on the corresponding file. The currently active entry point file is shown in bold in the File Explorer.

Also, with a right click on a file in the File Explorer you can launch a JavaScript program with the clicked file being the temporary entry point. This can be used to try out different unit tests without having to change the entry point for each try.

Your JavaScript program can either run (green border around IDE), be paused (orange border around IDE) or stopped. When the program stops, all resources (files, sockets, etc.) are closed.

The output of process.stdout, console.log and the other console methods is shown in the Output pane. This pane can also be cleared by clicking on the corresponding button in the pane.

Debugger

When the program runs, the program can be paused through an unhandled exception, with a breakpoint (set by click on the very left of a code line), or by clicking the Pause button in the toolbar When the program is paused, the debugger may be used and the program can be resumed by clicking the Continue button in the toolbar, if it was not paused by an unhandled exception, in which case it can only be stopped.

Whenever the program is paused, the debugger shows all user functions of the current call stack to the current execution point in the Call Stack pane. You can click on each of them to open the corresponding file in the IDE and view the locals in the Locals pane.

Statistics

The current usage of CPU in %, network bandwidth, program memory and Flash disk space is shown in a graph updated in real-time. The higher the line, the more of the resource is used.

The CPU usage takes in account the JavaScript CPU core. The other CPU core of the neonious one, which handles all asyncronous system tasks such as disk operations, HTTPS, IDE and more in the future such as zlib and crypto tasks, is not taken into account.

Settings

You can view and change the system settings of the neonious one in the IDE. For this, log in, then go to the Settings by clicking on the icon at the top right of your browser window.

Things you can change include:

  1. Shall the JavaScript program start on boot of the neonious one?
  2. Editor settings such as font size.
  3. Network settings of both Ethernet and Wifi interfaces. neonious one is always connected, so while we plan on allowing the JavaScript program to change these settings, too, the JavaScript program does not have to set up a Wifi connection or any other network connection to communicate with the outside world first, as with other microcontrollers.
  4. HTTP and HTTPS ports for the IDE and lowrmt. You can even disable both, while this does not make sense yet as the JavaScript program cannot reenable them yet and so a factory reset will have to be done to regain access.
  5. HTTPS certificates. To remove the HTTPS certificate warnings, upload good certificates in the File Explorer and enter their paths here. Now access the neonious one through a domain matching the domain in the certificate files, and it will work.
  6. and more...

Software Updates

The neonious one software is a moving target. There will be software updates which make your neonious one far more powerful then it is today.

Software Updates are installable right from the IDE. When your neonious one has Internet access and a software update is available a download button will flash in the top right corner of your browser window after logging in to the IDE.

For this to work neonious one needs Internet access. So this does not work as long as your neonious one provides its own access point.

4. Programming the neonious one

neonious one runs low.js, a port of Node.JS for low-priced low-powered microcontrollers such as the ESP32. Please refer to the low.js documentation for more information.

The modules to use the neonious one's peripherials are also documented in the low.js documentation.

Pin layout

Pins 24-27 are provided directly by the ESP32, pins 1-23 are provided by the LPC822-based I/O controller. As both the ESP32 and the LPC822 have a switch matrix implemented, you can freely choose the pins you wish to use.

Note: UART and SPI both are currently slow as the data is transferred via UART from the ESP32 to the LPC822. A high speed mode will be implemented in a software update very soon, allowing you to use 10 Mhz+ SPI.

Currently not yet supported, but planned and thus shown in the image: UART on pins 24-27, Touch, I2C, I2S.

All pins support 3 mA and 3,3 V.

Pins 4 and 5 can only be driven low, thus need an external pull-up to be driven high. On the upside however, pin 4 and 5 support 20 mA and 5 V. As the pins support 5 V, with an external pull-up resistor you can directly communicate with 5 V devices via I2C or SPI. As 20 mA current is supported, you can also drive standard LEDs without using an transistor.

Examples

You can find example projects here: github.com/neonious/neonone_examples