Skip to content

Commit feb4900

Browse files
committed
Update user manual content and images, add hw page cta to user manual
1 parent 002b71b commit feb4900

File tree

5 files changed

+114
-97
lines changed

5 files changed

+114
-97
lines changed

content/hardware/09.kits/maker/nesso-n1/product.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: Nesso N1
33
url_shop: https://store.arduino.cc/products/nesso-n1
4-
# primary_button_url: /tutorials/nesso-n1/getting-started
5-
# primary_button_title: Get Started
4+
primary_button_url: /tutorials/nesso-n1/user-manual
5+
primary_button_title: User Manual
66
core: RISC-V
77
forumCategorySlug: '/hardware/kits/nesso-n1'
88
sku: [TPX00227]
1.01 MB
Loading
7.67 KB
Loading
-46.9 KB
Loading

content/hardware/09.kits/maker/nesso-n1/tutorials/user-manual/content.md

Lines changed: 112 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ software:
2323
- web-editor
2424
---
2525

26-
The **Arduino® Nesso N1** is an all-in-one enclosed development board. Based on the ESP32-C6 System on Chip (SoC), it integrates a suite of communication protocols, including 2.4 GHz Wi-Fi® 6, Bluetooth® 5, 802.15.4 (Thread/Zigbee®), and long-range LoRa®. It also includes a 1.14" color touchscreen, buttons, and a built-in LiPo battery for immediate user interaction in portable applications.
26+
The **Arduino® Nesso N1** is an all-in-one enclosed development board. Based on the ESP32-C6 System on Chip (SoC), it integrates a suite of communication protocols, including 2.4 GHz Wi-Fi® 6, Bluetooth® 5.3 LE, 802.15.4 (Thread/Zigbee®), and long-range LoRa®. It also includes a 1.14" color touchscreen, buttons, and a built-in LiPo battery for immediate user interaction in portable applications.
2727

2828
This document serves as a comprehensive user manual for the Nesso N1, providing technical specifications, setup guides, and detailed explanations of its features to help you bring your projects to life.
2929

@@ -59,7 +59,7 @@ The full datasheet is available as a downloadable PDF from the link below:
5959

6060
### Main Components
6161

62-
- **ESP32-C6 SoC**: A powerful single-core RISC-V microcontroller with integrated Wi-Fi® 6, Bluetooth® 5, and 802.15.4 radios.
62+
- **ESP32-C6 SoC**: A powerful single-core RISC-V microcontroller with integrated Wi-Fi® 6, Bluetooth® 5.3 LE, and 802.15.4 radios.
6363
- **SX1262 LoRa® Module**: A long-range, low-power LoRa® transceiver for communication in remote or challenging environments.
6464
- **1.14" Color Touchscreen**: An intuitive IPS display for user interaction and data visualization.
6565
- **BMI270 IMU**: A 6-axis Inertial Measurement Unit for precise motion and orientation sensing.
@@ -115,52 +115,13 @@ The Nesso N1 can be powered in three ways:
115115

116116
***WARNING: Handle the internal LiPo battery with care. Do not puncture, short-circuit, or expose it to high temperatures.***
117117

118-
### Battery Management
118+
## Battery Management
119119

120120
The board incorporates a power management system featuring the **AW32001** power path management chip and the **BQ27220** battery monitoring chip. This system provides:
121121

122122
- **Automatic Charging**: The battery charges automatically when a 5 V source is connected via USB-C®.
123123
- **Real-Time Monitoring**: You can programmatically access battery voltage, current, and capacity to monitor the power status of your application.
124124
- **Over-Current & Over-Voltage Protection**: Ensures safe and stable operation during charging and discharging cycles.
125-
- **Power Source Detection**: The `VIN_DETECT` expander pin can be read to determine if external power is connected (`HIGH` if connected, `LOW` if running on battery).
126-
- **Digital Power Off**: The `POWEROFF` expander pin allows you to shut down the device programmatically.
127-
128-
You can interact with the battery system using the `NessoBattery` object and expander pins.
129-
130-
```arduino
131-
#include "Arduino.h"
132-
133-
// The NessoBattery object is available by default
134-
NessoBattery battery;
135-
136-
void setup() {
137-
Serial.begin(115200);
138-
139-
// Enable battery charging (it is enabled by default)
140-
battery.enableCharge();
141-
142-
// Configure VIN_DETECT as an input
143-
pinMode(VIN_DETECT, INPUT);
144-
}
145-
146-
void loop() {
147-
// Check if external power is connected
148-
if (digitalRead(VIN_DETECT) == HIGH) {
149-
Serial.println("External power connected.");
150-
} else {
151-
Serial.println("Running on battery.");
152-
}
153-
154-
delay(5000);
155-
156-
// Example: power off the device after 30 seconds
157-
if (millis() > 30000) {
158-
Serial.println("Powering off...");
159-
pinMode(POWEROFF, OUTPUT);
160-
digitalWrite(POWEROFF, HIGH); // This will shut down the device
161-
}
162-
}
163-
```
164125

165126
## Microcontroller (ESP32-C6)
166127

@@ -174,7 +135,7 @@ At the core of the Nesso N1 is the **ESP32-C6**, a highly integrated SoC from Es
174135
The ESP32-C6 features a comprehensive set of connectivity options:
175136

176137
- 2.4 GHz Wi-Fi® 6 (802.11ax).
177-
- Bluetooth® 5 and Bluetooth® Low Energy.
138+
- Bluetooth® 5.3 Low Energy.
178139
- 802.15.4 radio for Thread and Zigbee® protocols.
179140
- Support for the Matter protocol.
180141

@@ -229,51 +190,60 @@ The Nesso N1 uses two PI4IOE5V6408 I/O expanders (addresses `0x43` and `0x44`) t
229190

230191
To use an expander pin, you must first initialize it with `pinMode()`, then you can use `digitalWrite()` and `digitalRead()` as with standard pins.
231192

232-
## Built-in Programmable LED
233193

234-
The board has an onboard green LED that can be controlled using the `LED_BUILTIN` object. It is visible on the side of the board through the power button gaps.
194+
## Battery
235195

236-
![Built-in LED](assets/built-in-led.png)
196+
You can interact with the battery system using the `NessoBattery` object and expander pins.
197+
198+
### Enable Charge
237199

238200
```arduino
239-
#include "Arduino.h"
201+
// The NessoBattery object is available by default
202+
NessoBattery battery;
240203
241204
void setup() {
242-
// Configure the built-in LED as an output
243-
pinMode(LED_BUILTIN, OUTPUT);
205+
Serial.begin(115200);
206+
207+
// Enable battery charging (it is enabled by default)
208+
battery.enableCharge();
209+
244210
}
245211
246212
void loop() {
247-
// Blink the LED
248-
digitalWrite(LED_BUILTIN, LOW); // Turn LED ON
249-
delay(500);
250-
digitalWrite(LED_BUILTIN, HIGH); // Turn LED OFF
251-
delay(500);
252213
}
253214
```
215+
### Read Battery Voltage
254216

255-
***Please note that `LED_BUILTIN` uses inverted logic. Writing `LOW` to the pin turns the LED on, while writing `HIGH` turns it off.***
217+
218+
Additionally the `VIN_DETECT` expander pin can be read to determine if external power is connected (`HIGH` if connected, `LOW` if running on battery).
219+
220+
221+
## Buttons and LED
222+
223+
The Nesso N1 features several physical controls for user interaction.
256224

257225
### Power Button
258226

259-
A multi-function button for power control:
227+
The Nesso N1 has a multi-function button for power control:
260228

261229
- **Click (from off state)**: Power on.
262230
- **Click (from on state)**: Reset the device.
263-
- **Double-click (during startup)**: Power off.
231+
- **Double-click (from on state)**: Power off.
264232
- **Press and hold (from on state)**: Enter Download/Bootloader mode.
265233

266234
![Power Button](assets/power-button.png)
267235

236+
237+
Additionally the `POWEROFF` expander pin allows you to shut down the device programmatically.
238+
239+
268240
### User Buttons
269241

270-
The Nesso N1 has two physical buttons, **KEY1** and **KEY2**, that are connected to the I/O expander. These can be read using `digitalRead()`.
242+
The board has two physical buttons, **KEY1** and **KEY2**, that are connected to the I/O expander. These can be read using `digitalRead()`.
271243

272244
![User Buttons](assets/programmable-buttons.png)
273245

274246
```arduino
275-
#include "Arduino.h"
276-
277247
void setup() {
278248
Serial.begin(115200);
279249
pinMode(KEY1, INPUT_PULLUP);
@@ -292,14 +262,38 @@ void loop() {
292262
}
293263
```
294264

265+
### Built-in Programmable LED
266+
267+
The board has an onboard green LED that can be controlled using the `LED_BUILTIN` object. It is visible on the side of the board through the power button gaps.
268+
269+
![Built-in LED](assets/built-in-led.png)
270+
271+
```arduino
272+
void setup() {
273+
// Configure the built-in LED as an output
274+
pinMode(LED_BUILTIN, OUTPUT);
275+
}
276+
277+
void loop() {
278+
// Blink the LED
279+
digitalWrite(LED_BUILTIN, LOW); // Turn LED ON
280+
delay(500);
281+
digitalWrite(LED_BUILTIN, HIGH); // Turn LED OFF
282+
delay(500);
283+
}
284+
```
285+
286+
***Please note that `LED_BUILTIN` uses inverted logic. Writing `LOW` to the pin turns the LED on, while writing `HIGH` turns it off.***
287+
288+
295289
## Display & Touchscreen
296290

297291
The Nesso N1 features a 1.14-inch IPS color touchscreen with a resolution of 135 x 240 pixels.
298292

299293
- **Display Controller**: ST7789, controlled via SPI.
300294
- **Touch Controller**: FT6336U, controlled via I2C.
301295

302-
The display can be programmed using the **M5GFX** library, which is included as a dependency in the board package.
296+
The display can be programmed using the **M5GFX** library, which can be installed using the Arduino IDE Library Manager.
303297

304298
Here is an example to display touch input as text on the screen:
305299

@@ -350,13 +344,15 @@ void loop() {
350344
The ESP32-C6 provides a rich set of wireless protocols, making the Nesso N1 a powerful hub for IoT projects.
351345

352346
- **Wi-Fi® 6**: Offers higher efficiency, lower latency, and improved performance in dense wireless environments.
353-
- **Bluetooth® 5 & BLE**: Enables communication with a wide range of mobile devices and low-power sensors.
347+
- **Bluetooth® 5.3 Low Energy (LE)**: Enables communication with a wide range of mobile devices and low-power sensors.
354348
- **Thread & Zigbee®**: The 802.15.4 radio allows the Nesso N1 to participate in low-power mesh networks, essential for smart home and industrial applications. It also supports the **Matter** protocol for interoperability.
355349

356350
### LoRa®
357351

358352
The onboard **SX1262** module provides long-range, low-power communication capabilities, operating in the 850–960 MHz frequency range. It comes with a detachable external antenna that connects via an MMCX connector.
359353

354+
![LoRa® Antenna Attached](assets/antenna-mounted.png)
355+
360356
***WARNING: To avoid damage to your board, always use the LoRa® module with the antenna attached.***
361357

362358
The LoRa® module is controlled via SPI and several dedicated pins on both the ESP32-C6 and the I/O expander.
@@ -417,39 +413,74 @@ void loop() {
417413

418414
The **BMI270** is a high-performance 6-axis Inertial Measurement Unit (IMU) that combines a 3-axis accelerometer and a 3-axis gyroscope. It connects to the ESP32-C6 via the I2C bus (`SCL` on GPIO8, `SDA` on GPIO10) and provides an interrupt signal on `SYS_IRQ` (GPIO3). It is ideal for motion tracking, gesture recognition, and orientation sensing.
419415

420-
Here is a minimal example using the [SparkFun BMI270 library](https://github.com/sparkfun/SparkFun_BMI270_Arduino_Library):
416+
Here is a minimal example using the [Arduino_BMI270_BMM150](https://github.com/arduino-libraries/arduino_bmi270_bmm150) library:
421417

422418
```arduino
423-
#include <SparkFun_BMI270_Arduino_Library.h>
424-
425-
BMI270 imu;
426-
TwoWire& i2c_bus = Wire;
419+
#include <Arduino_BMI270_BMM150.h>
427420
428421
void setup() {
429422
Serial.begin(115200);
430-
i2c_bus.begin();
423+
while (!Serial); // Wait for serial port to connect
431424
432-
if (!imu.beginI2C(i2c_bus)) {
433-
Serial.println("BMI270 not found. Halting.");
434-
while(1);
425+
Serial.println("Initializing IMU...");
426+
if (!IMU.begin()) {
427+
Serial.println("Failed to initialize IMU!");
428+
while (1);
435429
}
430+
431+
Serial.print("Accel Rate: ");
432+
Serial.print(IMU.accelerationSampleRate());
433+
Serial.println(" Hz");
434+
435+
Serial.print("Gyro Rate: ");
436+
Serial.print(IMU.gyroscopeSampleRate());
437+
Serial.println(" Hz");
438+
439+
Serial.println("X\tY\tZ\t\t| X\tY\tZ");
440+
Serial.println("Accel (g)\t\t| Gyro (°/s)");
436441
}
437442
438443
void loop() {
439-
// Get all sensor data
440-
imu.getSensorData();
441-
442-
Serial.print("Accel X: ");
443-
Serial.print(imu.getAccelX());
444-
Serial.print("\tY: ");
445-
Serial.print(imu.getAccelY());
446-
Serial.print("\tZ: ");
447-
Serial.println(imu.getAccelZ());
444+
float ax, ay, az;
445+
float gx, gy, gz;
446+
447+
if (IMU.accelerationAvailable() && IMU.gyroscopeAvailable()) {
448+
IMU.readAcceleration(ax, ay, az);
449+
IMU.readGyroscope(gx, gy, gz);
450+
451+
Serial.print(ax, 2);
452+
Serial.print('\t');
453+
Serial.print(ay, 2);
454+
Serial.print('\t');
455+
Serial.print(az, 2);
456+
Serial.print("\t| ");
457+
Serial.print(gx, 2);
458+
Serial.print('\t');
459+
Serial.print(gy, 2);
460+
Serial.print('\t');
461+
Serial.println(gz, 2);
462+
}
448463
449464
delay(100);
450465
}
451466
```
452467

468+
### Buzzer
469+
470+
A passive buzzer connected to `BEEP_PIN` (GPIO11) provides audible feedback. You can generate simple tones using the standard `tone()` function.
471+
472+
```arduino
473+
void setup() {
474+
// No setup needed for tone()
475+
}
476+
477+
void loop() {
478+
// Play a 1 kHz tone for 500 ms
479+
tone(BEEP_PIN, 1000, 500);
480+
delay(2000);
481+
}
482+
```
483+
453484
### Infrared (IR) Transmitter
454485

455486
An onboard IR LED connected to `IR_TX_PIN` (GPIO9) allows the Nesso N1 to function as a remote control for various electronic devices.
@@ -472,21 +503,7 @@ void loop() {
472503
}
473504
```
474505

475-
### Buzzer
476-
477-
A passive buzzer connected to `BEEP_PIN` (GPIO11) provides audible feedback. You can generate simple tones using the standard `tone()` function.
478-
479-
```arduino
480-
void setup() {
481-
// No setup needed for tone()
482-
}
483-
484-
void loop() {
485-
// Play a 1 kHz tone for 500 ms
486-
tone(BEEP_PIN, 1000, 500);
487-
delay(2000);
488-
}
489-
```
506+
***Please note: There is a known hardware timer conflict between the tone() function and the IRremote library. To use both features in the same sketch, you must fully reset the pin and re-initialize the IR sender before each transmission. First, set the pin mode to INPUT to release it from the timer, then call IrSender.begin() to reconfigure it for IR.***
490507

491508
## Expansion Ports
492509

0 commit comments

Comments
 (0)