Skip to content

Commit a92f645

Browse files
authored
Merge pull request #503 from pennam/pico_w-2
Add support to Raspberry Pi Pico W
2 parents 07cbf50 + b85373e commit a92f645

File tree

10 files changed

+60
-10
lines changed

10 files changed

+60
-10
lines changed

.github/workflows/compile-examples.yml

+10
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ jobs:
9090
- fqbn: arduino:mbed_edge:edge_control
9191
type: mbed_edge
9292
artifact-name-suffix: arduino-mbed_edge-edge_control
93+
- fqbn: "rp2040:rp2040:rpipicow"
94+
type: rp2040
95+
artifact-name-suffix: rp2040-rp2040-rpipicow
9396

9497

9598
# make board type-specific customizations to the matrix jobs
@@ -303,6 +306,13 @@ jobs:
303306
- examples/ArduinoIoTCloud-DeferredOTA
304307
- examples/ArduinoIoTCloud-Notecard
305308
- examples/ArduinoIoTCloud-Schedule
309+
# PicoW
310+
- board:
311+
type: rp2040
312+
platforms: |
313+
# Install rp2040 platform via Boards Manager
314+
- name: rp2040:rp2040
315+
source-url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
306316
307317
steps:
308318
- name: Checkout

src/AIoTC_Config.h

+5
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@
137137
#define HAS_TCP
138138
#endif
139139

140+
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
141+
#define BOARD_HAS_SECRET_KEY
142+
#define HAS_TCP
143+
#endif
144+
140145
#if defined(BOARD_HAS_SOFTSE) || defined(BOARD_HAS_OFFLOADED_ECCX08) || defined(BOARD_HAS_ECCX08) || defined(BOARD_HAS_SE050)
141146
#define BOARD_HAS_SECURE_ELEMENT
142147
#endif

src/tls/AIoTCUPCert.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
******************************************************************************/
2525

2626
#include <AIoTC_Config.h>
27-
#if defined(ARDUINO_ARCH_ESP32) || defined (ARDUINO_EDGE_CONTROL)
27+
#if defined(ARDUINO_ARCH_ESP32) || defined (ARDUINO_EDGE_CONTROL) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
2828

2929
/******************************************************************************
3030
* CONSTANTS
@@ -163,6 +163,6 @@ static const char AIoTUPCert[] =
163163
"-----END CERTIFICATE-----\n";
164164
#else
165165

166-
#endif /* #ifdef ARDUINO_ARCH_ESP32 */
166+
#endif /* #ifdef ARDUINO_ARCH_ESP32 || ARDUINO_EDGE_CONTROL || ARDUINO_RASPBERRY_PI_PICO_W */
167167

168168
#endif /* _AIOTC_UP_CERT_H_ */

src/tls/utility/TLSClientMqtt.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ void TLSClientMqtt::begin(ConnectionHandler & connection, ArduinoIoTAuthenticati
6969
if (authMode == ArduinoIoTAuthenticationMode::CERTIFICATE) {
7070
setCACert(AIoTSSCert);
7171
}
72+
#elif defined(ARDUINO_RASPBERRY_PI_PICO_W)
73+
setCACert(AIoTUPCert);
7274
#elif defined(ARDUINO_ARCH_ESP32)
7375
(void)authMode;
7476
setCACert(AIoTUPCert);

src/tls/utility/TLSClientMqtt.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ enum class ArduinoIoTAuthenticationMode
6161
*/
6262
#include <WiFiSSLClient.h>
6363
class TLSClientMqtt : public WiFiSSLClient {
64-
#elif defined(BOARD_ESP)
64+
#elif defined(BOARD_ESP) || defined(ARDUINO_RASPBERRY_PI_PICO_W)
6565
/*
6666
* ESP32*
6767
* ESP82*
68+
* PICOW
6869
*/
6970
#include <WiFiClientSecure.h>
7071
class TLSClientMqtt : public WiFiClientSecure {

src/tls/utility/TLSClientOta.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ void TLSClientOta::begin(ConnectionHandler &connection) {
5555
* https://github.com/arduino-libraries/Arduino_ESP32_OTA/blob/fc755e7d1d3946232107e2590662ee08d6ccdec4/src/tls/amazon_root_ca.h
5656
*/
5757
(void)connection;
58+
#elif defined(ARDUINO_RASPBERRY_PI_PICO_W)
59+
setCACert(AIoTUPCert);
5860
#elif defined(ARDUINO_ARCH_ESP32)
5961
setCACert(AIoTUPCert);
6062
#elif defined(ARDUINO_ARCH_ESP8266)

src/tls/utility/TLSClientOta.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@
5555
*/
5656
#include <WiFiSSLClient.h>
5757
class TLSClientOta : public WiFiSSLClient {
58-
#elif defined(BOARD_ESP)
58+
#elif defined(BOARD_ESP) || defined(ARDUINO_RASPBERRY_PI_PICO_W)
5959
/*
6060
* ESP32*
6161
* ESP82*
62+
* PICOW
6263
*/
6364
#include <WiFiClientSecure.h>
6465
class TLSClientOta : public WiFiClientSecure {

src/utility/time/RTCMillis.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
#include "AIoTC_Config.h"
2323

24-
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266)
24+
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
2525

2626
#include <Arduino.h>
2727
#include "RTCMillis.h"
@@ -61,4 +61,4 @@ unsigned long RTCMillis::get()
6161
return _last_rtc_update_value;
6262
}
6363

64-
#endif /* HAS_NOTECARD || ARDUINO_ARCH_ESP8266 */
64+
#endif /* HAS_NOTECARD || ARDUINO_ARCH_ESP8266 || ARDUINO_RASPBERRY_PI_PICO_W */

src/utility/time/RTCMillis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#ifndef ARDUINO_IOT_CLOUD_RTC_MILLIS_H_
1919
#define ARDUINO_IOT_CLOUD_RTC_MILLIS_H_
2020

21-
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266)
21+
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
2222

2323
/**************************************************************************************
2424
* INCLUDE
@@ -45,6 +45,6 @@ class RTCMillis
4545

4646
};
4747

48-
#endif /* HAS_NOTECARD || ARDUINO_ARCH_ESP8266 */
48+
#endif /* HAS_NOTECARD || ARDUINO_ARCH_ESP8266 || ARDUINO_RASPBERRY_PI_PICO_W */
4949

5050
#endif /* ARDUINO_IOT_CLOUD_RTC_MILLIS_H_ */

src/utility/time/TimeService.cpp

+31-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include "NTPUtils.h"
2828
#include "TimeService.h"
2929

30-
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266)
30+
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
3131
#include "RTCMillis.h"
3232
#elif defined(ARDUINO_ARCH_SAMD)
3333
#include <RTCZero.h>
@@ -41,7 +41,7 @@
4141
* GLOBAL VARIABLES
4242
**************************************************************************************/
4343

44-
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266)
44+
#if defined(HAS_NOTECARD) || defined(ARDUINO_ARCH_ESP8266) || defined (ARDUINO_RASPBERRY_PI_PICO_W)
4545
RTCMillis rtc;
4646
#elif defined(ARDUINO_ARCH_SAMD)
4747
RTCZero rtc;
@@ -89,6 +89,12 @@ void renesas_setRTC(unsigned long time);
8989
unsigned long renesas_getRTC();
9090
#endif
9191

92+
#ifdef ARDUINO_RASPBERRY_PI_PICO_W
93+
void pico_w_initRTC();
94+
void pico_w_setRTC(unsigned long time);
95+
unsigned long pico_w_getRTC();
96+
#endif
97+
9298
#endif /* HAS_NOTECARD */
9399

94100
/**************************************************************************************
@@ -355,6 +361,8 @@ void TimeServiceClass::initRTC()
355361
esp8266_initRTC();
356362
#elif defined (ARDUINO_ARCH_RENESAS)
357363
renesas_initRTC();
364+
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
365+
pico_w_initRTC();
358366
#else
359367
#error "RTC not available for this architecture"
360368
#endif
@@ -374,6 +382,8 @@ void TimeServiceClass::setRTC(unsigned long time)
374382
esp8266_setRTC(time);
375383
#elif defined (ARDUINO_ARCH_RENESAS)
376384
renesas_setRTC(time);
385+
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
386+
pico_w_setRTC(time);
377387
#else
378388
#error "RTC not available for this architecture"
379389
#endif
@@ -393,6 +403,8 @@ unsigned long TimeServiceClass::getRTC()
393403
return esp8266_getRTC();
394404
#elif defined (ARDUINO_ARCH_RENESAS)
395405
return renesas_getRTC();
406+
#elif defined (ARDUINO_RASPBERRY_PI_PICO_W)
407+
return pico_w_getRTC();
396408
#else
397409
#error "RTC not available for this architecture"
398410
#endif
@@ -544,6 +556,23 @@ unsigned long renesas_getRTC()
544556
}
545557
#endif
546558

559+
#ifdef ARDUINO_RASPBERRY_PI_PICO_W
560+
void pico_w_initRTC()
561+
{
562+
rtc.begin();
563+
}
564+
565+
void pico_w_setRTC(unsigned long time)
566+
{
567+
rtc.set(time);
568+
}
569+
570+
unsigned long pico_w_getRTC()
571+
{
572+
return rtc.get();
573+
}
574+
#endif
575+
547576
#endif /* HAS_NOTECARD */
548577

549578
/******************************************************************************

0 commit comments

Comments
 (0)