Espruino WiFi

Espruino WiFi

Buy Now

From £30

Or £21.60 in volume

Espruino Shop
🌎 Distributors

Note: Espruino WiFi provides an easy, well-supported way to get on the Internet, however it's not the only way to access a WiFi network from an Espruino board. See here for more information.

Features

Pinout

Hover the mouse over a pin function for more information. Clicking in a function will tell you how to use it in Espruino.

A10 PWM USART1 RX
A8 I2C3 SCL PWM USART1 CK
ADC PWM A0
ADC PWM A1
ADC USART2 CK A4
ADC PWM SPI1 SCK A5
ADC PWM SPI1 MISO A6
ADC PWM SPI1 MOSI A7
ADC PWM B1
I2C2 SCL PWM SPI2 SCK B10
PWM SPI2 SCK B13
PWM SPI2 MISO B14
PWM SPI2 MOSI B15

Pins not on connectors

A2 ! ADC ESP8266 PWM USART2 TX
A3 ! ADC ESP8266 PWM USART2 RX
A9 USB PWM USART1 TX
A11 USB PWM USART6 TX
A12 USB USART6 RX
A13 ! ESP8266
A14 ! ESP8266
A15 ! ESP8266 PWM
B2 LED1 BOOT1
B12 LED2
C13 BTN1
C14 OSC RTC
C15 OSC RTC
H0 OSC
H1 OSC

Note: Unlike Espruino Pico and the original Espruino board, Espruno WiFi doesn't contain any battery switchover circuitry. The +/+VUSB pin is connected straight to USB 5V, and shouldn't be used to power the WiFi board while Micro USB is plugged in, unless it is via a diode from 5V.

Information

Using WiFi

Connecting to an AP

To use wifi, simply require the Wifi module and call connect:

var WIFI_NAME = "";
var WIFI_OPTIONS = { password : "" };

var wifi = require("Wifi");
wifi.connect(WIFI_NAME, WIFI_OPTIONS, function(err) {
  if (err) {
    console.log("Connection error: "+err);
    return;
  }
  console.log("Connected!");
  getPage();
});

function getPage() {
  require("http").get("http://www.pur3.co.uk/hello.txt", function(res) {
    console.log("Response: ",res);
    res.on('data', function(d) {
      console.log("--->"+d);
    });
  });
}

Note: If you want Espruino to connect at power on after you have saved, make sure that you call the WiFi initialisation code inside an onInit function - eg:

var WIFI_NAME = "";
var WIFI_OPTIONS = { password : "" };

var wifi;

function onInit() {
  wifi = require("Wifi");
  wifi.connect(WIFI_NAME, WIFI_OPTIONS, function(err) {
    if (err) {
      console.log("Connection error: "+err);
      return;
    }
    console.log("Connected!");
    getPage();
  });
}

Access Point Mode

Espruino WiFi can be made into a WiFi access point with:

var wifi = require("Wifi");

wifi.startAP('EspruinoAP', { password: '0123456789', authMode: 'wpa2' }, function(err) {
  if (err) throw err;
  console.log("Connected!");
});

See the reference below for more information. startAP and connect can be used together to make Espruino become an access point while also connecting to another WiFi network. In that case, it'll have the DHCP-assigned IP address on the WiFi network it is connected to, and the IP address 192.168.4.1 on the access point it has created.

WiFi events

You can also be notified on particular WiFi events:

wifi.on('associated',function() { console.log("We're connected to an AP"); });
wifi.on('connected',function() { console.log("We have an IP Address"); });
wifi.on('disconnected',function() { console.log("We disconnected"); });

Reference

On Espruino firmwares version 1v96 and later, WiFi functionality is now built in via the Wifi module accessed with require("Wifi").

On earlier (pre-1v96) versions of the Espruino WiFi firmware, WiFi functionality was implemented with the EspruinoWiFi JS module which is accessed with require("EspruinoWiFi").

/* Power on the ESP8266 and connect to the access point
      apName is the name of the access point
      options can contain 'password' which is the AP's password
      callback is called when a connection is made
*/
exports.connect = function (apName, options, callback) { ... }

/* Disconnect from the WiFi network and power down the
ESP8266.
*/
exports.disconnect = function (callback) { ... }

/* Create a WiFi access point allowing stations to connect.
     ssid - the AP's SSID
     options.password - the password - must be at least 8 characters (or 10 if all numbers)
     options.authMode - "open", "wpa2", "wpa", "wpa_wpa2"
     options.channel - the channel of the AP
*/
exports.startAP = function (ssid, options, callback) { ... }

/* Stop being an access point and disable the AP operation mode.
   AP mode can be re-enabled by calling startAP.
*/
exports.stopAP = function (callback) { ... }

/* Scan for access points, and call the callback(err, result) with
   an array of {ssid, authMode, rssi, mac, channel}
*/
exports.scan = function (callback) { ... }

/* Get the IP and MAC address when connected to an AP and call
`callback(err, { ip : ..., mac : ...})`. If err isn't null,
it contains a string describing the error. You must be connected to
an access point to be able to call this successfully. For AP mode use getAPIP
*/
exports.getIP = function (callback) { ... }

/* Set WiFi station IP address. Call with
either: wifi.setAPIP(undefined, callback) // enable DHCP (the default) - can take a few seconds to complete
either: wifi.setAPIP({ip:"192.168.1.9"}, callback) // disable DHCP, use static IP
or: wifi.setIP({ip:"192.168.1.9", gw:"192.168.1.1", netmask:"255.255.255.0"}, callback) // disable DHCP, use static IP
You must be connected to an access point to be able to call this successfully
*/
exports.setIP = function (settings, callback) { ... }

/* Calls the callback with {ip,gw,netmask,mac} of the WiFi Access Point.
You must be in AP mode with startAP to get useful values returned.
*/
exports.getAPIP = function (callback) { ... }

/* Set WiFi access point details. Call with
either: wifi.setAPIP({ip:"192.168.1.1"}, callback)
or: wifi.setAPIP({ip:"192.168.1.1", gw:"192.168.1.1", netmask:"255.255.255.0"}, callback)
You must be in AP mode with startAP to be able to call this successfully
*/
exports.setAPIP = function (settings, callback) { ... }

// Set the host name of the Espruino WiFi - so it can be accessed via DNS.
exports.setHostname = function (hostname, callback) { ... }

/* Ping the given address. Callback is called with the ping time
in milliseconds, or undefined if there is an error
*/
exports.ping = function (addr, callback) { ... }

/* Switch to using a higher communication speed with the WiFi module.

* `true` = 921600 baud
* `false` = 115200
* `1843200` (or any number) = use a specific baud rate.
*
eg. `wifi.turbo(true,callback)` or `wifi.turbo(1843200,callback)`
*/
exports.turbo = function (enable, callback) { ... }

// This function returns some of the internal state of the WiFi module, and can be used for debugging
exports.debug = function () { ... }

Tutorials

Tutorials using the Espruino WiFi Board:

Handling POSTed data from FormsHandling POSTed data from FormsHome Automation with Raspberry Pi, MQTT, and EspruinoHome Automation with Raspberry Pi, MQTT, and EspruinoQuick Start (USB)Quick Start (USB)Quick Start (Writing Code)Quick Start (Writing Code)Logging to Google SheetsLogging to Google SheetsStoring HTTPS CertificatesStoring HTTPS CertificatesYouTube View CounterYouTube View Counter

There aren't currently many tutorials specifically for the Espruino WiFi, however it can be used just like the Espruino Pico, which has many more tutorials available:

5 Minute Wire Loop Game5 Minute Wire Loop GameAA/AAA Battery ChargerAA/AAA Battery ChargerAdvanced DebugAdvanced DebugArduino Pico adaptor boardArduino Pico adaptor boardControlling Pico from a ComputerControlling Pico from a ComputerEspruino Home ComputerEspruino Home ComputerEspruino Web IDEEspruino Web IDEFlappy Bird GameFlappy Bird GameImage Slideshow with ILI9341 displayImage Slideshow with ILI9341 displayInteractive Web-based UIInteractive Web-based UILow-level STM32 Peripheral accessLow-level STM32 Peripheral accessPico ButtonsPico ButtonsPico ClockPico ClockPico Electronic DicePico Electronic DicePico FET OutputPico FET OutputPico Infrared Transmit and ReceivePico Infrared Transmit and ReceivePico LCD Display Hello WorldPico LCD Display Hello WorldPico Light SensorPico Light SensorPico PianoPico PianoPico VibrationPico VibrationPico Weather StationPico Weather StationSlot MachineSlot MachineSnake GameSnake Game

Hardware Limitations

Troubleshooting

Please see the Troubleshooting section.

Firmware Updates

We'd strongly recommend that you use the Web IDE to update the firmware on this board - See The Download page for instructions.

In case you manage to erase all your board's flash memory you can use the on-chip bootloader though - see below.

Advanced Reflashing

In very rare cases (if you are experimenting with writing to Flash Memory), you may be able to damage the bootloader, which will effecitively 'brick' the Espruino WiFi.

To fix this, you'll have to use the hard-wired USB DFU (Device Firmware Upgrade) bootloader. You can also use this method for flashing non-Espruino firmwares to Espruino.

Just:

Other Official Espruino Boards

Espruino PicoEspruino PicoMDBT42Q Bluetooth ModuleMDBT42Q Bluetooth ModuleOriginal Espruino BoardOriginal Espruino BoardPixl.jsPixl.jsPuck.jsPuck.js

This page is auto-generated from GitHub. If you see any mistakes or have suggestions, please let us know.