| .. zephyr:code-sample:: cellular-modem |
| :name: Cellular modem |
| |
| Use a cellular modem to communicate with a UDP server. |
| |
| Overview |
| ******** |
| |
| This sample consists of a simple application which powers on |
| the modem, brings up the net interface, then sends a packet |
| with pseudo random data to the endpoint test-endpoint.com, |
| which is a publicly hosted server which runs the Python |
| script found in the server folder. DNS is used to look |
| up the IP of test-endpoint.com. |
| |
| Notes |
| ***** |
| |
| This sample uses the devicetree alias ``modem`` to identify |
| the modem instance to use. The sample also presumes that |
| the modem driver creates the only PPP network interface. |
| |
| Setup |
| ***** |
| |
| Start by setting up the devicetree with the required |
| devicetree node: |
| |
| .. code-block:: devicetree |
| |
| /dts-v1/; |
| |
| / { |
| aliases { |
| modem = &modem; |
| }; |
| }; |
| |
| &usart2 { |
| pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3 &usart2_rts_pa1 &usart2_cts_pa0>; |
| pinctrl-names = "default"; |
| current-speed = <115200>; |
| hw-flow-control; |
| status = "okay"; |
| |
| modem: modem { |
| compatible = "quectel,bg9x"; |
| mdm-power-gpios = <&gpioe 2 GPIO_ACTIVE_HIGH>; |
| mdm-reset-gpios = <&gpioe 3 GPIO_ACTIVE_HIGH>; |
| status = "okay"; |
| }; |
| }; |
| |
| Next, the UART API must be specified using ``CONFIG_UART_INTERRUPT_DRIVEN=y`` or |
| ``CONFIG_UART_ASYNC_API=y``. The driver doesn't support UART polling. |
| |
| Lastly, the APN must be configured using ``CONFIG_MODEM_CELLULAR_APN=""``. |