.. _mikroe_wifi_bt_click:

MikroElektronika WIFI and BLE Shield
####################################

Overview
********

This shield contains an Espressif Systems ESP32 which is responsible
to offload the WIFI and Bluetooth tasks from the host processor. It uses
the standard MikroBus interface with UART pins plus its Espressif AT
command set. Alternatively, the Zephyr modem driver can be used,
configuring the module as a native WIFI networking interface.

.. image:: wifi_click.jpg
   :align: center
   :alt: MikroE WIFI BLE Click

Pins Assignment of the Shield
=============================

+-----------------------+---------------------------------------------+
| Shield Connector Pin  | Function                                    |
+=======================+=============================================+
| RST#                  | Reset pin, in most of the boards it should  |
|                       | be disconnected because its tied to GND     |
+-----------------------+---------------------------------------------+
| TX                    | UART TX communication pin                   |
+-----------------------+---------------------------------------------+
| RX                    | UART RX communication pin                   |
+-----------------------+---------------------------------------------+

Requirements
************

This shield requires a board which provides a configuration that allows an
UART interface. (see :ref:`shields` for more details).

.. note::
   Sometimes boards declare standard headers like Arduino R3 but don't
   define all connections.  Make sure that the board you are using includes
   all required definitions to avoid build errors.

This shield should be loaded with the `ESP32 AT Bin`_ software which is
available at Espressif Systems web site. This version is command
compatible with ESP32 AT Bin 2.0.0, after getting the binary from Espressif
site, connect the J1 of the board to a serial-to-USB converter of your
preference, or to one Espressif programming boards like ESP-Prog. Install
the `ESP-Tool`_, extract the folder, navigate inside the binaries location
and type the following command to flash the device:

.. code-block:: console

   esptool.py --chip auto \
   --before default_reset \
   --after hard_reset write_flash \
   --flash_mode dio \
   --flash_freq 40m \
   --flash_size detect \
   0x10000 ota_data_initial.bin \
   0x1000 bootloader/bootloader.bin \
   0x20000 at_customize.bin \
   0x21000 customized_partitions/ble_data.bin \
   0x24000 customized_partitions/server_cert.bin \
   0x26000 customized_partitions/server_key.bin \
   0x28000 customized_partitions/server_ca.bin \
   0x2a000 customized_partitions/client_cert.bin \
   0x2c000 customized_partitions/client_key.bin \
   0x2e000 customized_partitions/client_ca.bin \
   0x30000 customized_partitions/factory_param.bin \
   0xf000 phy_init_data.bin \
   0x100000 esp-at.bin \
   0x8000 partitions_at.bin

If necessary, you can indicate a specific port and the baud rate via
``--port <Selected PORT>`` and ``--baud 115200``.

Once flashed, it is possible to verify the module. While connected, open your preferred
terminal configured as 115200, 8, N, 1 and perform a board reset. You should see an
initial log and last message should be the version of the AT firmware flashed.

.. note::
   Boards that already have a network interface:  Check the network
   documentation to understand how to properly configure both interfaces.
   To keep things simple, make sure WiFi is the only interface enabled in
   Networking -> Link Layer Options.  This will avoid problems running
   Zephyr samples.

Build and Programming
*********************

Set ``-DSHIELD=<shield designation>`` when you invoke ``west build``.

See the example below for lpcxpresso55s69 board using Mikrobus serial:

.. zephyr-app-commands::
   :zephyr-app: samples/net/wifi
   :board: lpcxpresso55s69_cpu0
   :shield: mikroe_wifi_bt_click_mikrobus
   :goals: build flash

And this example for the b_u585i_iot02a development kit, using the Arduino connector for the UART pins:

.. zephyr-app-commands::
   :zephyr-app: samples/net/wifi
   :board: b_u585i_iot02a
   :shield: mikroe_wifi_bt_click_arduino
   :goals: build flash

References
**********

.. target-notes::

.. _ESP32 AT Bin:
   https://docs.espressif.com/projects/esp-at/en/latest/esp32/AT_Binary_Lists/ESP32_AT_binaries.html

.. _WIFI BT Click Shield website:
   https://www.mikroe.com/

.. _ESP-Tool:
   https://github.com/espressif/esptool
