Skip to content

Commit a63510d

Browse files
committed
Merge branch 'main' of https://github.com/arduino/docs-content into 91volt/nesso-n1-fix-cloud-editor-reference
2 parents 2c11a56 + a0ebdc9 commit a63510d

File tree

3 files changed

+121
-23
lines changed
  • content/hardware

3 files changed

+121
-23
lines changed

content/hardware/02.uno/boards/uno-q/tutorials/01.user-manual/content.md

Lines changed: 96 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -785,22 +785,109 @@ The `Bridge` library provides a communication layer built on top of the `Arduino
785785
- **MPU side (Qualcomm QRB, Linux)**: Runs higher-level services and can remotely invoke MCU functions.
786786
- **MCU side (STM32, Zephyr RTOS)**: Handles time-critical tasks and exposes functions to the MPU via RPC.
787787

788+
#### The Arduino Router (Infrastructure)
789+
790+
Under the hood, the communication is managed by a background Linux service called the Arduino Router (`arduino-router`).
791+
792+
While the `Bridge` library is what you use in your code, the Router is the traffic controller that makes it possible. It implements a **Star Topology** network using MessagePack RPC.
793+
794+
**Key Features:**
795+
796+
- **Multipoint Communication:** Unlike simple serial communication (which is typically point-to-point), the Router allows multiple Linux processes to communicate with the MCU simultaneously (and with each other).
797+
798+
**Linux ↔ MCU:** Multiple Linux processes can interact with the MCU simultaneously (e.g., a Python® script reading sensors while a separate C++ application commands motors).
799+
800+
**Linux ↔ Linux:** You can use the Router to bridge different applications running on the MPU. For example, a Python script can expose an RPC function that another Python® or C++ application calls directly, allowing services to exchange data without involving the MCU at all.
801+
802+
- **Service Discovery:** Clients (like your Python® script or the MCU Sketch) "register" functions they want to expose. The Router keeps a directory of these functions and routes calls to the correct destination.
803+
804+
**Managing the Router Service**
805+
806+
The arduino-router runs automatically as a system service. In most cases, you do not need to interact with it directly. However, if you are debugging advanced issues or need to restart the communication stack, you can control it via the Linux terminal:
807+
808+
**Check Status** To see if the router is running and connected:
809+
```bash
810+
systemctl status arduino-router
811+
```
812+
**Restart the Service** If the communication seems stuck, you can restart the router without rebooting the board:
813+
```bash
814+
sudo systemctl restart arduino-router
815+
```
816+
**View Logs** To view the real-time logs for debugging (e.g., to see if RPC messages are being rejected or if a client has disconnected):
817+
```bash
818+
journalctl -u arduino-router -f
819+
```
820+
821+
To capture more detailed information in the logs, you can append the `--verbose` argument to the systemd service configuration.
822+
823+
- Open the service file for editing:
824+
```bash
825+
sudo nano /etc/systemd/system/arduino-router.service
826+
```
827+
828+
- Locate the line beginning with `ExecStart=` and append `--verbose` to the end of the command. The updated service file should look like this:
829+
830+
```bash
831+
[Unit]
832+
Description=Arduino Router Service
833+
After=network-online.target
834+
Wants=network-online.target
835+
Requires=
836+
837+
[Service]
838+
# Put the micro in a ready state.
839+
ExecStartPre=-/usr/bin/gpioset -c /dev/gpiochip1 -t0 37=0
840+
ExecStart=/usr/bin/arduino-router --unix-port /var/run/arduino-router.sock --serial-port /dev/ttyHS1 --serial-baudrate 115200 --verbose # <--- ADD THIS
841+
# End the boot animation after the router is started.
842+
ExecStartPost=/usr/bin/gpioset -c /dev/gpiochip1 -t0 70=1
843+
StandardOutput=journal
844+
StandardError=journal
845+
Restart=always
846+
RestartSec=3
847+
848+
[Install]
849+
WantedBy=multi-user.target
850+
```
851+
852+
- You must reload the systemd daemon for the configuration changes to take effect.
853+
854+
```bash
855+
sudo systemctl daemon-reload
856+
```
857+
858+
- Restart the Router:
859+
860+
```bash
861+
sudo systemctl restart arduino-router
862+
```
863+
864+
- View the verbose logs:
865+
866+
```bash
867+
journalctl -u arduino-router -f
868+
```
869+
788870
#### Core Components
789871

790-
`BridgeClass`
791-
- Main class managing RPC clients and servers. Provides methods to:
792-
- Initialize the bridge (`begin()`)
793-
- Call remote procedures (`call()`)
794-
- Notify without waiting for a response (`notify()`)
795-
- Expose local functions for remote execution (`provide()`, `provide_safe()`)
796-
- Process incoming requests (`update()`)
872+
`BridgeClass` The main class managing RPC clients and servers.
873+
- `begin()`: Initializes the bridge and the internal serial transport.
874+
- `call(method, args...)`: Invokes a function on the Linux side and waits for a result.
875+
- `notify(method, args...)`: Invokes a function on the Linux side without waiting for a response (fire-and-forget).
876+
- `provide(name, function)`: Exposes a local MCU function to Linux. Note: The function executes in the high-priority background RPC thread. Keep these functions short and thread-safe.
877+
- `provide_safe(name, function)`: Exposes a local MCU function, but ensures it executes within the main `loop()` context. Use this if your function interacts with standard Arduino APIs (like `digitalWrite` or `Serial`) to avoid concurrency crashes.
878+
879+
***__Warning:__ Do not use `Bridge.call()` or `Monitor.print()` inside `provide()` functions. Initiating a new communication while responding to one causes system deadlocks.***
797880

881+
`RpcCall`
882+
- Helper class representing an asynchronous RPC. If its `.result` method is invoked, it waits for the response, extracts the return value, and propagates error codes if needed.
798883

799-
`RpcResult`
800-
- Helper class representing the result of a remote call. It waits for the response, extracts the return value, and propagates error codes if needed.
884+
`Monitor`
885+
- The library includes a pre-defined Monitor object. This allows the Linux side to send text streams to the MCU (acting like a virtual Serial Monitor) via the RPC method mon/write.
801886

802887
**Threading and Safety**
803888
- The bridge uses Zephyr mutexes (`k_mutex`) to guarantee safe concurrent access when reading/writing over the transport. Updates are handled by a background thread that continuously polls for requests.
889+
- **Incoming Updates**: Handled by a dedicated background thread (`updateEntryPoint`) that continuously polls for requests.
890+
- **Safe Execution**: The provide_safe mechanism hooks into the main loop (`__loopHook`) to execute user callbacks safely when the processor is idle.
804891

805892
#### Usage Example
806893

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

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ type: maker
1010

1111
<p style="text-align: justify;">Arduino® Nesso N1 (hereafter Nesso N1) is a compact, all-in-one IoT development kit powered by the ESP32-C6 microcontroller, a single-core 32-bit RISC-V CPU running at up to 160 MHz. Designed for remote monitoring and automation applications, Nesso N1 combines multiple wireless protocols, such as Wi-Fi® 6, Bluetooth® 5.3, Thread®, and LoRa® into a sleek, portable form factor with an integrated 1.14" touch display and rechargeable 250 mAh battery. Built-in sensors include a 6-axis IMU, passive buzzer, and infrared transmitter, with expansion capabilities through Grove, Qwiic, and M5StickC HAT-compatible connectors.</p>
1212

13-
<p style="text-align: justify;">Nesso N1 can be programmed using Arduino IDE, MicroPython, or UIFlow, and integrates seamlessly with Arduino Cloud for remote device management and data visualization. With comprehensive documentation, ready-to-use examples, and compatibility with Arduino Modulino® nodes and third-party accessories, Nesso N1 accelerates the development of connected devices for smart homes, industrial automation, and environmental monitoring.</p>
13+
<p style="text-align: justify;">Nesso N1 can be programmed using Arduino IDE, MicroPython, or UIFlow* (2.0), and integrates seamlessly with Arduino Cloud for remote device management and data visualization. With comprehensive documentation, ready-to-use examples, and compatibility with Arduino Modulino® nodes and third-party accessories, Nesso N1 accelerates the development of connected devices for smart homes, industrial automation, and environmental monitoring.</p>
14+
15+
<div style="background-color: rgba(255, 193, 7, 0.2); border-left: 6px solid rgba(255, 152, 0, 1); margin: 20px 0; padding: 15px;">
16+
<strong>* UIFlow v2.0 Support:</strong> UIFlow support is not yet available. Support will be available by the end of Q4 2025.
17+
</div>
1418

1519
# Target Areas
1620

@@ -350,21 +354,27 @@ Use the limits below to define the operating environment, thermal margins, and p
350354

351355
<div style="page-break-after: always;"></div>
352356

353-
## Device Operation
357+
### Programming Options
354358

355-
### Getting Started - IDE
359+
Nesso N1 supports multiple programming methods:
356360

357-
If you want to program your Nesso N1 while offline you need to install the Arduino® Desktop IDE **[1]**. To connect the Nesso N1 to your computer, you will need a Type-C® USB cable, which can also provide power to the board, as indicated by the green power LED (LED1).
361+
- **Arduino IDE** [1]
362+
- **MicroPython**
363+
- **UIFlow v2.0***
358364

359-
### Getting Started - Arduino Cloud Editor
365+
<div style="background-color: rgba(255, 193, 7, 0.2); border-left: 6px solid rgba(255, 152, 0, 1); margin: 20px 0; padding: 15px;">
366+
<strong>* UIFlow v2.0 Support:</strong> UIFlow support is not yet available. UIFlow v2.0 support is on the way for Nesso N1, with availability expected by the end of Q4 2025. This will provide a visual programming interface for rapid prototyping and educational applications.
367+
</div>
368+
369+
## Device Operation
360370

361-
All Arduino boards, including this one, work out-of-the-box on the Arduino® Cloud Editor **[2]**, by just installing a simple plugin.
371+
### Getting Started - IDE
362372

363-
The Arduino Cloud Editor is hosted online, therefore it will always be up-to-date with the latest features and support for all boards. Follow **[2]** to start coding on the browser and upload your sketches onto your board.
373+
If you want to program your Nesso N1 while offline you need to install the Arduino® Desktop IDE **[1]**. To connect the Nesso N1 to your computer, you will need a Type-C® USB cable, which can also provide power to the board, as indicated by the green power LED (LED1).
364374

365375
### Getting Started - Arduino Cloud
366376

367-
All Arduino IoT enabled products are supported on Arduino Cloud which allows you to log, graph and analyze sensor data, trigger events, and automate your home or business.
377+
All Arduino IoT enabled products are supported on Arduino Cloud **[2]** which allows you to log, graph and analyze sensor data, trigger events, and automate your home or business.
368378

369379
### Online Resources
370380

@@ -492,14 +502,15 @@ Hereby, Arduino S.r.l. declares that this product is in compliance with essentia
492502
| No. | Reference | Link |
493503
|:---:|--------------------------------|------------------------------------------------------------------------------------------|
494504
| 1 | Arduino IDE (Desktop) | [https://www.arduino.cc/en/Main/Software](https://www.arduino.cc/en/Main/Software) |
495-
| 2 | Arduino IDE (Cloud) | [https://create.arduino.cc/editor](https://create.arduino.cc/editor) |
505+
| 2 | Arduino Cloud | [https://cloud.arduino.cc/](https://cloud.arduino.cc/) |
496506
| 3 | Arduino Nesso N1 Documentation | [https://docs.arduino.cc/hardware/nesso-n1/](https://docs.arduino.cc/hardware/nesso-n1/) |
497507
| 4 | Project Hub | [https://create.arduino.cc/projecthub](https://create.arduino.cc/projecthub) |
498508
| 5 | Library Reference | [https://github.com/arduino-libraries/](https://github.com/arduino-libraries/) |
499509
| 6 | Arduino Store | [https://store.arduino.cc/](https://store.arduino.cc/) |
500510

501511
## Document Revision History
502512

503-
| **Date** | **Revision** | **Changes** |
504-
|:----------:|:------------:|---------------|
505-
| 14/10/2025 | 1 | First release |
513+
| **Date** | **Revision** | **Changes** |
514+
|:----------:|:------------:|---------------------------------------|
515+
| 20/11/2025 | 1.1 | Added UIFlow v2.0 support information |
516+
| 14/10/2025 | 1 | First release |

content/hardware/11.accessories/modulino-nodes/modulino-thermo/datasheet/datasheet.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,8 @@ These pads and the Qwiic connectors share the same I2C bus. You can optionally s
111111
### I2C Address Reference
112112
| **Board Silk Name** | **Sensor** | **Modulino® I2C Address (HEX)** | **Editable Addresses (HEX)** | **Hardware I2C Address (HEX)** |
113113
|---------------------|-----------|--------------------------------|------------------------------------------|--------------------------------|
114-
| MODULINO THERMO | HS3003 | 0x44 | Any custom address (via software config) | 0x44 |
114+
| MODULINO THERMO | HS3003 | 0x44 | Custom address not supported | 0x44 |
115115

116-
**Note:** Default address is **0x44**. Adjustments may be made via software if multiple identical sensors are on the same bus.
117116

118117
## Device Operation
119118
The Modulino® Thermo node acts as an I2C target device on the Qwiic bus. Simply connect it via a Qwiic cable to the 3.3 V I2C interface of your microcontroller. Read humidity and temperature values via standard I2C transactions.
@@ -201,6 +200,7 @@ Operation is subject to the following two conditions:
201200
# Revision History
202201
| **Date** | **Revision** | **Changes** |
203202
| ---------- | ------------ | -------------------- |
203+
| 24/11/2025 | 5 | I2C information changed |
204204
| 01/07/2025 | 4 | Certification |
205205
| 17/06/2025 | 3 | Nomenclature updates |
206206
| 23/05/2025 | 2 | Power info |

0 commit comments

Comments
 (0)