Skip to content

Commit 6e2b028

Browse files
committed
Add Nano RP2040 Connect support (#301)
* Add Nano RP2040 Connect support * Update readme
1 parent 8ed3ad1 commit 6e2b028

File tree

5 files changed

+36
-20
lines changed

5 files changed

+36
-20
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ jobs:
5454
# BUILDING EXAPLE FOR EACH PLATFORM
5555
arduino-cli core update-index
5656
arduino-cli lib update-index
57+
arduino-cli lib install WiFiNINA
5758
# Build all demos
5859
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
5960
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_addtwoints_service -v
@@ -63,11 +64,13 @@ jobs:
6364
arduino-cli compile --fqbn OpenCR:OpenCR:OpenCR /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_tf_publisher -v
6465
arduino-cli compile --fqbn teensy:avr:teensy41 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_time_sync -v
6566
# Build one demo for each platform
67+
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
68+
arduino-cli compile --fqbn arduino:mbed:nanorp2040connect /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v
6669
arduino-cli compile --fqbn teensy:avr:teensy31 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
6770
arduino-cli compile --fqbn teensy:avr:teensy35 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
6871
arduino-cli compile --fqbn teensy:avr:teensy41 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
6972
arduino-cli compile --fqbn arduino:samd:arduino_zero_native /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
7073
arduino-cli compile --fqbn arduino:sam:arduino_due_x /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
7174
# arduino-cli compile --fqbn arduino:mbed:envie_m4 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
7275
arduino-cli compile --fqbn arduino:mbed:envie_m7 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher -v
73-
arduino-cli compile --fqbn arduino:mbed:envie_m7 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v
76+
arduino-cli compile --fqbn arduino:mbed:envie_m7 /github/home/Arduino/libraries/micro_ros_arduino/examples/micro-ros_publisher_wifi -v

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ As the build process for ROS 2 and micro-ROS is based on custom meta-build syste
55

66
Supported boards are:
77

8-
| Board | Min version | State | Details | Prebuild meta |
9-
| ------------------------------------------------------------------------ | ----------- | ---------- | --------------------------------------------------------------------------------------------------- | -------------------- |
10-
| [Arduino Portenta H7 M7 Core](https://store.arduino.cc/portenta-h7) | v1.8.5 | Supported | Official Arduino support | `colcon.meta` |
11-
| [OpenCR](https://emanual.robotis.com/docs/en/parts/controller/opencr10/) | v1.4.16 | Supported | [Based on custom board](https://emanual.robotis.com/docs/en/parts/controller/opencr10/#arduino-ide) | `colcon.meta` |
12-
| [Teensy 4.0](https://www.pjrc.com/store/teensy40.html) | v1.8.5 | Not tested | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon.meta` |
13-
| [Teensy 4.1](https://www.pjrc.com/store/teensy41.html) | v1.8.5 | Supported | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon.meta` |
14-
| [Teensy 3.2/3.1](https://www.pjrc.com/store/teensy32.html) | v1.8.5 | Supported | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon_lowmem.meta` |
15-
| [Teensy 3.5](https://www.pjrc.com/store/teensy35.html) | v1.8.5 | Not tested | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon_lowmem.meta` |
8+
| Board | Min version | State | Details | Prebuild meta |
9+
| ----------------------------------------------------------------------------------- | ----------- | ---------- | --------------------------------------------------------------------------------------------------- | ------------------------ |
10+
| [Arduino Portenta H7 M7 Core](https://store.arduino.cc/portenta-h7) | v1.8.5 | Supported | Official Arduino support | `colcon.meta` |
11+
| [Arduino Nano RP2040 Connect](https://docs.arduino.cc/hardware/nano-rp2040-connect) | v1.8.5 | Supported | Official Arduino support | `colcon_verylowmem.meta` |
12+
| [OpenCR](https://emanual.robotis.com/docs/en/parts/controller/opencr10/) | v1.4.16 | Supported | [Based on custom board](https://emanual.robotis.com/docs/en/parts/controller/opencr10/#arduino-ide) | `colcon.meta` |
13+
| [Teensy 4.0](https://www.pjrc.com/store/teensy40.html) | v1.8.5 | Not tested | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon.meta` |
14+
| [Teensy 4.1](https://www.pjrc.com/store/teensy41.html) | v1.8.5 | Supported | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon.meta` |
15+
| [Teensy 3.2/3.1](https://www.pjrc.com/store/teensy32.html) | v1.8.5 | Supported | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon_lowmem.meta` |
16+
| [Teensy 3.5](https://www.pjrc.com/store/teensy35.html) | v1.8.5 | Not tested | [Based on Teensyduino](https://www.pjrc.com/teensy/td_download.html) | `colcon_lowmem.meta` |
1617

1718
Community contributed boards are:
1819

examples/micro-ros_publisher_wifi/micro-ros_publisher_wifi.ino

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
#include <std_msgs/msg/int32.h>
1010

11-
#ifndef TARGET_PORTENTA_H7_M7
12-
#error This example is only avaible for Arduino Portenta
11+
#if !defined(TARGET_PORTENTA_H7_M7) && !defined(ARDUINO_NANO_RP2040_CONNECT)
12+
#error This example is only avaible for Arduino Portenta and Arduino Nano RP2040 Connect
1313
#endif
1414

1515
rcl_publisher_t publisher;
@@ -32,7 +32,7 @@ void error_loop(){
3232
}
3333

3434
void timer_callback(rcl_timer_t * timer, int64_t last_call_time)
35-
{
35+
{
3636
RCLC_UNUSED(last_call_time);
3737
if (timer != NULL) {
3838
RCSOFTCHECK(rcl_publish(&publisher, &msg, NULL));
@@ -42,10 +42,10 @@ void timer_callback(rcl_timer_t * timer, int64_t last_call_time)
4242

4343
void setup() {
4444
set_microros_wifi_transports("WIFI SSID", "WIFI PASS", "192.168.1.57", 8888);
45-
45+
4646
pinMode(LED_PIN, OUTPUT);
47-
digitalWrite(LED_PIN, HIGH);
48-
47+
digitalWrite(LED_PIN, HIGH);
48+
4949
delay(2000);
5050

5151
allocator = rcl_get_default_allocator();

src/micro_ros_arduino.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,15 @@ static inline void set_microros_transports(){
3232
);
3333
}
3434

35-
#ifdef TARGET_PORTENTA_H7_M7
35+
#if defined(TARGET_PORTENTA_H7_M7) || defined(ARDUINO_NANO_RP2040_CONNECT)
3636

37+
#if defined(TARGET_PORTENTA_H7_M7)
3738
#include <WiFi.h>
3839
#include <WiFiUdp.h>
40+
#else defined(ARDUINO_NANO_RP2040_CONNECT)
41+
#include <SPI.h>
42+
#include <WiFiNINA.h>
43+
#endif
3944

4045
extern "C" bool arduino_wifi_transport_open(struct uxrCustomTransport * transport);
4146
extern "C" bool arduino_wifi_transport_close(struct uxrCustomTransport * transport);
@@ -67,6 +72,6 @@ static inline void set_microros_wifi_transports(char * ssid, char * pass, char *
6772
);
6873
}
6974

70-
#endif // TARGET_PORTENTA_H7_M7
75+
#endif
7176

7277
#endif // MICRO_ROS_ARDUINO

src/wifi_transport.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
#ifdef TARGET_PORTENTA_H7_M7
1+
#if defined(TARGET_PORTENTA_H7_M7) || defined(ARDUINO_NANO_RP2040_CONNECT)
22

33
#include <Arduino.h>
4+
5+
6+
#if defined(TARGET_PORTENTA_H7_M7)
47
#include <WiFi.h>
58
#include <WiFiUdp.h>
9+
#else defined(ARDUINO_NANO_RP2040_CONNECT)
10+
#include <SPI.h>
11+
#include <WiFiNINA.h>
12+
#endif
613

714
#include <micro_ros_arduino.h>
815

@@ -48,10 +55,10 @@ extern "C"
4855
}
4956

5057
size_t readed = udp_client.read(buf, len);
51-
58+
5259
return (readed < 0) ? 0 : readed;
5360
}
5461
}
5562

56-
#endif // TARGET_PORTENTA_H7_M7
63+
#endif
5764

0 commit comments

Comments
 (0)