diff --git a/docs/Application_guide/en/dev-tools/QMulti-DL/README.md b/docs/Application_guide/en/dev-tools/QMulti-DL/README.md index 2cb4a0688fc654ea2f167bcd1714d33cb35216fa..a8b9c4232844c26206d8d6aea48cd9c7327a5dc9 100644 --- a/docs/Application_guide/en/dev-tools/QMulti-DL/README.md +++ b/docs/Application_guide/en/dev-tools/QMulti-DL/README.md @@ -1,17 +1,17 @@ # QMulti_DL Usage Tutorial ## Overview -[QMulti_DL](https://images.quectel.com/python/sites/2/2023/05/QMulti_DL_V3.0_EN.zip) is a batch burning tool for mass production. +[QMulti_DL](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QMulti_DL_V3.5_EN.zip) is a batch burning tool for mass production. ## Obtain the Tool -[Download](https://python.quectel.com/en/download) +[Download](https://python.quectel.com/en/resource-download?cid=261) ![](../../media/dev-tools/QMulti-DL/1.png) ## User Guide -[QMulti_DL User Guide Download](https://images.quectel.com/python/sites/2/2024/07/Quectel_QMulti_DL_User_Guide_V2.3.pdf) +For instructions, please refer to the pdf document in the toolkit. Note: If the firmware suffix format does not conform to the tool, you need to use QPYcom to `Extract MP Firmware` function to extract the MP Firmware. diff --git a/docs/Application_guide/en/dev-tools/QPYcom/README.md b/docs/Application_guide/en/dev-tools/QPYcom/README.md index 9aa2d249761b32bfc9ceda4b8de92f9030f98a70..ddd339fb0f5d3e612e90f1ab4c5bbe9cc4f77a43 100644 --- a/docs/Application_guide/en/dev-tools/QPYcom/README.md +++ b/docs/Application_guide/en/dev-tools/QPYcom/README.md @@ -1,6 +1,6 @@ # QPYcom User Guide -[QPYcom](https://python.quectel.com/en/download) is a full-stack development and debugging tool for QuecPython. It supports basic functions such as REPL interaction, file transfer,and firmware combination and download. It also includes extended functions such as DFOTA package making and partition adjustment. +[QPYcom](https://python.quectel.com/en/resource-download?cid=260) is a full-stack development and debugging tool for QuecPython. It supports basic functions such as REPL interaction, file transfer,and firmware combination and download. It also includes extended functions such as DFOTA package making and partition adjustment. This series of documents will introduce the use of *QPYcom* from the following aspects: diff --git a/docs/Application_guide/en/firmware-upgrade/firmware-burning.md b/docs/Application_guide/en/firmware-upgrade/firmware-burning.md index c09aee1a0cff83a87a7beb3f082ddc0ab280287a..8b7aea7e07f6ec391732b7688baf81797b99a42b 100644 --- a/docs/Application_guide/en/firmware-upgrade/firmware-burning.md +++ b/docs/Application_guide/en/firmware-upgrade/firmware-burning.md @@ -52,7 +52,7 @@ After entering the downloading mode, the module waits for the handshake for the ### QPYcom -[*QPYcom*](https://images.quectel.com/python/2022/12/QPYcom_V3.1.2.zip) is a QuecPython full-stack development and debugging tool for QuecPython. It supports basic functions such as REPL interaction, file transfer, and firmware combination and download. It also includes extended functions such as DFOTA package making and partition adjustment. +[*QPYcom*](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QPYcom_V3.6.0.zip) is a QuecPython full-stack development and debugging tool for QuecPython. It supports basic functions such as REPL interaction, file transfer, and firmware combination and download. It also includes extended functions such as DFOTA package making and partition adjustment. *QPYcom* encapsulates the command-line downloading functionality provided by the baseband processor manufacturers of various series of modules into a unified graphical interface. After you load the firmware in the interface, *QPYcom* can automatically identify the module series and call the corresponding manufacturer's downloading tool in the background for firmware downloading. @@ -60,13 +60,13 @@ After entering the downloading mode, the module waits for the handshake for the ### Qflash -[*Qflash*](https://images.quectel.com/python/2023/06/QFlash_V6.1_Temp_20221104-2.zip) is a tool developed by Quectel specifically for firmware downloading. Its implementation principle is similar to the firmware downloading function of *QPYcom*. +[*Qflash*](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QFlash_V6.1_Temp_20221104.zip) is a tool developed by Quectel specifically for firmware downloading. Its implementation principle is similar to the firmware downloading function of *QPYcom*. However, *Qflash* cannot debug QuecPython development as *QPYcom* does. You are recommended to use *QPYcom* as the downloading and debugging tool. ### QMulti_DL -[*QMulti_DL*](https://images.quectel.com/python/2022/12/QMulti_DL_V3.0_CN.zip) is a firmware downloading tool developed by Quectel for multiple devices downloading firmware simultaneously, which is suitable for batch firmware downloading of terminal products on the production line. +[*QMulti_DL*](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QMulti_DL_V3.5_EN.zip) is a firmware downloading tool developed by Quectel for multiple devices downloading firmware simultaneously, which is suitable for batch firmware downloading of terminal products on the production line. ### Baseband Processor Manufacturer Tools @@ -107,4 +107,4 @@ The correspondence between the module and its firmware package suffix is as foll 5. Which tool is suitable for mass production, and how can a computer download firmware for multiple modules simultaneously? - [QMulti_DL](https://images.quectel.com/python/2022/12/QMulti_DL_V3.0_CN.zip). Please refer to the user guide included in the tool package for instructions on how to use it. \ No newline at end of file + [QMulti_DL](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QMulti_DL_V3.5_EN.zip). Please refer to the user guide included in the tool package for instructions on how to use it. \ No newline at end of file diff --git a/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO.md b/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO.md index 287b9cd333031196e17f8797de02dc91dbf15e1e..bb101764d0671f3a41e67583e587abcb1fc50c7c 100644 --- a/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO.md +++ b/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO.md @@ -2,99 +2,99 @@ ## Basic Knowledge -It will benefit us a lot by learning about basic knowledge on GPIO. +It will benefit us a lot by learning about basic knowledge on GPIO. -### Framework +### Framework -The GPIO (Abbreviation of General-purpose input/out), a kind of input/output interface for general data, communicates with external electrical components or devices, which can be deployed in micro-processor, micro-controller and other embedded systems. +The GPIO (Abbreviation of General-purpose input/out), a kind of input/output interface for general data, communicates with external electrical components or devices, which can be deployed in micro-processor, micro-controller and other embedded systems. See basic diagram as below: ![GPIO_gpio_basic_structure](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_basic_structure.png) -I/O pin: The actual HW interface in micro-processor or micro-controller that connects to external device. Each GPIO pin can be programmed as input or output mode. +I/O pin: The actual HW interface in micro-processor or micro-controller that connects to external device. Each GPIO pin can be programmed as input or output mode. -Protection diode: One special diode that protects the I/O pin in micro-controller or micro-processor from influence caused by voltage kick-out or ESD. +Protection diode: One special diode that protects the I/O pin in micro-controller or micro-processor from influence caused by voltage kick-out or ESD. -Pull-up/down resistor: It sets the status of GPIO pin in IDLE or in condition of invisible input signal. The Pull-up resistor will connect the GPIO pin to the positive to set it as the default high-level status. While the Pull-down resistor will connect the GPIO pin to the GND to set it as the default low-level status. Both of them will be controlled by register configured by SW. +Pull-up/down resistor: It sets the status of GPIO pin in IDLE or in condition of invisible input signal. The Pull-up resistor will connect the GPIO pin to the positive to set it as the default high-level status. While the Pull-down resistor will connect the GPIO pin to the GND to set it as the default low-level status. Both of them will be controlled by register configured by SW. -P-MOS and N-MOS: The circuit with P-MOS and N-MOS will facilitate GPIO with "Push-pull" and "Open-drain" modes. +P-MOS and N-MOS: The circuit with P-MOS and N-MOS will facilitate GPIO with "Push-pull" and "Open-drain" modes. -TTL Schmitt trigger: Process noise or unstable input data. It will eliminate the noise of data signal based on highest threshold and lowest threshold to provide more accurate digital signal. +TTL Schmitt trigger: Process noise or unstable input data. It will eliminate the noise of data signal based on highest threshold and lowest threshold to provide more accurate digital signal. -Output driver: Control the voltage and current of GPIO pin in output mode +Output driver: Control the voltage and current of GPIO pin in output mode -Input receiver: Process input signal from GPIO pin. In most cases, one TTL Schmitt trigger will be embedded to eliminate the noise of digital signal. +Input receiver: Process input signal from GPIO pin. In most cases, one TTL Schmitt trigger will be embedded to eliminate the noise of digital signal. ### Working mode -#### Floating input +#### Floating input -Called as Hi-Z, it means the GPIO pin will be floating without being pulled to any logic level. In this status, the GPIO pin can pick up voltage noise easily and read random value. Therefore, please avoid it unless given reason. +Called as Hi-Z, it means the GPIO pin will be floating without being pulled to any logic level. In this status, the GPIO pin can pick up voltage noise easily and read random value. Therefore, please avoid it unless given reason. ![gpio_floating](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_floating.png) -The contents highlighted by yellow background illustrates the data transmission channel. The external level signal will enter the internal chip via the I/O with number ①; After that, reformed by Schmitt trigger with number ②, the signal will arrive at "Input data register" with number ③ and ends at the other terminal (Number ④) of "Input data register". Thus, it is available to read the level change of I/O via internal data bus as you wish. +The contents highlighted by yellow background illustrates the data transmission channel. The external level signal will enter the internal chip via the I/O with number ①; After that, reformed by Schmitt trigger with number ②, the signal will arrive at "Input data register" with number ③ and ends at the other terminal (Number ④) of "Input data register". Thus, it is available to read the level change of I/O via internal data bus as you wish. -#### Pull-up input +#### Pull-up input -The pull-up resistor is linked between GPIO pin and VDD. Therefore, under the circumstance that the GPIO pin is not driven by device actively, it will be pulled up to logic high level. In condition that the default status of GPIO pin is high level, please configure it as pull-up mode. +The pull-up resistor is linked between GPIO pin and VDD. Therefore, under the circumstance that the GPIO pin is not driven by device actively, it will be pulled up to logic high level. In condition that the default status of GPIO pin is high level, please configure it as pull-up mode. ![gpio_pull_up](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_pull_up.png) -Compared with aforementioned floating input, one pull-up resistor ranged 30KΩ~50KΩ is connected in data channel. In condition that there is no signal input in I/O, the level in input terminal can maintain high (The VDD goes through pull-up resistor). In addition, when the level input in I/O is low, the level in input terminal will be low as well. +Compared with aforementioned floating input, one pull-up resistor ranged 30KΩ~50KΩ is connected in data channel. In condition that there is no signal input in I/O, the level in input terminal can maintain high (The VDD goes through pull-up resistor). In addition, when the level input in I/O is low, the level in input terminal will be low as well. -#### Pull-down input +#### Pull-down input -The pull-down resistor is linked between GPIO pin and VSS. Therefore, under the circumstance that the GPIO pin is not driven by device actively, it will be pulled down to logic low level. In condition that the default status of GPIO pin is low level, please configure it as pull-down mode. +The pull-down resistor is linked between GPIO pin and VSS. Therefore, under the circumstance that the GPIO pin is not driven by device actively, it will be pulled down to logic low level. In condition that the default status of GPIO pin is low level, please configure it as pull-down mode. ![gpio_pull_down](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_pull_down.png) -In terms of input pull-down mode, one pull-down resistor ranged 30KΩ~50KΩ is linked in data channel. +In terms of input pull-down mode, one pull-down resistor ranged 30KΩ~50KΩ is linked in data channel. -#### Analog input +#### Analog input -There is neither pull-up resistor nor pull-down resistor and the signal will enter analog input channel without going through Schmitt trigger. Normally, it will be used in ADC data sampling. +There is neither pull-up resistor nor pull-down resistor and the signal will enter analog input channel without going through Schmitt trigger. Normally, it will be used in ADC data sampling. ![gpio_analog](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_analog.png) -#### Open-Drain output +#### Open-Drain output -In Open-Drain output mode, the GPIO pin will pull down voltage actively via connecting to GND instead of pulling up. If it is needed to pull up voltage, one extra pull-up resistor shall be connected to power supply. It will be applied in I2C communication normally, among which, multiple devices can share one data cable synchronously. +In Open-Drain output mode, the GPIO pin will pull down voltage actively via connecting to GND instead of pulling up. If it is needed to pull up voltage, one extra pull-up resistor shall be connected to power supply. It will be applied in I2C communication normally, among which, multiple devices can share one data cable synchronously. ![gpio_open_drain](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_open_drain.png) -In condition that the CPU writes into data via "Bit set/reset registers" or "Output data register" with number ①, this data bit will be transferred to I/O with number ④ via the "output control circuit“ with number ②. If the logic "1" is written by CPU, the N-MOS with number ③ will be off and the level in I/O is determined by external pull-up resistor. While the logic "0" is written, the N-MOS with number ③ will be on and the level in I/O will be pulled down to zero correspondingly. +In condition that the CPU writes into data via "Bit set/reset registers" or "Output data register" with number ①, this data bit will be transferred to I/O with number ④ via the "output control circuit“ with number ②. If the logic "1" is written by CPU, the N-MOS with number ③ will be off and the level in I/O is determined by external pull-up resistor. While the logic "0" is written, the N-MOS with number ③ will be on and the level in I/O will be pulled down to zero correspondingly. -As above figure shows, the Schmitt trigger is switched on, which means the CPU can monitor the I/O on other side of "Input data register". Based on this characteristic, it is also available to implement the virtual bilateral communication in I/O. Assuming that the CPU outputs logic "1", the level in I/O will be determined by external circuit completely since the N-MOS with Number ③ is off. Therefore, the CPU is capable to read the external circuit signal in "Input data register" instead of logic "1" outputted by itself. +As above figure shows, the Schmitt trigger is switched on, which means the CPU can monitor the I/O on other side of "Input data register". Based on this characteristic, it is also available to implement the virtual bilateral communication in I/O. Assuming that the CPU outputs logic "1", the level in I/O will be determined by external circuit completely since the N-MOS with Number ③ is off. Therefore, the CPU is capable to read the external circuit signal in "Input data register" instead of logic "1" outputted by itself. -#### Push-pull output +#### Push-pull output -In Push-Pull output mode, the GPIO pin will drive high level or low level actively. That means the GPIO can not only push the voltage to high level but also pull voltage to low level. This mode can provide powerful driver, which is suitable for load such as LED and motor. +In Push-Pull output mode, the GPIO pin will drive high level or low level actively. That means the GPIO can not only push the voltage to high level but also pull voltage to low level. This mode can provide powerful driver, which is suitable for load such as LED and motor. ![gpio_push_pull](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_push_pull.png) -> The most prominent characteristic of push-pull output lies in that it can output high level and low level truly. Moreover, it is equipped with driver in both levels. +> The most prominent characteristic of push-pull output lies in that it can output high level and low level truly. Moreover, it is equipped with driver in both levels. ### Interrupt Framework ![1692426270556](../../media/hardware/peripheral-interfaces/GPIO/GPIO_Interrupt_Block_Diagram.png) -**Interrupt Mask Register**: This register will mask or disable dedicated interrupt for sake of preventing it from triggering interrupt service routine (Abbreviated as ISR hereinafter). When the certain bit is set as 1, the corresponding interrupt will be masked. -**Pending Request Register**: This register will store the pending interrupt request. Once the value in corresponding bit is 1, which means the relevant interrupt is pending. -**Software Interrupt Event Register**: This register allows software to generate interrupt. The interrupt service routine (ISR) related to dedicated interrupt will be triggered by writing into this register. -**Rising Trigger Selection Register**: This register will trigger interrupt in rising edge of signal. -**Falling Trigger Selection Register**: This register will trigger interrupt in falling edge of signal. -**Edge Detector Circuit**: This is HW circuit, which will trigger interrupt by detecting the change in rising edge or falling edge. -**Timing Mask Register**: This register will mask the interrupt generated in specific time. Normally, it will eliminate the interrupt triggered in a error way. -**Pulse Generator**: It will generate a series of pulse in HW, which will trigger timing or synchronized event, including interrupt. -**NVIC (Nested Vectored Interrupt Controller)**: As a part of ARM Cortex-M, it will manage interrupts, especially the nested and interrupt vector, that is the pointer points at interrupt service routine. +**Interrupt Mask Register**: This register will mask or disable dedicated interrupt for sake of preventing it from triggering interrupt service routine (Abbreviated as ISR hereinafter). When the certain bit is set as 1, the corresponding interrupt will be masked. +**Pending Request Register**: This register will store the pending interrupt request. Once the value in corresponding bit is 1, which means the relevant interrupt is pending. +**Software Interrupt Event Register**: This register allows software to generate interrupt. The interrupt service routine (ISR) related to dedicated interrupt will be triggered by writing into this register. +**Rising Trigger Selection Register**: This register will trigger interrupt in rising edge of signal. +**Falling Trigger Selection Register**: This register will trigger interrupt in falling edge of signal. +**Edge Detector Circuit**: This is HW circuit, which will trigger interrupt by detecting the change in rising edge or falling edge. +**Timing Mask Register**: This register will mask the interrupt generated in specific time. Normally, it will eliminate the interrupt triggered in a error way. +**Pulse Generator**: It will generate a series of pulse in HW, which will trigger timing or synchronized event, including interrupt. +**NVIC (Nested Vectored Interrupt Controller)**: As a part of ARM Cortex-M, it will manage interrupts, especially the nested and interrupt vector, that is the pointer points at interrupt service routine. -### Function Multiplexing +### Function Multiplexing -In embedded systems, including plenty of micro-controllers and micro-processors, some dedicated physical pins can be configured as different functions, that is called Pin Multiplexing. Then, how to understand it? The key point is to learn that some pins can be converted among different HW components, resulting in huger flexibility in stage of HW design. The purpose of pin multiplexing is to reduce space and cost since the quantity of physical pins will be decreased. +In embedded systems, including plenty of micro-controllers and micro-processors, some dedicated physical pins can be configured as different functions, that is called Pin Multiplexing. Then, how to understand it? The key point is to learn that some pins can be converted among different HW components, resulting in huger flexibility in stage of HW design. The purpose of pin multiplexing is to reduce space and cost since the quantity of physical pins will be decreased. ![tutorial_peripheral_diagram](../../media/hardware/peripheral-interfaces/GPIO/GPIO_tutorial_peripheral_diagram.png) @@ -105,17 +105,17 @@ The physical pins of an embedded chip may be designed to switch among several fu - General data Input/output as GPIO; - As a part of SPI interface, it will communicate with other SPI devices; - As a part of UART interface, it will used in serial communication; -- Or it is endowed with other specialized functions such as ADC input or PWM output. +- Or it is endowed with other specialized functions such as ADC input or PWM output. -In stage of embedded system design, it is available to configure these pins according to HW and SW demands. In addition, it is also allowed by some embedded platforms to convert these pins dynamically when operating, providing much flexibility. +In stage of embedded system design, it is available to configure these pins according to HW and SW demands. In addition, it is also allowed by some embedded platforms to convert these pins dynamically when operating, providing much flexibility. -Absolutely, each coin has two sides, the pin multiplexing also owns limitation. I.e. one pin is not allowed to execute two or dmore functions at the same time. Therefore, please take it into consideration during the period of system design. Moreover, the pin multiplexing management will induce the system complexity and more SWs are demanded to configure and use these pins properly. +Absolutely, each coin has two sides, the pin multiplexing also owns limitation. I.e. one pin is not allowed to execute two or dmore functions at the same time. Therefore, please take it into consideration during the period of system design. Moreover, the pin multiplexing management will induce the system complexity and more SWs are demanded to configure and use these pins properly. -### Debounce +### Debounce -Button debounce is common issue when processing mechanical button input in corresponding system. Due to its characteristic, the touch point will be opened or closed for several times in a rapid way when pressing or releasing button, resulting in multiple level change in ultra-short time, that is called "bounce". The system may mistake the button for being pressed or released more than once if the bounce is not eliminated. Therefore, please take measures to eliminate or decrease it at least. +Button debounce is common issue when processing mechanical button input in corresponding system. Due to its characteristic, the touch point will be opened or closed for several times in a rapid way when pressing or releasing button, resulting in multiple level change in ultra-short time, that is called "bounce". The system may mistake the button for being pressed or released more than once if the bounce is not eliminated. Therefore, please take measures to eliminate or decrease it at least. -Normally, it is divided into two classes- HW debounce and SW debounce. +Normally, it is divided into two classes- HW debounce and SW debounce. #### HW debounce @@ -123,74 +123,74 @@ The purpose of HW debounce is to process the bounce caused by mechanical button ##### **RC filter**: -Component +Component -- **Resistor(R)**: Connect to one end of button +- **Resistor(R)**: Connect to one end of button - **Capacitor(C)**: Connect with the other end of button to GND -Characteristic +Characteristic -- **LPF (low-pass filter)**: Due to its structure, the RC filter will allow the low frequency signal to pass and filter high frequency signal. +- **LPF (low-pass filter)**: Due to its structure, the RC filter will allow the low frequency signal to pass and filter high frequency signal. Operation - When the button is pressed or released, the capacitor will start charging or discharging. Therefore, for rapid voltage changes (such as those due to contact bounce), the RC filter smooths these changes, thereby preventing mis-judgements. - The strength of this smoothing effect is determined by the RC time constant (τ = R×C). This time constant represents the time it takes the capacitor to charge to 63.2% of its initial voltage. -Common parameters +Common parameters - **Resistor(R)**: 1kΩ ~10kΩ -- **Capacitor(C)**: 0.1µF~10µF +- **Capacitor(C)**: 0.1µF~10µF Advantage: -1. **Simplicity**: Only two basic components are needed -2. **Economy**: Both resistor and capacitor are low-cost -3. **Effectiveness**: In terms of majority of common applications, the debounce capability is sufficient. +1. **Simplicity**: Only two basic components are needed +2. **Economy**: Both resistor and capacitor are low-cost +3. **Effectiveness**: In terms of majority of common applications, the debounce capability is sufficient. -Disadvantage +Disadvantage -1. **Delay**: The ultra huge RC time constant will cause unnecessary delay in button response. -2. **Environment sensitivity**: The variation in temperature and humidity may influence the capacitor value and debounce effect further. -3. **Not all applications can be applied**: For quick-response application, the RC filter will not be the optimum selection. +1. **Delay**: The ultra huge RC time constant will cause unnecessary delay in button response. +2. **Environment sensitivity**: The variation in temperature and humidity may influence the capacitor value and debounce effect further. +3. **Not all applications can be applied**: For quick-response application, the RC filter will not be the optimum selection. -If the RC filter is taken in HW debounce solution, the suitable resistor and capacitor values are important since it will filter bounce effectively without inducing excessive response delay at the same time. Therefore, in design stage, it is necessary to test different combinations of R and C to achieve optimum debounce effect. +If the RC filter is taken in HW debounce solution, the suitable resistor and capacitor values are important since it will filter bounce effectively without inducing excessive response delay at the same time. Therefore, in design stage, it is necessary to test different combinations of R and C to achieve optimum debounce effect. ##### **Schmitt Trigger**: -Component +Component -- **Schmitt trigger**: In essential, it is a power comparator with dual threshold. Due to its characteristic, it can not only be one independent component but also a part of micro-controller. +- **Schmitt trigger**: In essential, it is a power comparator with dual threshold. Due to its characteristic, it can not only be one independent component but also a part of micro-controller. -Characteristic +Characteristic -- **Dual threshold**: The main characteristic of Schmitt trigger lies in that it owns two thresholds- Vt+ & Vt-. +- **Dual threshold**: The main characteristic of Schmitt trigger lies in that it owns two thresholds- Vt+ & Vt-. Operation -- Once the input voltage rises and surpasses the **Vt+**, the output will switch to high status. -- Once the input falls and is lower than **Vt-**, the output will switch to low status. -- This characteristic can guarantee that the output status will not change if any minor change in input voltage so as to filter bounce effectively. +- Once the input voltage rises and surpasses the **Vt+**, the output will switch to high status. +- Once the input falls and is lower than **Vt-**, the output will switch to low status. +- This characteristic can guarantee that the output status will not change if any minor change in input voltage so as to filter bounce effectively. -Common parameter +Common parameter -- **Vt+** & **Vt-**: The gap between two thresholds is called as hysteresis or dead zone. +- **Vt+** & **Vt-**: The gap between two thresholds is called as hysteresis or dead zone. Advantage -1. **Perfect debounce**: Owing to dual threshold characteristic. the Schmitt trigger is endowed with powerful tolerance in input noise and bounce. -2. **Explicit output**: The output will be either low or high level, which will not fluctuate between them. -3. **Widespread application**: The input of GPIO in multiple micro-controllers are embedded with optional Schmitt trigger. +1. **Perfect debounce**: Owing to dual threshold characteristic. the Schmitt trigger is endowed with powerful tolerance in input noise and bounce. +2. **Explicit output**: The output will be either low or high level, which will not fluctuate between them. +3. **Widespread application**: The input of GPIO in multiple micro-controllers are embedded with optional Schmitt trigger. -Disadvantage +Disadvantage -1. **Possible delay**: In some cases, if the change in input signal is slow, the trigger will cause minor delay. -2. **Inadequate fast signal**: In terms of signal with high frequency, the Schmitt trigger will not be the optimum since it will lead to signal distortion -3. **Cost**: Although many micro-controllers are embedded with Schmitt trigger. If the external trigger is needed, the cost will increase as well. +1. **Possible delay**: In some cases, if the change in input signal is slow, the trigger will cause minor delay. +2. **Inadequate fast signal**: In terms of signal with high frequency, the Schmitt trigger will not be the optimum since it will lead to signal distortion +3. **Cost**: Although many micro-controllers are embedded with Schmitt trigger. If the external trigger is needed, the cost will increase as well. -> Notes +> Notes > > - As for selected debounce method and component value, please consider the bounce frequency and duration. > - If RC filter is deployed, please confirm the RC time constant can eliminate bounce without unduly delaying the button response. @@ -199,83 +199,83 @@ Disadvantage ##### **Shunt capacitor** -Component +Component -- **Capacitor (C)**: Connect with key directly. Normally, it will connect with one terminal of button and the GND. +- **Capacitor (C)**: Connect with key directly. Normally, it will connect with one terminal of button and the GND. -Characteristic +Characteristic -- **Delayed charging/discharging**: Owing to its characteristic, the capacitor should take time in charging and discharging +- **Delayed charging/discharging**: Owing to its characteristic, the capacitor should take time in charging and discharging Operation -- Under the circumstance that the button is not pressed yet, the capacitor will in discharging status. +- Under the circumstance that the button is not pressed yet, the capacitor will in discharging status. - Once the button is pressed, it will spend certain time in charging till the capacitor is full, which will do a favor in filtering the short bounce that may occur. -- Similarly, when the button is released, the capacitor will discharge in due time so as to eliminate possible bounce. +- Similarly, when the button is released, the capacitor will discharge in due time so as to eliminate possible bounce. -Common parameters +Common parameters -- **Capacitor (C)**: 1nF ~10µF. The specific value is determined by dedicated demand and the frequency of key bounce. +- **Capacitor (C)**: 1nF ~10µF. The specific value is determined by dedicated demand and the frequency of key bounce. Advantage: 1. **Simplicity**: Only one capacitor is needed and the connection is simple as well -2. **Low cost**: The capacitor is cheap and easy to acquire. -3. **Apparent effect**: It will debounce heavily in terms of most of common button bounces. +2. **Low cost**: The capacitor is cheap and easy to acquire. +3. **Apparent effect**: It will debounce heavily in terms of most of common button bounces. Disadvantage: -1. **Possible delay**: Ultra-huge capacitor will lead to obvious delay in key response. -2. **Environment sensitivity**: The variation in temperature and humidity may influence the capacitor value and debounce effect further. -3. **Power noise**: If the power noise is generated by other components in system, this shunt capacitor may magnify the noise. -4. **Not all applications can be applied**: For quick-response application, this method will not be the optimum. +1. **Possible delay**: Ultra-huge capacitor will lead to obvious delay in key response. +2. **Environment sensitivity**: The variation in temperature and humidity may influence the capacitor value and debounce effect further. +3. **Power noise**: If the power noise is generated by other components in system, this shunt capacitor may magnify the noise. +4. **Not all applications can be applied**: For quick-response application, this method will not be the optimum. ##### **RS trigger** -Component +Component -- **RS trigger**: Normally, the basic bistable circuit is made by two NAND gates or NOR gates. +- **RS trigger**: Normally, the basic bistable circuit is made by two NAND gates or NOR gates. - Two Inputs: **R** (Reset) & **S** (Set)。 - Two outputs: **Q** & **~Q** (Inversion of Q)。 -Characteristic +Characteristic -- **Bistable**: The RS trigger always owns two stable output statuses +- **Bistable**: The RS trigger always owns two stable output statuses Operation -- In condition that the input in **S** is 1 and the input of **R** is 0. the output of **Q** will be 1 while the **~Q** will be 0. -- In condition that the input in **R** is 1 and the input of **S** is 0. the output of **Q** will be 0 while the **~Q** will be 1. -- Under the circumstance that both inputs are 0, the RS trigger will maintain current status -- Under the circumstance that both inputs are 1, this status is not allowed and uncertain output will be triggered probably. +- In condition that the input in **S** is 1 and the input of **R** is 0. the output of **Q** will be 1 while the **~Q** will be 0. +- In condition that the input in **R** is 1 and the input of **S** is 0. the output of **Q** will be 0 while the **~Q** will be 1. +- Under the circumstance that both inputs are 0, the RS trigger will maintain current status +- Under the circumstance that both inputs are 1, this status is not allowed and uncertain output will be triggered probably. -In order to eliminate button bounce, the RS trigger can be configured as the situation that only when the button is truly pressed or released can the status be changed. Any momentary bounce related to button will not change the output of RS trigger, leading to effective debounce. +In order to eliminate button bounce, the RS trigger can be configured as the situation that only when the button is truly pressed or released can the status be changed. Any momentary bounce related to button will not change the output of RS trigger, leading to effective debounce. -Common parameter +Common parameter -- **Input logic level:** +- **Input logic level:** - For RS trigger of NAND, the common logic level is 1; -- For RS trigger of NOR, the common logic level is 0. +- For RS trigger of NOR, the common logic level is 0. Advantage: -1. **High effective debounce**: The RS trigger provides stable output for button no matter how noisy the input. -3. **Explicit output status**: There will be high or low output in any given time. -5. **Low cost**: The RS trigger can be built by basic logic gate. +1. **High effective debounce**: The RS trigger provides stable output for button no matter how noisy the input. +3. **Explicit output status**: There will be high or low output in any given time. +5. **Low cost**: The RS trigger can be built by basic logic gate. Disadvantage: -1. **Complexity**: Compared with simple shunt capacitor or Schmitt trigger, more components and more complex traces are needed. -2. **Impermissible status**: There exists one impermissible status in RS trigger, please avoid in stage of design. +1. **Complexity**: Compared with simple shunt capacitor or Schmitt trigger, more components and more complex traces are needed. +2. **Impermissible status**: There exists one impermissible status in RS trigger, please avoid in stage of design. 3. **Power supply demand**: Appropriate power shall be provided for RS trigger ##### **Proprietary debouncer** -There are some proprietary debouncers such as MAX6816, MAX6817 and MAX6818 in market. The filter and Schmitt trigger involved in these ICs can be valid to connect to button and provide stable data output. +There are some proprietary debouncers such as MAX6816, MAX6817 and MAX6818 in market. The filter and Schmitt trigger involved in these ICs can be valid to connect to button and provide stable data output. -> - Notes +> - Notes > > - As for selected debounce method and component value, please consider the bounce frequency and duration. > - If RC filter is deployed, please confirm the RC time constant can eliminate bounce without unduly delaying the key response. @@ -284,81 +284,81 @@ There are some proprietary debouncers such as MAX6816, MAX6817 and MAX6818 in ma -#### SW debounce +#### SW debounce -This method will eliminate button bounce via algorithm and logic in SW. Compared with former method, it provides more flexibility in terms of different applications and conditions as well as burden increased. +This method will eliminate button bounce via algorithm and logic in SW. Compared with former method, it provides more flexibility in terms of different applications and conditions as well as burden increased. -See common embedded SW debounce methods: +See common embedded SW debounce methods: -##### **Delay** +##### **Delay** Operation -Once the button status changes (I.e. Change from never-pressed status into pressed status), the program will wait one predetermined delay time instead of responding this change immediately. After this delay is over, the program will detect button status again. If the button status maintains, this operation will be considered as valid and the program will respond it. Otherwise, it will be taken as error or bounce, resulting in no response. +Once the button status changes (I.e. Change from never-pressed status into pressed status), the program will wait one predetermined delay time instead of responding this change immediately. After this delay is over, the program will detect button status again. If the button status maintains, this operation will be considered as valid and the program will respond it. Otherwise, it will be taken as error or bounce, resulting in no response. Advantage: -1. **Simple implementation**: The delay will be simplest and targeted SW debounce method by adding one delay function after the button status is changed. -2. **No extra resource is needed**: Compared with other methods such as counter or FSM, neither extra storage nor counting resource are needed in this method. +1. **Simple implementation**: The delay will be simplest and targeted SW debounce method by adding one delay function after the button status is changed. +2. **No extra resource is needed**: Compared with other methods such as counter or FSM, neither extra storage nor counting resource are needed in this method. Disadvantage: -1. **Response delay**: Since it is needed to wait predetermined delay time to confirm the pressed action, the response delay will be caused. -2. **CPU time consumption**: If the busy-waiting is used to implement delay, it will be a failure for CPU to execute any task in this period, which is unacceptable in embedded system with restricted resource. +1. **Response delay**: Since it is needed to wait predetermined delay time to confirm the pressed action, the response delay will be caused. +2. **CPU time consumption**: If the busy-waiting is used to implement delay, it will be a failure for CPU to execute any task in this period, which is unacceptable in embedded system with restricted resource. 4. **Unreliability**: If the bounce lasts longer than the predetermined delay time, this method may still produce an error. In addition, if the delay time is set too long, you may miss the rapid continuous button action. ##### **Counter** Operation -When it detects the button status change, the system will not confirm immediately. Instead, one counter will be initiated. In following consecutive tests, if the button status keeps changing, the value in counter will increase corresponding. While the button returns to original status, the counter will be reset instead. Only under the circumstance that the value in counter reaches the pre-determined threshold can the button status change be considered as the true press and responded by system. Thus, the momentary bounce will not reach the threshold of counter and it can't be mistaken for a valid button action. +When it detects the button status change, the system will not confirm immediately. Instead, one counter will be initiated. In following consecutive tests, if the button status keeps changing, the value in counter will increase corresponding. While the button returns to original status, the counter will be reset instead. Only under the circumstance that the value in counter reaches the pre-determined threshold can the button status change be considered as the true press and responded by system. Thus, the momentary bounce will not reach the threshold of counter and it can't be mistaken for a valid button action. Advantage -1. **Perfect reliability**: Compared with simple delay debounce, it will filter the momentary bounce more reliably. -2. **Perfect response**: If the button is pressed consecutively, the system will confirm this action in relatively short time to provide faster response. -3. **Flexibility**: It is available to adjust counter threshold via actual need to adapt to different button and bounce characteristic. +1. **Perfect reliability**: Compared with simple delay debounce, it will filter the momentary bounce more reliably. +2. **Perfect response**: If the button is pressed consecutively, the system will confirm this action in relatively short time to provide faster response. +3. **Flexibility**: It is available to adjust counter threshold via actual need to adapt to different button and bounce characteristic. Disadvantage -1. **Resource consumption**: It is needed to arrange one counter for each button or one global counter for system, which may consumer extra storage and counting resource. -2. **Complexity**: Compared with simple delay debounce, the debounce by counter will be more complex actually, especially in scenario that needs multiple keys. -3. **Possible delay**: If the predetermined threshold in counter is unduly high, it will cause delayed response in system and bad user feeling. +1. **Resource consumption**: It is needed to arrange one counter for each button or one global counter for system, which may consumer extra storage and counting resource. +2. **Complexity**: Compared with simple delay debounce, the debounce by counter will be more complex actually, especially in scenario that needs multiple keys. +3. **Possible delay**: If the predetermined threshold in counter is unduly high, it will cause delayed response in system and bad user feeling. ##### **FSM (finite-state machine)** Operation -It involves defining multiple statuses for button and determines the next status based on current status and input. +It involves defining multiple statuses for button and determines the next status based on current status and input. -Typical FSM will be divided into following several statuses: `not pressed`, `probably pressed`, `pressed`, `probably released`. The original status is `not pressed`. +Typical FSM will be divided into following several statuses: `not pressed`, `probably pressed`, `pressed`, `probably released`. The original status is `not pressed`. -- Once the button is pressed, the FSM will switch to the status of `Probably pressed` and initiate timer. -- If the timer arrives at defined time and the key is still pressed, the FSM is switched to the `pressed` status. -- Once the button is released, the FSM will switch to the status of `Probably pressed` and initiate timer again. -- If the timer arrives at specified time and the key is still released, the FSM is switched to the status of `not pressed`. +- Once the button is pressed, the FSM will switch to the status of `Probably pressed` and initiate timer. +- If the timer arrives at defined time and the key is still pressed, the FSM is switched to the `pressed` status. +- Once the button is released, the FSM will switch to the status of `Probably pressed` and initiate timer again. +- If the timer arrives at specified time and the key is still released, the FSM is switched to the status of `not pressed`. -Thus, The state of a button will be confirmed by the system if it remains steadily in a state for longer than the specified time. The short bounce will not cause state change and debounce. +Thus, The state of a button will be confirmed by the system if it remains steadily in a state for longer than the specified time. The short bounce will not cause state change and debounce. Advantage -1. **Perfect reliability**: The FSM can identify and ignore momentary bounce accurately. -2. **Flexibility**: The FSM structure allows developer to add more statuses and logics such as double-click and long-press. -3. **Clear logic structure**: The FSM provides clear and structured framework for button to facilitate understanding and maintenance. +1. **Perfect reliability**: The FSM can identify and ignore momentary bounce accurately. +2. **Flexibility**: The FSM structure allows developer to add more statuses and logics such as double-click and long-press. +3. **Clear logic structure**: The FSM provides clear and structured framework for button to facilitate understanding and maintenance. Disadvantage -1. **Implementation complexity **: Compared with other SW debounce method, the FSM demands more complicated codes and logic. -2. **Resource utility**: The FSM will deploy timer or interrupt and extra storage to save status. -3. **Possible delay**: The FSM structure and timer may lead to delayed button response +1. **Implementation complexity **: Compared with other SW debounce method, the FSM demands more complicated codes and logic. +2. **Resource utility**: The FSM will deploy timer or interrupt and extra storage to save status. +3. **Possible delay**: The FSM structure and timer may lead to delayed button response ## Support -See specific supports of QuecPython Series +See specific supports of QuecPython Series -For details, please refer to the [GPIO Multiplexing table](https://python.quectel.com/download) of each module. +For details, please refer to the [GPIO Multiplexing table](https://python.quectel.com/en/resource-download?cid=254) of each module. | Module | Floating input | Pull-up input | Pull-down input | Open-drain output | Pull-push output | Supported quantity | | ------- | -------------- | ------------- | --------------- | ----------------- | ---------------- | ------------------ | @@ -384,23 +384,23 @@ For details, please refer to the [GPIO Multiplexing table](https://python.quecte > Annotation: > > - √:Support -> - ×:Do not support +> - ×:Do not support -## Function Illustration +## Function Illustration -It is mainly divided into two types: GPIO and Extlnt. +It is mainly divided into two types: GPIO and Extlnt. ### GPIO -In this chapter, it will introduce how to use QuecPython GPIO and relevant notes. +In this chapter, it will introduce how to use QuecPython GPIO and relevant notes. -For specific API on QuecPython GPIO, please refer to [machine.Pin](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html) +For specific API on QuecPython GPIO, please refer to [machine.Pin](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html) -#### Create object +#### Create object -Input/output, pull-up/down and default pin of GPIO can be implemented in this step. +Input/output, pull-up/down and default pin of GPIO can be implemented in this step. ```python class machine.Pin(GPIOn, [dir], [pull], [value] @@ -408,13 +408,13 @@ class machine.Pin(GPIOn, [dir], [pull], [value] For parameter introduction and GPIO pin number & physical mapping, please see [machine.Pin](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3Emachine.Pin%3C/code%3E). -If the pin is to be available in relevant module, please import it first. Then, you can create one pin as following method. +If the pin is to be available in relevant module, please import it first. Then, you can create one pin as following method. ``` >>> pin = machine.Pin(1 ``` -In this case, the number "1" is the corresponding GPIO number of pin to be visited. Normally, it is hoped to configure this pin as input or output and operate when creating it. +In this case, the number "1" is the corresponding GPIO number of pin to be visited. Normally, it is hoped to configure this pin as input or output and operate when creating it. ``` >>> pin = machine.Pin(1, machine.Pin.IN, machine.Pin.PULL_PU) @@ -422,7 +422,7 @@ In this case, the number "1" is the corresponding GPIO number of pin to be visit It is available to take it as input pull-up/down via `PULL_PU` `PULL_PD` or `PULL_DISABLE` . -#### Read level +#### Read level ```python Pin.read() @@ -430,23 +430,23 @@ Pin.read() For specific method, please refer to [Pin.read](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3EPin.read%3C/code%3E). -When the GPIO is configured as input, its inner structure allows itself to detect and reflect the voltage imposed. It is available for you to read this status via querying internal register in micro-controller or `Pin.read`. +When the GPIO is configured as input, its inner structure allows itself to detect and reflect the voltage imposed. It is available for you to read this status via querying internal register in micro-controller or `Pin.read`. -HIGH: The voltage in GPIO is adjacent or equal to that in power supply such as 1.8 V or 3.3 V。 +HIGH: The voltage in GPIO is adjacent or equal to that in power supply such as 1.8 V or 3.3 V。 -LOW: The voltage in GPIO is adjacent or equal to that in GND. +LOW: The voltage in GPIO is adjacent or equal to that in GND. -Applicable scenario +Applicable scenario -- **Button or switch input**: By reading the GPIO level, it is available to detect whether the key is pressed or the switch is on/off. -- **Receive signal from other digital device**: Receive signal sent by devices such as sensor, module or other micro-controllers. +- **Button or switch input**: By reading the GPIO level, it is available to detect whether the key is pressed or the switch is on/off. +- **Receive signal from other digital device**: Receive signal sent by devices such as sensor, module or other micro-controllers. Note -- **Pull-up and pull-down resistor**: In some cases, the external device won't provide definite status. In order to avoid such "floating" situation, the internal or external pull-up or pull-down resistor can be used. -- **Input voltage range**: In order to protect micro-controller, please guarantee the input voltage of GPIO shall be within the permissible range. +- **Pull-up and pull-down resistor**: In some cases, the external device won't provide definite status. In order to avoid such "floating" situation, the internal or external pull-up or pull-down resistor can be used. +- **Input voltage range**: In order to protect micro-controller, please guarantee the input voltage of GPIO shall be within the permissible range. -#### Output level +#### Output level ```python Pin.write(value) @@ -454,27 +454,27 @@ Pin.write(value) For specific method, please refer to [Pin.write](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3EPin.write%3C/code%3E). -When the GPIO is configured as output mode, it is capable to output high or low level. +When the GPIO is configured as output mode, it is capable to output high or low level. -- **HIGH**: The voltage in GPIO is adjacent or equal to that in power supply such as 3.3 V or 5 V。 -- **LOW**: The voltage in GPIO is adjacent or equal to that in GND. +- **HIGH**: The voltage in GPIO is adjacent or equal to that in power supply such as 3.3 V or 5 V。 +- **LOW**: The voltage in GPIO is adjacent or equal to that in GND. -Driver capability +Driver capability -When configured as output, the GPIO is endowed with certain limited driver capability, which means it can provide or sink certain amount of current. If it is demanded to drive relatively huge load, the external circuit such as transistor or relay shall be applied. +When configured as output, the GPIO is endowed with certain limited driver capability, which means it can provide or sink certain amount of current. If it is demanded to drive relatively huge load, the external circuit such as transistor or relay shall be applied. Applicable scenario: -- **LED Indicator**: It is available to switch on/off LED via setting GPIO as high or low. -- **Drive relay**: It is capable to control motor, light and other housekeeping appliances. -- **Communicate with other digital devices**: By means of serial communication, SPI and I2C. +- **LED Indicator**: It is available to switch on/off LED via setting GPIO as high or low. +- **Drive relay**: It is capable to control motor, light and other housekeeping appliances. +- **Communicate with other digital devices**: By means of serial communication, SPI and I2C. Note -- **Maximum output current**: Each GPIO is restricted with maximum output current. It may ruin micro-controller when trying get excessive current from GPIO pin. -- **Output type**: Some GPIOs support open-drain/open-source output, which means it can either pull up or pull down instead of driving bilaterally. +- **Maximum output current**: Each GPIO is restricted with maximum output current. It may ruin micro-controller when trying get excessive current from GPIO pin. +- **Output type**: Some GPIOs support open-drain/open-source output, which means it can either pull up or pull down instead of driving bilaterally. -#### Direction +#### Direction ```python Pin.set_dir(value) @@ -482,24 +482,24 @@ Pin.set_dir(value) For specific method, please refer to [Pin.set_dir](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3EPin.set_dir%3C/code%3E). -Direction selection +Direction selection -- **IN**: -- When the GPIO is configured as input, it will read external device status. I.e. Detect whether the button is pressed. +- **IN**: +- When the GPIO is configured as input, it will read external device status. I.e. Detect whether the button is pressed. - **OUT**: -- When the GPIO is configured as output, it can manipulate external device status. I.e. Switch on/off LED. +- When the GPIO is configured as output, it can manipulate external device status. I.e. Switch on/off LED. -Importance of direction +Importance of direction - **Electrical protection**: If a pin is incorrectly configured as output and attempts to drive a signal that conflicts with another device that is trying to drive the same line, a short circuit or damage may be caused. -- **Function**: Different inner circuits will be activated by configuration in different directions. E.g. when configured as input, it is possible for GPIO to initiate one Hi-Z circuit to immune other devices connected to itself. +- **Function**: Different inner circuits will be activated by configuration in different directions. E.g. when configured as input, it is possible for GPIO to initiate one Hi-Z circuit to immune other devices connected to itself. Notes -- Please make sure the GPIO direction has been set properly before connecting to any external device. -- Take overall circuit design into consideration. I.e. if one GPIO is configured as output and connected to one button, please guarantee the GPIO will not be connected to unduly high voltage when it is pressed. +- Please make sure the GPIO direction has been set properly before connecting to any external device. +- Take overall circuit design into consideration. I.e. if one GPIO is configured as output and connected to one button, please guarantee the GPIO will not be connected to unduly high voltage when it is pressed. -### Interrupt +### Interrupt This class is used to configure the I/O pin to trigger an interrupt when an external event occurs @@ -511,33 +511,33 @@ class machine.ExtInt(GPIOn, mode, pull, callback) For specific method, please refer to [machine.ExtInt](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.ExtInt.html). -Types to trigger interrupt +Types to trigger interrupt **Rising Edge Interrupt** -- **Applicable Scenario**: Detect the moment when the button is pressed or detect the sensor from idle to active status. +- **Applicable Scenario**: Detect the moment when the button is pressed or detect the sensor from idle to active status. **Falling Edge Interrupt** -- **Applicable Scenario**: Detect the moment when the button is pressed to released or detect the sensor from active to idle status. +- **Applicable Scenario**: Detect the moment when the button is pressed to released or detect the sensor from active to idle status. **Both Edges Interrupt** -- **Applicable Scenario**: In terms of certain application such as Rotary Encoder for sake of detecting status change, it may demand info of rising edge and falling edge. +- **Applicable Scenario**: In terms of certain application such as Rotary Encoder for sake of detecting status change, it may demand info of rising edge and falling edge. Configure pull-up and pull-down resistor internally. -It is allowed for module to configure internal pull-up or pull-down resistor in stage of initializing GPIO. +It is allowed for module to configure internal pull-up or pull-down resistor in stage of initializing GPIO. > If the button or switch is connected to GPIO and there exists no external pull-up or pull-down resistor, the internal resistor can ensure that GPIO is in a known state when not driven. -Callback function +Callback function -When triggering interrupt, it is demanded for module to take charge of dedicated operation or function to be executed, that is called callback function. As a function defined by user, it will be called automatically when specialized interrupt condition is satisfied. +When triggering interrupt, it is demanded for module to take charge of dedicated operation or function to be executed, that is called callback function. As a function defined by user, it will be called automatically when specialized interrupt condition is satisfied. -> Note: The callback function shall be as short and fast as possible to avoid impending other interrupt or logic of main program for a long time. +> Note: The callback function shall be as short and fast as possible to avoid impending other interrupt or logic of main program for a long time. -#### Enable/disable +#### Enable/disable ```python extint.enable() @@ -546,29 +546,29 @@ extint.disable() For specific method, please refer to [Eextint.enable](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.ExtInt.html#%3Ccode%3Eextint.enable%3C/code%3E) and [Extint.disable](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.ExtInt.html#%3Ccode%3Eextint.disable%3C/code%3E) -Enable +Enable -- **Definition**: It allows GPIO pin to respond in terms of specialized event such as rising edge and falling edge. -- **Usage**: When the system is ready to process interrupt from specialized GPIO pin, please enable it. I.e. It shall be conducted after the system is initialized or former interrupt is accomplished. -- **Operation**: There exists dedicated register or command in module to enable specific GPIO interrupt. +- **Definition**: It allows GPIO pin to respond in terms of specialized event such as rising edge and falling edge. +- **Usage**: When the system is ready to process interrupt from specialized GPIO pin, please enable it. I.e. It shall be conducted after the system is initialized or former interrupt is accomplished. +- **Operation**: There exists dedicated register or command in module to enable specific GPIO interrupt. Disable: -- **Definition**: Stop GPIO pin from responding specialized event, that means the interrupt will not generate even if this event occurs. -- **Usage**: When executing vital codes such as FW upgrade, system calibration or other operation that needs to be immune from interrupt, please disable interrupt. Moreover, it is also used in the preliminary stage of ISR to avoid triggering same interrupt again when processing it. -- **Operation**: Similar with enabling interrupt, specialized register or command will be embedded in most of micro-controller to disable dedicated GPIO interrupt. +- **Definition**: Stop GPIO pin from responding specialized event, that means the interrupt will not generate even if this event occurs. +- **Usage**: When executing vital codes such as FW upgrade, system calibration or other operation that needs to be immune from interrupt, please disable interrupt. Moreover, it is also used in the preliminary stage of ISR to avoid triggering same interrupt again when processing it. +- **Operation**: Similar with enabling interrupt, specialized register or command will be embedded in most of micro-controller to disable dedicated GPIO interrupt. Note 1. **Time Precision**: In certain cases, especially for application with high time precision, it may need to enable or disable interrupt rapidly. -2. **Global and local**: In some systems, it is available to disable all interrupts (disable globally) or specialized interrupt (disable locally). -3. **Security**: After disabling interrupt, it is mandatory to enable it again in appropriate situation. Otherwise, it will cause a failure to respond some vital events in system. +2. **Global and local**: In some systems, it is available to disable all interrupts (disable globally) or specialized interrupt (disable locally). +3. **Security**: After disabling interrupt, it is mandatory to enable it again in appropriate situation. Otherwise, it will cause a failure to respond some vital events in system. -For other method, please refer to wiki -[machine.ExtInt](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.ExtInt.html) in detail. +For other method, please refer to wiki -[machine.ExtInt](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.ExtInt.html) in detail. -## Application examples +## Application examples -It mainly introduces applications related to GPIO. +It mainly introduces applications related to GPIO. | Example | Description & Application | | --------------------- | ------------------------------------------------------------ | @@ -577,82 +577,82 @@ It mainly introduces applications related to GPIO. | [One wire](GPIO_One_wire.md) | Description: Dedicated communication protocol.
Application: Temperature monitoring, authenticator and device configuration.
In this case, the DS18B20 temperature sensor based on One-Wire driver is used. | | [SIF](GPIO_sif.md) | Description: SIF communication protocol.
Application: SIF. Mainly used in E-bike communication.
| -> The example contains description of individual application scenario, implementation and corresponding protocols. +> The example contains description of individual application scenario, implementation and corresponding protocols. -## Notes +## Notes ### **Power supply and GND :** - Ensure all devices and main controllers connected by GPIO share the same GND. -- It is not allowed to connect to the GPIO pin to the voltage that beyond specific range; otherwise, it will be damaged. +- It is not allowed to connect to the GPIO pin to the voltage that beyond specific range; otherwise, it will be damaged. ### **Current restriction**: -- Each GPIO pin is endowed with maximum source current and sink current. Once surpassed, it will ruin pin or entire chip. +- Each GPIO pin is endowed with maximum source current and sink current. Once surpassed, it will ruin pin or entire chip. - One adequate resistor can restrict the current connected to GPIO pin. ### **Input mode**: -- When the GPIO is configured as input mode, please do not output voltage to it. -- The floating input pin will read random value, therefore, it is suggested to use pull-up or pull-down resistor. +- When the GPIO is configured as input mode, please do not output voltage to it. +- The floating input pin will read random value, therefore, it is suggested to use pull-up or pull-down resistor. ### **Output mode**: -- Do not connect two GPIO output pins directly; otherwise, it will cause short circuit when outputting different level. -- When the pin is set as output mode, try avoid imposing external voltage to it. +- Do not connect two GPIO output pins directly; otherwise, it will cause short circuit when outputting different level. +- When the pin is set as output mode, try avoid imposing external voltage to it. ### **Debounce**: -- When reading mechanical switch or button via GPIO, it may occur bounce. In this situation, the HW or SW debounce can be applied to solve. +- When reading mechanical switch or button via GPIO, it may occur bounce. In this situation, the HW or SW debounce can be applied to solve. For specific, please refer to [Debounce](#Debounce). ### **Interrupt**: -- For application demanding fast-response, the GPIO interrupt should be used instead of polling GPIO status. -- Ensure the ISR as short as possible and avoid impending other interrupt or logic of main program for a long time. +- For application demanding fast-response, the GPIO interrupt should be used instead of polling GPIO status. +- Ensure the ISR as short as possible and avoid impending other interrupt or logic of main program for a long time. ### **Protection circuit**: -- Select adequate components such as TVS diode to protect GPIO pin from being influenced by peak voltage. -- In terms of application processing analog signal, the RC filter should be used. +- Select adequate components such as TVS diode to protect GPIO pin from being influenced by peak voltage. +- In terms of application processing analog signal, the RC filter should be used. ### **Peripheral conflict**: -- In some micro-controllers, some GPIO pins may be multiplexed with other functions such as PWM, ADC and communication interface. Please take all potential conflicts into consideration when designing. +- In some micro-controllers, some GPIO pins may be multiplexed with other functions such as PWM, ADC and communication interface. Please take all potential conflicts into consideration when designing. ### **Thermal design**: -- When the massive current goes through GPIO pin, the temperature shall be considered since it will cause over-heat. +- When the massive current goes through GPIO pin, the temperature shall be considered since it will cause over-heat. ### **Firmware/Software**: -- Make acquaintance with current settings before modifying GPIO configuration or status. -- During the period of initiation, please initialize all GPIOs into known status to avoid exceptions. +- Make acquaintance with current settings before modifying GPIO configuration or status. +- During the period of initiation, please initialize all GPIOs into known status to avoid exceptions. ### **EMI/RFI**: -- The GPIO wire might be the victim of EMI or RFI, as a result, please take some elements into consideration such as adequate layout, grounding and shielding. +- The GPIO wire might be the victim of EMI or RFI, as a result, please take some elements into consideration such as adequate layout, grounding and shielding. -## Common issues +## Common issues ### About GPIO Multiplex Table Displayed by table or document, the GPIO Multiplexing table is used to describe different functions and alternative options of GPIO pins in specialized chip, micro-controller or system. In most of chips and micro-controllers, the GPIO pin is endowed with multiple functions and alternative options. That means each GPIO pin can be configured as various input or output such as data input/output, analog input/output or special peripherals. (I.e. SPI, UART and I2C) -The [GPIO multiplexing table](https://python.quectel.com/download) of QuecPython illustrates the function and alternative option of each GPIO pin in detail as well as status change in stage of booting. It lists the number, default function and available alternative option of each pin to make it convenient for user to configure and use GPIO pin properly, which is vital in connecting peripherals, driving screen ad controlling communication interface. +The [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254) of QuecPython illustrates the function and alternative option of each GPIO pin in detail as well as status change in stage of booting. It lists the number, default function and available alternative option of each pin to make it convenient for user to configure and use GPIO pin properly, which is vital in connecting peripherals, driving screen ad controlling communication interface. -> The format and contents of specific GPIO multiplexing table will be varied according to different module. Therefore, for given module, please refer to relevant [Hardware Design](https://python.quectel.com/download) or [GPIO multiplexing table](https://python.quectel.com/download) for detailed GPIO configuration. +> The format and contents of specific GPIO multiplexing table will be varied according to different module. Therefore, for given module, please refer to relevant [Hardware Design](https://python.quectel.com/en/resource-download?cid=250) or [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254) for detailed GPIO configuration. -In this case, it will take the QuecPython EC600U GPIO configuration as an example. For other modules, it will be similar. +In this case, it will take the QuecPython EC600U GPIO configuration as an example. For other modules, it will be similar. EC600U_gpio_config -Explanation on each column +Explanation on each column | Term | Explanation | | ------------------- | ------------------------------------------------------------ | @@ -665,32 +665,32 @@ Explanation on each column | Alternate Function | Pin multiplexing function | | Comment | Notes of pin and level change description in stage of booting | -### Status at Reset +### Status at Reset -The pin at Reset will be varied according to different HW platform and development environment. Normally, when powering up or rebooting system. the initial status of GPIO pin is undefined and is out of control by SW. Therefore, in terms of controlling LED or enabling peripheral switch, the pin with special reset status is needed. Before designing HW circuit, please query relevant documents or references to make acquaintance with pin at Reset in dedicated platform and environment. +The pin at Reset will be varied according to different HW platform and development environment. Normally, when powering up or rebooting system. the initial status of GPIO pin is undefined and is out of control by SW. Therefore, in terms of controlling LED or enabling peripheral switch, the pin with special reset status is needed. Before designing HW circuit, please query relevant documents or references to make acquaintance with pin at Reset in dedicated platform and environment. -The GPIO pin at Reset of individual platform can be acquired via querying [GPIO multiplexing table](https://python.quectel.com/download) . +The GPIO pin at Reset of individual platform can be acquired via querying [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254) . -Most GPIO pins are stable when powered on, and a small number of GPIO pins are changed by software after powered on. See QuecPython [GPIO multiplexing table](https://python.quectel.com/download) in detail. +Most GPIO pins are stable when powered on, and a small number of GPIO pins are changed by software after powered on. See QuecPython [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254) in detail. ![pin_satus_at_reset](../../media/hardware/peripheral-interfaces/GPIO/GPIO_pin_satus_at_reset.png) -### Query pin interrupt function +### Query pin interrupt function -Query whether there exists interrupt function in pin and corresponding method to trigger interrupt. +Query whether there exists interrupt function in pin and corresponding method to trigger interrupt. -Except for BG95 module, all GPIOs support interrupt function. +Except for BG95 module, all GPIOs support interrupt function. -In terms of BG95 Series, it is also available to get the GPIOs that support interrupt function via querying [GPIO multiplexing table](https://python.quectel.com/download). +In terms of BG95 Series, it is also available to get the GPIOs that support interrupt function via querying [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254). -### Wake up interrupt +### Wake up interrupt -The GPIOs in EC200U/EC600U/EG912U/EG915U modules support waking up module in sleep mode. While for others, most of which support waking up module. For specific, please query and confirm via [GPIO multiplexing table](https://python.quectel.com/download). +The GPIOs in EC200U/EC600U/EG912U/EG915U modules support waking up module in sleep mode. While for others, most of which support waking up module. For specific, please query and confirm via [GPIO multiplexing table](https://python.quectel.com/en/resource-download?cid=254). ![1692429975477](../../media/hardware/peripheral-interfaces/GPIO/GPIO_wake-up_interrupt.png) > To check whether it supports waking up interrupt, please refer to the GPIO multiplexing table of the corresponding module. -### Pin status in sleep mode +### Pin status in sleep mode The GPIO status remains unchanged after entering sleep mode. diff --git a/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO_LED.md b/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO_LED.md index a54a371621cbccafce9d0b6d9d7f761b81141835..d22be61181fe09ab3a26a1e0e2514e8d88ff1e67 100644 --- a/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO_LED.md +++ b/docs/Application_guide/en/hardware/peripheral-interfaces/GPIO_LED.md @@ -1,33 +1,33 @@ # LED -## Scenario Description +## Scenario Description -It is available to build one LED classification via QuecPython, which is capable to switch on/off and toggle LED. This design makes the modularized and extensible LED manipulation. +It is available to build one LED classification via QuecPython, which is capable to switch on/off and toggle LED. This design makes the modularized and extensible LED manipulation. -## Design +## Design -### HW +### HW -LED Connection: The anode of LED will be connected to GPIO pin of communication module via one restricted resistor while the cathode of LED will be connected to GND. +LED Connection: The anode of LED will be connected to GPIO pin of communication module via one restricted resistor while the cathode of LED will be connected to GND. SW -API definition +API definition ```python LED(gpio) ``` -- Function: Create LED Object -- Return: LED Object -- LED: LED Classification +- Function: Create LED Object +- Return: LED Object +- LED: LED Classification - gpio: GPIO number used to control LED. For specific, please refer to [machine.Pin](https://python.quectel.com/doc/API_reference/en/peripherals/machine.Pin.html) ```python LED.on() ``` -- Function: Turn on LED +- Function: Turn on LED ```python LED.off() @@ -39,16 +39,16 @@ LED.off() LED.toggle() ``` -- Function: Toggle LED Status +- Function: Toggle LED Status -SW Design +SW Design -- Import into module - - The GPIO manipulation can be achieved by `machine` in QuecPython. -- Define LED classification - - Create one LED classification, including switch on/off and toggle. +- Import into module + - The GPIO manipulation can be achieved by `machine` in QuecPython. +- Define LED classification + - Create one LED classification, including switch on/off and toggle. ```python import machine @@ -57,7 +57,7 @@ import utime class LED: def __init__(self, pin_number): self.pin = machine.Pin(pin_number, machine.Pin.OUT) - self.state = False # The initial status is off + self.state = False # The initial status is off def on(self): self.pin.write(1) @@ -76,30 +76,30 @@ class LED: self.on() if __name__ == "__main__": - # Create one LED object and connect to GPIO2 + # Create one LED object and connect to GPIO2 led = LED(2) while True: - led.toggle() # Toggle LED status - utime.sleep(1) # Wait for 1s + led.toggle() # Toggle LED status + utime.sleep(1) # Wait for 1s ``` -## Extended Item +## Extended Item -Adjust Blink speed +Adjust Blink speed ```python while True: led.toggle() - time.sleep(0.5) # Modify as 0.5s for faster blink + time.sleep(0.5) # Modify as 0.5s for faster blink ``` Control multiple LEDs -```python +```python class MultiLED: def __init__(self, pin_numbers): self.leds = [LED(pin) for pin in pin_numbers] @@ -112,44 +112,44 @@ class MultiLED: for led in self.leds: led.off() -# Create one MultiLED object and connect to GPIO2 and GPIO3 respectively +# Create one MultiLED object and connect to GPIO2 and GPIO3 respectively multi_led = MultiLED([2, 3]) -multi_led.all_on() # Switch on all LEDs. +multi_led.all_on() # Switch on all LEDs. ``` -## Test +## Test -In this section, it will perform how to manipulate LED using EC600U TE-A and LTE OPEN-EVB_V1.1. +In this section, it will perform how to manipulate LED using EC600U TE-A and LTE OPEN-EVB_V1.1. Component: LED, QuecPython EC600U module and LTE OPEN-EVB_V1.1. -In convenience of test, the LED in LTE OPEN-EVB_V1.1 such as NET_STATUS can be deployed directly. +In convenience of test, the LED in LTE OPEN-EVB_V1.1 such as NET_STATUS can be deployed directly. ![image-20230705163113093](../../media/hardware/peripheral-interfaces/GPIO/GPIO_EVB_1.png) -> The NET_STATUS will be taken as network indicator by default. However, it is mandatory to disable network indicator via API beforehand. See [misc](https://python.quectel.com/doc/API_reference/zh/peripherals/misc.html) in detail. +> The NET_STATUS will be taken as network indicator by default. However, it is mandatory to disable network indicator via API beforehand. See [misc](https://python.quectel.com/doc/API_reference/zh/peripherals/misc.html) in detail. > -> Moreover, it is available to turn off network indicator via following commands in EC600U module +> Moreover, it is available to turn off network indicator via following commands in EC600U module > > ```python >import misc -> misc.net_light(0)# Reboot module after disabling network indicator funtion Parameter:0- OFF. 1- ON +> misc.net_light(0)# Reboot module after disabling network indicator funtion Parameter:0- OFF. 1- ON >``` -Execute following steps once above procedure is done +Execute following steps once above procedure is done -2. Reach pin that controls network indicator in EC600U module via [Hardware_Design](https://python.quectel.com/en/download). It is found the NET_STATUS of EC600U is controlled by pin 54. -4. After acquring pin number, it is available to find the exact GPIO 14 that corresponding to pin 54 in EC600U module based on the mapping relationship between GPIO pin number and physical pin via [machine.Pin](https://python.quectel.com/doc/API_reference/en/peripherals/machine.Pin.html) -5. Compile script to control LED and run it +2. Reach pin that controls network indicator in EC600U module via [Hardware_Design](https://python.quectel.com/en/resource-download?cid=250). It is found the NET_STATUS of EC600U is controlled by pin 54. +4. After acquring pin number, it is available to find the exact GPIO 14 that corresponding to pin 54 in EC600U module based on the mapping relationship between GPIO pin number and physical pin via [machine.Pin](https://python.quectel.com/doc/API_reference/en/peripherals/machine.Pin.html) +5. Compile script to control LED and run it -By running above codes via QPYcom, it is vivid that the NET_STATUS will blink with an interval of 1s. +By running above codes via QPYcom, it is vivid that the NET_STATUS will blink with an interval of 1s. -> Please note the GPIO number used to control NET_STATUS will be varied in accordance with different platforms. +> Please note the GPIO number used to control NET_STATUS will be varied in accordance with different platforms. diff --git a/docs/Application_guide/en/helios-sdk/advanced.md b/docs/Application_guide/en/helios-sdk/advanced.md index abd77d454e8f99f7357e579c87da62ed3c234557..2f17e711fa91a64c878bd5acfbe6f914adc0fe57 100644 --- a/docs/Application_guide/en/helios-sdk/advanced.md +++ b/docs/Application_guide/en/helios-sdk/advanced.md @@ -6,7 +6,7 @@ This section shows you how to import and run your own Python script files in the ### 1.1 Installing QPYcom -As shown in the figure below, you can visit the [official download page](https://python.quectel.com/en/download) to download QPYcom based on your computer's operating system: +As shown in the figure below, you can visit the [official download page](https://python.quectel.com/en/resource-download) to download QPYcom based on your computer's operating system: - Use `QPYcom` for Windows systems. - Use `QPYcom_linux` for Ubuntu systems. @@ -40,7 +40,7 @@ Double-click `QPYcom.exe` in the tool's root directory to open the tool. **Step 2: Open USB Serial Port** -Follow ***Step 3*** in ***Section 3*** of *Helios SDK Development Guide__Intermediate* to select the corresponding port from the drop-down menu of `Ports` in QPYcom. In this example, it is COM5. +Follow ***Step 3*** in ***Section 3*** of *Helios SDK Development Guide__Intermediate* to select the corresponding port from the drop-down menu of `Ports` in QPYcom. In this example, it is COM5. Click **`Open port`** to enter the command interaction interface by default. The interface is shown in the following figure: @@ -221,11 +221,11 @@ STATIC const mp_rom_map_elem_t modtest_globals_table[] = { }; /* Register the modtest_globals_table to mp_module_modtest_globals */ -STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); +STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* Define a module type */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` @@ -270,12 +270,12 @@ extern const struct _mp_obj_module_t mp_module_modtest; //Make an external refer { MP_OBJ_NEW_QSTR(MP_QSTR_wifiScan), (mp_obj_t)&mp_module_wifiscan},\ { MP_OBJ_NEW_QSTR(MP_QSTR_modtest), (mp_obj_t)&mp_module_modtest }, /* Register the modtest module/ \ MICROPY_PORT_BUILTIN_MODULES_FOTA \ - MICROPY_PORT_BUILTIN_MODULES_LVGL + MICROPY_PORT_BUILTIN_MODULES_LVGL ``` The lines with comments in the provided code are the parts that have been added: -> +> - The C macro definition `MICROPY_PORT_BUILTIN_MODULES` is used to define content. Due to the lengthy content, line breaks are implemented using the backslash `\`. It's important to note that there should be no characters, including spaces, following the `\`. This method of line continuation using the backslash is consistent with what was described earlier regarding the Makefile. If comments are needed, they should be enclosed in `/* */` and placed in front of the `\`. - The format of the last two lines of the `MICROPY_PORT_BUILTIN_MODULES` macro definition is different from the previous lines. This is done to facilitate the trimming of related functionalities using macro definitions. If you are interested, you can further explore this concept. @@ -383,14 +383,14 @@ STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* Define a module type */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` The difference comparison in the figure below shows the difference between this code and the code in section 3.2 (the current code is on the right, and the red part is the difference): -- Added the C language function *modtest_func_noargs* corresponding to the Python module `modtest` method *modtest.func_noargs()*. Any C language function corresponding to Python will return the `mp_obj_t` type. In this example, no value is returned from *modtest.func_noargs()*. Therefore, the corrsponding C function should return *mp_const_none* to inform Python that this method has no return value. +- Added the C language function *modtest_func_noargs* corresponding to the Python module `modtest` method *modtest.func_noargs()*. Any C language function corresponding to Python will return the `mp_obj_t` type. In this example, no value is returned from *modtest.func_noargs()*. Therefore, the corrsponding C function should return *mp_const_none* to inform Python that this method has no return value. - Use the macro `MP_DEFINE_CONST_FUN_OBJ_0` to add a function object `modtest_obj_func_noargs`, which is the code on Line 18. - Register the newly added `modtest_obj_func_noargs` object to modtest, which is the code on Line 23. @@ -478,14 +478,14 @@ STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* Define a module type */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` The difference comparison in the figure below shows the difference between this code and the code in ***Section 3.3.1*** (the current code is on the right, and the red part is the difference): -- Added the C language function *modtest_func_withargs* corresponding to the Python module `modtest` method *modtest.func_withargs(str)*. In this example, the string parameters that the user input from the Python layer is returned through *mp_obj_str_get_str(str)*. +- Added the C language function *modtest_func_withargs* corresponding to the Python module `modtest` method *modtest.func_withargs(str)*. In this example, the string parameters that the user input from the Python layer is returned through *mp_obj_str_get_str(str)*. - Use the macro `MP_DEFINE_CONST_FUN_OBJ_1` to add a function object `modtest_obj_func_withargs`, which is the code on Line 38. - Register the newly added `modtest_obj_func_noargs` object to modtest, which is the code on Line 44. @@ -517,7 +517,7 @@ This section introduces how to add a type called `math` to the `modtest` module. **Step 1: Create A File Named *modtest_math.c*** -Enter the *services\microPython\ports\quectel\core\source* directory and create a file named *modtest_math.c*. +Enter the *services\microPython\ports\quectel\core\source* directory and create a file named *modtest_math.c*. ``` #include @@ -683,7 +683,7 @@ STATIC MP_DEFINE_CONST_DICT(math_locals_dict, math_locals_dict_table); /* Define a structure of type mp_obj_type_t; note that this is different from the type used to define the module */ const mp_obj_type_t modtest_math_type = { - .base={ &mp_type_type }, + .base={ &mp_type_type }, .name = MP_QSTR_math, // The name attribute of the type class is defined here, not in the DICT .locals_dict = (mp_obj_dict_t*)&math_locals_dict, // Register math_locals_dict }; @@ -754,7 +754,7 @@ STATIC mp_obj_t modtest_math_make_new(const mp_obj_type_t *type, size_t n_args, /* Define the mp_obj_type_t structure; note that this is different from the type used to define the module */ const mp_obj_type_t modtest_math_type = { - .base={ &mp_type_type }, + .base={ &mp_type_type }, .name = MP_QSTR_math, // The name attribute of the type class is defined here, not in the DICT .make_new=modtest_math_make_new, // Add the make_new attribute .locals_dict = (mp_obj_dict_t*)&math_locals_dict, // Register math_locals_dict @@ -773,7 +773,7 @@ mp_obj_t math_add(mp_obj_t self_in, mp_obj_t val1, mp_obj_t val2) { math_obj_t *self=MP_OBJ_TO_PTR(self_in); // Get the pointer to the object from the first parameter self->value1 = mp_obj_get_int(val1); // Get the first parameter of the addition operation from the second parameter self->value2 = mp_obj_get_int(val2); // Get the second parameter of the addition operation from the third parameter - return mp_obj_new_int(self->value1+self->value2); // Return the calculation result + return mp_obj_new_int(self->value1+self->value2); // Return the calculation result } /* Note: OBJ_3 is used here because the math_add() function has three parameters */ diff --git a/docs/Application_guide/en/helios-sdk/quick-start.md b/docs/Application_guide/en/helios-sdk/quick-start.md index 389159b0e6cded7b73c5b7a8d842b174ed3b504c..633e6b9a886bdd273133348a97155bde9d8cc747 100644 --- a/docs/Application_guide/en/helios-sdk/quick-start.md +++ b/docs/Application_guide/en/helios-sdk/quick-start.md @@ -52,7 +52,7 @@ sudo apt install p7zip-full git make python3 ## 3. Code Retrieval -Please contact the [QuecPython technical team](https://python.quectel.com/contactus) for the source code of HeliosSDK, You can also get supports through email QuecPython@quectel.com. +Please contact the [QuecPython technical team](https://python.quectel.com/en/contact) for the source code of HeliosSDK, You can also get supports through email QuecPython@quectel.com. ## 4. SDK Directory Structure The following figure shows the directory structure of the SDK. Different colors represent different meanings: @@ -69,7 +69,7 @@ The following figure shows the directory structure of the SDK. Different colors ## 5. Application Code Writing -> +> - In theory, application code files can be created anywhere in the SDK directory. - In practice, **for the sake of standardization**, it is recommended to create application code folders in the root directory of the SDK. - Unit test code for functionalities is recommended to be placed in the *`test`* or `demo` folder in the directory where the functionality is located. diff --git a/docs/Application_guide/en/multi-media/lvgl/lvgl_demo.md b/docs/Application_guide/en/multi-media/lvgl/lvgl_demo.md index b9c734c29c617c85766c28b2a093642dc7f7241d..c37eb5f5ac1d45b612825a6081fcc91265d3747a 100644 --- a/docs/Application_guide/en/multi-media/lvgl/lvgl_demo.md +++ b/docs/Application_guide/en/multi-media/lvgl/lvgl_demo.md @@ -16,7 +16,7 @@ This chapter introduces how to quickly get started with Quecpython LVGL and deve ### Download Firmware -Please go to [QuecPython-Download](https://python.quectel.com/download) to download the official firmware for EC600U-EU_AB. +Please go to [QuecPython-Download](https://python.quectel.com/en/resource-download?cid=4) to download the official firmware for EC600U-EU_AB. ![LVGL_demo1](../../media/multi-media/lvgl/LVGL_demo1.png) @@ -28,7 +28,7 @@ Connect the LCD to the LCD interface of the EVB, and connect the EVB to the comp ### Flash Firmware -Flash the firmware by using QPYcom (Click [here](https://python.quectel.com/download) to download QPYcom). +Flash the firmware by using QPYcom (Click [here](https://python.quectel.com/en/resource-download?cid=260) to download QPYcom). ![lvgl_demo3](../../media/multi-media/lvgl/lvgl_demo3.jpg) diff --git a/docs/Application_guide/en/network-comm/esim/README.md b/docs/Application_guide/en/network-comm/esim/README.md index 6012120ad0710ffbabce1d4308589845144ceb47..54a30272a2c0f35b12126cbed1cf5ed9354fc5dc 100644 --- a/docs/Application_guide/en/network-comm/esim/README.md +++ b/docs/Application_guide/en/network-comm/esim/README.md @@ -140,7 +140,7 @@ The QEsimTool software is mainly used to handle the situation of an empty eSIM c The operating mechanism of the QEsimTool software: The user obtains the AccCode from the operator, and passes the AccCode as a parameter to QEsimTool. QEsimTool resolves the operator's server address through the AccCode and sends a request to the operator's server to download profile data. After QEsimTool completes the download of profile data, it will send the data to the device through AT commands, and then write the profile into the eSIM card. -How to obtain the QEsimTool software: Please go to the [Download](https://images.quectel.com/python/2023/11/QEsimTool_V1.0.1.7.zip) and contact customer service to obtain it. +How to obtain the QEsimTool software: Please go to the [Download](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QEsimTool_V1.0.1.7.zip) and contact customer service to obtain it. ### Interface Introduction @@ -322,7 +322,7 @@ from sim import esim def handle_profile(ICCID,mode): esim.profileHandle(mode, ICCID) - + # Get the ICCID of the current profile profile_list=list(esim.getProfileInfo(0)) @@ -337,7 +337,7 @@ elif profile_list[1][0][1] == 0: esim.profileHandle(0, profile_list[1][0][0]) else: raise ValueError("profile_list is invalid") - + # Delete the profile esim.profileHandle(2, profile_list[1][0][0]) @@ -429,26 +429,26 @@ class pyesim(): def get_eid(self): self.eid = esim.getEid() self.esim_log("esim get id {} ".format(self.eid)) - + def get_profile_list(self,model = 0): self.profile_list=esim.getProfileInfo(model) self.esim_log("esim get_profile_list({}): {}".format(model,self.profile_list)) - + def profile_handle(self,profile_tag,iccid): result = esim.profileHandle(profile_tag, iccid) self.esim_log("esim profile_handle({},{}) = {}".format(profile_tag,iccid,result)) - + def profile_ota(self,activationCode,confirmationCode): ret = esim.profileOTA(activationCode, confirmationCode) self.esim_log("esim profileOTA('{}','{}') = {}".format(activationCode,confirmationCode,ret)) - + def wait_ota_result(self): i_loop_nunmbers = 120 while self.ota_result == True or i_loop_nunmbers > 0: i_loop_nunmbers = i_loop_nunmbers - 1 utime.sleep(1) self.esim_log("wait ota ... {}".format(i_loop_nunmbers)) - + def callback(self,args): if args == 0: self.esim_log("esim callback OTA {} success".format(args)) @@ -456,27 +456,27 @@ class pyesim(): else: self.esim_log("esim callback OTA {} failed".format(args)) self.ota_result = False - + def set_callback(self): ret = esim.setCallback(self.callback) self.esim_log("esim set_callback Result {}".format(ret)) - + def get_profile_del_notification(self): self.profile_notification = esim.getProfileDelNotification() self.esim_log("esim get_profile_del_notification {}".format(self.profile_notification)) - + def report_profile_notification(self,iccid): ret = esim.reportProfileDelNotification(iccid) self.esim_log("esim report_profile_notification {}".format(ret)) - + esim_t = pyesim() def run(): - + esim_t.get_eid() esim_t.set_callback() esim_t.esim_log("will OTA iccid ") - + esim_t.esim_log("will display current info") esim_t.esim_log("-------------------------------------------------") esim_t.get_profile_list(0) @@ -485,10 +485,10 @@ def run(): # Download the profile with AccCode LPA:1$secsmsminiapp.eastcompeace.com$09533D4E06D041E396E4F4D8E427FF5B # The actual value should be passed as a parameter based on the actual situation. esim_t.profile_ota('LPA:1$secsmsminiapp.eastcompeace.com$09533D4E06D041E396E4F4D8E427FF5B','') - + # Wait for the download result esim_t.wait_ota_result() - + # Delete the original operator's profile information uiccid = '89861234567891232113' esim_t.esim_log("will delelte uiccid {}".format(uiccid)) @@ -497,9 +497,9 @@ def run(): esim_t.esim_log("-------------------------------------------------") esim_t.get_profile_list(0) esim_t.esim_log("-------------------------------------------------") - - -if __name__ == '__main__': + + +if __name__ == '__main__': _thread.start_new_thread(run,()) ``` diff --git a/docs/Application_guide/en/solutions/Agriculture-Control-Panel/README.md b/docs/Application_guide/en/solutions/Agriculture-Control-Panel/README.md index 0dfb49cbbeea6c9d981fb39e314149e3e5e128a9..62b44157687a906eac2eb8d7a5e365fbbde0dc32 100644 --- a/docs/Application_guide/en/solutions/Agriculture-Control-Panel/README.md +++ b/docs/Application_guide/en/solutions/Agriculture-Control-Panel/README.md @@ -1,10 +1,10 @@ # Smart Agriculture Central Control Panel -[QuecPython](https://python.quectel.com/en) has introduced a GUI solution for a [Smart Agriculture Central Control Panel](https://github.com/QuecPython/solution-Agriculture-Control-Panel.git) based on the [U-235 Development Board](https://images.quectel.com/python/sites/2/2023/08/Quectel_QuecPython_U-235_EVB_User_Guide_V1.0.pdf). The features include weather forecast, agricultural environmental data monitoring, real-time data display, historical data curves, agricultural equipment control, alarm and fault event notifications, system settings, and more. +[QuecPython](https://python.quectel.com/en) has introduced a GUI solution for a [Smart Agriculture Central Control Panel](https://github.com/QuecPython/solution-Agriculture-Control-Panel.git) based on the [U-235 Development Board](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/12/EC600U_U-235_EVB_Specification_and_User_Guide.pdf). The features include weather forecast, agricultural environmental data monitoring, real-time data display, historical data curves, agricultural equipment control, alarm and fault event notifications, system settings, and more. -The U-235 development board comes with the default onboard EC600U module and an externally connected 5-inch screen with a MIPI interface and a resolution of 854*480. Additionally, it features a variety of sensors and peripheral interfaces onboard. For more details, you can refer to the [U-235 EVB User Guide](https://images.quectel.com/python/sites/2/2023/08/Quectel_QuecPython_U-235_EVB_User_Guide_V1.0.pdf). +The U-235 development board comes with the default onboard EC600U module and an externally connected 5-inch screen with a MIPI interface and a resolution of 854*480. Additionally, it features a variety of sensors and peripheral interfaces onboard. For more details, you can refer to the [U-235 EVB User Guide](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/12/EC600U_U-235_EVB_Specification_and_User_Guide.pdf). @@ -58,7 +58,7 @@ This screen includes real-time data display for temperature, humidity, illumina ### Device Status Display Screen -The Device Status Display Screen is used to monitor and display the operational status of various devices and sensors. This enables the quick identification of any potential issues, allowing for timely measures to ensure the smooth operation and efficiency of agricultural activities. Through such a central control panel, agricultural managers can effectively monitor and maintain critical equipment and sensors on the farm, enhancing overall productivity and reliability. +The Device Status Display Screen is used to monitor and display the operational status of various devices and sensors. This enables the quick identification of any potential issues, allowing for timely measures to ensure the smooth operation and efficiency of agricultural activities. Through such a central control panel, agricultural managers can effectively monitor and maintain critical equipment and sensors on the farm, enhancing overall productivity and reliability. ![Device_Status_Interface](../../media/solutions/Agriculture-Control-Panel/UI_Device_Status_Interface.png) @@ -336,7 +336,7 @@ This section will start drawing various modules on the home screen. - Each `imgbtn` should be configured with the correct event handlers to ensure that the correct action is triggered when users click, navigating to the corresponding screen. - If the function represented by the `imgbtn` is currently active or on the current screen, it should be displayed in a different visual style to indicate its active status. - + 2. **Top Information Display Bar** diff --git a/docs/Application_guide/en/solutions/tracker/README.md b/docs/Application_guide/en/solutions/tracker/README.md index 92371430ec421cfa421fe5bbc6108cd920615d65..97a01625bde2a861479296666507b1397f63d39e 100644 --- a/docs/Application_guide/en/solutions/tracker/README.md +++ b/docs/Application_guide/en/solutions/tracker/README.md @@ -196,7 +196,7 @@ This is a public version of the tracker solution, which does not include all fun #### Install USB Driver -Please download and install the driver according to the platform of the module to be debugged. [Click here to download USB Drivers](https://python.quectel.com/en/download) +Please download and install the driver according to the platform of the module to be debugged. [Click here to download USB Drivers](https://python.quectel.com/en/resource-download?cid=2) ![solution-tracker-004](../../media/solutions/tracker/solution-tracker-004.png) @@ -204,7 +204,7 @@ Please download and install the driver according to the platform of the module t It is recommended to use QPYcom for development and debugging. The processes described in this document are under the premise that QPYcom is used and USB driver installation is successful. -[Click here to download QPYcom](https://python.quectel.com/en/download) +[Click here to download QPYcom](https://python.quectel.com/en/resource-download?cid=260) ![solution-tracker-005](../../media/solutions/tracker/solution-tracker-005.png) @@ -327,7 +327,7 @@ ota_status = { Download the corresponding QuecPython firmware according to the current debugging module model from the QuecPython official website, and download the firmware into the module with QPYcom. -[Click here to download firmware](https://python.quectel.com/en/download) +[Click here to download firmware](https://python.quectel.com/en/resource-download?cid=4) ![solution-tracker-006](../../media/solutions/tracker/solution-tracker-006.png) diff --git a/docs/Application_guide/zh/dev-tools/QMulti-DL/README.md b/docs/Application_guide/zh/dev-tools/QMulti-DL/README.md index e09c362a7537cd60ca9a0c6e7e7af776667333aa..d2b0c4ada16e6eca87b700c4ec8d232866174e1b 100644 --- a/docs/Application_guide/zh/dev-tools/QMulti-DL/README.md +++ b/docs/Application_guide/zh/dev-tools/QMulti-DL/README.md @@ -1,17 +1,17 @@ # QMulti_DL 使用教程 ## 简介 -[QMulti_DL](https://images.quectel.com/python/2022/12/QMulti_DL_V3.0_CN.zip) 是用于量产的批量烧录工具 +[QMulti_DL](https://python.quectel.com/wp-content/uploads/2024/09/QMulti_DL_V3.5_CN.zip) 是用于量产的批量烧录工具 ## 工具获取 -[官网下载](https://python.quectel.com/download) +[官网下载](https://python.quectel.com/resource-download?cid=9) ![](../../media/dev-tools/QMulti-DL/1.png) ## 用户指导 -[QMulti_DL用户指导下载](https://images.quectel.com/python/2024/07/Quectel_QMulti_DL_用户指导_V2.3.pdf) +使用说明文档参见工具中pdf文档 注: 若固件后缀格式不符合该工具,则需要使用QPYcom `提取量产包` 功能提取量产包 diff --git a/docs/Application_guide/zh/dev-tools/QPYcom/README.md b/docs/Application_guide/zh/dev-tools/QPYcom/README.md index 3280ae802b24eb776f391cbc1da02ec1bfb91c9c..dd0d6ef1a24d33e6919b31183634797852de330d 100644 --- a/docs/Application_guide/zh/dev-tools/QPYcom/README.md +++ b/docs/Application_guide/zh/dev-tools/QPYcom/README.md @@ -1,6 +1,6 @@ # QPYcom 使用教程 -[QPYcom](https://python.quectel.com/download) 是 QuecPython 全栈式开发调试工具, 支持 REPL 交互、文件传输、固件合成与烧录等基础功能,同时也包含了差分包制作、分区调整等扩展功能。 +[QPYcom](https://python.quectel.com/resource-download?cid=8) 是 QuecPython 全栈式开发调试工具, 支持 REPL 交互、文件传输、固件合成与烧录等基础功能,同时也包含了差分包制作、分区调整等扩展功能。 本系列文档将从以下几个方便对 QPYcom 工具的使用做介绍: diff --git a/docs/Application_guide/zh/dev-tools/QPYcom/qpycom-gui.md b/docs/Application_guide/zh/dev-tools/QPYcom/qpycom-gui.md index 20c9654826a016ef7b62e675ad9751a965ab773a..83bc10ff1bfbf2c453cc98c418488f2baf9a34d8 100644 --- a/docs/Application_guide/zh/dev-tools/QPYcom/qpycom-gui.md +++ b/docs/Application_guide/zh/dev-tools/QPYcom/qpycom-gui.md @@ -4,7 +4,7 @@ 使用QuecPython进行开发需要用到专用的开发调试工具——**QPYcom**,包括但不限于调试代码、分析日志、文件传输、烧录固件、合并固件等。 -[QPYcom](https://images.quectel.com/python/2022/12/QPYcom_V3.1.2.zip) : 适用于QuecPython开发的一站式调试工具 +[QPYcom](https://python.quectel.com/wp-content/uploads/2024/09/QPYcom_V3.6.0.zip) : 适用于QuecPython开发的一站式调试工具 *注意:该工具无需安装,解压即用,建议提前手动关闭系统中安装的防病毒软件,以避免潜在的误报导致工具被误删或者无法使用。* @@ -121,7 +121,7 @@ ![](../../media/dev-tools/qpycom/image14.png) -### 文件浏览 +### 文件浏览 用户选择'**查看\--\>文件浏览**',可以实现本地python文件与模块端python文件的上传、查看、添加、删除操作,如图所示: diff --git a/docs/Application_guide/zh/firmware-upgrade/firmware-burning.md b/docs/Application_guide/zh/firmware-upgrade/firmware-burning.md index 00c6cf4d25cdc8b2e312abafa756717e286bbc91..fea7af00264a42727de1e5f2f27299926061c5d5 100644 --- a/docs/Application_guide/zh/firmware-upgrade/firmware-burning.md +++ b/docs/Application_guide/zh/firmware-upgrade/firmware-burning.md @@ -52,7 +52,7 @@ FDL 根据自身携带的 flash 分区信息,将代码镜像、NV 文件系统 ### QPYcom -[QPYcom](https://images.quectel.com/python/2022/12/QPYcom_V3.1.2.zip) 是 QuecPython 全栈式开发调试工具, 支持 REPL 交互、文件传输、固件合成与烧录等基础功能,同时也包含了差分包制作、分区调整等扩展功能。 +[QPYcom](https://python.quectel.com/wp-content/uploads/2024/09/QPYcom_V3.6.0.zip) 是 QuecPython 全栈式开发调试工具, 支持 REPL 交互、文件传输、固件合成与烧录等基础功能,同时也包含了差分包制作、分区调整等扩展功能。 QPYcom 将各系列模组基带处理器厂商提供的命令行烧录工作做了统一的图形化界面封装,用户在界面中加载固件后,QPYcom 可自动识别模组系列,并在后台调用对应的原厂烧录工具进行固件烧录。 @@ -60,13 +60,13 @@ QPYcom 将各系列模组基带处理器厂商提供的命令行烧录工作做 ### Qflash -[Qflash](https://images.quectel.com/python/2023/06/QFlash_V6.1_Temp_20221104-2.zip) 是移远通信开发的专门用于固件烧录的工具,其实现原理与 QPYcom 的固件烧录功能类似。 +[Qflash](https://python.quectel.com/wp-content/uploads/2024/09/QFlash_V6.1_Temp_20221104-2.zip) 是移远通信开发的专门用于固件烧录的工具,其实现原理与 QPYcom 的固件烧录功能类似。 但是它无法像 QPYcom 一样进行 QuecPython 开发的调试工作,建议 QuecPython 的开发者使用 QPYcom 作为烧录和调试工具。 ### QMulti_DL -[QMulti_DL](https://images.quectel.com/python/2022/12/QMulti_DL_V3.0_CN.zip) 移远通信开发的一款 1 拖 N 的固件烧录工具,适用于终端产品在产线上的批量烧录。 +[QMulti_DL](https://python.quectel.com/wp-content/uploads/2024/09/QMulti_DL_V3.5_CN.zip) 移远通信开发的一款 1 拖 N 的固件烧录工具,适用于终端产品在产线上的批量烧录。 ### 基带处理器厂商工具 @@ -113,4 +113,4 @@ QPYcom 的固件烧录流程如下图所示,[点此查看](../dev-tools/QPYcom 5. 工厂生产适用哪个工具,一个电脑如何并行下载多个模块? - 使用 [QMulti_DL](https://images.quectel.com/python/2022/12/QMulti_DL_V3.0_CN.zip) 工具批量烧录,使用说明请参考该工具包中的用户指导。 + 使用 [QMulti_DL](https://python.quectel.com/wp-content/uploads/2024/09/QMulti_DL_V3.5_CN.zip) 工具批量烧录,使用说明请参考该工具包中的用户指导。 diff --git a/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO.md b/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO.md index dfcb528f77921f227476a6094f14872cefb777f9..f634f061f10cf205e9b21c12b997242807635051 100644 --- a/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO.md +++ b/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO.md @@ -22,15 +22,15 @@ P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具 TTL施密特触发器: 用于处理噪声或不稳定的输入信号。它通过设定两个不同的阈值(上阈值和下阈值)来消除数字信号的噪声,从而提供更准确的数字信号 。 -输出驱动器: 控制GPIO引脚在输出模式下的电压和电流。 +输出驱动器: 控制GPIO引脚在输出模式下的电压和电流。 -输入接收器: 处理来自GPIO引脚的输入信号。在许多情况下,它可能包括一个施密特触发器,用于消除数字信号的噪声。 +输入接收器: 处理来自GPIO引脚的输入信号。在许多情况下,它可能包括一个施密特触发器,用于消除数字信号的噪声。 ### 工作模式 #### 浮空输入 -也称为 Hi-Z 或高阻抗状态。 这意味着 GPIO 引脚不会被拉至任何逻辑电平,而是悬空。 在这种状态下,GPIO 引脚很容易拾取电噪声并可能读取随机值,因此通常会避免使用它,除非有特定原因使用它。 +也称为 Hi-Z 或高阻抗状态。 这意味着 GPIO 引脚不会被拉至任何逻辑电平,而是悬空。 在这种状态下,GPIO 引脚很容易拾取电噪声并可能读取随机值,因此通常会避免使用它,除非有特定原因使用它。 ![gpio_floating](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_floating.png) @@ -38,7 +38,7 @@ TTL施密特触发器: 用于处理噪声或不稳定的输入信号。它通 #### 上拉输入 -GPIO 引脚和电源电压 (VDD) 之间连接有上拉电阻。 因此,当 GPIO 引脚未被设备主动驱动时,它会被“上拉”至逻辑高电平。 当需要 GPIO 引脚的默认状态为高电平时,需配置为上拉模式。 +GPIO 引脚和电源电压 (VDD) 之间连接有上拉电阻。 因此,当 GPIO 引脚未被设备主动驱动时,它会被“上拉”至逻辑高电平。 当需要 GPIO 引脚的默认状态为高电平时,需配置为上拉模式。 ![gpio_pull_up](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_pull_up.png) @@ -46,7 +46,7 @@ GPIO 引脚和电源电压 (VDD) 之间连接有上拉电阻。 因此,当 GPI #### 下拉输入 -GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设备主动驱动时,这会将其拉至逻辑低电平。 当需要GPIO 引脚的默认状态为低电平时,需配置为下拉模式。 +GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设备主动驱动时,这会将其拉至逻辑低电平。 当需要GPIO 引脚的默认状态为低电平时,需配置为下拉模式。 ![gpio_pull_down](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_pull_down.png) @@ -62,7 +62,7 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 #### 开漏输出 -在开漏(Open-Drain)输出模式下,GPIO引脚只能主动将电压拉低(通过连接到地线),不能主动将电压拉高。要实现电压的拉高,需要配合一个外部的上拉电阻连接到电源。 开漏输出的一个常见应用是I²C通信,其中多个设备可以共享同一条数据线。 +在开漏(Open-Drain)输出模式下,GPIO引脚只能主动将电压拉低(通过连接到地线),不能主动将电压拉高。要实现电压的拉高,需要配合一个外部的上拉电阻连接到电源。 开漏输出的一个常见应用是I²C通信,其中多个设备可以共享同一条数据线。 ![gpio_open_drain](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_open_drain.png) @@ -74,7 +74,7 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 #### 推挽输出 - 在推挽(Push-Pull)输出模式下,GPIO引脚可以主动驱动高电平或低电平。这意味着GPIO可以"推"电压到高电平,也可以"拉"电压到低电平。推挽输出可以提供较强的驱动能力,适合驱动LED、电机等负载。 + 在推挽(Push-Pull)输出模式下,GPIO引脚可以主动驱动高电平或低电平。这意味着GPIO可以"推"电压到高电平,也可以"拉"电压到低电平。推挽输出可以提供较强的驱动能力,适合驱动LED、电机等负载。 ![gpio_push_pull](../../media/hardware/peripheral-interfaces/GPIO/GPIO_gpio_push_pull.png) @@ -98,7 +98,7 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 ### 功能复用 -嵌入式系统中,包括许多微控制器和处理器中,一些特定的物理引脚可以配置成不同的功能,这就是所谓的引脚复用(Pin Multiplexing)。理解引脚复用的关键是理解一些引脚可以在不同的硬件模块间切换,这样可以在硬件设计时提供更大的灵活性。引脚复用的目的主要是节省空间和成本,因为这样可以减少物理引脚的数量。 +嵌入式系统中,包括许多微控制器和处理器中,一些特定的物理引脚可以配置成不同的功能,这就是所谓的引脚复用(Pin Multiplexing)。理解引脚复用的关键是理解一些引脚可以在不同的硬件模块间切换,这样可以在硬件设计时提供更大的灵活性。引脚复用的目的主要是节省空间和成本,因为这样可以减少物理引脚的数量。 ![tutorial_peripheral_diagram](../../media/hardware/peripheral-interfaces/GPIO/GPIO_tutorial_peripheral_diagram.png) @@ -117,11 +117,11 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 按键消抖是在电子系统中处理机械按键输入时的常见问题。由于机械按键的接触特性,当按键被按下或释放时,接触点可能会快速打开和关闭多次,导致短时间内的多次电平变化。这被称为“抖动”。如果不处理抖动,系统可能会误认为按键被多次按下或释放。因此,需要采取措施消除或至少减少这种抖动的影响。 -消抖的方法主要分为两类:硬件消抖和软件消抖。 +消抖的方法主要分为两类:硬件消抖和软件消抖。 #### 硬件消抖 -硬件消抖的主要目标是处理机械按键产生的抖动,从而使电路得到一个稳定、无干扰的电平信号。以下是几种常用的硬件消抖方法: +硬件消抖的主要目标是处理机械按键产生的抖动,从而使电路得到一个稳定、无干扰的电平信号。以下是几种常用的硬件消抖方法: ##### **RC滤波器** @@ -284,9 +284,9 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 #### 软件消抖 -软件消抖是通过在软件层面使用算法和逻辑来消除按键抖动。与硬件消抖方法相比,软件消抖方法对于不同的应用和条件提供了更多的灵活性,但它也增加了一些处理负担。 +软件消抖是通过在软件层面使用算法和逻辑来消除按键抖动。与硬件消抖方法相比,软件消抖方法对于不同的应用和条件提供了更多的灵活性,但它也增加了一些处理负担。 -以下是一些常见的嵌入式软件消抖技术: +以下是一些常见的嵌入式软件消抖技术: ##### **延时** @@ -356,7 +356,7 @@ GPIO 引脚与地 (VSS) 之间连接有下拉电阻。 当 GPIO 引脚未被设 QuecPython系列模组支持情况如下: -详细可参考每个模组对应的[GPIO复用表](https://python.quectel.com/download) +详细可参考每个模组对应的[GPIO复用表](https://python.quectel.com/resource-download?cid=19) | 模组 | 浮空输入 | 上拉输入 | 下拉输入 | 开漏输出 | 推挽输出 | 支持数量 | | ------- | -------- | -------- | -------- | -------- | -------- | -------- | @@ -434,7 +434,7 @@ Pin.read() 方法详细使用请参考[Pin.read](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3EPin.read%3C/code%3E) -当GPIO被配置为输入时,其内部结构允许它检测并反应于施加于其上的电压。你可以查询微控制器的内部寄存器或使用提供的Pin.read方法来读取该状态。 +当GPIO被配置为输入时,其内部结构允许它检测并反应于施加于其上的电压。你可以查询微控制器的内部寄存器或使用提供的Pin.read方法来读取该状态。 高电平 (HIGH): 这通常意味着GPIO的电压接近或等于供电电压,例如1.8V或3.3V。 @@ -460,7 +460,7 @@ Pin.write(value) 方法详细使用请参考[Pin.write](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html#%3Ccode%3EPin.write%3C/code%3E) -当GPIO被配置为输出模式时,它可以输出高电平或低电平 +当GPIO被配置为输出模式时,它可以输出高电平或低电平 - **高电平 (HIGH)**: 当GPIO输出高电平时,其电压接近或等于其供电电压,例如3.3V或5V。 - **低电平 (LOW)**: 当GPIO输出低电平时,其电压接近或等于地线 (GND)。 @@ -505,7 +505,7 @@ Pin.set_dir(value) ### 中断 - 该类用于配置I/O引脚在发生外部事件时中断。 + 该类用于配置I/O引脚在发生外部事件时中断。 #### 创建对象 @@ -531,15 +531,15 @@ class machine.ExtInt(GPIOn, mode, pull, callback) 内部上下拉电阻配置: -通信模组允许在初始化GPIO时配置内部的上拉或下拉电阻 。 +通信模组允许在初始化GPIO时配置内部的上拉或下拉电阻 。 -> 如果按钮或开关连接到GPIO,并且没有外部上拉或下拉电阻,内部电阻可以帮助确保GPIO在未被驱动时处于已知状态 +> 如果按钮或开关连接到GPIO,并且没有外部上拉或下拉电阻,内部电阻可以帮助确保GPIO在未被驱动时处于已知状态 回调函数: -当中断被触发时,通信模组需要知道要执行的特定操作或函数。这就是回调函数的角色。这是一个用户定义的函数,当特定的中断条件满足时会被自动调用。 +当中断被触发时,通信模组需要知道要执行的特定操作或函数。这就是回调函数的角色。这是一个用户定义的函数,当特定的中断条件满足时会被自动调用。 -> **注意**: 回调函数通常应该尽可能简短和快速,以避免长时间阻止其他中断或主程序逻辑。 +> **注意**: 回调函数通常应该尽可能简短和快速,以避免长时间阻止其他中断或主程序逻辑。 #### 使能/失能 @@ -651,9 +651,9 @@ extint.disable() GPIO复用表通常是一种表格或文档,用于描述特定的芯片、微控制器或系统中的GPIO引脚的不同功能和复用选项。在许多芯片和微控制器中,GPIO引脚通常具有多个功能和复用选项。这意味着每个GPIO引脚可以被配置为不同的输入或输出功能,如数字输入、数字输出、模拟输入、模拟输出或特定的外设功能(如SPI、UART、I2C等)。 -QuecPython的[GPIO复用表](https://python.quectel.com/download)提供了每个GPIO引脚的功能和复用选项的详细说明以及引脚在开机过程的状态变化。该表列出了每个引脚的编号、默认功能以及可用的复用选项。以便于用户正确配置和使用GPIO引脚。这对于连接外部设备、驱动显示器、控制通信接口等应用非常重要。 +QuecPython的[GPIO复用表](https://python.quectel.com/resource-download?cid=19)提供了每个GPIO引脚的功能和复用选项的详细说明以及引脚在开机过程的状态变化。该表列出了每个引脚的编号、默认功能以及可用的复用选项。以便于用户正确配置和使用GPIO引脚。这对于连接外部设备、驱动显示器、控制通信接口等应用非常重要。 -> 具体的GPIO复用表的格式和内容会因模组而有所不同。因此,对于特定的模组,你需要参考相关的[硬件设计手册](https://python.quectel.com/download)或[GPIO复用表](https://python.quectel.com/download),以获得详细的GPIO的配置信息。 +> 具体的GPIO复用表的格式和内容会因模组而有所不同。因此,对于特定的模组,你需要参考相关的[硬件设计手册](https://python.quectel.com/resource-download?cid=20)或[GPIO复用表](https://python.quectel.com/resource-download?cid=19),以获得详细的GPIO的配置信息。 > 基于QuecPython EC600U介绍GPIO复用表的使用。其它模组复用表类似。 @@ -677,9 +677,9 @@ QuecPython的[GPIO复用表](https://python.quectel.com/download)提供了每个 引脚的开机状态在不同的硬件平台和开发环境中可能会有所不同。一般情况下,当系统上电或重启时,GPIO引脚的初始状态是未定义的,软件无法控制。因此,对于一些控制LED灯或者使能外设开关需要特定开机状态的引脚,在设计硬件电路之前,请查阅我们相关的文档或参考资料,以了解特定平台和环境下GPIO引脚的开机状态。 -各个平台的GPIO引脚开机状态可通过查看[GPIO复用表](https://python.quectel.com/download)获取。 +各个平台的GPIO引脚开机状态可通过查看[GPIO复用表](https://python.quectel.com/resource-download?cid=19)获取。 -大部分的GPIO引脚开机时状态稳定,少部分GPIO引脚系统开机之后被软件改变电平状态。QuecPython [GPIO服用表](https://python.quectel.com/download)中有详细的描述。 +大部分的GPIO引脚开机时状态稳定,少部分GPIO引脚系统开机之后被软件改变电平状态。QuecPython [GPIO复用表](https://python.quectel.com/resource-download?cid=19)中有详细的描述。 ![pin_satus_at_reset](../../media/hardware/peripheral-interfaces/GPIO/GPIO_pin_satus_at_reset.png) @@ -691,13 +691,13 @@ QuecPython的[GPIO复用表](https://python.quectel.com/download)提供了每个 QuecPython除了BG95的模组外,所有的GPIO都支持中断功能。 -BG95系列可通过查看[GPIO复用表](https://python.quectel.com/download)获取支持中断功能的GPIO。 +BG95系列可通过查看[GPIO复用表](https://python.quectel.com/resource-download?cid=19)获取支持中断功能的GPIO。 除了EC600E/EC800E外,其他平台支持触发中断的GPIO都支持双边沿触发中断。EC600E/EC800E平台仅支持单边沿触发中断,且设置中断时,上拉和下拉状态仅支持其中一种,具体情况可以参考[machine.Pin](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html)模块。 ### 唤醒中断 -EC200U/EC600U/EG912U/EG915U平台模组的GPIO全部支持在休眠状态下唤醒模组。其他平台的GPIO大部分支持唤醒模组,具体可以通过查看[GPIO复用表](https://python.quectel.com/download)确认。 +EC200U/EC600U/EG912U/EG915U平台模组的GPIO全部支持在休眠状态下唤醒模组。其他平台的GPIO大部分支持唤醒模组,具体可以通过查看[GPIO复用表](https://python.quectel.com/resource-download?cid=19)确认。 ![1692429975477](../../media/hardware/peripheral-interfaces/GPIO/GPIO_wake-up_interrupt.png) diff --git a/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO_LED.md b/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO_LED.md index 2a2a0b327c2be1aac504dfa9505f0acfd26059af..af80599b066adf21a6c7d30d98e8fef3f157d116 100644 --- a/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO_LED.md +++ b/docs/Application_guide/zh/hardware/peripheral-interfaces/GPIO_LED.md @@ -2,13 +2,13 @@ ## 场景描述 -我们将使用QuecPython创建一个LED类来驱动一个LED。通过这个类,我们可以实现LED的开启、关闭、反转等功能。这种设计使得控制LED变得更加模块化和可扩展 +我们将使用QuecPython创建一个LED类来驱动一个LED。通过这个类,我们可以实现LED的开启、关闭、反转等功能。这种设计使得控制LED变得更加模块化和可扩展 ## 设计 ### 硬件 - **LED连接**: 将LED的阳极通过一个限流电阻连接到通信模组的GPIO引脚,而LED的阴极连接到(GND)。 + **LED连接**: 将LED的阳极通过一个限流电阻连接到通信模组的GPIO引脚,而LED的阴极连接到(GND)。 ### 软件 @@ -99,7 +99,7 @@ while True: 控制多个LED: -```python +```python class MultiLED: def __init__(self, pin_numbers): self.leds = [LED(pin) for pin in pin_numbers] @@ -143,7 +143,7 @@ multi_led.all_on() # 打开所有LED 网络灯功能关闭后,按照以下几个步骤执行。 -1. 通过的[硬件设计手册](https://python.quectel.com/download)找到 EC600U 模组控制网络灯的引脚,查找后可以得知EC600U的 NET_STATUS 由引脚号54控制。 +1. 通过的[硬件设计手册](https://python.quectel.com/resource-download?cid=20)找到 EC600U 模组控制网络灯的引脚,查找后可以得知EC600U的 NET_STATUS 由引脚号54控制。 2. 获取到引脚号之后,你可以通过 [machine.Pin](https://python.quectel.com/doc/API_reference/zh/peripherals/machine.Pin.html) 模块**GPIO引脚编号与物理引脚的映射关系**找到EC600U 模组引脚号54对应的GPIO号为GPIO14。 3. 编写控制LED灯脚本并运行。 diff --git a/docs/Application_guide/zh/helios-sdk/advanced.md b/docs/Application_guide/zh/helios-sdk/advanced.md index 59f9b2057a2e551efbd4cb862c267473fb394ff0..e9ee1d260697951cd233ca86021070a7eb96db88 100644 --- a/docs/Application_guide/zh/helios-sdk/advanced.md +++ b/docs/Application_guide/zh/helios-sdk/advanced.md @@ -6,7 +6,7 @@ ### 1.1 安装QPYcom工具 -如下图所示,进入[官方下载页面](https://python.quectel.com/download),根据电脑操作系统,下载相应的 QPYcom。 +如下图所示,进入[官方下载页面](https://python.quectel.com/resource-download),根据电脑操作系统,下载相应的 QPYcom。 > `QPYcom` 适用于 Windows 系统;`QPYcom_linux` 适用于 Ubuntu 系统。 @@ -223,11 +223,11 @@ STATIC const mp_rom_map_elem_t modtest_globals_table[] = { }; /* 把modtest_globals_table注册到 mp_module_modtest_globals里面去 */ -STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); +STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* 定义一个module类型 */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` @@ -272,12 +272,12 @@ extern const struct _mp_obj_module_t mp_module_modtest; //对`mp_module_modtest` { MP_OBJ_NEW_QSTR(MP_QSTR_wifiScan), (mp_obj_t)&mp_module_wifiscan},\ { MP_OBJ_NEW_QSTR(MP_QSTR_modtest), (mp_obj_t)&mp_module_modtest }, /* 注册`modtest`模块 */ \ MICROPY_PORT_BUILTIN_MODULES_FOTA \ - MICROPY_PORT_BUILTIN_MODULES_LVGL + MICROPY_PORT_BUILTIN_MODULES_LVGL ``` 上述代码带注释的行,即为我们新增部分。 -> +> - C语言宏定义`MICROPY_PORT_BUILTIN_MODULES`,由于定义内容篇幅较长,使用反斜杠`\`进行换行,`\`后不能有任何字符,包括空格,该点和前面所述的Makefile的换行方法是一致的;如需注释,注释内容使用`/* */`括起来,并且放在`\`前。 - `MICROPY_PORT_BUILTIN_MODULES`宏定义的最后两行的格式和前面不同,这是使用宏定义的方式,方便对相关功能进行裁剪。感兴趣的小伙伴可以深入研究下。 @@ -382,7 +382,7 @@ STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* 定义一个module类型 */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` @@ -475,7 +475,7 @@ STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table); /* 定义一个module类型 */ const mp_obj_module_t mp_module_modtest = { - .base = {&mp_type_module}, + .base = {&mp_type_module}, .globals = (mp_obj_dict_t *)&mp_module_modtest_globals, }; ``` @@ -530,7 +530,7 @@ STATIC MP_DEFINE_CONST_DICT(math_locals_dict, math_locals_dict_table); /* 定义mp_obj_type_t类型的结构体;注意这里和定义module使用的类型是不一样的 */ const mp_obj_type_t modtest_math_type = { - .base={ &mp_type_type }, + .base={ &mp_type_type }, .name = MP_QSTR_math, //type类的name属性是放在这里定义,而不是放在DICT中 .locals_dict = (mp_obj_dict_t*)&math_locals_dict, //注册math_locals_dict }; @@ -669,7 +669,7 @@ STATIC MP_DEFINE_CONST_DICT(math_locals_dict, math_locals_dict_table); /* 定义mp_obj_type_t类型的结构体;注意这里和定义module使用的类型是不一样的 */ const mp_obj_type_t modtest_math_type = { - .base={ &mp_type_type }, + .base={ &mp_type_type }, .name = MP_QSTR_math, //type类的name属性是放在这里定义,而不是放在DICT中 .locals_dict = (mp_obj_dict_t*)&math_locals_dict, //注册math_locals_dict }; @@ -735,7 +735,7 @@ STATIC mp_obj_t modtest_math_make_new(const mp_obj_type_t *type, size_t n_args, /* 定义mp_obj_type_t类型的结构体;注意这里和定义module使用的类型是不一样的 */ const mp_obj_type_t modtest_math_type = { - .base={ &mp_type_type }, + .base={ &mp_type_type }, .name = MP_QSTR_math, //type类的name属性是放在这里定义,而不是放在DICT中 .make_new=modtest_math_make_new, //添加的make new属性 .locals_dict = (mp_obj_dict_t*)&math_locals_dict, //注册math_locals_dict diff --git a/docs/Application_guide/zh/helios-sdk/quick-start.md b/docs/Application_guide/zh/helios-sdk/quick-start.md index 4234e9ff42fde642328c7f76982972c1547efbdc..26c61880fb888aace0fc42c96fc5a547d3f2dfc0 100644 --- a/docs/Application_guide/zh/helios-sdk/quick-start.md +++ b/docs/Application_guide/zh/helios-sdk/quick-start.md @@ -52,7 +52,7 @@ sudo apt install p7zip-full git make python3 ## 3. 代码拉取 -请联系[QuecPython技术团队](https://python.quectel.com/contactus)获取`HeliosSDK`源代码,您也可以通过邮箱 QuecPython@quectel.com 来获取相关支持。 +请联系[QuecPython技术团队](https://python.quectel.com/contact)获取`HeliosSDK`源代码,您也可以通过邮箱 QuecPython@quectel.com 来获取相关支持。 ## 4. SDK目录结构 @@ -70,7 +70,7 @@ sudo apt install p7zip-full git make python3 ## 5. 应用代码编写 -> +> - 理论上,可在SDK目录下的任意位置新建应用代码文件。 - 实际上,**为了规范起见**,建议在SDK的根目录下新建应用代码文件夹。 - 功能的单元测试代码,建议放置于功能所在目录下的`test`或`demo`文件夹。 diff --git a/docs/Application_guide/zh/multi-media/lvgl/lvgl_demo.md b/docs/Application_guide/zh/multi-media/lvgl/lvgl_demo.md index 911c83bdf32bd2323e09329edf8c4e1ee0342c94..0561c282844256e17c04293290979df7d1b184fe 100644 --- a/docs/Application_guide/zh/multi-media/lvgl/lvgl_demo.md +++ b/docs/Application_guide/zh/multi-media/lvgl/lvgl_demo.md @@ -18,7 +18,7 @@ ### 固件下载 -请前往[Quecpython官网下载中心](https://python.quectel.com/download)下载EC600U-EU_AB的公版固件。 +请前往[Quecpython官网下载中心](https://python.quectel.com/resource-download?cid=15)下载EC600U-EU_AB的公版固件。 ![LVGL_demo1](../../media/multi-media/lvgl/LVGL_demo1.png) @@ -30,7 +30,7 @@ ### 固件烧录 -使用QPYcom工具([下载地址](https://python.quectel.com/download)),进行固件烧录, +使用QPYcom工具([下载地址](https://python.quectel.com/resource-download?cid=8)),进行固件烧录, ![lvgl_demo3](../../media/multi-media/lvgl/lvgl_demo3.jpg) diff --git a/docs/Application_guide/zh/network-comm/esim/README.md b/docs/Application_guide/zh/network-comm/esim/README.md index 19507efa03f8287bc469f15e3b3ff91cddfc3f78..5c0c7b0799f130fd9c250e73b5cd906487782ef1 100644 --- a/docs/Application_guide/zh/network-comm/esim/README.md +++ b/docs/Application_guide/zh/network-comm/esim/README.md @@ -145,7 +145,7 @@ QEsimTool软件主要用于处理eSIM空卡情况,QEsimTool软件需要从运 QEsimTool软件的运行机制:用户从运营商获取AccCode,将AccCode作为参数传给QEsimTool,QEsimTool通过AccCode解析出运营商服务器地址,并向运营商服务器发送下载profile数据请求。当QEsimTool下载profile数据完成后,将通过AT指令将数据发送到设备中,进而将profile写入eSIM卡中。 -QEsimTool软件获取方式:[下载](https://images.quectel.com/python/2023/11/QEsimTool_V1.0.1.7.zip),联系客服进行领取。 +QEsimTool软件获取方式:[下载](https://python.quectel.com/wp-content/uploads/2024/09/QEsimTool_V1.0.1.7.zip),联系客服进行领取。 ### 界面介绍 @@ -337,7 +337,7 @@ from sim import esim def handle_profile(ICCID,mode): esim.profileHandle(mode, ICCID) - + # 获取当前profile ICCID profile_list=list(esim.getProfileInfo(0)) @@ -352,7 +352,7 @@ elif profile_list[1][0][1] == 0: esim.profileHandle(0, profile_list[1][0][0]) else: raise ValueError("profile_list is invalid") - + # 删除profile esim.profileHandle(2, profile_list[1][0][0]) @@ -448,26 +448,26 @@ class pyesim(): def get_eid(self): self.eid = esim.getEid() self.esim_log("esim get id {} ".format(self.eid)) - + def get_profile_list(self,model = 0): self.profile_list=esim.getProfileInfo(model) self.esim_log("esim get_profile_list({}): {}".format(model,self.profile_list)) - + def profile_handle(self,profile_tag,iccid): result = esim.profileHandle(profile_tag, iccid) self.esim_log("esim profile_handle({},{}) = {}".format(profile_tag,iccid,result)) - + def profile_ota(self,activationCode,confirmationCode): ret = esim.profileOTA(activationCode, confirmationCode) self.esim_log("esim profileOTA('{}','{}') = {}".format(activationCode,confirmationCode,ret)) - + def wait_ota_result(self): i_loop_nunmbers = 120 while self.ota_result == True or i_loop_nunmbers > 0: i_loop_nunmbers = i_loop_nunmbers - 1 utime.sleep(1) self.esim_log("wait ota ... {}".format(i_loop_nunmbers)) - + def callback(self,args): if args == 0: self.esim_log("esim callback OTA {} success".format(args)) @@ -475,27 +475,27 @@ class pyesim(): else: self.esim_log("esim callback OTA {} failed".format(args)) self.ota_result = False - + def set_callback(self): ret = esim.setCallback(self.callback) self.esim_log("esim set_callback Result {}".format(ret)) - + def get_profile_del_notification(self): self.profile_notification = esim.getProfileDelNotification() self.esim_log("esim get_profile_del_notification {}".format(self.profile_notification)) - + def report_profile_notification(self,iccid): ret = esim.reportProfileDelNotification(iccid) self.esim_log("esim report_profile_notification {}".format(ret)) - + esim_t = pyesim() def run(): - + esim_t.get_eid() esim_t.set_callback() esim_t.esim_log("will OTA iccid ") - + esim_t.esim_log("will display current info") esim_t.esim_log("-------------------------------------------------") esim_t.get_profile_list(0) @@ -504,10 +504,10 @@ def run(): #将下载AccCode为LPA:1$secsmsminiapp.eastcompeace.com$09533D4E06D041E396E4F4D8E427FF5B的profile #实际值根据真实情况传递参数。 esim_t.profile_ota('LPA:1$secsmsminiapp.eastcompeace.com$09533D4E06D041E396E4F4D8E427FF5B','') - + #等待下载结果 esim_t.wait_ota_result() - + # 删除原来的运营商profile信息 uiccid = '89861234567891232113' esim_t.esim_log("will delelte uiccid {}".format(uiccid)) @@ -516,9 +516,9 @@ def run(): esim_t.esim_log("-------------------------------------------------") esim_t.get_profile_list(0) esim_t.esim_log("-------------------------------------------------") - - -if __name__ == '__main__': + + +if __name__ == '__main__': _thread.start_new_thread(run,()) ``` diff --git a/docs/Application_guide/zh/solutions/Agriculture-Control-Panel/README.md b/docs/Application_guide/zh/solutions/Agriculture-Control-Panel/README.md index 82baeaeadfa38468be9bcf46688b8bd7ac766992..6425091d1bd13bcb0d0d7bcd01cf7c5f35d8dc37 100644 --- a/docs/Application_guide/zh/solutions/Agriculture-Control-Panel/README.md +++ b/docs/Application_guide/zh/solutions/Agriculture-Control-Panel/README.md @@ -1,10 +1,10 @@ # 智慧农业中控面板 -[QuecPython](https://python.quectel.com/en) 基于 [U-235 开发板](https://images.quectel.com/python/sites/2/2023/08/Quectel_QuecPython_U-235_EVB_User_Guide_V1.0.pdf)推出了一款[智慧农业中控面板的 GUI 解决方案](https://github.com/QuecPython/solution-Agriculture-Control-Panel.git),包括天气预报、农业环境数据监测、实时数据显示、历史数据曲线、农业设备控制、报警和故障事件提醒、系统设置等功能。 +[QuecPython](https://python.quectel.com) 基于 [U-235 开发板](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_QuecPython_铀235_EVB_用户指导_V1.0.pdf)推出了一款[智慧农业中控面板的 GUI 解决方案](https://github.com/QuecPython/solution-Agriculture-Control-Panel.git),包括天气预报、农业环境数据监测、实时数据显示、历史数据曲线、农业设备控制、报警和故障事件提醒、系统设置等功能。 -U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分辨率为 480*854 的 5 寸屏幕,同时板载丰富的传感器和外设接口,详情可查看 [U-235 开发板说明文档](https://images.quectel.com/python/sites/2/2023/08/Quectel_QuecPython_U-235_EVB_User_Guide_V1.0.pdf)。 +U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分辨率为 480*854 的 5 寸屏幕,同时板载丰富的传感器和外设接口,详情可查看 [U-235 开发板说明文档](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_QuecPython_铀235_EVB_用户指导_V1.0.pdf)。 @@ -50,15 +50,15 @@ U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分 ### 环境数据显示页面 -环境数据显示界面提供了农业中的各种环境参数的实时数据,能够让农业管理者快速获取并分析这些关键数据,从而作出及时的决策以优化农作物的生长条件。 +环境数据显示界面提供了农业中的各种环境参数的实时数据,能够让农业管理者快速获取并分析这些关键数据,从而作出及时的决策以优化农作物的生长条件。 ![Detection_interface](../../media/solutions/Agriculture-Control-Panel/UI_Detection_interface.png) -该界面包括了对温度、湿度、光照度、土壤温度、氧气浓度、二氧化碳浓度、土壤ph值和土壤EC值的实时数据显示。 +该界面包括了对温度、湿度、光照度、土壤温度、氧气浓度、二氧化碳浓度、土壤ph值和土壤EC值的实时数据显示。 ### 设备状态显示页面 -设备状态显示界面用于监测和显示各个设备和传感器的运行状态, 以便于快速识别任何潜在问题,并采取相应措施,确保农业操作的顺畅和效率。通过这样的中控面板,农业管理者能够有效监控和维护农场的关键设备和传感器,提高整体的生产力和可靠性。 +设备状态显示界面用于监测和显示各个设备和传感器的运行状态, 以便于快速识别任何潜在问题,并采取相应措施,确保农业操作的顺畅和效率。通过这样的中控面板,农业管理者能够有效监控和维护农场的关键设备和传感器,提高整体的生产力和可靠性。 ![Device_Status_Interface](../../media/solutions/Agriculture-Control-Panel/UI_Device_Status_Interface.png) @@ -66,7 +66,7 @@ U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分 ### 系统设置页面 -系统设置界面是用户配置和个性化其农业管理系统的关键部分,允许用户调整各种系统参数以满足特定的需求和偏好 。 通过这些设置,用户可以确保系统的高效运行,同时符合其个人偏好和操作习惯。 +系统设置界面是用户配置和个性化其农业管理系统的关键部分,允许用户调整各种系统参数以满足特定的需求和偏好 。 通过这些设置,用户可以确保系统的高效运行,同时符合其个人偏好和操作习惯。 ![Local_Settings_Interface](../../media/solutions/Agriculture-Control-Panel/UI_Local_Settings_Interface.png) @@ -93,7 +93,7 @@ U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分 ### 设备控制页面 -设备控制界面是一个用于管理和操作农场各种设备的关键部分。其提供直观的控制选项和实时反馈,确保用户可以轻松而有效地管理农场的关键设备。通过这种智能化的设备控制,农场管理者可以优化生产条件,提高效率,同时减少资源浪费。 +设备控制界面是一个用于管理和操作农场各种设备的关键部分。其提供直观的控制选项和实时反馈,确保用户可以轻松而有效地管理农场的关键设备。通过这种智能化的设备控制,农场管理者可以优化生产条件,提高效率,同时减少资源浪费。 ![Device_Control_Interfacd](../../media/solutions/Agriculture-Control-Panel/UI_Device_Control_Interfacd.png) @@ -105,9 +105,9 @@ U-235 开发板默认板载 EC600U 模组,并外接一个 MIPI 接口的、分 ![Parameter_Setting_Interface](../../media/solutions/Agriculture-Control-Panel/UI_Parameter_Setting_Interface.png) -用户可以为各种环境参数设定阈值,如温度、湿度、光照度、土壤湿度、二氧化碳浓度等,当这些参数达到或超过设定阈值时,系统可以自动调整设备运行或发送警报。 +用户可以为各种环境参数设定阈值,如温度、湿度、光照度、土壤湿度、二氧化碳浓度等,当这些参数达到或超过设定阈值时,系统可以自动调整设备运行或发送警报。 -通过这个界面,用户可以根据具体情况和需求精细调整农业操作的各个方面,确保系统的高效运行和作物的最佳生长条件。这种高度的可定制性是智慧农业系统的一个主要优势,它允许农业生产者根据变化的环境和市场需求灵活调整操作策略。 +通过这个界面,用户可以根据具体情况和需求精细调整农业操作的各个方面,确保系统的高效运行和作物的最佳生长条件。这种高度的可定制性是智慧农业系统的一个主要优势,它允许农业生产者根据变化的环境和市场需求灵活调整操作策略。 ## 应用代码介绍 @@ -336,7 +336,7 @@ class AgriUi(object): - 每个 `imgbtn` 都应配置正确的事件处理器,以确保当用户点击时能够触发正确的动作或导航到相应的界面。 - 如果 `imgbtn` 代表的功能当前已激活或位于当前页面,它应以不同的视觉样式显示,以指示其活动状态。 - + 2. **顶端信息显示栏**: @@ -370,7 +370,7 @@ class AgriUi(object): - **当前天气**:展示当前天气状况和温度。 - **未来天气预报**:在当前天气旁边或下方提供横向滚动或小网格,显示未来几天的天气预报。 - 在 GUI Guider 中设计左上侧的天气信息模块时,可以通过组合 `label`、`image ` 和 `container` 组件来创建一个直观并且信息丰富的天气显示区域。以下是如何使用这些组件来设计天气信息模块的步骤: + 在 GUI Guider 中设计左上侧的天气信息模块时,可以通过组合 `label`、`image ` 和 `container` 组件来创建一个直观并且信息丰富的天气显示区域。以下是如何使用这些组件来设计天气信息模块的步骤: 1. **基础容器设置(Container 组件)**: - 在界面左上角放置一个 `container ` 组件,作为天气模块的基础。这个容器将包含所有天气相关的子组件。 @@ -400,7 +400,7 @@ class AgriUi(object): - **时间选择**:提供查看不同时间段数据的选项,如日、周、月。 - **交互性**:允许用户悬停或点击图表上的点来查看特定数据点。 - 在使用 GUI Guider 设计智慧农业图形化界面的左下侧温度历史曲线时,布局 `label`、`chart `和 `container` 组件。这些组件将共同构成一个展示温度变化趋势的图表区域,以下是具体的设计说明: + 在使用 GUI Guider 设计智慧农业图形化界面的左下侧温度历史曲线时,布局 `label`、`chart `和 `container` 组件。这些组件将共同构成一个展示温度变化趋势的图表区域,以下是具体的设计说明: 1. **容器布局(Container 组件)**: - 在界面的左下侧放置一个 `container` 组件,用来作为温度历史曲线的背景和框架。这个容器将包含图表和相关的标签。 @@ -443,7 +443,7 @@ class AgriUi(object): - **优先级指示**:使用颜色编码或图标来指示告警的优先级或严重性。 - **交互性**:允许用户点击告警以获取更多详情或确认并清除通知。 - 在使用 GUI Guider 软件设计智慧农业图形化界面的右下侧告警信息区时,可以利用 `label`、`container `和 `table` 组件来有效地展示告警标题和具体的告警信息。这个区域将为用户提供关键的安全和系统状态更新,以下是详细的设计流程: + 在使用 GUI Guider 软件设计智慧农业图形化界面的右下侧告警信息区时,可以利用 `label`、`container `和 `table` 组件来有效地展示告警标题和具体的告警信息。这个区域将为用户提供关键的安全和系统状态更新,以下是详细的设计流程: 1. **告警信息容器(Container 组件)**: - 在界面的右下侧放置一个 `container` 组件,用作告警信息区的主要框架。这个容器将包含告警信息的标题和具体内容。 diff --git a/docs/Application_guide/zh/solutions/Wear/readme.md b/docs/Application_guide/zh/solutions/Wear/readme.md index 775be547507dd373fd648dccc8a994a48970dab3..f4dc63f6cb1122682d5155b1b894d15f3b248629 100644 --- a/docs/Application_guide/zh/solutions/Wear/readme.md +++ b/docs/Application_guide/zh/solutions/Wear/readme.md @@ -2,7 +2,7 @@ -[QuecPython](https://python.quectel.com/en) 基于穿戴行业推出了一套[GUI 解决方案](https://github.com/QuecPython/solution-wearable.git),包括时钟显示、电话拨打与接听现实、心率/温度/血氧测量、计步显示、系统设置等选型功能。 +[QuecPython](https://python.quectel.com) 基于穿戴行业推出了一套[GUI 解决方案](https://github.com/QuecPython/solution-wearable.git),包括时钟显示、电话拨打与接听现实、心率/温度/血氧测量、计步显示、系统设置等选型功能。 ![image-20231124092228717](../../media/solutions/Wear/image-20231124092228717.png) @@ -143,7 +143,7 @@ - `constant.py`主要提供常量的配置。 - `lcd.py`主要提供LCD的驱动初始化, TP的驱动初始化, 以及LVGL的初始化, 只有当此文件初始化成功屏幕才会有显示。 - `css.py`主要提供了css的功能, 静态的样式, 字体样式等提供给`ui`文件中的屏幕对象使用。 -- `ui.py` +- `ui.py` - 提供了屏幕对象的基类 `class Screen()` ,提供所有屏幕对象都需要的公共方法,如创建屏幕、状态栏信息显示(运营商名称、信号强度、系统时间、电池电量等)。 - `class **Screen` 均实现了一个继承于 `class Screen()` 的类,是对应屏幕需要显示的画面的代码实现。界面代码的主体内容是由 GUI Guider 工具自动生成的,而后进行少许修改,主要是对象初始化方法 `__init__()` 和控件事件处理回调函数(`__xxx_event_cb()`)的修改, 或控件的生命周期中修改 - `mgr.py`主要提供后台功能, 允许界面在不同的生命周期或事件触发对, 和各个管理器进行交互。 @@ -212,17 +212,17 @@ class DemoScreen(Screen): def __init__(self): super().__init__() # 这是核心跳转对象 - self.meta = app_list_screen + self.meta = app_list_screen # prop可以获取跳转信息例如, 可以获取跳转来的信息 # EventMesh.publish("load_screen", {"screen": "demo_screen", "test": 1}) # 则此界面的prop = {"screen": "demo_screen", "test": 1} - self.prop = None - + self.prop = None + # 用户实现此接口, 会在ui.add_screen(DemoScreen())的时候调用, 只会在添加的时候执行一次 def post_processor_after_instantiation(self, *args, **kwargs): """实例化后调用""" pass - + # 每当EventMesh.publish("load_screen", {"screen": "demo_screen"})跳转到此界面 # 会依次执行 # post_processor_before_initialization @@ -329,13 +329,13 @@ class AppList1Screen(Screen): ["U:/media/bpoint.png"] ] self.bottom_btn_list = [] - + def btn_click(self, event, i): screen_info = self.profile[i][1] if screen_info: # 在找到对应的点击事件, 跳转页面 EventMesh.publish("load_screen", screen_info) - + def post_processor_after_instantiation(self): # 会在add_screen的时候调用进行实例化 for i, btn_profile in enumerate(self.profile): @@ -382,7 +382,7 @@ class AppList1Screen(Screen): (style_pad_default, lv.PART.MAIN | lv.STATE.DEFAULT), ] ) - self.bottom_btn_list.append(btn) + self.bottom_btn_list.append(btn) ``` 该段代码的核心语句是 `EventMesh.publish("load_screen", screen_info)` ,该语句发送一个名为 `"load_screen"` 的事件,意为加载新的屏幕界面;携带的消息为 `screen_info`, `screen_info`就是`{"screen": "blood_screen"}`要跳转的界面,即屏幕界面的名称,表示加载的是血氧显示界面。 @@ -397,10 +397,10 @@ class AppList1Screen(Screen): ```python class UI(Abstract): - + def __init__(self): ... - + def lv_load(self, event, msg): for screen in self.screens: if screen.NAME == msg["screen"]: @@ -420,14 +420,14 @@ class UI(Abstract): else: lv.scr_load(self.current.meta) - def post_processor_after_instantiation(self): + def post_processor_after_instantiation(self): EventMesh.subscribe("load_screen", self.lv_load) EventMesh.subscribe("load_tileview", self.lv_tileview) def add_screen(self, screen): screen.post_processor_after_instantiation() - self.screens.append(screen) - + self.screens.append(screen) + def start(self): self.post_processor_after_instantiation() ``` diff --git a/docs/Application_guide/zh/solutions/poc/dev_resources.md b/docs/Application_guide/zh/solutions/poc/dev_resources.md index 29ca19043d6e5f24e68537661a20c9b1148afdc4..4c787494e5c1f2b6177b3e2d9b2c77122c7589e0 100644 --- a/docs/Application_guide/zh/solutions/poc/dev_resources.md +++ b/docs/Application_guide/zh/solutions/poc/dev_resources.md @@ -5,16 +5,16 @@ - 型号:[EC600MCNLE QuecPython 标准开发板](https://python.quectel.com/doc/Getting_started/zh/evb/ec600x-evb.html) - 购买链接:[点此跳转](http://e.tb.cn/h.gAlSKya8NvMC9UY?tk=7APD3KXufyq) - 开发板文档 - - [规格书](https://images.quectel.com/python/2024/12/EC600X系列开发板产品规格及用户指导.pdf) - - [原理图](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-SCH.pdf) - - [丝印图](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-丝印.pdf) + - [规格书](https://python.quectel.com/wp-content/uploads/2024/10/EC600X系列开发板产品规格及用户指导.pdf) + - [原理图](https://python.quectel.com/wp-content/uploads/2024/09/EC600X_EVB_V3.2-SCH.pdf) + - [丝印图](https://python.quectel.com/wp-content/uploads/2024/09/EC600X_EVB_V3.2-丝印.pdf) - [资源介绍与使用指导](https://python.quectel.com/doc/Getting_started/zh/evb/ec600x-evb.html) ## 模组资料 -- 型号:[EC600MCN_LE](https://python.quectel.com/products/ec600m-cn) -- [规格书](https://images.quectel.com/python/2023/04/Quectel_EC600M-CN_LTE_Standard_模块产品规格书_V1.2.pdf) -- [驱动下载](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) +- 型号:[EC600MCN_LE](https://python.quectel.com/modules-cat/ec600m-series) +- [规格书](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_EC600M-CN_LTE_Standard_模块产品规格书_V1.2.pdf) +- [驱动下载](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) ## 配件资料 @@ -30,7 +30,7 @@ ### QPYcom - QuecPython 调试工具 - 版本:V3.6.0 -- 下载 [QPYcom](https://images.quectel.com/python/2022/12/QPYcom_V3.6.0.zip) +- 下载 [QPYcom](https://python.quectel.com/wp-content/uploads/2024/09/QPYcom_V3.6.0.zip) ### VSCode - 代码编辑器 diff --git a/docs/Application_guide/zh/solutions/poc/quick_start.md b/docs/Application_guide/zh/solutions/poc/quick_start.md index 9d15e95410c97e4df4de50ecc9cc7ae7ffc0efae..7a1b74cb14ed1be8c7dedb762c1867cc096fe2fd 100644 --- a/docs/Application_guide/zh/solutions/poc/quick_start.md +++ b/docs/Application_guide/zh/solutions/poc/quick_start.md @@ -14,11 +14,11 @@ ## 环境搭建 -- 下载并安装 EC600M 系列模组驱动:[QuecPython_USB_Driver_Win10_ASR](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip)。 +- 下载并安装 EC600M 系列模组驱动:[QuecPython_USB_Driver_Win10_ASR](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip)。 - 下载并安装[VSCode](https://code.visualstudio.com/)。 -- 下载并解压 [QPYCom](https://images.quectel.com/python/2022/12/QPYcom_V3.6.0.zip) 工具到电脑的合适位置。 +- 下载并解压 [QPYCom](https://python.quectel.com/wp-content/uploads/2024/09/QPYcom_V3.6.0.zip) 工具到电脑的合适位置。 - 下载[固件包](https://github.com/QuecPython/solution-POC/releases/download/v.1.0.0/EC600MCNLER06A01M08_XBND_OCPU_QPY_BETA0802.zip)。 @@ -34,7 +34,7 @@ 按照下图进行硬件连接: - + 1. 将喇叭连接至图中标识有`SPK+`和`SPK-`的排针上。 2. 将 LCD 屏连接至标识有 `LCD` 字样的排针上。 @@ -58,7 +58,7 @@ 1. 参考[此章节](https://python.quectel.com/doc/Getting_started/zh/first_python.html#PC%E4%B8%8E%E6%A8%A1%E7%BB%84%E9%97%B4%E7%9A%84%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93),将源码目录下 `code`文件夹中的所有文件导入到模组文件系统,如下图所示: - + 2. 参考[此章节](https://python.quectel.com/doc/Getting_started/zh/first_python.html#%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6),执行主程序文件`poc_main.py`。 3. 参考[此章节](https://python.quectel.com/doc/Getting_started/zh/first_python.html#%E5%81%9C%E6%AD%A2%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C),停止程序运行。 @@ -83,7 +83,7 @@ - 双击 `key2` 键,进入所选中的界面。 - 长按 `key2` 键,返回上一级界面。 -​ +​ ### 对讲 @@ -94,8 +94,8 @@ **主动呼叫图示:** - + **对方呼叫图示:** - + diff --git a/docs/Application_guide/zh/solutions/tracker/README.md b/docs/Application_guide/zh/solutions/tracker/README.md index 0a574a00f876ebe5e884833fc7eda20e2c29c9f1..a12333d7b126bbad73873680c4727e5d4a19f3eb 100644 --- a/docs/Application_guide/zh/solutions/tracker/README.md +++ b/docs/Application_guide/zh/solutions/tracker/README.md @@ -153,7 +153,7 @@ 定位器解决方案资源下载地址: https://github.com/QuecPython/solution-tracker > 该方案项目有一个`modules`子仓库, 在下载时需要注意同步下载 -> +> > 子仓库同步下载指令`git clone --recursive https://github.com/QuecPython/solution-tracker.git` 资源包目录展示: @@ -196,7 +196,7 @@ #### USB驱动安装 -请根据调试模组平台进行驱动下载安装, [点击此处下载](https://python.quectel.com/download) +请根据调试模组平台进行驱动下载安装, [点击此处下载](https://python.quectel.com/resource-download?cid=5) ![solution-tracker-004](../../media/solutions/tracker/solution-tracker-004.png) @@ -204,7 +204,7 @@ 推荐使用QPYcom进行开发调试, 此文档中的流程介绍均使用该工具进行, 且成功安装USB驱动 -工具下载链接: [点击此处下载](https://python.quectel.com/download) +工具下载链接: [点击此处下载](https://python.quectel.com/resource-download?cid=8) ![solution-tracker-005](../../media/solutions/tracker/solution-tracker-005.png) @@ -327,7 +327,7 @@ ota_status = { 根据当前调试模组型号下载对应QuecPython固件, 并使用Qpycom工具进行烧录 -固件下载地址: [点击此处访问](https://python.quectel.com/download) +固件下载地址: [点击此处访问](https://python.quectel.com/resource-download?cid=15) ![solution-tracker-006](../../media/solutions/tracker/solution-tracker-006.png) diff --git a/docs/FAQ/zh/network/cloud-platforms.md b/docs/FAQ/zh/network/cloud-platforms.md index d1eb519158873a21ffda00086be4b320749489b5..459d6f108ba1dd9cf6999fe550ed3d0e078c824e 100644 --- a/docs/FAQ/zh/network/cloud-platforms.md +++ b/docs/FAQ/zh/network/cloud-platforms.md @@ -14,7 +14,7 @@ umqtt模块提供创建MQTT客户端的基础连接与发布订阅功能,并 ### **如何使用MQTT协议连接阿里 IoT 平台、腾讯 IoT 平台等?** -使用MQTT协议连接阿里 IoT 平台、腾讯 IoT 平台的步骤可以详细参见官网上的[wiki社区](https://python.quectel.com/wiki/)的QuecPython IoT 平台。 +使用MQTT协议连接阿里 IoT 平台、腾讯 IoT 平台的步骤可以详细参见官网上的[wiki社区](https://python.quectel.com/doc/API_reference/zh/index.html)的QuecPython IoT 平台。 ### **IoT 平台运行demo出现未订阅等信息** diff --git a/docs/FAQ/zh/tools/drive.md b/docs/FAQ/zh/tools/drive.md index f2b105f8c69bb31c5c1eb8f4185035b23d35c0a4..558b7ac3ce7111740a28bda9c679968054b74a3f 100644 --- a/docs/FAQ/zh/tools/drive.md +++ b/docs/FAQ/zh/tools/drive.md @@ -2,22 +2,22 @@ ### 驱动下载地址 -https://python.quectel.com/download +https://python.quectel.com/resource-download?cid=5 ### 各平台驱动详情 -- EC600N/EC600M/EC600K/EC800N/EC800M/EG810M/EC800K/EC200A等型号安装[QuecPython_USB_Driver_Win10_ASR_V1.1.13](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) -- EC200U/EC600U/EC600G/EC800G/EG912U/EG915U等型号安装[QuecPython_USB_Driver_Win10_U_G_V1.0.19](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverU_V1.0.19.zip) -- BG95/BG600L等型号安装[QuecPython_USB_Driver_Win10_BG_V2.7.9](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverQ_NDIS_V2.7.9.zip) +- EC600N/EC600M/EC600K/EC800N/EC800M/EG810M/EC800K/EC200A等型号安装[QuecPython_USB_Driver_Win10_ASR_V1.1.13](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) +- EC200U/EC600U/EC600G/EC800G/EG912U/EG915U等型号安装[QuecPython_USB_Driver_Win10_U_G_V1.0.19](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverU_V1.0.19.zip) +- BG95/BG600L等型号安装[QuecPython_USB_Driver_Win10_BG_V2.7.14](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverQ_NDIS_V2.7.14.zip) - Linux系统全系列模组共用驱动[QuecPython_USB_Driver_Linux_Source_Code](https://github.com/QuecPython/Quectel_Linux_USB_Serial_Option_Driver) ### 驱动安装流程 -下载对应驱动后解压双击安装即可. +下载对应驱动后解压双击安装即可. ### 调试交互口名称 -各平台统一交互口名称: **Quectel-USB-REPL-Port**. 历史交互口如下. +各平台统一交互口名称: **Quectel-USB-REPL-Port**. 历史交互口如下. *说明: 统一交互口需要同步更新模块固件与驱动程序.* diff --git a/docs/Getting_started/en/README.md b/docs/Getting_started/en/README.md index aa99b9b692cee6e6d91ffba6f5f0f37042cc66bb..3aa2f6261e6d43be3002d2a9d43a6e8c11275f83 100644 --- a/docs/Getting_started/en/README.md +++ b/docs/Getting_started/en/README.md @@ -12,7 +12,7 @@ Quectel provides step-by-step user guides, operation instructions, and instructi ## Supported Modules -| Region | Cat-1 | Cat-4 | Cat-M | NB-IoT | Wi-Fi | -| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------------------- | -| Domestic | [EG810M-CN](https://python.quectel.com/products/eg810m-cn)
[EC600G-CN](https://python.quectel.com/products/ec600g-cn)
[EC800G-CN](https://python.quectel.com/products/ec800g-cn)
[EC200N-CN](https://python.quectel.com/products/ec200n-cn)
[EC800M-CN](https://python.quectel.com/products/ec800m-cn)
[EC600M-CN](https://python.quectel.com/products/ec600m-cn)
[EC200U-CN](https://python.quectel.com/products/ec200u-cn)
[EC600U-CN](https://python.quectel.com/products/ec600u-cn)
[EC600N-CN](https://python.quectel.com/products/ec600n-cn) | [EC200A-CN](https://python.quectel.com/products/ec200a-cn)
| / | [BC25](https://python.quectel.com/products/bc25) | [FCM360W](https://python.quectel.com/products/fcm360w) | -| Overseas | [EG915U-EU](https://python.quectel.com/en/products/eg915u-eu)
[EG915N-EU](https://python.quectel.com/en/products/eg915n-eu)
[EG912U-GL](https://python.quectel.com/en/products/eg912u-gl)
[EG912N-EN](https://python.quectel.com/en/products/eg912n-en)
[EC200U-EU](https://python.quectel.com/en/products/ec200u-eu) | [EC200A-EU](https://python.quectel.com/en/products/ec200a-eu)
[EC200A-AU](https://python.quectel.com/en/products/ec200a-au) | [BG95-M1](https://python.quectel.com/en/products/bg95m1)
[BG95-M3
](https://python.quectel.com/en/products/bg95m3)[BG95-M8](https://python.quectel.com/en/products/bg95m8) | [BG95-M3
](https://python.quectel.com/en/products/bg95m3)[BG95-M8](https://python.quectel.com/en/products/bg95m8) | [FCM360W](https://python.quectel.com/en/products/fcm360w) | \ No newline at end of file +| Region | Cat 1 | Cat 4 | Cat M | NB | WIFI | +| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------------------- | +| China | [EG810M-CN](https://python.quectel.com/modules-cat/eg810m-series)
[EC800E-CN](https://python.quectel.com/modules-cat/ec800e-series)
[EC600E-CN](https://python.quectel.com/modules-cat/ec600e-series)
[EC600G-CN](https://python.quectel.com/modules-cat/ec600g-series)
[EC800G-CN](https://python.quectel.com/modules-cat/ec800g-series)
[EC200N-CN](https://python.quectel.com/modules-cat/ec200n-series)
[EC800M-CN](https://python.quectel.com/modules-cat/ec800m-series)
[EC600M-CN](https://python.quectel.com/modules-cat/ec600m-series)
[EC200U-CN](https://python.quectel.com/modules-cat/ec200u-series)
[EC600U-CN](https://python.quectel.com/modules-cat/ec600u-series)
[EC600N-CN](https://python.quectel.com/modules-cat/ec600n-series) | [EC200A-CN](https://python.quectel.com/modules-cat/ec200a-series)
| / | [BC25](https://python.quectel.com/modules-cat/bc25-series) | [FCM360W](https://python.quectel.com/modules-cat/fcm360w-series) | +| Overseas | [EG915U-EU](https://python.quectel.com/en/modules-cat/eg915u-series)
[EG915N-EU](https://python.quectel.com/en/modules-cat/eg915n-series)
[EG912U-GL](https://python.quectel.com/en/modules-cat/eg912u-series)
[EG912N-EN](https://python.quectel.com/en/modules-cat/eg912n-series)
[EC200U-EU](https://python.quectel.com/en/modules-cat/ec200u-series) | [EC200A-EU](https://python.quectel.com/en/modules-cat/ec200a-series)
[EC200A-AU](https://python.quectel.com/en/modules-cat/ec200a-series) | [BG95-M1](https://python.quectel.com/en/modules-cat/bg95-series)
[BG95-M3
](https://python.quectel.com/en/modules-cat/bg95-series)[BG95-M8](https://python.quectel.com/en/modules-cat/bg95-series) | / | [FCM360W](https://python.quectel.com/en/modules-cat/fcm360w-series) | \ No newline at end of file diff --git a/docs/Getting_started/en/driver_prepare.md b/docs/Getting_started/en/driver_prepare.md index de87c00fa05af9057d3c82515821a9b431a308aa..ba0b51d81e2e02f735a8c31a41f67de3d57b3cbd 100644 --- a/docs/Getting_started/en/driver_prepare.md +++ b/docs/Getting_started/en/driver_prepare.md @@ -4,7 +4,7 @@ The "device driver" is a special program that allows the PC to communicate with and the device. Only through this interface can the OS control the hardware device. -- Open the [QuecPython official website driver download link](https://python.quectel.com/en/download). +- Open the [QuecPython official website driver download link](https://python.quectel.com/en/resource-download). - Start by selecting the "Driver" section, and then within the "Driver" section, choose the driver that matches your module model and computer system. Different module platforms require different driver programs, so you need to download the corresponding driver package based on your module model. @@ -12,17 +12,16 @@ The "device driver" is a special program that allows the PC to communicate with -- In the search box, type "EG912U" to find the appropriate driver for EG912U, and then click the download button to download the driver: [QuecPython_USB Driver Win10_U_G](https://images.quectel.com/python/sites/2/2023/05/Quectel_Windows_USB_DriverU_V1.0.19.zip). +- In the search box, type "EG912U" to find the appropriate driver for EG912U, and then click the download button to download the driver: [QuecPython_USB Driver Win10_U_G](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/Quectel_Windows_USB_DriverU_V1.0.19.zip). | Module Model | Host Platform | Driver Name | | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | -| [BG95-M3](https://python.quectel.com/en/products/bg95m3)      [BG95-M8](https://python.quectel.com/en/products/bg95m8)      |     Win10     |         [**QuecPython_USB_Driver_Win10_BG**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverQ_NDIS_V2.7.9.zip) | -| [EC800E-CN](https://python.quectel.com/products/ec800e-cn)     [EC600E-CN](https://python.quectel.com/products/ec600e-cn)      |     Win10     |         [**QuecPython_USB_Driver_Win10_E**](https://images.quectel.com/python/2023/05/Quectel_Windows_USB_DriverY_V1.0.2.zip) | -| [EC200N-CN](https://python.quectel.com/products/ec200n-cn)     [EC800M-CN](https://python.quectel.com/products/ec800m-cn)     [EC600N-CN](https://python.quectel.com/products/ec600n-cn)     [EC600M-CN](https://python.quectel.com/products/ec600m-cn)     [EC200A-CN](https://python.quectel.com/products/ec200a-cn) |     Win10     |         [**QuecPython_USB_Driver_Win10_ASR**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) | -| [EC600U-CN](https://python.quectel.com/products/ec600u-cn)     [EC600G-CN](https://python.quectel.com/products/ec600g-cn)     [EC800G-CN](https://python.quectel.com/products/ec800g-cn) |     Win10     |         [**QuecPython_USB_Driver_Win10_U_G**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverU_V1.0.19.zip) | -| [FCM360W](https://python.quectel.com/products/fcm360w)      |     Win10     |         [**CH343SER**](https://images.quectel.com/python/2023/11/CH343SER_V1.8.zip) | +| [BG95-M3](https://python.quectel.com/en/modules-cat/bg95-series)      [BG95-M8](https://python.quectel.com/en/modules-cat/bg95-series)      |     Win10     |         [**QuecPython_USB_Driver_Win10_BG**](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/Quectel_Windows_USB_DriverQ_NDIS_V2.7.14.zip) | +| [EC800M-CN](https://python.quectel.com/en/modules-cat/ec800m-series)     [EC600M-CN](https://python.quectel.com/en/modules-cat/ec600m-series)     [EC200A-CN](https://python.quectel.com/en/modules-cat/ec200a-series) |     Win10     |         [**QuecPython_USB_Driver_Win10_ASR**](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) | +| [EG912U-GL](https://python.quectel.com/en/modules-cat/eg912u-series)     [EG915U-EU](https://python.quectel.com/en/modules-cat/eg915u-series) |     Win10     |         [**QuecPython_USB_Driver_Win10_U_G**](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/Quectel_Windows_USB_DriverU_V1.0.19.zip) | +| [FCM360W](https://python.quectel.com/en/modules-cat/fcm360w-series)      |     Win10     |         [**CH343SER**](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/CH343SER_V1.8.zip) | - **Step 2: Install the Driver** diff --git a/docs/Getting_started/en/evb/bg-eg-core-evb.md b/docs/Getting_started/en/evb/bg-eg-core-evb.md index 35e755835b69bfa05dcfafdeaa91885018d2d49f..c1c6007953bf26ce94130a82bc3d3990a4c237ee 100644 --- a/docs/Getting_started/en/evb/bg-eg-core-evb.md +++ b/docs/Getting_started/en/evb/bg-eg-core-evb.md @@ -4,12 +4,12 @@ Supported Module List -- [BG95-M1](https://python.quectel.com/products/bg95) -- [BG95-M3](https://python.quectel.com/products/bg95m3) -- [BG95-M8](https://python.quectel.com/products/bg95m8) -- [EG915U-LA](https://python.quectel.com/products/eg915u-la) -- [EG915U-EU](https://python.quectel.com/products/eg915u-eu) -- [EG912U-GL](https://python.quectel.com/products/eg912u-gl) +- [BG95-M1](https://python.quectel.com/en/modules-cat/bg95-series) +- [BG95-M3](https://python.quectel.com/en/modules-cat/bg95-series) +- [BG95-M8](https://python.quectel.com/en/modules-cat/bg95-series) +- [EG915U-LA](https://python.quectel.com/en/modules-cat/eg915u-series) +- [EG915U-EU](https://python.quectel.com/en/modules-cat/eg915u-series) +- [EG912U-GL](https://python.quectel.com/en/modules-cat/eg912u-series) ## Feature List @@ -33,9 +33,9 @@ The QuecPython BG&EG series core board (PH-7 (C4-P02)) is a core development boa ## **Documents Download** -- [QuecPython-PH-7C4-P02_Core_Board_Specification_and_User_Guide_V1.0.0](https://images.quectel.com/python/sites/2/2024/11/QuecPython-PH-7C4-P02_Core_Board_Specification_and_User_Guide_V1.0.0.pdf) -- [QuecPython-PH-7C4-P02_Core_Board_SCH](https://images.quectel.com/python/sites/2/2024/11/QuecPython-PH-7C4-P02_Core_Board_SCH.pdf) -- [QuecPython-PH-7C4-P02_Core_Board_Silkscreen](https://images.quectel.com/python/sites/2/2024/11/QuecPython-PH-7C4-P02_Core_Board_Silkscreen.pdf) +- [QuecPython-PH-7C4-P02_Core_Board_Specification_and_User_Guide_V1.0.0](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/PH-7C4-P02_Core_Board_Specification_and_User_Guide_V1.0.0.pdf) +- [QuecPython-PH-7C4-P02_Core_Board_SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/PH-7C4-P02_Schematic_Diagram.pdf) +- [QuecPython-PH-7C4-P02_Core_Board_Silkscreen](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/PH-7C4-P02_Silkscreen.pdf) ## EVB Resources diff --git a/docs/Getting_started/en/evb/bg95-evb.md b/docs/Getting_started/en/evb/bg95-evb.md index 1b5a0c63d8c9345d9b79ee3472c275413ea7340d..8c7d1e19fb3a18f3a2b99c1270ec69ff9be9b3fe 100644 --- a/docs/Getting_started/en/evb/bg95-evb.md +++ b/docs/Getting_started/en/evb/bg95-evb.md @@ -2,9 +2,9 @@ ## Supported Module List -- [BG95-M1](https://python.quectel.com/en/products/bg95m1) -- [BG95-M3](https://python.quectel.com/en/products/bg95m3) -- [BG95-M8](https://python.quectel.com/en/products/bg95m8) +- [BG95-M1](https://python.quectel.com/en/modules-cat/bg95-series) +- [BG95-M3](https://python.quectel.com/en/modules-cat/bg95-series) +- [BG95-M8](https://python.quectel.com/en/modules-cat/bg95-series) ## Feature List @@ -31,7 +31,7 @@ The main components and interface layout of the EVB are shown in the following f ## Resource Download -- [BG95_Board_Sch](https://images.quectel.com/python/sites/2/2023/12/BG95_Board_Sch_0829.pdf) +- [BG95_Board_Sch](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/BG95_Board_Sch_0829.pdf) ## EVB Resources @@ -86,7 +86,7 @@ The main pin layout of the EVB is shown in the figure below. ![img](../media/evb/bg95/BG95_EVB.png) > **Note** -> For more information about QuecPython_BG95_EVB, please visit . +> For more information about QuecPython_BG95_EVB, please visit . ### EVB Configuration diff --git a/docs/Getting_started/en/evb/ec200x-evb.md b/docs/Getting_started/en/evb/ec200x-evb.md index 5903399f53650534b0eb130c9808e9252e608645..12dac24e93c193eccc67094d6ae4602f9565bf14 100644 --- a/docs/Getting_started/en/evb/ec200x-evb.md +++ b/docs/Getting_started/en/evb/ec200x-evb.md @@ -2,11 +2,11 @@ ## Supported Module List -- [EC200U-CN](https://python.quectel.com/en/products/ec200u-cn) -- [EC200U-EU](https://python.quectel.com/en/products/ec200u-eu) -- [EC200A-CN](https://python.quectel.com/en/products/ec200a-cn) -- [EC200A-AU](https://python.quectel.com/en/products/ec200a-au) -- [EC200A-EU](https://python.quectel.com/en/products/ec200a-eu) +- [EC200U-CN](https://python.quectel.com/en/modules-cat/ec200u-series) +- [EC200U-EU](https://python.quectel.com/en/modules-cat/ec200u-series) +- [EC200A-CN](https://python.quectel.com/en/modules-cat/ec200a-series) +- [EC200A-AU](https://python.quectel.com/en/modules-cat/ec200a-series) +- [EC200A-EU](https://python.quectel.com/en/modules-cat/ec200a-series) ## Feature List @@ -41,7 +41,7 @@ The main pin placement of the evaluation board is shown in the following figure: > > The function multiplexing pins beginning with A/U in the figure indicate the functional difference of EC200A and EC200U series modules, that is, the function multiplexing pins beginning with U will take effect only when the module is EC200U. The function multiplexing pins starting with A takes effect only when the module is EC200A. > -> For more information about the evaluation board, please visit . +> For more information about the evaluation board, please visit . ### Evaluation Board Configuration @@ -166,5 +166,4 @@ After performing the above operations, wait for the power indication LED on the ## Resource Download -- [QuecPython_EC20X_EVB](https://images.quectel.com/python/2023/05/QuecPython_EC20X_EVB_V2.0.zip) -- [EC200U(A) Board SCH](https://images.quectel.com/python/2023/12/EC200UA_Board_Sch_0829.pdf) +- [EC200U(A) Board SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QuecPython_EC20X_EVB_V2.0_sch.pdf) diff --git a/docs/Getting_started/en/evb/ec2x-evb.md b/docs/Getting_started/en/evb/ec2x-evb.md index 2f88e8b7d06e93f5a513885c394ee29482aa8904..63131957608103c2d529495abf816bf5f1373287 100644 --- a/docs/Getting_started/en/evb/ec2x-evb.md +++ b/docs/Getting_started/en/evb/ec2x-evb.md @@ -4,9 +4,9 @@ Supported module models -- [EC200U-EU](https://python.quectel.com/en/products/ec200u-eu) -- [EC200A-EU](https://python.quectel.com/en/products/ec200a-eu) -- [EC200A-AU](https://python.quectel.com/en/products/ec200a-au) +- [EC200U-EU](https://python.quectel.com/en/modules-cat/ec200u-series) +- [EC200A-EU](https://python.quectel.com/en/modules-cat/ec200a-series) +- [EC200A-AU](https://python.quectel.com/en/modules-cat/ec200a-series) ## Feature List @@ -16,7 +16,7 @@ The QuecPython_EC2X_EVB is specifically designed for QuecPython. It is a small a The EVB is equipped with a Type-C interface, so developers only need a USB Type-C cable to easily manipulate the EVB. -The EVB is equipped with the EC200U series module. For details, see [EC200U-EU](https://python.quectel.com/en/products/ec200u-eu). +The EVB is equipped with the EC200U series module. For details, see [EC200U-EU](https://python.quectel.com/en/modules-cat/ec200u-series). ### Feature Description @@ -26,7 +26,7 @@ The main components and interface layout of the EVB are shown in the figure belo ## Document download -- [EC2X_EVB_SCH2](https://images.quectel.com/python/2023/05/EC2X_EVB_SCH2.pdf) +- [EC2X_EVB_SCH2](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/EC200A_zsus-Series-EVB_SCH.pdf) ## EVB Resources @@ -93,7 +93,7 @@ The following figure shows the pin assignment. ![](../media/evb/ec2x-evb/EC2X_EVB.png) > **Tips** -> For more information about the EVB, please visit https://python.quectel.com/en/download +> For more information about the EVB, please visit ### EVB Configuration diff --git a/docs/Getting_started/en/evb/ec600u-235.md b/docs/Getting_started/en/evb/ec600u-235.md index 83acf9b669987d41b11fcc75f283da2a9f98890d..786fefa303a41d4914f3879ad28fc48d408179cd 100644 --- a/docs/Getting_started/en/evb/ec600u-235.md +++ b/docs/Getting_started/en/evb/ec600u-235.md @@ -1,9 +1,5 @@ # EC600U U-235 EVB Introduction -## Supported Module List - -- [EC600U-EU](https://python.quectel.com/en/products/ec600u-eu) - ## Feature List ### Basic Overview @@ -55,7 +51,7 @@ Pull up Pin 118 (QuecPython GPIO 8) of the EC600U module. To enable PA, pull up Pin 4 (QuecPython GPIO 11) of the EC600U module. -10. **Screen**: +10. **Screen**: ST7701, 5 inch, MIPI interface, 480x854 Resolution, Capacitive touch screen, Touch chip GT911 @@ -64,8 +60,8 @@ ST7701, 5 inch, MIPI interface, 480x854 Resolution, Capacitive touch screen, To ## Resource Download -- [EC600U_U-235_EVB_SCH](https://images.quectel.com/python/sites/2/2023/10/600U_U-235-SCH.pdf) -- [Quectel_QuecPython_U 235_EVB](https://images.quectel.com/python/sites/2/2023/08/Quectel_QuecPython_U-235_EVB_User_Guide_V1.0.pdf) +- [EC600U_U-235_EVB_SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/12/EC600U_U-235_EVB_SCH.pdf) +- [Quectel_QuecPython_U 235_EVB](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/12/EC600U_U-235_EVB_Specification_and_User_Guide.pdf) ## Evaluation Board Resources @@ -115,7 +111,7 @@ Starting from the "EC600U Module" indicator box in the figure above, the EVB res - **Step 1: Antenna Installation** -Install the antenna that comes with the development board. Place it in the LTE antenna slot and insert the SIM card into the SIM card slot on the development board. +Install the antenna that comes with the development board. Place it in the LTE antenna slot and insert the SIM card into the SIM card slot on the development board. - **Step 2: Connecting the Development Board** @@ -127,7 +123,7 @@ Set the power selection switch on the development board to USB, - **Step 4: Powering On the Development Board** -Press and hold PWR until the power indicator light on the mainboard (labeled as PWR) lights up. +Press and hold PWR until the power indicator light on the mainboard (labeled as PWR) lights up. **Once you've completed these steps, a constant PWR light indicates a successful power-on.** diff --git a/docs/Getting_started/en/evb/eg91x-evb.md b/docs/Getting_started/en/evb/eg91x-evb.md index 99cb1f36795185feffcf40f64414d15cb8b0228d..781ca6f9099117050850167be0ec9dfcd0f5568d 100644 --- a/docs/Getting_started/en/evb/eg91x-evb.md +++ b/docs/Getting_started/en/evb/eg91x-evb.md @@ -2,8 +2,8 @@ ## Supported Module List -- [EG915U-LA](https://python.quectel.com/en/products/eg915u-la) -- [EG915U-EU](https://python.quectel.com/en/products/eg915u-eu) +- [EG915U-LA](https://python.quectel.com/en/modules-cat/eg915u-series) +- [EG915U-EU](https://python.quectel.com/en/modules-cat/eg915u-series) @@ -41,7 +41,7 @@ The main pin placement of the evaluation board is shown in the following figure: ![img](../media/evb/eg91x-evb/EG91X_EVB.png) > **Note** -> For more information about the evaluation board, please visit . +> For more information about the evaluation board, please visit . @@ -101,7 +101,7 @@ The detailed assignment of the peripheral interfaces on the evaluation board is - **7 & 8**: Enable SD power supply - **9 & 10**: Enable GNSS active power supply -> When testing power consumption, make sure to switch off the USB power supply switch (USB_ON/OFF) on the back of the evaluation board. +> When testing power consumption, make sure to switch off the USB power supply switch (USB_ON/OFF) on the back of the evaluation board. **Singular-pin Assignment of 40-Pin Header** @@ -148,6 +148,6 @@ After performing the above operations, wait for the power indication LED on the ## Resource Download -- [QuecPython_EG915_C1_P02_EVB_SCH](https://images.quectel.com/python/sites/2/2023/12/QuecPython_EG915_C1_P02_EVB_SCH_V1.2.pdf) +- [QuecPython_EG915_C1_P02_EVB_SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QuecPython_EG915_C1_P02_EVB_SCH_V1.2.pdf) -- [QuecPython_EG915_C1_P02_EVB_SILK_SCREEN](https://images.quectel.com/python/sites/2/2024/01/EG91X_Board_SILK_SCREEN.pdf) \ No newline at end of file +- [QuecPython_EG915_C1_P02_EVB_SILK_SCREEN](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/EG91X_Board_SILK_SCREEN.pdf) \ No newline at end of file diff --git a/docs/Getting_started/en/evb/fcm360w-evb.md b/docs/Getting_started/en/evb/fcm360w-evb.md index 687dc1618a6ca68b7046c8be865c722711a10c6a..6294e3d97f21d9cfe926f217a50d7526e2d66566 100644 --- a/docs/Getting_started/en/evb/fcm360w-evb.md +++ b/docs/Getting_started/en/evb/fcm360w-evb.md @@ -4,7 +4,7 @@ Supported module model -- [FCM360W](https://python.quectel.com/en/products/fcm360w) +- [FCM360W](https://python.quectel.com/en/modules-cat/fcm360w-series) ## Feature List @@ -20,7 +20,7 @@ The main components and interface layout of the EVB are shown in the figure belo ## Document download -- [FCM360X_EVB_SCH](https://images.quectel.com/python/2023/12/FCM360X-EVB-V1.0-SCH.pdf) +- [FCM360X_EVB_SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/FCM360X-EVB-V1.0-SCH.pdf) ## EVB Resources @@ -66,7 +66,7 @@ The following figure shows the pin assignment. > **Tips** > -> For more information about the EVB, please visit [QuecPython Download](https://python.quectel.com/en/download) +> For more information about the EVB, please visit [QuecPython Download](https://python.quectel.com/en/resource-download?cid=252) ### EVB Configuration diff --git a/docs/Getting_started/en/evb/fcm360w-teb.md b/docs/Getting_started/en/evb/fcm360w-teb.md index f09aa522e48547f33cd4b590552e0c88392795a5..37a8fea5307f7d3f95aa5560a89fb2afc9b5b6ba 100644 --- a/docs/Getting_started/en/evb/fcm360w-teb.md +++ b/docs/Getting_started/en/evb/fcm360w-teb.md @@ -2,7 +2,7 @@ ## Supported module list -- [FCM360W](https://python.quectel.com/en/products/fcm360w) +- [FCM360W](https://python.quectel.com/en/modules-cat/fcm360w-series) ## Function list @@ -20,9 +20,9 @@ The main components and interface layout of the development board are shown in t ## Download -- [FCM360X_EVB_SCH](https://images.quectel.com/python/2023/12/FCM360X-EVB-V1.0-SCH.pdf) +- [FCM360X_EVB_SCH](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/FCM360X-EVB-V1.0-SCH.pdf) -- [Quectel_FCM360W_Hardware Design Manual](https://images.quectel.com/python/2023/10/Quectel_FCM360W_%E7%A1%AC%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%89%8B%E5%86%8C_V1.0.pdf) +- [Quectel_FCM360W_Hardware Design Manual](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/Quectel_FCM360W_Hardware_Design_V1.0.pdf) ## Development Board Resources @@ -56,7 +56,7 @@ The main pin layout of the development board is shown in the table below - **The pins with _M in the name are directly connected to the module end** > **Tips** -> For more information about the development board, please visit +> For more information about the development board, please visit ### Development board configuration @@ -78,7 +78,7 @@ First, use micro Use the USB data cable to connect the UART0 interface on the de - **Step2: Development board connection** -After completing the above firmware burning steps, switch the data cable connection from UART0 port to UART2 port, and use the serial port tool to connect to the serial port. The serial port tool uses [QCOM](https://images.quectel.com/python/2022/12/QCOM_V1.6.zip) ,You need to check the RTS check box of the tool first, and then open the serial port +After completing the above firmware burning steps, switch the data cable connection from UART0 port to UART2 port, and use the serial port tool to connect to the serial port. The serial port tool uses [QCOM](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QCOM_V1.6.zip) ,You need to check the RTS check box of the tool first, and then open the serial port - **Step3: Development board interaction** diff --git a/docs/Getting_started/en/flash_firmware.md b/docs/Getting_started/en/flash_firmware.md index 7f31eda5f759466c3be86bf0d8227297dd2c8ef5..dbb41b8dde59b9118987855313f5b33e200db845 100644 --- a/docs/Getting_started/en/flash_firmware.md +++ b/docs/Getting_started/en/flash_firmware.md @@ -4,7 +4,7 @@ Standard AT firmware or QuecOpen firmware is usually downloaded into a module when the module leaves the factory. If you want to develop the module based on QuecPython, you need to manually re-download the dedicated QuecPython firmware into it. -The official firmware download URL is https://python.quectel.com/en/download. +The official firmware download URL is https://python.quectel.com/en/resource-download?cid=4. ![](media/readme/Firmware.png) diff --git a/docs/Getting_started/en/tools_prepare.md b/docs/Getting_started/en/tools_prepare.md index 33321504c0ee77afe7f7b990d2f8c3c34385a373..2306307c146be4aba0e8a51a56a15651c618dd03 100644 --- a/docs/Getting_started/en/tools_prepare.md +++ b/docs/Getting_started/en/tools_prepare.md @@ -4,7 +4,7 @@ To develop with QuecPython, you need a specialized development and debugging tool — **QPYcom**. This tool is used for debugging code, analyzing logs, transferring files, downloading firmware, merging firmware, and more. -[QPYcom](https://images.quectel.com/python/sites/2/2023/05/QPYcom_V3.5.zip) is a one-stop debugging tool for QuecPython development. +[QPYcom](https://python.quectel.com/en/wp-content/uploads/sites/2/2024/11/QPYcom_V3.6.0.zip) is a one-stop debugging tool for QuecPython development. *Note: This tool does not need to be installed. Just unzip and use it.* diff --git a/docs/Getting_started/en/wifi-dev.md b/docs/Getting_started/en/wifi-dev.md index 27cac33eebd9e8df75471fbb174af9bd4321d2ef..4a541c1864f902ca22254deedce003a15919fe76 100644 --- a/docs/Getting_started/en/wifi-dev.md +++ b/docs/Getting_started/en/wifi-dev.md @@ -70,7 +70,7 @@ It is worth noting that, to achieve automatic firmware burning, the `DTR` pin of QPYcom is an integrated development environment designed specifically for QuecPython. It includes features such as Python command interaction, file transfer, firmware burning, and script execution. -Visit the [download page](https://python.quectel.com/en/download) on the QuecPython official website, and you can find QPYcom under the `Tools` tab for downloading. After extracting, double-click `QPYcom.exe` to open and use it directly. +Visit the [download page](https://python.quectel.com/en/resource-download?cid=260) on the QuecPython official website, and you can find QPYcom under the `Tools` tab for downloading. After extracting, double-click `QPYcom.exe` to open and use it directly. ![QPYcom_download.png](media/wifi-dev/QPYcom_download.png) @@ -80,7 +80,7 @@ Visit the [download page](https://python.quectel.com/en/download) on the QuecPyt It is necessary to burn the FCM360W firmware package, which includes the QuecPython runtime environment, to execute QuecPython scripts. -Visit the QuecPython official website, go to the [details page of the FCM360W module](https://python.quectel.com/en/products/fcm360w), and navigate to the `Download` tab. Find the download item named `QPY_OCPU_FCM360W_FW`, click the download button on the right, and you can download the firmware package. +Visit the QuecPython official website, go to the [details page of the FCM360W module](https://python.quectel.com/en/modules-cat/fcm360w-series), and navigate to the `Download` tab. Find the download item named `QPY_OCPU_FCM360W_FW`, click the download button on the right, and you can download the firmware package. ![FCM360W_FW_Download.png](media/wifi-dev/FCM360W_FW_Download.png) @@ -326,7 +326,7 @@ def tcp_echo_client(server_addr, server_port): while True: # Wait for messages in the queue event = msg_q.get() - + if event['id'] == 3302: # Successfully connected to the hotspot print("- Connected to AP.") elif event['id'] == 3305: # When an IP address is obtained, print IP address information and start the TCP client @@ -475,7 +475,7 @@ def tcp_echo_server(server_addr, server_port): while True: # Wait for messages in the queue event = msg_q.get() - + if event['id'] == 3201: # Hotspot creation success print("- AP is created successfully.") print("- Start TCP server.") @@ -609,10 +609,10 @@ The verification steps are as follows: > If you have two FCM360W Wi-Fi modules, you can perform the following test steps without relying on a computer. -> +> > 1. Run a TCP server in AP mode on one of the modules. > 2. After the TCP server in the first module has started, use the other module as a STATION, connect to the hotspot created by the first module, and start the TCP client. -> +> > For the TCP client code in STATION mode, there are two points to note: > - The `SSID` and `PASSWD` of the hotspot to be connected should be consistent with those created by the first module. This can be easily ensured by prearrangement. > - The IP address and port of the server to be connected should be consistent with those of the TCP server started by the first module. diff --git a/docs/Getting_started/zh/README.md b/docs/Getting_started/zh/README.md index cc3f6f3625417673160ccf1db075843b69c9f95d..2ddb8ca3d6587c3b26ea411c1266868b93b9861a 100644 --- a/docs/Getting_started/zh/README.md +++ b/docs/Getting_started/zh/README.md @@ -14,5 +14,5 @@ QuecPython模组具有以下优势 | 区域 | Cat 1 | Cat 4 | Cat M | NB | WIFI | | ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------------------- | -| 国内 | [EG810M-CN](https://python.quectel.com/products/eg810m-cn)
[EC800E-CN](https://python.quectel.com/products/ec800e-cn)
[EC600E-CN](https://python.quectel.com/products/ec600e-cn)
[EC600G-CN](https://python.quectel.com/products/ec600g-cn)
[EC800G-CN](https://python.quectel.com/products/ec800g-cn)
[EC200N-CN](https://python.quectel.com/products/ec200n-cn)
[EC800M-CN](https://python.quectel.com/products/ec800m-cn)
[EC600M-CN](https://python.quectel.com/products/ec600m-cn)
[EC200U-CN](https://python.quectel.com/products/ec200u-cn)
[EC600U-CN](https://python.quectel.com/products/ec600u-cn)
[EC600N-CN](https://python.quectel.com/products/ec600n-cn) | [EC200A-CN](https://python.quectel.com/products/ec200a-cn)
| / | [BC25](https://python.quectel.com/products/bc25) | [FCM360W](https://python.quectel.com/products/fcm360w) | -| 海外 | [EG915U-EU](https://python.quectel.com/en/products/eg915u-eu)
[EG915N-EU](https://python.quectel.com/en/products/eg915n-eu)
[EG912U-GL](https://python.quectel.com/en/products/eg912u-gl)
[EG912N-EN](https://python.quectel.com/en/products/eg912n-en)
[EC200U-EU](https://python.quectel.com/en/products/ec200u-eu)
[EC600U-EU](https://python.quectel.com/en/products/ec600u-eu) | [EC200A-EU](https://python.quectel.com/en/products/ec200a-eu)
[EC200A-AU](https://python.quectel.com/en/products/ec200a-au) | [BG95-M1](https://python.quectel.com/en/products/bg95)
[BG95-M3
](https://python.quectel.com/en/products/bg95m3)[BG95-M8](https://python.quectel.com/en/products/bg95m8) | [BG95-M3
](https://python.quectel.com/en/products/bg95m3)[BG95-M8](https://python.quectel.com/en/products/bg95m8) | [FCM360W](https://python.quectel.com/en/products/fcm360w) | \ No newline at end of file +| 国内 | [EG810M-CN](https://python.quectel.com/modules-cat/eg810m-series)
[EC800E-CN](https://python.quectel.com/modules-cat/ec800e-series)
[EC600E-CN](https://python.quectel.com/modules-cat/ec600e-series)
[EC600G-CN](https://python.quectel.com/modules-cat/ec600g-series)
[EC800G-CN](https://python.quectel.com/modules-cat/ec800g-series)
[EC200N-CN](https://python.quectel.com/modules-cat/ec200n-series)
[EC800M-CN](https://python.quectel.com/modules-cat/ec800m-series)
[EC600M-CN](https://python.quectel.com/modules-cat/ec600m-series)
[EC200U-CN](https://python.quectel.com/modules-cat/ec200u-series)
[EC600U-CN](https://python.quectel.com/modules-cat/ec600u-series)
[EC600N-CN](https://python.quectel.com/modules-cat/ec600n-series) | [EC200A-CN](https://python.quectel.com/modules-cat/ec200a-series)
| / | [BC25](https://python.quectel.com/modules-cat/bc25-series) | [FCM360W](https://python.quectel.com/modules-cat/fcm360w-series) | +| 海外 | [EG915U-EU](https://python.quectel.com/en/modules-cat/eg915u-series)
[EG915N-EU](https://python.quectel.com/en/modules-cat/eg915n-series)
[EG912U-GL](https://python.quectel.com/en/modules-cat/eg912u-series)
[EG912N-EN](https://python.quectel.com/en/modules-cat/eg912n-series)
[EC200U-EU](https://python.quectel.com/en/modules-cat/ec200u-series) | [EC200A-EU](https://python.quectel.com/en/modules-cat/ec200a-series)
[EC200A-AU](https://python.quectel.com/en/modules-cat/ec200a-series) | [BG95-M1](https://python.quectel.com/en/modules-cat/bg95-series)
[BG95-M3
](https://python.quectel.com/en/modules-cat/bg95-series)[BG95-M8](https://python.quectel.com/en/modules-cat/bg95-series) | / | [FCM360W](https://python.quectel.com/en/modules-cat/fcm360w-series) | \ No newline at end of file diff --git a/docs/Getting_started/zh/driver_prepare.md b/docs/Getting_started/zh/driver_prepare.md index dc6ee4cc5eb3656a398855c0fbb7a6b49d2f9e1c..c2f49c1d638bc4a5c674af079e18ebed409338b3 100644 --- a/docs/Getting_started/zh/driver_prepare.md +++ b/docs/Getting_started/zh/driver_prepare.md @@ -4,7 +4,7 @@ 驱动程序(device driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,操作系统只能通过这个接口,才能控制硬件设备的工作。 -- 打开[QuecPython官网下载链接](https://python.quectel.com/download) +- 打开[QuecPython官网下载链接](https://python.quectel.com/resource-download) - 进入页面后先选择驱动栏,然后在驱动栏选择与自己模组型号和电脑系统匹配的驱动,不同平台的模组所需要的驱动程序不一致,需要根据模组型号去下载对应的驱动包 - 模组型号可以通过模组上的镭雕获取,也可以通过AT指令获取,镭雕如下图所示,镭雕上型号为EG912U @@ -16,11 +16,11 @@ | 模组型号 | 操作系统 | 驱动名称 | | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | -| [BG95-M3](https://python.quectel.com/en/products/bg95m3)      [BG95-M8](https://python.quectel.com/en/products/bg95m8)      |     Win10     |         [**QuecPython_USB_Driver_Win10_BG**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverQ_NDIS_V2.7.9.zip) | -| [EC800E-CN](https://python.quectel.com/products/ec800e-cn)     [EC600E-CN](https://python.quectel.com/products/ec600e-cn)      |     Win10     |         [**QuecPython_USB_Driver_Win10_E**](https://images.quectel.com/python/2023/05/Quectel_Windows_USB_DriverY_V1.0.2.zip) | -| [EC200N-CN](https://python.quectel.com/products/ec200n-cn)     [EC800M-CN](https://python.quectel.com/products/ec800m-cn)     [EC600N-CN](https://python.quectel.com/products/ec600n-cn)     [EC600M-CN](https://python.quectel.com/products/ec600m-cn)     [EC200A-CN](https://python.quectel.com/products/ec200a-cn) |     Win10     |         [**QuecPython_USB_Driver_Win10_ASR**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) | -| [EC600U-CN](https://python.quectel.com/products/ec600u-cn)     [EC600G-CN](https://python.quectel.com/products/ec600g-cn)     [EC800G-CN](https://python.quectel.com/products/ec800g-cn) |     Win10     |         [**QuecPython_USB_Driver_Win10_U_G**](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverU_V1.0.19.zip) | -| [FCM360W](https://python.quectel.com/products/fcm360w)      |     Win10     |         [**CH343SER**](https://images.quectel.com/python/2023/11/CH343SER_V1.8.zip) | +| [BG95-M3](https://python.quectel.com/modules-cat/bg95-series)      [BG95-M8](https://python.quectel.com/modules-cat/bg95-series)      |     Win10     |         [**QuecPython_USB_Driver_Win10_BG**](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverQ_NDIS_V2.7.14.zip) | +| [EC800E-CN](https://python.quectel.com/modules-cat/ec800e-series)     [EC600E-CN](https://python.quectel.com/modules-cat/ec600e-series)      |     Win10     |         [**QuecPython_USB_Driver_Win10_E**](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverY_V1.0.2.zip) | +| [EC200N-CN](https://python.quectel.com/modules-cat/ec200n-series)     [EC800M-CN](https://python.quectel.com/modules-cat/ec800m-series)     [EC600N-CN](https://python.quectel.com/modules-cat/ec600n-series)     [EC600M-CN](https://python.quectel.com/modules-cat/ec600m-series)     [EC200A-CN](https://python.quectel.com/modules-cat/ec200a-series) |     Win10     |         [**QuecPython_USB_Driver_Win10_ASR**](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip) | +| [EC600U-CN](https://python.quectel.com/modules-cat/ec600u-series)     [EC600G-CN](https://python.quectel.com/modules-cat/ec600g-series)     [EC800G-CN](https://python.quectel.com/modules-cat/ec800g-series) |     Win10     |         [**QuecPython_USB_Driver_Win10_U_G**](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_Windows_USB_DriverU_V1.0.19.zip) | +| [FCM360W](https://python.quectel.com/modules-cat/fcm360w-series)      |     Win10     |         [**CH343SER**](https://python.quectel.com/wp-content/uploads/2024/09/CH343SER_V1.8.zip) | - **Step2:驱动安装** diff --git a/docs/Getting_started/zh/evb/bg-eg-core-evb.md b/docs/Getting_started/zh/evb/bg-eg-core-evb.md index b5816df6dc46338641a7feed5ab5c1b88375013c..be5b030c39e9286d02d7476a93498f03494730e7 100644 --- a/docs/Getting_started/zh/evb/bg-eg-core-evb.md +++ b/docs/Getting_started/zh/evb/bg-eg-core-evb.md @@ -4,12 +4,12 @@ 支持的模组列表 -- [BG95-M1](https://python.quectel.com/products/bg95) -- [BG95-M3](https://python.quectel.com/products/bg95m3) -- [BG95-M8](https://python.quectel.com/products/bg95m8) -- [EG915U-LA](https://python.quectel.com/products/eg915u-la) -- [EG915U-EU](https://python.quectel.com/products/eg915u-eu) -- [EG912U-GL](https://python.quectel.com/products/eg912u-gl) +- [BG95-M1](https://python.quectel.com/modules-cat/bg95-series) +- [BG95-M3](https://python.quectel.com/modules-cat/bg95-series) +- [BG95-M8](https://python.quectel.com/modules-cat/bg95-series) +- [EG915U-LA](https://python.quectel.com/modules-cat/eg915u-series) +- [EG915U-EU](https://python.quectel.com/modules-cat/eg915u-series) +- [EG912U-GL](https://python.quectel.com/modules-cat/eg912u-series) ## 功能列表 @@ -33,9 +33,9 @@ QuecPython BG&EG 系列核心板(PH-7(C4-P02))是专门针对 QuecPython 制造 ## **资料下载** -- [QuecPython PH-7(C4-P02)核心板产品规格及用户指导](https://images.quectel.com/python/2024/11/PH-7C4-P02核心板产品规格及用户指导.pdf) -- [QuecPython PH-7(C4-P02)核心板原理图](https://images.quectel.com/python/2024/11/PH-7C4-P02核心板原理图.pdf) -- [QuecPython PH-7(C4-P02)核心板丝印](https://images.quectel.com/python/2024/11/PH-7C4-P02核心板丝印.pdf) +- [QuecPython PH-7(C4-P02)核心板产品规格及用户指导](https://python.quectel.com/wp-content/uploads/2024/11/PH-7C4-P02_核心板规格说明及使用指导手册V1.0.0.pdf) +- [QuecPython PH-7(C4-P02)核心板原理图](https://python.quectel.com/wp-content/uploads/2024/11/PH-7C4-P02_原理图.pdf) +- [QuecPython PH-7(C4-P02)核心板丝印](https://python.quectel.com/wp-content/uploads/2024/11/PH-7C4-P02_丝印图.pdf) ## 开发板资源 @@ -57,6 +57,6 @@ QuecPython BG&EG 系列核心板(PH-7(C4-P02))是专门针对 QuecPython 制造 **Step3: 使用 repl 交互命令行进行代码调试** -> 选择带有 **REPL** 字样的端口并打开,然后即可看到 **>>>** 命令提示符,在该符号后面可以键入 python 代码并进行调试。 +> 选择带有 **REPL** 字样的端口并打开,然后即可看到 **>>>** 命令提示符,在该符号后面可以键入 python 代码并进行调试。 ![](../media/evb/bg-eg-core-evb/hello_world.png) \ No newline at end of file diff --git a/docs/Getting_started/zh/evb/bg95-evb.md b/docs/Getting_started/zh/evb/bg95-evb.md index b5422c2c58cbb387fb40c873a3f91b8548bf8885..a01974cb0171dde8e4163ff7c1c8d44b268655d3 100644 --- a/docs/Getting_started/zh/evb/bg95-evb.md +++ b/docs/Getting_started/zh/evb/bg95-evb.md @@ -2,9 +2,9 @@ ## 支持的模组列表 -- [BG95-M1](https://python.quectel.com/products/bg95) -- [BG95-M3](https://python.quectel.com/products/bg95m3) -- [BG95-M8](https://python.quectel.com/products/bg95m8) +- [BG95-M1](https://python.quectel.com/modules-cat/bg95-series) +- [BG95-M3](https://python.quectel.com/modules-cat/bg95-series) +- [BG95-M8](https://python.quectel.com/modules-cat/bg95-series) ## 功能列表 @@ -25,8 +25,8 @@ QuecPython_BG95_EVB 开发板是一款专门针对QuecPython设计的、小巧 ## 资料下载 -- [QuecPython_BG95_Zero开发板规格说明及使用指导手册](https://images.quectel.com/python/2023/08/QuecPython_BG95_Zero%E5%BC%80%E5%8F%91%E6%9D%BF%E8%A7%84%E6%A0%BC%E8%AF%B4%E6%98%8E%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC%E6%89%8B%E5%86%8C_1.2.pdf) -- [BG95_Board_原理图](https://images.quectel.com/python/2023/12/BG95_Board_Sch_0829.pdf) +- [QuecPython_BG95_Zero开发板规格说明及使用指导手册](https://python.quectel.com/wp-content/uploads/2024/09/BG95-Pi-Zero系列开发板产品规格及用户指导.pdf) +- [BG95_Board_原理图](https://python.quectel.com/wp-content/uploads/2024/09/BG95-Pi-Zero系列开发板原理图.pdf) ## 开发板资源 @@ -82,7 +82,7 @@ QuecPython_BG95_EVB 开发板是一款专门针对QuecPython设计的、小巧 ![img](../media/evb/bg95/BG95_EVB.png) > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/ec200x-evb.md b/docs/Getting_started/zh/evb/ec200x-evb.md index 76f7a45ec032b7758a95bb3358e384846a48770d..f61e82b3bd167a8fe1f6302ece8d3004d9e193e2 100644 --- a/docs/Getting_started/zh/evb/ec200x-evb.md +++ b/docs/Getting_started/zh/evb/ec200x-evb.md @@ -1,12 +1,12 @@ -# EC200U/A C4-P01 +# EC200U/A C4-P01 ## 支持的模块列表 -- [EC200U-CN](https://python.quectel.com/products/ec200u-cn) -- [EC200U-EU](https://python.quectel.com/en/products/ec200u-eu) -- [EC200A-CN](https://python.quectel.com/products/ec200a-cn) -- [EC200A-AU](https://python.quectel.com/en/products/ec200a-au) -- [EC200A-EU](https://python.quectel.com/products/ec200a-eu) +- [EC200U-CN](https://python.quectel.com/modules-cat/ec200u-series) +- [EC200U-EU](https://python.quectel.com/modules-cat/ec200u-series) +- [EC200A-CN](https://python.quectel.com/modules-cat/ec200a-series) +- [EC200A-AU](https://python.quectel.com/modules-cat/ec200a-series) +- [EC200A-EU](https://python.quectel.com/modules-cat/ec200a-series) ## 功能列表 @@ -33,7 +33,7 @@ QuecPython_EC200U/A C4-P01开发板是一款专门针对QuecPython设计的、 ### 资料下载 -- [QuecPython_EC20X_EVB](https://images.quectel.com/python/2023/05/QuecPython_EC20X_EVB_V2.0.zip) +- [QuecPython_EC20X_EVB](https://python.quectel.com/wp-content/uploads/2024/09/QuecPython_EC20X_EVB_V2.0.zip) ## 开发板资源 @@ -123,7 +123,7 @@ QuecPython_EC200U/A C4-P01开发板是一款专门针对QuecPython设计的、 > > 图中以A/U开头的引脚复用功能为EC200A/U系列模块的功能差异项,即模块为EC200U时,U开头的引脚功能才会生效;模块为EC200A时,A开头的引脚功能才会生效。 > -> 开发板的更多资料,请访问 。 +> 开发板的更多资料,请访问 。 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/ec2x-evb.md b/docs/Getting_started/zh/evb/ec2x-evb.md index c74d325e8a5f94e33b374ba27bf16184d68f32cb..ba23077934d6faf088ee3e6f111b3ddab0fdc974 100644 --- a/docs/Getting_started/zh/evb/ec2x-evb.md +++ b/docs/Getting_started/zh/evb/ec2x-evb.md @@ -4,10 +4,10 @@ ## 支持的模组列表 -- [EC200A-CN](https://python.quectel.com/products/ec200a-cn) -- [EC200U-CN](https://python.quectel.com/products/ec200u-cn) -- [EC200A-EU](https://python.quectel.com/en/products/ec200a-eu) -- [EC200A-AU](https://python.quectel.com/en/products/ec200a-au) +- [EC200A-CN](https://python.quectel.com/modules-cat/ec200a-series) +- [EC200U-CN](https://python.quectel.com/modules-cat/ec200u-series) +- [EC200A-EU](https://python.quectel.com/modules-cat/ec200a-series) +- [EC200A-AU](https://python.quectel.com/modules-cat/ec200a-series) ## 功能列表 @@ -17,7 +17,7 @@ QuecPython_EC2X_EVB_Vx.x 开发板是专门针对QuecPython制造,是一款小 开发板搭载Type-C接口,开发者仅需一条USB Type-C 数据线即可轻松玩转开发板。 -开发板搭载EC200U模组,详细资料参考 [EC200U-EU](https://python.quectel.com/en/products/ec200u-eu) +开发板搭载EC200U模组,详细资料参考 [EC200U-EU](https://python.quectel.com/modules-cat/ec200u-series) ### 功能说明 @@ -27,7 +27,7 @@ QuecPython_EC2X_EVB_Vx.x 开发板是专门针对QuecPython制造,是一款小 ## 资料下载 -- [EC2X_EVB_SCH2](https://images.quectel.com/python/2023/05/EC2X_EVB_SCH2.pdf) +- [EC2X_EVB_SCH2](https://python.quectel.com/wp-content/uploads/2024/09/EC2X_EVB_SCH2-2.pdf) ## 开发板资源 @@ -94,7 +94,7 @@ QuecPython_EC2X_EVB_Vx.x 开发板是专门针对QuecPython制造,是一款小 ![](../media/evb/ec2x-evb/EC2X_EVB.png) > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/ec600u-235.md b/docs/Getting_started/zh/evb/ec600u-235.md index c155d116bcf85ed5092e0992ff53e7b82430b26d..5eac0cc80edb9dd7abea3bd1bb983fddd94699b6 100644 --- a/docs/Getting_started/zh/evb/ec600u-235.md +++ b/docs/Getting_started/zh/evb/ec600u-235.md @@ -2,7 +2,7 @@ ## 支持的模组列表 -- [EC600U-CN](https://python.quectel.com/products/ec600u-cn) +- [EC600U-CN](https://python.quectel.com/modules-cat/ec600u-series) ## 功能列表 @@ -31,9 +31,9 @@ QuecPython 铀-235 大屏开发板,集成了现有模组几乎所有功能 , ## 资料下载 -- [EC600U_U-235_EVB_SCH](https://images.quectel.com/python/2023/05/600U_%E9%93%80235-SCH.pdf) -- [EC600U_U-235_EVB_丝印](https://images.quectel.com/python/2023/05/600U_%E9%93%80235_%E4%B8%9D%E5%8D%B0.pdf) -- [Quectel_QuecPython_铀235_EVB_用户指导](https://images.quectel.com/python/2023/08/Quectel_QuecPython_%E9%93%80235_EVB_%E7%94%A8%E6%88%B7%E6%8C%87%E5%AF%BC_V1.0.pdf) +- [EC600U_U-235_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/600U_铀235-SCH.pdf) +- [EC600U_U-235_EVB_丝印](https://python.quectel.com/wp-content/uploads/2024/09/600U_铀235_丝印.pdf) +- [Quectel_QuecPython_铀235_EVB_用户指导](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_QuecPython_铀235_EVB_用户指导_V1.0.pdf) ## 开发板资源 @@ -76,7 +76,7 @@ QuecPython 铀-235 大屏开发板,集成了现有模组几乎所有功能 , > 开发板同时开放 MIPI 接口和触摸屏接口以提高复用性。 > -> 开发板的更多资料,请访问 [https://python.quectel.com/download](https://python.quectel.com/download) +> 开发板的更多资料,请访问 [https://python.quectel.com/resource-download](https://python.quectel.com/resource-download?cid=23) ## 上手准备 diff --git a/docs/Getting_started/zh/evb/ec600x-ec800x-core-evb.md b/docs/Getting_started/zh/evb/ec600x-ec800x-core-evb.md index 2edf0951a999edd6890792ed2546676457bab1dc..f257d3823c5ac11f0094ce9c9fb1b5be7a1addf2 100644 --- a/docs/Getting_started/zh/evb/ec600x-ec800x-core-evb.md +++ b/docs/Getting_started/zh/evb/ec600x-ec800x-core-evb.md @@ -4,13 +4,13 @@ 支持的模组列表 -- [EC600N-CNLA](https://python.quectel.com/products/ec600n-cn) -- [EC600M-CNLA](https://python.quectel.com/products/ec600m-cn) -- [EC800M-CNGA](https://python.quectel.com/products/ec800m-cn) -- [EC800M-CNGC](https://python.quectel.com/products/ec800m-cn) -- [EC800M-CNLC](https://python.quectel.com/products/ec800m-cn) -- [EC800M-CNLF](https://python.quectel.com/products/ec800m-cn) -- [EC800E-CNLE](https://python.quectel.com/products/ec800e-cn) +- [EC600N-CNLA](https://python.quectel.com/modules-cat/ec600n-series) +- [EC600M-CNLA](https://python.quectel.com/modules-cat/ec600m-series) +- [EC800M-CNGA](https://python.quectel.com/modules-cat/ec800m-series) +- [EC800M-CNGC](https://python.quectel.com/modules-cat/ec800m-series) +- [EC800M-CNLC](https://python.quectel.com/modules-cat/ec800m-series) +- [EC800M-CNLF](https://python.quectel.com/modules-cat/ec800m-series) +- [EC800E-CNLE](https://python.quectel.com/modules-cat/ec800e-series) ## 功能列表 @@ -26,11 +26,11 @@ QuecPython_EC600X/EC800X 核心板是专门针对 QuecPython 制造的、最小 ## **资料下载** -- [EC600N核心板“锵”规格说明及使用指导手册](https://images.quectel.com/python/2023/05/EC600N%E6%A0%B8%E5%BF%83%E6%9D%BF%E9%94%B5%E8%A7%84%E6%A0%BC%E8%AF%B4%E6%98%8E%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC%E6%89%8B%E5%86%8C_V1.4.pdf) -- [EC600N核心板“軒”规格书以及操作说明](https://images.quectel.com/python/2023/05/EC600N%E6%A0%B8%E5%BF%83%E6%9D%BF%E8%BB%92%E8%A7%84%E6%A0%BC%E4%B9%A6%E4%BB%A5%E5%8F%8A%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8EV1.2.pdf) -- [EC800M双排针核心板_“熵”(GNSS)规格说明及使用指导手册](https://images.quectel.com/python/2023/05/EC800M%E5%8F%8C%E6%8E%92%E9%92%88%E6%A0%B8%E5%BF%83%E6%9D%BF_%E7%86%B5GNSS%E8%A7%84%E6%A0%BC%E8%AF%B4%E6%98%8E%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC%E6%89%8B%E5%86%8C_V1.41.pdf) -- [EC800X核心板“宇”规格书以及操作说明](https://images.quectel.com/python/2023/05/EC800X%E6%A0%B8%E5%BF%83%E6%9D%BF%E5%AE%87%E8%A7%84%E6%A0%BC%E4%B9%A6%E4%BB%A5%E5%8F%8A%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8EV1.2.pdf) -- [EC600X_EVB_SCH](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-SCH.pdf) +- [EC600N核心板“锵”规格说明及使用指导手册](https://python.quectel.com/wp-content/uploads/2024/09/EC600N核心板锵规格说明及使用指导手册_V1.4.pdf) +- [EC600N核心板“軒”规格书以及操作说明](https://python.quectel.com/wp-content/uploads/2024/09/EC600N核心板軒规格书以及操作说明V1.2.pdf) +- [EC800M双排针核心板_“熵”(GNSS)规格说明及使用指导手册](https://python.quectel.com/wp-content/uploads/2024/09/EC800M双排针核心板_熵GNSS规格说明及使用指导手册_V1.41.pdf) +- [EC800X核心板“宇”规格书以及操作说明](https://python.quectel.com/wp-content/uploads/2024/09/EC800X核心板宇规格书以及操作说明V1.2.pdf) +- [EC600X_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/EC600X_EVB_V3.2-SCH.pdf) ## 开发板资源 diff --git a/docs/Getting_started/zh/evb/ec600x-evb.md b/docs/Getting_started/zh/evb/ec600x-evb.md index 16a892cd1598d839cb5df00d89d886caba205e03..c83186d123979269f6fc3e1b8bbcfbcbb173f10c 100644 --- a/docs/Getting_started/zh/evb/ec600x-evb.md +++ b/docs/Getting_started/zh/evb/ec600x-evb.md @@ -4,11 +4,11 @@ 支持的模组列表 -- [EC600N-CN](https://python.quectel.com/products/ec600n-cn) +- [EC600N-CN](https://python.quectel.com/modules-cat/ec600n-series) -- [EC600U-CN](https://python.quectel.com/products/ec600u-cn) +- [EC600U-CN](https://python.quectel.com/modules-cat/ec600u-series) -- [EC600M-CN](https://python.quectel.com/products/ec600m-cn) +- [EC600M-CN](https://python.quectel.com/modules-cat/ec600m-series) ## 功能列表 @@ -26,7 +26,7 @@ QuecPython_EC600X_EVB 开发板是专门针对 QuecPython 制造的、小巧便 ## 资料下载 -- [EC600X_EVB_SCH](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-SCH.pdf) +- [EC600X_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/EC600X_EVB_V3.2-SCH.pdf) ## 开发板资源 @@ -85,7 +85,7 @@ QuecPython_EC600X_EVB 开发板是专门针对 QuecPython 制造的、小巧便 ![](../media/evb/ec600x-evb/600Uperipheral.png) > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/ec800x-dp-dtu-q600r.md b/docs/Getting_started/zh/evb/ec800x-dp-dtu-q600r.md index 9bc9ec6405a23dcfbc9e7896eda543fd016e2447..79c2f709139bff8d46b26c3e041da60020e49641 100644 --- a/docs/Getting_started/zh/evb/ec800x-dp-dtu-q600r.md +++ b/docs/Getting_started/zh/evb/ec800x-dp-dtu-q600r.md @@ -4,8 +4,8 @@ 支持的模组列表 -- [EC800K-CN](https://python.quectel.com/products/ec800k-cn) -- [EC800M-CN](https://python.quectel.com/products/ec800m-cn) +- [EC800K-CN](https://python.quectel.com/modules-cat/ec800k-series) +- [EC800M-CN](https://python.quectel.com/modules-cat/ec800m-series) ## 功能列表 @@ -28,11 +28,11 @@ EC800X_DP-DTU-Q600R 系列开发板是一款使用 LTE CAT1 网络的 DTU 开发 ## 资料下载 -[DP-DTU-Q600R 系列开发板产品规格及用户指导](https://images.quectel.com/python/2024/12/EC800X_DP-DTU-Q600R系列开发板产品规格及用户指导.pdf) +[DP-DTU-Q600R 系列开发板产品规格及用户指导](https://python.quectel.com/wp-content/uploads/2024/11/EC800X_DP-DTU-Q600R系列开发板产品规格及用户指导.pdf) -[DP-DTU-Q600R 系列开发板原理图](https://images.quectel.com/python/2024/12/EC800X_DP-DTU-Q600R系列开发板原理图.pdf) +[DP-DTU-Q600R 系列开发板原理图](https://python.quectel.com/wp-content/uploads/2024/11/EC800X_DP-DTU-Q600R系列开发板原理图.pdf) -[DP-DTU-Q600R 系列开发板丝印](https://images.quectel.com/python/2024/12/EC800X_DP-DTU-Q600R系列开发板丝印.pdf) +[DP-DTU-Q600R 系列开发板丝印](https://python.quectel.com/wp-content/uploads/2024/11/EC800X_DP-DTU-Q600R系列开发板丝印.pdf) ## 开发板资源 diff --git a/docs/Getting_started/zh/evb/ec800x-evb.md b/docs/Getting_started/zh/evb/ec800x-evb.md index 68f317383253769ff59f07ececd272b0f3209d53..263d047dee39fcb475481f18418c00a1c8b0ff1f 100644 --- a/docs/Getting_started/zh/evb/ec800x-evb.md +++ b/docs/Getting_started/zh/evb/ec800x-evb.md @@ -2,9 +2,9 @@ ## 支持的模组列表 -- [EC800N-CN](https://python.quectel.com/products/ec800n-cn) -- [EC800M-CN](https://python.quectel.com/products/ec800m-cn) -- [EC800G-CN](https://python.quectel.com/products/ec800g-cn) +- [EC800N-CN](https://python.quectel.com/modules-cat/ec800n-series) +- [EC800M-CN](https://python.quectel.com/modules-cat/ec800m-series) +- [EC800G-CN](https://python.quectel.com/modules-cat/ec800g-series) ## 功能列表 @@ -20,7 +20,7 @@ EC800X_QuecPython_EVB 开发板是专门针对 QuecPython 制造的、小巧便 ## 资料下载 -- [EC800X_EVB_SCH](https://images.quectel.com/python/2023/05/EC800X_EVB_V1.1-SCH.pdf) +- [EC800X_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/EC800X_EVB_V1.1-SCH.pdf) ## 开发板资源 @@ -92,7 +92,7 @@ EC800X_QuecPython_EVB 开发板是专门针对 QuecPython 制造的、小巧便 ![](../media/evb/ec800x-evb/800M外设.png) > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/eg91x-evb.md b/docs/Getting_started/zh/evb/eg91x-evb.md index d19abab9b985120b373e92b7660970f94bbb3452..ae00472597e105348d0da6bc3a54ad92c1b16a07 100644 --- a/docs/Getting_started/zh/evb/eg91x-evb.md +++ b/docs/Getting_started/zh/evb/eg91x-evb.md @@ -2,7 +2,7 @@ ## 支持的模块列表 -- [EG915U-LA](https://python.quectel.com/products/eg915u-la) +- [EG915U-LA](https://python.quectel.com/modules-cat/eg915u-series) ## 功能列表 @@ -35,7 +35,7 @@ QuecPython_EG91X系列C1-P02开发板是一款专门针对QuecPython设计的、 ![img](../media/evb/eg91x-evb/EG91X_EVB.png) > **小提示** -> 开发板的更多资料,请访问 。 +> 开发板的更多资料,请访问 。 ### 开发板配置 @@ -142,7 +142,7 @@ QuecPython_EG91X系列C1-P02开发板是一款专门针对QuecPython设计的、 ## 资料下载 -- [QuecPython_EG915_C1_P02_EVB_SCH](https://images.quectel.com/python/2023/12/QuecPython_EG915_C1_P02_EVB_SCH_V1.2.pdf) +- [QuecPython_EG915_C1_P02_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/QuecPython_EG915_C1_P02_EVB_SCH_V1.2.pdf) -- [QuecPython_EG915_C1_P02_EVB_丝印](https://images.quectel.com/python/sites/2/2024/01/EG91X_Board_SILK_SCREEN.pdf) +- [QuecPython_EG915_C1_P02_EVB_丝印](https://python.quectel.com/wp-content/uploads/2024/09/EG91X_C1-P02系列开发板丝印.pdf) diff --git a/docs/Getting_started/zh/evb/fcm360w-evb.md b/docs/Getting_started/zh/evb/fcm360w-evb.md index 62469a40550c056a9de05231801124a2a586266b..aa0fdffbb52535333e119c5ea30f2faa3eaa7f2b 100644 --- a/docs/Getting_started/zh/evb/fcm360w-evb.md +++ b/docs/Getting_started/zh/evb/fcm360w-evb.md @@ -2,7 +2,7 @@ ## 支持的模组列表 -- [FCM360W](https://python.quectel.com/en/products/fcm360w) +- [FCM360W](https://python.quectel.com/modules-cat/fcm360w-series) ## 功能列表 @@ -19,7 +19,7 @@ QuecPython_FCM360W_EVB 开发板是一款专门针对QuecPython设计的、小 ## 资料下载 -- [FCM360X_EVB_SCH](https://images.quectel.com/python/2023/12/FCM360X-EVB-V1.0-SCH.pdf) +- [FCM360X_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/FCM360X-EVB-V1.0-SCH.pdf) ## 开发板资源 @@ -65,7 +65,7 @@ QuecPython_FCM360W_EVB 开发板是一款专门针对QuecPython设计的、小 ![img](../media/evb/fcm360w-evb/pin-layout.png) > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 diff --git a/docs/Getting_started/zh/evb/fcm360w-teb.md b/docs/Getting_started/zh/evb/fcm360w-teb.md index db13130cf3d4fb2687980ba240f8e3da6b5b9f47..60958b5efef18f41a37862be0c7043a0b6316530 100644 --- a/docs/Getting_started/zh/evb/fcm360w-teb.md +++ b/docs/Getting_started/zh/evb/fcm360w-teb.md @@ -2,7 +2,7 @@ ## 支持的模组列表 -- [FCM360W](https://python.quectel.com/en/products/fcm360w) +- [FCM360W](https://python.quectel.com/modules-cat/fcm360w-series) ## 功能列表 @@ -21,8 +21,8 @@ QuecPython_FCM360W_TE-B 开发板是一款Quectel推出的Wi-Fi 和蓝牙开发 ## 资料下载 -- [FCM360X_EVB_SCH](https://images.quectel.com/python/2023/12/FCM360X-EVB-V1.0-SCH.pdf) -- [Quectel_FCM360W_硬件设计手册](https://images.quectel.com/python/2023/10/Quectel_FCM360W_%E7%A1%AC%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%89%8B%E5%86%8C_V1.0.pdf) +- [FCM360X_EVB_SCH](https://python.quectel.com/wp-content/uploads/2024/09/FCM360X-EVB-V1.0-SCH.pdf) +- [Quectel_FCM360W_硬件设计手册](https://python.quectel.com/wp-content/uploads/2024/09/Quectel_FCM360W_硬件设计手册_V1.0.pdf) ## 开发板资源 @@ -58,7 +58,7 @@ QuecPython_FCM360W_TE-B 开发板是一款Quectel推出的Wi-Fi 和蓝牙开发 > **小提示** -> 开发板的更多资料,请访问 +> 开发板的更多资料,请访问 ### 开发板配置 @@ -83,7 +83,7 @@ QuecPython_FCM360W_TE-B 开发板是一款Quectel推出的Wi-Fi 和蓝牙开发 完成上面烧录固件步骤后,将数据线连接从UART0口切换到UART2口,使用串口工具连接该串口, -串口工具使用[QCOM](https://images.quectel.com/python/2022/12/QCOM_V1.6.zip) ,需要先将工具的RTS勾选框勾选上,然后打开串口 +串口工具使用[QCOM](https://python.quectel.com/wp-content/uploads/2024/09/QCOM_V1.6.zip) ,需要先将工具的RTS勾选框勾选上,然后打开串口 - **Step3:开发板交互** diff --git a/docs/Getting_started/zh/flash_firmware.md b/docs/Getting_started/zh/flash_firmware.md index 0e51bb275270957b22a6ddd03874140e1375c627..fbc0137fa8218966c942b91b10cd1455c84038c6 100644 --- a/docs/Getting_started/zh/flash_firmware.md +++ b/docs/Getting_started/zh/flash_firmware.md @@ -4,7 +4,7 @@ 模组在出厂时通常烧录有标准 AT 固件或 QuecOpen 固件,如需基于 QuecPython 对模块进行开发,需要手动为其重新烧录专门的 QuecPython 固件。 -官网固件下载地址:**** +官网固件下载地址:**** ![](media/readme/Firmware.png) diff --git a/docs/Getting_started/zh/tools_prepare.md b/docs/Getting_started/zh/tools_prepare.md index 6c62dd83d1bae8b4a17d491c8321fa5169d4806c..c7aa3234af68e1f893de381bd181beeaf8f35219 100644 --- a/docs/Getting_started/zh/tools_prepare.md +++ b/docs/Getting_started/zh/tools_prepare.md @@ -4,7 +4,7 @@ 使用QuecPython进行开发需要用到专用的开发调试工具——**QPYcom**,包括但不限于调试代码、分析日志、文件传输、烧录固件、合并固件等。 -[QPYcom](https://images.quectel.com/python/2022/12/QPYcom_V3.5.zip) : 适用于QuecPython开发的一站式调试工具 +[QPYcom](https://python.quectel.com/wp-content/uploads/2024/09/QPYcom_V3.6.0.zip) : 适用于QuecPython开发的一站式调试工具 *注意:该工具无需安装,解压即用。* diff --git a/docs/Getting_started/zh/wifi-dev.md b/docs/Getting_started/zh/wifi-dev.md index 8337a35486cf23489904dc2fb0df0032e348082f..995222829b7e705c01fc5564bc2bbf1aa7795e8d 100644 --- a/docs/Getting_started/zh/wifi-dev.md +++ b/docs/Getting_started/zh/wifi-dev.md @@ -70,7 +70,7 @@ CH342 芯片可将一路 USB 转 2 路串口。驱动安装完毕后,我们从 QPYcom 是专为 QuecPython 打造的集成开发环境,包含 Python 命令交互、文件传输、固件烧录、脚本执行等功能。 -访问 QuecPython 官网的[下载页面](https://python.quectel.com/download),在 `Tools` 标签页查找 QPYcom 即可下载,解压后双击 `QPYcom.exe` 即可直接打开使用。 +访问 QuecPython 官网的[下载页面](https://python.quectel.com/resource-download?cid=8),在 `开发工具` 标签页查找 QPYcom 即可下载,解压后双击 `QPYcom.exe` 即可直接打开使用。 ![QPYcom_download.png](media/wifi-dev/QPYcom_download.png) @@ -80,7 +80,7 @@ QPYcom 是专为 QuecPython 打造的集成开发环境,包含 Python 命令 必须烧录内置了 QuecPython 运行时环境的 FCM360W 固件包,才能执行 QuecPython 脚本。 -访问 QuecPython 官网,进入 [FCM360W 模块的详情页](https://python.quectel.com/products/fcm360w)的 `Download` 标签页,找到名为 `QPY_OCPU_FCM360W_FW` 的下载项,点击右侧的下载按钮,即可下载固件包。 +访问 QuecPython 官网,进入 [FCM360W 模块的详情页](https://python.quectel.com/modules-cat/fcm360w-series)的 `Download` 标签页,找到名为 `QPY_OCPU_FCM360W_FW` 的下载项,点击右侧的下载按钮,即可下载固件包。 ![FCM360W_FW_Download.png](media/wifi-dev/FCM360W_FW_Download.png) @@ -326,7 +326,7 @@ def tcp_echo_client(server_addr, server_port): while True: # 等待队列中的消息 event = msg_q.get() - + if event['id'] == 3302: # 成功连接到热点 print("- Connected to AP.") elif event['id'] == 3305: # 当获取到 IP 地址时,打印 IP 地址相关信息,并启动 TCP 客户端 @@ -475,7 +475,7 @@ def tcp_echo_server(server_addr, server_port): while True: # 等待队列中的消息 event = msg_q.get() - + if event['id'] == 3201: # 热点创建成功 print("- AP is created successfully.") print("- Start TCP server.") @@ -609,10 +609,10 @@ def tcp_echo_server(server_addr, server_port): > 如果你手上有两个 FCM360W Wi-Fi 模块,则可以按照下面的步骤进行测试,而不依赖电脑。 -> +> > 1. 先在其中一个模块中以 AP 模式运行 TCP 服务器。 > 2. 在前一个模块的 TCP 服务器启动完毕后,另一个模块作为 STATION,连接前一个模块产生的热点,并启动 TCP 客户端。 -> +> > STATION 模式下的 TCP 客户端代码有两点需要注意: > - 待连接的热点的 `SSID` 和 `PASSWD` 需要和前一个模块产生的热点保持一致,这一点很容易保证,提前约定好即可。 > - 待连接的服务器的 IP 地址和端口,需要和前一个模块启动的 TCP 服务器保持一致。