diff --git a/.github/workflows/arduino-lint.yml b/.github/workflows/arduino-lint.yml
index 87c995e..3b3538b 100644
--- a/.github/workflows/arduino-lint.yml
+++ b/.github/workflows/arduino-lint.yml
@@ -19,7 +19,7 @@ jobs:
uses: actions/checkout@v4
- name: Arduino Lint
- uses: arduino/arduino-lint-action@v1
+ uses: arduino/arduino-lint-action@v2
with:
compliance: specification
library-manager: update
diff --git a/.github/workflows/render-documentation.yml b/.github/workflows/render-documentation.yml
index 30ee933..82c498c 100644
--- a/.github/workflows/render-documentation.yml
+++ b/.github/workflows/render-documentation.yml
@@ -21,8 +21,8 @@ jobs:
render-docs:
permissions:
contents: write
- uses: sebromero/render-docs-github-action/.github/workflows/render-docs.yml@main
+ uses: arduino/render-docs-github-action/.github/workflows/render-docs.yml@main
with:
source-path: './src'
target-path: './docs/api.md'
- fail-on-warnings: true
\ No newline at end of file
+ fail-on-warnings: true
diff --git a/README.md b/README.md
index f6162be..7a0fcdd 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,17 @@
[](https://github.com/arduino-libraries/Arduino_Cellular/actions/workflows/arduino-lint.yml) [](https://github.com/arduino-libraries/Arduino_Cellular/actions/workflows/compile-examples.yml) [](https://github.com/arduino-libraries/Arduino_Cellular/actions/workflows/spell-check.yml) [](https://github.com/arduino-libraries/Arduino_Cellular/actions/workflows/sync-labels.yml) [](https://github.com/arduino-libraries/Arduino_Cellular/actions/workflows/render-documentation.yml)
-This library provides a toolkit for interacting with the official Arduino 4G Modules ([EMEA](https://store.arduino.cc/products/4g-module-emea) and [Global Versions](https://store.arduino.cc/products/4g-module-global)).
-It allows you to connect to the internet, send and receive SMS messages, and get location from the cellular network or GPS.
+This library provides a toolkit for interacting with the official Arduino 4G Modules ([EMEA](https://store.arduino.cc/products/4g-module-emea) and [Global Versions](https://store.arduino.cc/products/4g-module-global)) on using the [Portenta Mid Carrier](https://store.arduino.cc/products/portenta-mid-carrier) and Portenta H7 or C33 boards. It allows you to connect to the internet, send and receive SMS messages, and get location from the cellular network or GPS.
+
+
+> [!NOTE]
+> GPS/GNSS functionality is only supported on the [Global Versions](https://store.arduino.cc/products/4g-module-global) version of the modem.
+
## Examples
* [DeleteSMS](examples/DeleteSMS) - Example that shows how to delete SMS.
-* [GetLocation](examples/GetLocation) - Shows how to get the current GPS location.
-* [GetTime](examples/GetTime) - Use GPS to acquire the time of the device.
+* [GetLocation](examples/GetLocation) - Shows how to get the current GPS location. (Supported on the [Global Version](https://store.arduino.cc/products/4g-module-global))
+* [GetTime](examples/GetTime) - Use GPS to acquire the time of the device. (Supported on the [Global Version](https://store.arduino.cc/products/4g-module-global))
* [HTTPClient](examples/HTTPClient) - Example of using this library together with [ArduinoHttpClient]() to connect to a web server
* [HTTPSClient](examples/HTTPSClient) - Example of using this library together with [ArduinoHttpClient]() that uses [BearSSL]() under the hood to create a secure connection to a web server
* [ModemTerminal](examples/ModemTerminal) - A handy example for debugging and Testing AT commands
@@ -19,27 +23,73 @@ It allows you to connect to the internet, send and receive SMS messages, and get
## ✨ Features
* Fast 4G connection to the internet
* Secure SSL connections with BearSSL
-* Get location using GPS or GSM
+* Get location using GPS or GSM
* Synchronise time with the cell provider
* Send and Receive SMS Messages
## 👀 Instructions
-1. Insert your Arduino 4G module to the [Arduino Portenta Mid Carrier](https://store.arduino.cc/collections/portenta-family/products/portenta-mid-carrier)
-2. Insert a valid SIM card either in the **PCIE_SIM** connector on the Portenta Mid Carrier
-3. Connect the 5 **SERIAL1** header pins to their corresponding pins on the **PCIE_BREAKOUT** header using jumpers
-
-4. Connect the **3V3 PCIE** pin to the **3V3 Buck**
-
-5. Connect external power to the Mid Carrier, via the **VIN** (5V) because modems use a lot of power when connecting or getting a GPS location. Make sure your supply can handle around 3A.
-6. Get the APN settings from your network operator and add them to the "arduino_secrets.h" file for each sketch
-```cpp
-const char apn[] = "live.vodafone.com";
-const char gprsUser[] = "live";
-const char gprsPass[] = "";
-```
-7. Install the library and it's dependencies
-8. Enjoy
+1. Insert a nano SIM card in the **PCIE_SIM** connector on the [Arduino Portenta Mid Carrier](https://docs.arduino.cc/hardware/portenta-mid-carrier/).
+2. Connect the Serial (J17) to the adjacent PCIE Breakout Pins (J16) with jumpers included in the Portenta Mid Carrier:
+ | Serial 1 (J17) | PCIE Breakout (J16) |
+ |------------------------|---------------------|
+ | RX (Pin 1) | CK_N (Pin 1) |
+ | TX (Pin 2) | CK_P (Pin 3) |
+ | RTS (Pin 3) | RX_N (Pin 5) |
+ | CTS (Pin 4) | RX_P (Pin 7) |
+ | mPCIE_GPIO_RST (Pin 5) | mPCIE_RST (Pin 9) |
+
+
+
+3. On J9, using jumpers connect the following pins:
+ | Source (J9) | Buck Converter (J9) |
+ |------------------|---------------------|
+ | 3V3 PCIE (Pin 1) | 3V3 BUCK (Pin 3) |
+ | OUT VCC (Pin 2) | 3V3 BUCK EN (Pin 4) |
+
+
+
+4. Insert the [Arduino Pro 4G Module](https://docs.arduino.cc/hardware/pro-4g-module) in the Arduino Portenta Mid Carrier.
+
+5. Screw one black post with a white nut from under the Portenta Mid Carrier. Using another black post, screw the board to the post. Place two washers on top, and one underneath the Pro 4G Module. So that the board is fixed to the post snuggly and horizontally.
+
+6. (EMEA and GNSS variants) Connect the cellular antenna (flat antenna in [Arduino Pro 4G Module Antennas Kit](https://store.arduino.cc/products/4g-module-antenna)) to the left microUFL connector marked MAIN.
+
+7. (PRO 4G GNSS only) Connect the GNSS antenna (square antenna in [Arduino Pro 4G Module Antennas Kit](https://store.arduino.cc/products/4g-module-antenna)) to the middle microUFL connector marked GNSS.
+
+
+
+8. Insert a [Portenta C33](https://docs.arduino.cc/hardware/portenta-c33) or [Portenta H7](https://docs.arduino.cc/hardware/portenta-h7) Board into the marked location. The USB-C port of the Portenta board should be next to the Ethernet port on the Mid Carrier.
+
+9. Insert a Terminal Block 2-pin > DC female adapter into the screw terminal (J4). Ensure that the negative (-) pin is connected to GND.
+
+
+
+10. Use a 5V adapter that can output at least 3A and connect it to the DC female adapter.
+
+11. Connect the Portenta board to your computer using a USB-C cable.
+
+12. Install the `Arduino_Cellular` library and its dependencies
+
+13. Obtain the APN (Access Point Name) settings from your network operator and add them to the `arduino_secrets.h` file for each sketch. For example:
+ ```cpp
+ #define SECRET_PINNUMBER "" // replace with your SIM card PIN
+ #define SECRET_GPRS_APN "services.telenor.se" // replace with your GPRS APN
+ #define SECRET_GPRS_LOGIN "" // replace with your GPRS login
+ #define SECRET_GPRS_PASSWORD "" // replace with your GPRS password
+ ```
+
+14. Upload sketch to the Portenta board. Enjoy!
+
+
+## Compatibility
+* This library is designed to be used with the the official Arduino 4G Modules [EMEA](https://store.arduino.cc/products/4g-module-emea) and [Global Versions](https://store.arduino.cc/products/4g-module-global)
+* GPS/GNSS functionality is only supported on the [Global Version](https://store.arduino.cc/products/4g-module-global)
+* This library compiles on the [Portenta C33](https://store.arduino.cc/products/portenta-c33?), [Portenta H7](https://store.arduino.cc/products/portenta-h7), [H7 Lite](https://store.arduino.cc/products/portenta-h7-lite), and [H7 Lite Connected](https://store.arduino.cc/products/portenta-h7-lite-connected) used in conjunction with the [Portenta Mid Carrier](https://store.arduino.cc/products/portenta-mid-carrier). Any other configuration is not supported by this library.
+* Even though these Modules are PCIE devices and would physically fit on the [Portenta Max Carrier](https://store.arduino.cc/products/portenta-max-carrier), we do not support this configuration with the Arduino_Cellular library. But the Portenta Max Carrier has a SARA-R412M-02B cellular modem already.
+* None of the library examples compile with the Portenta X8. The X8 handles the cellular connectivity in the Yocto Linux layer.
## 📖 Documentation
For more information about this library please read the documentation [here](./docs).
+
+
diff --git a/docs/Arduino_Portenta_Mid_Carrier_GNSS_with_GNSS_MAIN_Antennas.jpg b/docs/Arduino_Portenta_Mid_Carrier_GNSS_with_GNSS_MAIN_Antennas.jpg
new file mode 100644
index 0000000..0ca4fa7
Binary files /dev/null and b/docs/Arduino_Portenta_Mid_Carrier_GNSS_with_GNSS_MAIN_Antennas.jpg differ
diff --git a/docs/Arduino_Portenta_Mid_Carrier_PortentaC33_4GPRO_GNSS_All_Antennas.jpg b/docs/Arduino_Portenta_Mid_Carrier_PortentaC33_4GPRO_GNSS_All_Antennas.jpg
new file mode 100644
index 0000000..35a1719
Binary files /dev/null and b/docs/Arduino_Portenta_Mid_Carrier_PortentaC33_4GPRO_GNSS_All_Antennas.jpg differ
diff --git a/docs/Arduino_Portenta_Mid_Carrier_PortentaH7_and_PCIEBreakout_Pins.jpg b/docs/Arduino_Portenta_Mid_Carrier_PortentaH7_and_PCIEBreakout_Pins.jpg
new file mode 100644
index 0000000..06e86d7
Binary files /dev/null and b/docs/Arduino_Portenta_Mid_Carrier_PortentaH7_and_PCIEBreakout_Pins.jpg differ
diff --git a/docs/Arduino_Portenta_Mid_Carrier_SIM_and_Power_Pins.jpg b/docs/Arduino_Portenta_Mid_Carrier_SIM_and_Power_Pins.jpg
new file mode 100644
index 0000000..37b3e2b
Binary files /dev/null and b/docs/Arduino_Portenta_Mid_Carrier_SIM_and_Power_Pins.jpg differ
diff --git a/docs/api.md b/docs/api.md
index bd2cd17..7d5b0e4 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -6,7 +6,7 @@
`class ` [`ModemInterface`](#class_modem_interface) | Represents the interface to the 4G modem module which extends the TinyGsmBG96 class.
`class ` [`SMS`](#class_s_m_s) | Represents an [SMS](#class_s_m_s) message.
`class ` [`Time`](#class_time) | Represents a point in time with year, month, day, hour, minute, second, and offset.
-`struct ` [`Location`](#struct_location) | Represents a geographic location with latitude and longitude coordinates.
+`struct ` [`Geolocation`](#struct_geolocation) | Represents a geographic location with latitude and longitude coordinates.
# class `ArduinoCellular`
@@ -23,12 +23,12 @@ This class provides methods to interact with the Arduino Pro Modem, such as conn
| [`isConnectedToOperator`](#class_arduino_cellular_1af7453ef90702e9042e2b4b18fa89db03) | Checks if the modem is registered on the network. |
| [`isConnectedToInternet`](#class_arduino_cellular_1a6f8251e06de1810897b8bd8f8fb1b1a2) | Checks if the GPRS network is connected. |
| [`enableGPS`](#class_arduino_cellular_1abe77a53e0eba6e8d62ba5db3bb6f5e92) | Enables or disables the GPS functionality. |
-| [`getGPSLocation`](#class_arduino_cellular_1aee57a2eec5be06172b2fb7cd574d9106) | Gets the GPS location. (Blocking call) |
+| [`getGPSLocation`](#class_arduino_cellular_1a41225f52d059df173f028ecd0c039ec3) | Gets the GPS location. (Blocking call) |
| [`getCellularTime`](#class_arduino_cellular_1a6b3ce5485badff582584d539e790aff4) | Gets the current time from the network. |
| [`getGPSTime`](#class_arduino_cellular_1a4aeb898c958e6eb001d606f0c7da8799) | Gets the current time from the GPS module. |
| [`sendSMS`](#class_arduino_cellular_1a371aef1318857f0863f443eaeabf4ac2) | Sends an [SMS](#class_s_m_s) message to the specified number. |
-| [`getReadSMS`](#class_arduino_cellular_1a5da65683df86af75590c7a68766236ee) | Gets the list of read [SMS](#class_s_m_s) messages. |
-| [`getUnreadSMS`](#class_arduino_cellular_1af1e3b2fad0a64f3b7675c88100ddbca5) | Gets the list of unread [SMS](#class_s_m_s) messages. |
+| [`getReadSMS`](#class_arduino_cellular_1ae032c4e4cade6579a2c1edfe53d2ff2b) | Gets the list of read [SMS](#class_s_m_s) messages. |
+| [`getUnreadSMS`](#class_arduino_cellular_1a212513654884058947a2a4d332f6ccfc) | Gets the list of unread [SMS](#class_s_m_s) messages. |
| [`deleteSMS`](#class_arduino_cellular_1abe4337f0bc8c486a076011309120ace1) | Deletes an [SMS](#class_s_m_s) message at the specified index. |
| [`sendATCommand`](#class_arduino_cellular_1a58a3e3713af0c01ad1075a2509c6874d) | Sends an AT command to the modem and waits for a response, then returns the response. |
| [`sendUSSDCommand`](#class_arduino_cellular_1a6886aec5850836ea8e8f135d4e5632ab) | Sends a USSD command to the network operator and waits for a response. |
@@ -135,10 +135,10 @@ Enables or disables the GPS functionality.
True if GPS was enabled successfully, false otherwise.