Skip to content

Commit 0ada7db

Browse files
committed
add: Arduino Nano ESP32 development
1 parent c0f5808 commit 0ada7db

File tree

9 files changed

+592
-193
lines changed

9 files changed

+592
-193
lines changed

.vscode/settings.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"files.associations": {
3+
"array": "cpp",
4+
"string": "cpp",
5+
"string_view": "cpp",
6+
"vector": "cpp",
7+
"__bit_reference": "cpp",
8+
"__hash_table": "cpp",
9+
"__split_buffer": "cpp",
10+
"deque": "cpp",
11+
"initializer_list": "cpp",
12+
"unordered_map": "cpp"
13+
}
14+
}

examples/ScienceJournal/ScienceJournal.ino

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,19 @@
2323
String name;
2424
unsigned long lastNotify = 0;
2525
ScienceKitCarrier science_kit;
26+
27+
#ifdef ARDUINO_NANO_RP2040_CONNECT
2628
rtos::Thread thread_update_sensors;
29+
#endif
30+
31+
#ifdef ESP32
32+
TaskHandle_t update_base;
33+
#endif
2734

2835
bool ble_is_connected = false;
2936

3037

38+
3139
void setup(){
3240
science_kit.begin(NO_AUXILIARY_THREADS); // Doesn't start the BME688 and external temperature threads for the moment
3341

@@ -76,10 +84,14 @@ void setup(){
7684
service.addCharacteristic(humidityCharacteristic);
7785
/* _____________________________________________________________AIR_QUALITY */
7886
service.addCharacteristic(airQualityCharacteristic);
87+
88+
#ifdef ARDUINO_NANO_RP2040_CONNECT
7989
/* _________________________________________________________SOUND_INTENSITY */
8090
service.addCharacteristic(sndIntensityCharacteristic);
8191
/* _____________________________________________________________SOUND_PITCH */
8292
service.addCharacteristic(sndPitchCharacteristic);
93+
#endif
94+
8395
/* _________________________________________________________________INPUT_A */
8496
service.addCharacteristic(inputACharacteristic);
8597
/* _________________________________________________________________INPUT_B */
@@ -101,24 +113,39 @@ void setup(){
101113

102114
BLE.addService(service);
103115
BLE.advertise();
104-
116+
105117
science_kit.startAuxiliaryThreads(); // start the BME688 and External Temperature Probe threads
106118

107-
thread_update_sensors.start(update); // this thread updates sensors
119+
#ifdef ARDUINO_NANO_RP2040_CONNECT
120+
thread_update_sensors.start(update); // this thread updates sensors
121+
#endif
122+
#ifdef ESP32
123+
xTaskCreatePinnedToCore(&freeRTOSUpdate, "update_base", 10000, NULL, 1, &update_base, 1); // starts the update sensors thread on core 1 (user)
124+
#endif
108125
}
109126

110127

111128
void update(void){
112129
while(1){
113130
science_kit.update(ROUND_ROBIN_ENABLED);
114-
rtos::ThisThread::sleep_for(25);
131+
delay(25);
115132
}
116133
}
117134

135+
#ifdef ESP32
136+
static void freeRTOSUpdate(void * pvParameters){
137+
update();
138+
}
139+
#endif
140+
141+
118142
void loop(){
119143
BLEDevice central = BLE.central();
120144
if (central) {
121145
ble_is_connected = true;
146+
#ifdef ESP32
147+
science_kit.setStatusLed(STATUS_LED_BLE);
148+
#endif
122149
lastNotify=millis();
123150
while (central.connected()) {
124151
if (millis()-lastNotify>10){
@@ -130,6 +157,9 @@ void loop(){
130157
else {
131158
delay(100);
132159
ble_is_connected = false;
160+
#ifdef ESP32
161+
science_kit.setStatusLed(STATUS_LED_PAIRING);
162+
#endif
133163
}
134164
}
135165

@@ -199,7 +229,6 @@ void updateSubscribedCharacteristics(){
199229
/*
200230
* BME688
201231
*/
202-
203232
/* _____________________________________________________________TEMPERATURE */
204233
if(temperatureCharacteristic.subscribed()){
205234
temperatureCharacteristic.writeValue(science_kit.getTemperature());
@@ -219,10 +248,11 @@ void updateSubscribedCharacteristics(){
219248
if(airQualityCharacteristic.subscribed()){
220249
airQualityCharacteristic.writeValue(science_kit.getAirQuality());
221250
}
222-
251+
223252
/*
224253
* MICROPHONE
225254
*/
255+
#ifdef ARDUINO_NANO_RP2040_CONNECT
226256

227257
/* _________________________________________________________SOUND_INTENSITY */
228258
/* NOTE: raw value - value not in Db */
@@ -232,8 +262,9 @@ void updateSubscribedCharacteristics(){
232262

233263
/* _____________________________________________________________SOUND_PITCH */
234264
if(sndPitchCharacteristic.subscribed()){
235-
sndPitchCharacteristic.writeValue(science_kit.getExternalTemperature());
265+
sndPitchCharacteristic.writeValue(0.0);
236266
}
267+
#endif
237268

238269
/* _________________________________________________________________INPUT_A */
239270
if (inputACharacteristic.subscribed()){
@@ -269,26 +300,16 @@ void updateSubscribedCharacteristics(){
269300

270301
/* ________________________________________________________________DISTANCE */
271302
if (distanceCharacteristic.subscribed()){
272-
if (science_kit.getUltrasonicIsConnected()){
273-
/* NOTE: getDistance() calls getMeters()
274-
Requested value is in meters */
275-
distanceCharacteristic.writeValue(science_kit.getDistance());
276-
}
277-
else{
278-
distanceCharacteristic.writeValue(-1.0);
279-
}
303+
/* NOTE: getDistance() calls getMeters() */
304+
/* Requested value is in meters */
305+
distanceCharacteristic.writeValue(science_kit.getDistance());
280306
}
281307

282308
/* ____________________________________________________________________PING */
283309
if (pingCharacteristic.subscribed()){
284-
if (science_kit.getUltrasonicIsConnected()){
285-
/* NOTE: getTravelTime() returns micro seconds */
286-
/* Converted to milliseconds (agreed with RF 20230719) */
287-
pingCharacteristic.writeValue(science_kit.getTravelTime() * 1000.0 );
288-
}
289-
else{
290-
pingCharacteristic.writeValue(-1.0);
291-
}
310+
/* NOTE: getTravelTime() returns micro seconds */
311+
/* Converted to milliseconds (agreed with RF 20230719) */
312+
pingCharacteristic.writeValue(science_kit.getTravelTime() * 1000.0 );
292313
}
293314
}
294315

examples/ScienceJournal/ble_config.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ const int VERSION = 0x00000002;
3838
#define BLE_CH_TEMPERA "1009"
3939
#define BLE_CH_PRESSUR "1010"
4040
#define BLE_CH_HUMIDIT "1011"
41+
42+
#ifdef ARDUINO_NANO_RP2040_CONNECT
4143
#define BLE_CH_SOUNDIN "1012"
4244
#define BLE_CH_SOUNDPI "1013"
45+
#endif
46+
4347
#define BLE_CH_FUNGEN1 "1014"
4448
#define BLE_CH_DISTANC "1015"
4549
#define BLE_CH_INPUT_A "1016"
@@ -103,11 +107,12 @@ BLEFloatCharacteristic airQualityCharacteristic (SCIENCE_KIT_UUID(BLE_
103107
/*
104108
* MICROPHONE
105109
*/
106-
110+
#ifdef ARDUINO_NANO_RP2040_CONNECT
107111
/* ___________________________________________________________SOUND_INTENSITY */
108112
BLEUnsignedIntCharacteristic sndIntensityCharacteristic (SCIENCE_KIT_UUID(BLE_CH_SOUNDIN), BLENotify); // *** !
109113
/* ______!!! NOT AVAILABLE (should be delete?) !!!________________SOUND_PITCH */
110114
BLEUnsignedIntCharacteristic sndPitchCharacteristic (SCIENCE_KIT_UUID(BLE_CH_SOUNDPI), BLENotify);
115+
#endif
111116

112117
/*
113118
* INPUT A,B
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/*
2+
This file is part of the Arduino_ScienceKitCarrier library.
3+
4+
Copyright (c) 2024 Arduino SA
5+
6+
This Source Code Form is subject to the terms of the Mozilla Public
7+
License, v. 2.0. If a copy of the MPL was not distributed with this
8+
file, You can obtain one at http://mozilla.org/MPL/2.0/.
9+
10+
*/
11+
12+
// This examples print all data from Arduino Science Kit R3
13+
14+
#include "Arduino_ScienceKitCarrier.h"
15+
16+
ScienceKitCarrier science_kit;
17+
18+
19+
void setup() {
20+
Serial.begin(115200);
21+
while(!Serial);
22+
science_kit.begin(START_AUXILIARY_THREADS);
23+
}
24+
25+
26+
void loop() {
27+
science_kit.update(ROUND_ROBIN_ENABLED);
28+
Serial.print(science_kit.getAccelerationX());
29+
Serial.print("\t");
30+
Serial.print(science_kit.getAccelerationY());
31+
Serial.print("\t ");
32+
Serial.print(science_kit.getAccelerationZ());
33+
Serial.print("\t| ");
34+
Serial.print(science_kit.getAngularVelocityX());
35+
Serial.print("\t");
36+
Serial.print(science_kit.getAngularVelocityY());
37+
Serial.print("\t");
38+
Serial.print(science_kit.getAngularVelocityZ());
39+
Serial.print("\t| ");
40+
Serial.print(science_kit.getMagneticFieldX());
41+
Serial.print("\t");
42+
Serial.print(science_kit.getMagneticFieldY());
43+
Serial.print("\t");
44+
Serial.print(science_kit.getMagneticFieldZ());
45+
Serial.print("\t|| ");
46+
Serial.print(science_kit.getProximity());
47+
Serial.print("\t");
48+
Serial.print(science_kit.getRed());
49+
Serial.print("\t");
50+
Serial.print(science_kit.getGreen());
51+
Serial.print("\t");
52+
Serial.print(science_kit.getBlue());
53+
Serial.print("\t|| ");
54+
Serial.print(science_kit.getPhase1());
55+
Serial.print("\t");
56+
Serial.print(science_kit.getFrequency1());
57+
Serial.print("\t");
58+
Serial.print(science_kit.getRange1());
59+
Serial.print("\t| ");
60+
Serial.print(science_kit.getPhase2());
61+
Serial.print("\t");
62+
Serial.print(science_kit.getFrequency2());
63+
Serial.print("\t");
64+
Serial.print(science_kit.getRange2());
65+
Serial.print("\t|| ");
66+
Serial.print(science_kit.getInputA());
67+
Serial.print("\t");
68+
Serial.print(science_kit.getInputB());
69+
Serial.print("\t|| ");
70+
Serial.print(science_kit.getVoltage());
71+
Serial.print("\t");
72+
Serial.print(science_kit.getCurrent());
73+
Serial.print("\t| ");
74+
Serial.print(science_kit.getResistance());
75+
Serial.print("\t|| ");
76+
77+
Serial.print(science_kit.getTemperature());
78+
Serial.print("\t");
79+
Serial.print(science_kit.getPressure());
80+
Serial.print("\t");
81+
Serial.print(science_kit.getHumidity());
82+
Serial.print("\t");
83+
Serial.print(science_kit.getAirQuality());
84+
Serial.print("\t|| ");
85+
86+
Serial.print(science_kit.getExternalTemperature());
87+
Serial.print("\t");
88+
Serial.print(science_kit.getExternalTemperatureIsConnected());
89+
Serial.print("\t|| ");
90+
91+
Serial.print(science_kit.getUltrasonicIsConnected());
92+
Serial.print("\t");
93+
Serial.print(science_kit.getDistance());
94+
Serial.print("\t");
95+
Serial.print(science_kit.getTravelTime());
96+
Serial.print("\t|| ");
97+
98+
// Microphone is only availble on Arduino Nano RP2040 Connect edition
99+
#ifdef ARDUINO_NANO_RP2040_CONNECT
100+
Serial.print(science_kit.getMicrophoneRMS());
101+
Serial.print("\t|| ");
102+
#endif
103+
104+
Serial.print("\n");
105+
106+
delay(10);
107+
}

library.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ sentence=Library and firmware for Arduino Science Kit R3
66
paragraph=This library can be used to flash the Arduino Science Kit R3 and hack it.
77
category=Communication
88
url=https://github.com/arduino-libraries/Arduino_ScienceKitCarrier
9-
architectures=mbed,mbed_nano
9+
architectures=mbed,mbed_nano,esp32
1010
includes=Arduino_ScienceKitCarrier.h
11-
depends=Arduino_APDS9960,ArduinoBLE,WiFiNINA,INA2xx,Arduino_BMI270_BMM150,BSEC Software Library,Arduino_GroveI2C_Ultrasonic,OneWireNg
11+
depends=Arduino_APDS9960,ArduinoBLE,WiFiNINA,INA2xx,Arduino_BMI270_BMM150,bsec2,OneWireNg

0 commit comments

Comments
 (0)