Project for an Autonomous Sailing Boat

  • I just made a first test with the configuration file :

      "lowjs": {
        "version": "20200105",
        "pro": true,
        "system_flash_size": 8388608,
        "ide_support": false,
        "ota_update_support": false
      "static_files": null,
      "factory_files": null,
      "modules": {
        "async": "^3.1.0",
        "axios": "^0.19.0",
        "kalmanjs": "^1.1.0",
        "pako": "^1.0.10"
      "settings": {
        "code": {
          "main": "/dist/index.js",
          "auto_restart_on_fatal": false,
          "console_kb": 0,
          "only_static_files": false
        "wifi": {
          "ssid": "****************",
          "password": "*********"
        "web": {
          "http_enabled": false,
          "https_enabled": false

    I obtained

    Building firmware...
    ****** Used flash space: ******
    low.js code       2097152 bytes
    low.js data       3365605 bytes
    Static files            0 bytes
    Factory files           0 bytes
    Modules            498505 bytes
    Settings             1148 bytes
    Reserved          2426198 bytes
    Total             8388608 bytes

    and during the flash step :

    Error: No port specified. Please use --port=.. to specify the port.

    What port is it ?

  • Sorry ! I looked only the doc on the blog.
    Reading the full documentation and Github, I red it was necessary to connect the Neonious One via USB port.
    I continue...

  • Let me stop you right here!

    I did a mistake! neonious one is still based on the idea that the user will never need to flash low.js. Just update over Wifi/Ethernet and add user data via lowsync. So it does not have an USB/UART adapter! And I forgot that you are working with the neonious one. With the "C/C++ Hacking Kit" you can Flash, but the neonious one needs a special low.js version because of the LPC coprocessor, so the custom firmware will not work this way either.

    I guess you like the neonious one because of the Ethernet port and the additional Flash? In that case.. we are working on the successor of the neonious one, to streamline everything and have the same possibilities with all hardware. Till mid February we should have a new board - same size, still with Ethernet, 4 MB more Flash, and Custom Firmware will work here, too.

    If you do not care about Ethernet/the amount of ports, a third-party ESP32-WROVER board with 16 MB Flash might be another option. Here the custom firmware would work right now.

    Second thing: Your configuration

    The config file you show above has no static files, no factory files, so no user files at all => no user program will run. Also no port for lowsync or neonious IDE enabled (web.http_enabled/web.https_enabled). So, it would show a Wifi access point, but there will be now way to interact with the board after connecting to the AP.

  • In fact I bought a Neonious One to save time to check the possibility to run my Nodejs software on ESP32.

    I used the Neonious One ethernet port only to set the Wifi network and after it was easier for me to work via Wifi and have the processor near my desktop.

    My final goal is to use an ESP32 with minimum power usage. It means :

    • no extra hardware.
    • a solar power management
    • deep sleep or hibernate management

    For the moment my target configuration :

    In the hull :

    • 1 large ESP32 running lowjs as the main brain with no sensors.
    • 1 small ESP32 with sensors IMU,GPS,RF24 and servo written in C++ using deep-sleep, wakeup via timer&gpio
      interconnected actually via Wifi, tested BLE but it can be no Serial.
    • a satellite gateway

    In the independant wingsail :

    • 1 small ESP32 with servo written in C++ using deepsleep, wakeup and data via RF24, solar management.

    I have to find a minimum ESP32-WROVER but with large Flash memory

  • @neoniousTR I don't know our mapping of the flash memories.

    If I use a standard ESP32-WROVER with 4Mb flash as in your store : How the flash memory is used ?

    If fact I need only the place for the firmware and a place to store and update 2/3 Kb of permanent data.
    No IDE, no ETA for the final configuration.

    Is it possible ?

  • We also have ESP32-WROVER with 16 MB on stock (as many other things). Wanted to build up the store later, but just added the ESP32-WROVER with 16 MB right now, in case you want to get that.

    If you opt for this, I will give you low.js Professional for free on that because of this problem.

    No IDE, no OTA => low.js Pro will need 3 MB of flash => 13 MB for you.

  • @neoniousTR OK Thanks, I just ordered on your shop with basic breakout-boards

    Do you known a good FTDI converter with a good power 3.3V output to flash easily the ESP ?

  • Your testing is beneficial for me, too, so I'll add one in the package for free.

  • I worked around memory optimization and prepared my software for deep sleep/hibernate mode.
    I updated my software to check periodically the free memory, run a garbage collector eventually and if there is not enough memory, save the context and throw a "fatal error" to benefit of the automatic restart.

    With a soft process.exit, I did not succeed to benefit of the watchdog.

    It is the first time the ESP32 succeed to run the software and cross the Atlantic !!!
    (In fact the ESP32 is always at home, and I use a software stimulator pushing faked GPS positions with actual weather conditions....)


  • It was a pleasure for me to note on the ESP32 a periodic load : 0,4 seconds.

    For my tests I generate this calculus load every 30 seconds and send message to "ground" every 30 seconds also.

    During the challenge the boat will execute the calculus perhaps every 5 minutes and will send message to ground every 6 hours.

    The frequency to inform "ground" depends of the importants Iridium SBD satellite costs, but when I see all the projects with LoRa style nano satellites; Perhaps I will have the opportunity to have a higher frequency with lower costs and lower emitting power consumption

    I do not know how you plan to implement access to ESP32 sleep modes.

    For my usage, it is sufficient to hibernate the processor and reboot all.

    My JS program can execute :

    • awake the processor in 5 minutes (for example)
    • go to hibernate mode

  • Great! I'll stay in touch with you to continue to optimise...

Log in to reply