RoadTest: PAN9520 Wi-Fi Module Evaluation Board
Author: embeddedguy
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: There are other ESP32-S2 series based development boards which can be compared.
What were the biggest problems encountered?: ESP-IDF is a very detailed API, the examples are quite long and changing the examples and using the IDF-components to create our own project might be time consuming. There was not a problem which could create hinderance in developing software with this board.
Detailed Review:
I would like to thank element14 and Randall for giving me the opportunity to test the Panasonic PAN9520 development kit with ESP32-S2 module and several other features.
Overview of the Panasonic PAN-9520 development Kit
In this document, I would like to first introduce you the development kit (with Photos/video etc) and provide you the necessary details for how to get started developing software mainly using ESP-IDF tools.
Esp-idf is the software development framework for ESP based devices(Both ESP8266 & ESP32,ESP-S2 etc..). It contains FreeRTOS kernel running at it's core with modification made by Espressif for it's Xtensa based devices.
For those who have already worked with ESP's in the past may already know that ESP32's normally comes with both BLE(Bluetooth Low Energy) and WiFi(802.11 a/b/n/x etc). The ESP32-S2 is the device with only Wifi. This is actually a advantage rather than it's limitations compared to other ESP32 devices. It provides rich features arround WiFi and different possible configurations.
The link to the ESP32-S2 page shows some of the features it has to provide. It has many Programmable GPIO possibility. It provides extra security features and camera connection possibility. It has solid WiFi features with extreme temprature which could be suitable for industrial applications. It provides rich set of peripherals with programmable I/Os which can be configured to provide USB OTG, SPI, I2C, DAC, ADC, LCD and camera interface.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/
https://www.espressif.com/en/products/socs/esp32-s2
Getting started with the development environment.
The Esp-idf contains the Toolchain, Build tools and API for creating application binaries for the ESP based boards. One can setup all the tools to get started from the link I have posted above. The first step is to decide which OS are you using. Then installing the prerequsite as mentioned. It is required to have enough space on your PC as there are significant number of downloads which is installed as a part of setup.
The below commands are for Linux Ubuntu to set-up the required toolchain and API. Open a command prompt and type the following command.
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
mkdir -p ~/esp cd ~/esp git clone --recursive https://github.com/espressif/esp-idf.git
cd ~/esp/esp-idf
./install.sh esp32
source export.sh
When you executing the last command you will be made sure that the installtion is ready and with the following.
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
idf.py build
The next part is to brouse through the documentation of the panasonic-PAN9520-kit. The following website has relavant documents and product brief of the kit. The ETU(Easy to use)
document explains the kit in detail. It explains in detail about the boards different connection options and GPIO's. Be careful to read the instruction on how to get started to
the first steps of connecting it to the development PC and upload the scatch.
https://na.industrial.panasonic.com/products/wireless-connectivity/evaluation-kits/lineup/pan9520-series-evaluation-kit
Getting Started Blinky example on the board.
Till now, I have tried arround three different examples available with esp-idf on the board. The first is simple program to blink an LED available on the board.
Connect a USB cable to the board and type the command appropriate to your dev. environment.
ls /dev/tty* or ls /dev/ttyUSB*
This will list the usb port the board is connected to. There could be more than one usb ports but while uploading but one
can use -p port option to use a perticular port for uploading code.
The steps to run the simple Blink application are as follows.
Navigate to the example folder /examples/getting_started/Blinky. The board must be set to esp32s2, the default GPIO must be changed to GPIO number 21(LED1 is connected on this GPIO).
idf.py set-target esp32s2
idf.py menuconfig
idf.py build
idf.py flash -p /dev/ttyUSB1 flash OR flash monitor
ESP Rainmaker
Esp-Rainmaker is a cloud based applications which provides API to control things like fans, Lightbulbs and switches from the cloud. It comes with an Android application
where user needs to just write an application code and keep the rest on the API. After the code has been writen and uploaded to the board the application will provision the device online and
perform few steps to setup the board and create a GUI application for the phone, which is based on written code in an application on ESP32.
Clone the Esp-rainmaker project from the following link.
https://github.com/espressif/esp-rainmaker
In the examples folder, there are some ready-made examples but you can create your own as well. In the folder, you would find examples for fan, light, switch, RGB-Led, etc.
In the gpio example, you could change the pin numbers according to the datasheet of the board and Turn ON/OFF Led from the app itself as shown in the following clip.
This is really interesting. Isn't it? That you can control GPIO via an application connecting over the internet which is perfect for some of the home automation and industrial automation tasks.
Before I conclude the road test, I would like to say that this board comes with rich features. It has many connectors on the board to connect the camera, LCD, GPIOs, USB, and various other interfaces for sensors and actuators.
This will help to make a prototype efficiently because one does not have to solder everything in a tiny place or buy connectors for interfaces separately etc.
The following clip shows a GPIO application running on the board with application
LCD Interface
In the last part, I have tried Adafruit 2.8" TFT touch display with the PAN9520 development kit. There are a few things one needs to set up in the ESP-IDF component as well in project menu settings.
First clone the following repository in your esp-idf folder. and navigate to that folder.
https://github.com/nopnop2002/esp-idf-ili9340
In the next step, it is required to set the proper pins for the SPI interface by going into the project setup from the menuconfig.
The following screenshot shows the right pin settings for this board's SPI interface. (I have referred to the datasheet of the board for this pin settings)
Note: This touchscreen display from Adafruit is designed to work with Arduino-Uno like dev. boards which has 6-pin ICSP connectors. The PAN-9520 kit does not have ICSP connectors so one needs to solder three pin type connection on the back side of the display. So one would have to cut the three solder pin connections on pin no 11,12 & 13 and solder three pins where ICSP is written. Once this is done the display will work with this board.
If using Arduino along with the adafruit display library one needs to also install FT6206 library from Adafruit. Again the library is meant to work with Arduino borads hence for touch interface it uses Arduino I2C hardware pins.
The library does not explicitly specify the pins for I2C. This was the issue in this case as the given examples did not work as expected. Hence, Pasting the following line before creating an object
Wire.begin(8,7);
Would solve the issue. I am not sure why this is needed explicitly as the pins are same for both arduino-uno based I2C and PAN9520 but it has worked only if specified above line.
The following is the example from the Examples -> Adafruit FT6206 Library-> TouchPaint.