ESP32-S3-A7670E-4G
| ||
Overview
The ESP32-S3-A7670E-4G (hereinafter referred to as the development board) is a multifunctional, high-performance microcontroller development board designed by Waveshare. It integrates an A7670E 4G communication module, a universal OV camera interface, a TF card slot, RGB lights, an 18650 battery slot, a battery voltage measurement IC, a solar charging interface, and other peripherals. It employs the ESP32-S3R2, a System On Chip (SoC) that integrates low-power Wi-Fi and BLE5.0. Additionally, it comes with an external 16MB Flash and 2MB PSRAM. The SoC incorporates a hardware encryption accelerator, random number generator (RNG), HMAC, and digital signature modules, meeting the security requirements of the Internet of Things (IoT).
The A7670E 4G communication module provides mobile network capabilities, enabling functionalities like portable Wi-Fi and IoT data transmission when combined with the ESP32-S3R2. Its various low-power operating modes cater to power consumption demands in IoT, mobile devices, outdoor monitoring, smart home applications, and other scenarios.
Features
- Comes with a high-performance Xtensa® 32-bit LX7 dual-core processor with up to 240MHz.
- Support 2.4GHz WiFi (802.11 b/g/n) and Bluetooth® 5 (LE) with onboard antenna.
- Built-in 512KB of SRAM and 384KB ROM, with onboard 2MB PSRAM and an external 16MB Flash memory.
Hardware Description
- Onboard patch antenna, you can use it or short it to connect the external antenna as shown in ⑲ and ⑳.
- Onboard RGB colorful beads, WS2812B driver as shown in ㉓.
- Onboard Camera interface: using 24pin camera interface as shown in ⑫.
The supported camera list is shown below:
model | max resolution | color type | Len Size |
---|---|---|---|
OV2640 | 1600 x 1200 | color | 1/4" |
OV3660 | 2048 x 1536 | color | 1/5" |
OV5640 | 2592 x 1944 | color | 1/4" |
OV7670 | 640 x 480 | color | 1/6" |
OV7725 | 640 x 480 | color | 1/4" |
NT99141 | 1280 x 720 | color | 1/4" |
GC032A | 640 x 480 | color | 1/10" |
GC0308 | 640 x 480 | color | 1/6.5" |
GC2145 | 1600 x 1200 | color | 1/5" |
BF3005 | 640 x 480 | color | 1/4" |
BF20A6 | 640 x 480 | color | 1/10" |
SC101IOT | 1280 x 720 | color | 1/4.2" |
SC030IOT | 640 x 480 | color | 1/6.5" |
SC031GS | 640 x 480 | color | 1/6" |
- Onboard TF-Card slot, support storing files and pictures as shown in ⑬.
- Onboard solar panel charging interface as shown in ⑱.
- You can select different resistor values on the back to switch the solar input voltage.
- When the solar panel is charging, the onboard green LED will light up, as shown in figures ㉖ and ㉘.
- The onboard circuit switch allows you to control the circuit on/off when using the 18650 power supply, as shown in figure ㉛.
- Onboard USB to UART chip and automatic download circuit, after connecting the Type-C cable to program the demo and firmware, as shown in ⑦.
- Using ESP32-S3 USB to connect to the A/SIM7670X USB connector, and using TinyUSB protocol to realize ppp dial-up network access as the portable WIFI.
- The onboard 18650 battery header is designed for a single 3.7V 18650 lithium battery. Pay attention to the polarity markings on the lithium battery interface.
- When the battery is reversed, the onboard yellow LED will light up as a warning, as shown in ㉕.
- The development board reserves GPIO pins for external device connections, which can be flexibly configured as I2C, SPI, and other peripheral functions. For detailed functions, please refer to the GPIO allocation description.
- Onboard GNSS IPEX1 connector. After powering on, you can enable the GNSS positioning function using the relevant commands, as shown in ㉑.
- Onboard microphone and speaker interfaces. The A7670X series development board can utilize these interfaces for making phone calls, as shown in ㉝ and ㉞.
- Furthermore, there is a DIP switch onboard for convenient control of the Camera, USB HUB circuit, and 4G module power supply. It can also control the USB circuit switching of the 4G module, as depicted in figure ㉚.
- Onboard LED Description:
- Onboard battery anti-reverse warning LED, the yellow LED is on when the batteries are reversely connected as shown in ㉕.
- Onboard green solar panel charging LED, the LED is on when the solar panel input voltage is active, as shown in ㉖.
- Onboard blue power indicator, lights on when the power is connected to start up, as shown in ㉔.
- The onboard module network indicator will turn on in red once the module is powered on. After successfully registering to the network, it will flash at a frequency of 200ms, as shown in figure ㉗.
Hardware Connection
This development board's ESP32-S3 UART to USB module and 4G module USB use the same Type-C interface, and you can choose the connection between the USB interface of the 4G module and the ESP32-S3 USB connector or the Type-C interface through the USB channel of the dip switch on the back of the development board. This function is mainly used when the ESP32-S3 uses Tiny USB 4G module communication as a portable WiFi, wireless hotspot.
Solar Panel Charging
The solar input selection resistor on the back of the development board can switch the maximum voltage of solar input. By default, the 0-ohm resistor is used to connect to the 5V marking position, supporting solar panels with 5~6V voltage input. When using solar panels with higher voltage input, the corresponding voltage solder joints should be shorted.
Dimensions
Development Environment Setup
- The following development system is Windows by default.
ESP-IDF
- It is recommended to develop with the VSC plug-in.
Develop with VSCode Plug-in
Install VSCode
1. Open the download page of the official VSCode website, and select the corresponding system and system bit to download.
2. After running the installation package, the rest can be installed by default, but here for the subsequent experience, it is recommended to check boxes 1, 2, and 3.
- After the first and second items are enabled, you can open VSCode directly by right-clicking files or directories, which can improve the subsequent user experience.
- After the third item is enabled, you can select VSCode directly when you choose how to open it.
Install Espressif IDF Plug-in
- Note: The latest version of the current plug-in is V1.6.0, for a consistent experience, users can choose the same version as us.
- 1. Open VSCode and use the shortcut key Shift + Ctrl + X to enter the plugin manager.
- 2. In the search bar, type Espressif IDF, select the corresponding plug-in, and click install.
- 3. Press F1 to enter:
esp-idf: configure esp-idf extension
- 4. Choose express (This tutorial is for first-time users, so only the first general installation tutorial is covered.)
- 5. Open and display this screen.
- 6. Choose a server to download.
- 7. Select the ESP-IDF version you want now, we choose the latest V5.0.1 (note that ESP-IDF started to support ESP32-S3 only after V4.4).
- 8. The following two are the ESP-IDF directory installation address and the ESP-IDF required tools installation address respectively.
- Note: If you have installed ESP-IDF before, or if it has failed, please make sure to delete the file completely or create a new path.
- 9. Once the configuration is finished, click "install" to download.
- 10. Enter the download page, and it will automatically install the corresponding tools and environment, just wait a moment.
- 11. After the installation is completed, it will enter the following screen, indicating that the installation is finished.
Official Demo Usage
- Click here to view more details provided by the official ESP.
Creating a Demo
- 1. Using the shortcut F1, type:
esp-idf:show examples projects
- 2. Choose your current IDF version:
- 3. Take "Hello World" as an example:
- 4. Choose the corresponding demo.
- 5. The readme file will explain which chip the demo is suitable for (the following section will introduce how to use the demo and its file structure, which is omitted here).
- 6. Click to create the demo.
- 7. Choose the path to place the demo and ensure that there is no folder with the same name as the demo.
Modify COM Port
- 1. The corresponding COM port is displayed here, click on it to modify.
- 2. We check the device manager COM port, and select COM5, please select your corresponding COM port:
- 3. Choose the project and demo.
- 4. Then the COM port is modified.
Modify the Driver
- 1. Here shows the driver used, click here to modify the corresponding driver:
- 2. Choose the project or demo:
- 3. Wait for a few seconds after clicking.
- 4. Choose the driver we need, that is, the main chip ESP32S3.
- 5. Choose the openocd path, we can just choose one at random as it doesn't matter.
The Rest of the Status Bar Introduction
- ① SDK configuration editor: many functions and configurations of ESP-IDF can be modified within it.
- ② Clean up everything and delete all compiled files.
- ③ Compile.
- ④ Current download method, default is UART.
- ⑤ Program the current firmware, please do it after compiling.
- ⑥ Open the serial monitor to view serial information.
- ⑦ Combined button for compiling, programming, and opening the serial monitor (most commonly used during debugging).
Compile, Program, and Serial Port Monitoring
- 1. Click on the Compile, Program, and Open Serial Monitor buttons we described earlier.
- 2. It may take a long time to compile, especially for the first time.
- During this process, ESP-IDF may take up a lot of CPU resources and therefore may cause system lag.
- 3. Because we use CH343 as a USB to serial port chip, and the on-board automatic download circuit, it can be downloaded automatically without manual operation.
- 4. After successful download, it will automatically enter the serial monitor, and you can see the corresponding information output from the chip and prompt to reboot after 10s.
Arduino
- If you do not use arduino-esp32 before, you can refer to this link.
Install Arduino IDE
- 1. Open the official software download webpage, and choose the corresponding system and system bits to download.
- 2. You can choose "Just Download", or "Contribute & Download".
- 3. Run to install the program and install it all by default.
Install arduino-esp32 Online
- 1. Open Preferences.
- 2. Add the corresponding board manager URLs and click the button.
- 3. Add the following content in the first blank.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- 4. Save the setting.
- 5. Open the board manager, enter ESP32 in the search bar, and select version 2.0.11.
- 6. Wait for downloading.
- 7. arduino-esp32 is downloaded.
Use Arduino Demo
- 1. Select the demo, here we choose the demo to get the chip ID.
- 2. Select the board as ESP32S3 Dev Module.
- 3. Choose the COM5 port of ESP32-S3 USB.
- 4. Click the download button, then it compiles and downloads automatically.
- 5. Finish.
- 6. Open the Serial Port Monitor.
- 7. See the chip ID of the loop output.
Cat-1 Module Command Set
HTTP
AT Command |
Command Description |
Return |
AT+HTTPINIT |
Open HTTP service |
OK |
AT+HTTPPARA="URL",https://www.waveshare.cloud/api/sample-test/ |
Connect to the remote server |
OK |
AT+HTTPDATA=5,1000 |
Input the data |
DOWNLOAD <Enter hello OK |
AT+HTTPACTION=0 |
Open HTTP request, 0:GET; 1:POST; 2:HEAD; 3:DELETE; 4:PUT |
OK +HTTPACTION: 0,200,54 |
AT+HTTPTERM |
Close HTTP service |
OK |
AT+HTTPPARA |
Set HTTP parameters |
OK |
AT+HTTPHEAD |
Read the HTTP response header message |
OK |
AT+HTTPREAD |
Read the HTTP response message |
OK |
MQTT
AT Command |
Command Description |
Return |
AT+CMQTTSTART |
Open MQTT service |
OK |
AT+CMQTTACCQ=0,"Waveshare-7670X",0 |
Apply for MQTT client |
OK |
AT+CMQTTCONNECT=0,"tcp://mqtt.easyiothings.com",20,1 |
Send MQTT request, connect to the private MQTT server (MQTTS) |
OK |
AT+CMQTTTOPIC=0,8 |
Input the message to publish the topic |
>A7670Pub OK |
AT+CMQTTPAYLOAD=0,9 |
Input the message to be published |
OK >waveshare |
AT+CMQTTPUB=0,0,60 |
Publish the message |
OK +CMQTTPUB: 0,0 |
AT+CMQTTSUB=0,8,1 |
Subscribe to message topic |
>A7670Sub OK +CMQTTSUBTOPIC: 0,0 [10:03:39.665]Receive←◆ +CMQTTRXSTART: 0,8,15 +CMQTTRXTOPIC: 0,8 A7670Sub +CMQTTRXPAYLOAD: 0,15 {"data":"test"} +CMQTTRXEND: 0 |
AT+CMQTTSTOP |
Stop MQTT service |
OK |
AT+CMQTTREL |
Release the client |
OK |
AT+CMQTTUNSUBTOPIC |
Unsubscribe the topic |
OK |
AT+CMQTTUNSUB |
Release subscription |
OK |
GNSS
AT+CGNSSPWR=1 | Open GNSS | +CGNSSPWR: READY! |
AT+CGNSSTST=1 | Open GNSS data output | OK |
Phone Call
- Connect the configured speaker to the development board.
ATD10086; | Dial phone numbers | OK VOICE CALL: BEGIN |
ATA | Answer | OK VOICE CALL: BEGIN |
ATH | Hang off | OK VOICE CALL: END: 000017 |
Send and Receive SMS Messages
Send English Messages
1. Set the local SMS message center: AT+CSCA="+8613800755500" + Enter; return OK. <br> 2. AT+CMGF=1: Set the SMS mode as TEXT;<br> 3. AT+CMGS="phone number" <Enter>, set the receiver phone number, and then return: ">"; Send the required message, such as "Send message test!", and Enter is not needed at the end. After editing the message, send it in hexadecimal format with the key value of 1A for sending (1A represents "CTRL+Z" and is used to indicate the module to execute the send operation, alternatively 1B (1B represents "ESC") can be sent to cancel the operation). After successful transmission, the module returns "+CMGS: 15" to confirm successful sending, as shown in the figure below.<br>
Receive English Messages
1. Send a message "This is a receive test for SIM7600X!" on your phone to the test module.
2. When receiving a message, the serial port will automatically report the information. For example, "SM", 20, indicates that there are 20 messages in the Short Message (SM) storage. The message just sent is the 20th message.
3. Read the message: AT+CMGR=20 reads the 20th message (AT+CMGL="ALL" is for reading all messages).
4. Delete the message: AT+CMGD=20 as shown below:
5. Convert the displayed message to text through the code converter.
TTS (Text-to-Speech)
The commonly used commands for TTS (Text-to-Speech) are as follows:
AT+CTTSPARAM=? // View the range of adjustable parameters AT+CTTSPARAM=1,3,0,1,1 // Set parameters AT+CTTSPARAM? // Read the current TTS settings AT+CTTS=1,"6B228FCE4F7F75288BED97F3540862107CFB7EDF" // Synthesize and play UCS2 text AT+CTTS=2,"1234567890" // Synthesize and play text
LBS
The common commands for LBS (Location-Based Service) base station positioning functionality are as follows:
AT+CLBS=? // View the range of parameters that can be set AT+SIMEI=xxxxx // If there is no IMEI, set the IMEI first; xxxxx must correspond to the IMEI code on the module sticker AT+CLBS=2 // Retrieve detailed address AT+CLBS=1 // Retrieve current latitude and longitude
Demo Description
ESP32-S3 Application
Camera
This demo is based on the CameraWebServer demo of the ESP32.
- Firstly, you need to set the WiFi name and password and switch the hardware to ESP32S3 by default.
- Please turn on the CAM of the DIP switch on the back of the development board, and connect to the supported cameras.
- Please check CameraPins:
#define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 34 #define SIOD_GPIO_NUM 15 #define SIOC_GPIO_NUM 16 #define Y9_GPIO_NUM 14 #define Y8_GPIO_NUM 13 #define Y7_GPIO_NUM 12 #define Y6_GPIO_NUM 11 #define Y5_GPIO_NUM 10 #define Y4_GPIO_NUM 9 #define Y3_GPIO_NUM 8 #define Y2_GPIO_NUM 7 #define VSYNC_GPIO_NUM 36 #define HREF_GPIO_NUM 35 #define PCLK_GPIO_NUM 37
- Burn the code and open the terminal to access the prompted IP:
TF-Card
- Insert the TF-Card into the TF card slot.
- Pinout definition:
const int SDMMC_CLK = 5; const int SDMMC_CMD = 4; const int SDMMC_DATA = 6; const int SD_CD_PIN = 46;
- Program the demo, and open the terminal to display the file content:
RGB
Onboard a WS2812b RGB LED, and the signal pin is 38.
After programming the sample demo, the LED light is expected to display a gradient color.
BAT
This development board utilizes the MAX17048 as the battery charge measurement IC.
- First, confirm the I2C pin.
- Program the code and change the threshold:
Portable WIFI Demo
- This demo uses the TinyUSB protocol stack to communicate with a 4G Cat-1 module, using ppp dial-up to provide the network to the ESP32-S3.
- This demo uses the compiled firmware, please download Flash Tools first.
- Download the firmware:
- Open the Flash Tools, select the development mode, choose the firmware, with the address set to "0x0", as shown in the diagram, and insert the SIM card to download and start the program.
- The back of the development board toggle switch 4G on, USB off, re-power on the development board, wait for the LED display red, open the phone to connect to WIFI: ESP32-S3-A-SIM7670X-4G-HAT, password: 12345678 to access the Internet.
- For more details, you can refer to sample demo.
Please download the demo, and open the GNSS-With-WaveshareCloud sample demo.
In this application, communication between ESP32-S3 and A7670E-FASE is established using ESP32-S3's software serial port. By sending AT commands, the GNSS (Global Navigation Satellite System) is activated, and NMEA GNSS data is parsed and uploaded to the Waveshare Cloud. The specific location of the development board is then displayed on a web view map page.
Here, we take the map service provided by Waveshare Cloud as an example:
1. Through Device|Attributeto create any devices, and obtain the MQTT connection data.
2. Enter the parameters in the GNSS-With-WaveshareCloud demo.
Resource
Document
- ESP-IDF
- Schematic
- Arduino-Esp32
- 3D drawing
- MicroPython Development Document
- ESP32 Arduino Core's documentation
Demo
Tools & Driver
Application Note
A7600 & A7670 AT commands reference:
- A76XX Series AT Command Manual
- A7600 Series TCPIP Application Note
- A7600 Series MQTT(S) Application Note
- A7600 Series HTTP(S) Application Note
- A7600 Series LBS Application Note
- A7600 Series Audio Application Note
- A76XX Series GNSS Application Note
- A7600 Series SSL Application Note
- A7600 Series FTP(S) Application Note
- A7670X Series Hardware Design V1.03
FAQ
ESP32-S3 can perform PPP dial-up internet using both serial port and USB. In this example, TinyUSB protocol is utilized, and USB enumeration addresses are used for dial-up internet.
{{{5}}}
The code in this example is compiled and flashed using esp-idf. If using Arduino IDE, porting of TinyUSB and handling of PPP packets will be necessary.
{{{5}}}
The code in this example is compiled and flashed by esp-idf. To modify ESP32-S3 dial-up code, Arudino IDE needs to be ported tinyUSB and ppp packet processing, etc.
{{{5}}}
We do not assist in modifying the code, please do it yourself.
{{{5}}}
Currently, the development board connects to the A/SIM7670X 4G module's serial port using software serial port. After enabling GNSS functionality with AT commands, the module outputs satellite signal data through its serial port. AT command can also be sent to the serial port at the moment. Execute the Publish command to publish the required data and filtering of NMEA signal data is required for listening to the returned values from the platform.
{{{5}}}
No.
{{{5}}}
The default setting is null for the portable WiFi demo, if the module can't recognize the SIM card APN operator automatically, you need to modify the provided source code, refer to README.md in the directory of ESP32-S3-A-SIM7670X-4G-example.
The specific steps are as follows:
1. Refer to the ESP-IDF chapter of the development environment configuration, install the ESP-IDF development environment and vscode programming tools.
2. Use vscode to open the example program and enter menuconfig to set APN manually.
3. Upload the demo to the development board, power off, and reboot the development board.
{{{5}}}
All the example demos provided use libraries downloaded and installed from the Arduino IDE library. These library files are constantly being updated and iterated upon, so often a library might be missing and can be directly downloaded and installed in the Arduino IDE.
{{{5}}}
Plug in the GPS antenna to the GNSS antenna socket and place the receiver label face down in an open outdoor area (note that it can't be tested in cloudy and rainy weather), and you need to wait for about 1 minute to receive the positioning signal when powering on;
{{{5}}}
- This is not readily available sample demo, please program yourself and achieve it by secondary development.
- This Module only provides data connection, ESP32 capture camera side is a video stream, this video stream is temporarily displayed in html, that is, directly displayed on the web page!
- If the video stream data through the module can be mapped out to achieve the function of map transmission; the theory is no problem; need to build a public IP server and so on.
To realize the hotspot function:
0) X7670X to register to the network and successfully dial up to the Internet 1) Turn on the 4G dip switch on the back of the board, turn off the USB, and re-power on the board. 2) Correctly download the corresponding firmware, don't confuse the A7670 and SIM7670 firmware, remember to check the box.
(1) the first time on the battery (that is, after the installation of the battery) need to be connected to the power supply to activate the protection mechanism (this mechanism is to prevent the reverse connection), the battery is fully charged, you can not need to connect the power supply!
(2) In addition, it can also be discharged to activate, typec interface in addition to charging, but also for external equipment power supply, so that the module to external equipment power supply to achieve the purpose of discharging, but also activated!
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)