image-20240915231842-1.png

Table of Contents:

1.  Introduction

1.1  What is LTS5 LoRa HMI touch screen

LTS5 is a LoRa / LoRaWAN HMI Touch Screen designed for display purpose of IoT project. It have a 5.0" HMI touch screen, and support WiFi, Bluetooch, LoRa wireless protocol. 

LTS5 is an Open Source software project. The MCU is ESP32 and Dragino LA66 LoRa module. There are lots of development source for ESP32 which can greatly reduce the development time. 

The HMI touch screen of LTS5 supports drap & drop design. Developer can use SquareLine to easily customize the display UI for different application.

LTS5 use LA66 LoRa module, this module can be program to support private LoRa protocol or LoRaWAN protocol.

1.2  Features

  • ESP32-WROOM MCU: 8MB RAM & 16MB ROM
  • Dragino LA66 LoRa Module
  • Support Private LoRa protocol or LoRaWAN protocol
  • Support WiFi & BLE wireless protocol
  • 5.0" HMI touch screen
  • Support LVGL case. SquareLine program.
  • Support RS485 Interface
  • Open Source Project
  • Wall Attachable.
  • 5V DC power
  • IP Rating: IP52

1.3  Specification

LoRa:

  • Frequency Range: 870 MHz ~ 960 MHz
  • TCXO crystal to ensure RF performance on low temperature
  • Maximum Power +22 dBm constant RF output
  • High sensitivity: -148 dBm
  • LoRa Tx Current: <90 mA at +17 dBm, 108 mA at +22 dBm
  • LoRa Rx current: <9 mA

WiFi:

  • 802.11b/g/n
  • Up to 150 Mbps data rate in 802.11n mode
  • Support A-MPDU and A-MSDU aggregation
  • zero point four μ S protection interval
  • Working channel center frequency range: 2412~2484 MHz

Bluetooth:

  • Bluetooth V4.2 BR/EDR and Bluetooth LE standard
  • Class-1, Class-2, and Class-3 transmitters.
  • AFH
  • CVSD and SBC

Display:

  • 5.0 Inch , 800 x 480
  • IPS Capacitive Touch SCreen
  • RGB color.
  • Display Area: 120.7*75.80 mm

1.4  Power Consumption

  • External 5V DC power adapter

1.5  Storage & Operation Temperature

  • Operation Temperature: -20 ~ 70°C  (No Dew)
  • Storage Temperature: -30 ~ 70°C  (No Dew)

1.6  Applications

  • Smart Buildings & Home Automation
  • Logistics and Supply Chain Management
  • Smart Metering
  • Smart Agriculture
  • Smart Cities
  • Smart Factory

2.  Getting Started with Hello World

2.1  About this demo

In this Getting Started Example, we will show how to design a simple Display UI and upload it to LTS5. This UI has  a button , when user click the button. The Web UI will jump to a new page.

2.2  Install Software Running Environment

The ESP MCU can be developed using ESP-IDF, Arduino, or MicroPython. For this project, we utilize ESP-IDF for compilation and Visual Studio Code (VSCode) for editing.

2.2.1 Install VSCode and ESP-IDF extension

Firstly, download and install VSCode for your computer's operating system from the official website: Download Visual Studio Code - Mac, Linux, Windows.

Next, you need to install the ESP-IDF extension within VSCode. The detailed operation steps are illustrated in image 1.

image-20240928110211-5.png

                                                                               image 1 ESP-IDF extension install

Links for reference: Install ESP32 ESP-IDF on Windows and Integrate with VS code (esp32tutorials.com)

2.2.2 Install SquareLine Studio

The version we are utilizing for this software is 1.4.2. You can download it from the official link: SquareLine Studio - Download the current version of SquareLine Studio.

Please note that this software necessitates the registration of a license prior to usage, and various licenses come with distinct limitations. For instance, the free version imposes restrictions such as a limit of 1 component, 150 widgets, and 10 screens. However, for first-time downloads, you are granted unrestricted access for a period of 30 days without the need for immediate registration.

2.3 Simple usage of SquareLine Studio and export UI code

After launching and logging in to this software, create a project as shown in the following image 2. The version of LVGL is 8.3.11.

image-20240928103357-2.png

                                                            image 2 create a SquareLine project

Next, we need to make some settings for this project. By clicking in the specified order on image 3, we can see the page as shown in image 4.

1727229582471-566.png

                                  image 3 project settings

image-20240928105309-4.png

                                              image 4 modify project settings

Now we can start to use this software. Here are some usage information for this software.

1. add widget

To add a widget, you should click a widget you want to add at the area entitled “Widgets”. In image , demonstrate a add process of label, button, and image 5.

image-20240928111412-6.png

                                                                                       image 5 add widgets

2. modify widget

The area for modifying widgets is called "Inspector". There are four parts in the "Inspector" tab. We use three of them more frequently, excluding "COMPONENT". The second part is aimed at adjusting the layout, size, position, alignment, flags, and states, etc. of widgets. The name of the second part indicates the type of widget it is representing, and in image 6, it is "BUTTON".

1727485118799-984.png

 image 6 the button widget's "Inspector" tab

Second part: "Layout" means a auto position-management for widgets contained in the parent widget. "Transform" includes size, position and align modification.

1727485251053-655.png

image 7 the button widget's "BUTTON" tab

Third part: It is an area of style setting.

Fourth part: It is an area for adding events. In image 8, it is adding a click event to a button. If the button is clicked after the click event is added as shown in image 8, the current screen will fade into another specified screen, and the switching process will last 500ms.

1727485480434-713.png

           image 8 add event for button

3. change label widget content

Modify the content in text as shown in image 9, the text content of label widget will be changed accordingly.

image-20240928090825-1.png

             image 9 modify text content of label widget

4. Add image into project

To use the image widget, you should first add an image to your project. The image format must be PNG, and its resolution should not exceed 800x480 pixels. There are two ways to add an image file. One way is to move your image into the folder "…/squareline project/assets/", as shown in image 10. The other way is to click the "ADD FILE INTO ASSETS" button, then select an image from your computer to import. After adding, you can see the image in the "assets" area in SquareLine Studio, as demonstrated in image 11.

image-20240928113424-9.png

               image 10 add image file into SquareLine Studio project

image-20240928114139-10.png

                                                            image 11 use image widget in SquareLine Studio

5. The relationship between widgets

There are two common relationships between widgets: one is parallel, the other is parent-child. The parallel relationship means that widgets' relative position is based on a collective object of reference. In parent-child relationship, the parts of the child object that are outside the boundaries of the parent object are not visible by default. Therefore, we need to adjust the position of the child object so that it falls within the range of the parent object, allowing it to be seen as illustrated in image 13.

1727486567182-334.png

image 12 move label1 to make label1 widget be a child of button1 widget(1)

image-20240928112001-8.png

                                image 13 move label1 to make label1 widget be a child of button1 widget(2)

6. Preview the final effect

An advantage of this kind of software is that you can edit the UI with quick previews. In other words, it provides a way of combining graphical programming with simulation immediately.

1727487368023-281.png

            image 14 click on the triangle icon to start or end the simulation

For more detailed usage, please visit the official link: SquareLine Studio 1.4.2 Documentation | SquareLine Studio.

2.4 Integrate UI Code to ESP-IDF Project

To achieve the integrating, we first need to export the UI code, then make some modifications, and finally relocate the UI code to a specific position within the project.

1727229798126-306.png

                                             image 15 export UI file

1727229821582-258.png

                                                               image 16 exported UI file

Create a empty directory entitled "ui" in path "basic_prj/app_components/ui/", and then copy all UI code exported to this directory.

image-20240928144830-11.png

                                                image 17 open CMakeLists.txt

1727229892636-154.png

                         image 18 modify CMakeLists.txt

The last step of integrating is adding two lines of code in main.c file.

1727229926561-300.png

                                                          image 19 add "ui.h"

1727229955611-607.png

                                                   image 20 add "ui_init()"

2.5 Brief introduction of hello world project

The project consists of two screens. The first screen displays the company's logo, the project name, and a button to navigate to the next screen. The second screen presents some information about this HMI screen product through an image and includes a button to return to the previous screen.

2.6 Test Result

By pressing the button lying bottom right, the screen can switch to another as expected. This indicates that the UI file has been successfully integrated into the project and is now effective.

1727488067077-684.png

                                                      image 21 screen1

1727488157579-949.png

                                                       image 22 screen2

3. Example Project 1: LoRa Central Display

image-20240916101737-1.png

4. Example Project 2: LoRaWAN RS485 Alarm

5.  The way to add a new panel to project

1. Design a panel in SquareLine Studio, using image 5.1 below as a reference.

image-20241121113445-1.png

                                                                                  image 5.1 a panel about water_leak

2. Export the ui file. You need  to adjust the export path first, then click "Export->Export UI Files". This step had been introduced before. Then you can get the ui files as shown in image 5.2.

image-20241121141120-4.png

                                                                              image 5.2 ui files exported

3. Delete or rename some file. Here are the steps:

    Step1 Delete the 'components' directory.
    Step2 Delete 'filelist.txt'.
    Step3 Delete 'ui_helpers.c' and 'ui_helpers.h'.
    Step4 Rename 'ui_ScreenMain.c' in the 'screens' directory to 'ui_water_leak_style.c'.
    Step5 Rename the 'screens' directory to 'styles'.

image-20241121151934-10.png

                                                                                 image 5.3 rest file (1)

image-20241121142925-7.png

                                                                                 image 5.4 rest file (2)

4. Open this project in vscode.

5. Add file include path about water_leak in extra_lib/CMakeLists.txt as shown in image 5.5, 5.6, and its format is similar to the tem_hum or door.

image-20241121181957-17.png

                          image 5.5 extra_lib/CMakeLists.txt before add

image-20241121182239-18.png

                              image 5.6 extra_lib/CMakeLists.txt after add

6. Modify header file include in fonts and images directory. Open the fonts/ui_font_Font12.c file, as shown in image 5.7, then modify the '#include "../ui.h"' to '#include "../ui_water_leak.h"', the image 5.8 is the modified image. Other font file need to be modified in same way.

image-20241121171629-11.png

                               image 5.7 before-modified font file

image-20241121171901-12.png

                                  image 5.8 modified font file

Open the images/ui_img_battery_empty_png.c file, as shown in image 5.9, then modify the '#include "../ui.h"' to '#include "../ui_water_leak.h"', the image 5.10 is the modified image. Other image file need to be modified in same way.

image-20241121172714-13.png

                                         image 5.9 before-modified image file

image-20241121172908-14.png

                                                  image 5.10 modified image file

7. Modify the ui_water_leak/CMakeLists.txt. Open this file, and modify it from image 5.11 to image 5.12. 

image-20241121180030-15.png

  image 5.11 ui_water_leak/CMakeLists.txt before modification

image-20241121180517-16.png

  image 5.12 ui_water_leak/CMakeLists.txt after modification 

8. Modify ui_water_leak.h file. The image 5.13, 5.14 show the code before modification, and the image 5.15, 5.16 show the code after modification.

image-20241122094200-23.png

                           image 5.13 ui_water_leak.h (1) before modification

image-20241122094320-24.png

                       image 5.14 ui_water_leak.h (2) before modification

image-20241122094600-25.png

                       image 5.15 ui_water_leak.h (1) after modification

image-20241122094719-26.png

                         image 5.16 ui_water_leak.h (2) before modification

9. Modify ui_water_leak.c file. The image 5.17, 5.18, 5.19 show the code before modification, and the image 5.20, 5.21, 5.22 show the code after modification.

_ui_flag_modify( ((lv_obj_t *)(e->user_data)), LV_OBJ_FLAG_HIDDEN, _UI_MODIFY_FLAG_TOGGLE);    This code replaces 4 lines of code in ui_water_leak.c, so it is pasted here for convenience.

image-20241122102929-27.png

           image 5.17 ui_water_leak.c (1) before modification

image-20241122112838-30.png

                                     image 5.18 ui_water_leak.c (2) before modification

image-20241122110815-29.png

                                                image 5.19 ui_water_leak.c (3) before modification

image-20241122113158-31.png

                                             image 5.20 ui_water_leak.c (1) after modification

image-20241122113259-33.png

                                                image 5.21 ui_water_leak.c (2) after modification

image-20241122113359-34.png

                                                         image 5.22 ui_water_leak.c (3) after modification

10. Modify ui_water_leak_events.h file. The image 5.23 show the code before modification, and the image 5.24 show the code after modification.

image-20241122134113-35.png

              image 5.23 ui_water_leak_events_.h before modification

image-20241122134420-37.png

image 5.24 ui_water_leak_events_.h after modification

11. Modify ui_water_leak_events.c file. The image 5.25 show the code before modification, and the image 5.26 show the code after modification.

Step1. '#include "ui.h"'-->'#include "ui_water_leak.h"'

Step2. add code  below in delete_object() function definition.

        panel_all * panel = find_upper_by_SensorPanel(&arr,((lv_obj_t *)(e->user_data)));

        size_t index = panel->panel_obj_index;

        deleteElement(&arr, index);

image-20241122135023-38.png

   image 5.25 ui_water_leak_events_.c before modification

image-20241122135258-39.png

                        image 5.26 ui_water_leak_events_.c after modification

12. Modify ui_water_leak_style.c file.

Step1. '#include "../ui.h"'-->#include '"../ui_water_leak.h"'

            add '#include "../../sort.h"'

            add '#include "ui.h"'

image-20241122141536-41.png

                        image 5.27 ui_water_leak_style.c (1) before modification

image-20241122142129-42.png

                           image 5.28 ui_water_leak_style.c (1) after modification

Step2. modify 'void ui_ScreenMain_screen_init(void)'-->'panel_with_type create_water_leak(uint8_t index)'

           delete code as shown in image 5.29

image-20241122145620-44.png

                                               image 5.29 ui_water_leak_style.c (2)

Step3. The image 5.30, 5.31 show the change.

image-20241122152026-45.png

                                                      image 5.30 ui_water_leak_style.c (3) before modification

image-20241122152542-46.png

                                                         image 5.31 ui_water_leak_style.c (3) after modification

Step4. Copy partly the code in ui_water_leak.c, paste at extra_lib/sort.h(The process is shown in image 5.32, 5.33).

image-20241122153958-47.png

                           image 5.32 ui_water_leak_style.c (4)

image-20241122154755-49.png

                           image 5.33 ui_water_leak_style.c (4)

Step5. Delete event function in code which was just pasted in extra_lib/sort.h(The process is shown in image 5.34).

image-20241122155650-50.png

              image 5.34 ui_water_leak_style.c (5) 

Step6. Add some lines of code in extra_lib/sort.h as shown in image 5.35.

image-20241122161934-51.png

                           image 5.35

Step7. Add a line of code in extra_lib/sort.h as shown in image 5.36.

image-20241122162852-53.png

                                         image 5.37

Step8. Add some code in ui_water_leak_style.c as shown in image 5.38 from line534 to line 576 in detail.

panel_with_type union_sensor;

union_sensor.panel_type = WATER_LEAK_TYPE;

......

lv_obj_set_x(union_sensor.panel_union.door.ui_PanelSensorDoor, x_by_index(index));

lv_obj_set_y(union_sensor.panel_union.door.ui_PanelSensorDoor, y_by_index(index));

return union_sensor;

image-20241122171211-54.png

                                                                       image 5.38

13. Modify sort.c file. 

Add a line of code --'#include "ui_water_leak.h"' as shown in image 5.39 line 16. 

image-20241122173718-56.png

                                           image 5.39 sort.c (1)

There are still some changes need to be done in sort.c, and omit here for the moment.

6.  FAQ

6.1

7.  Order Info

7.1  Part Number

Part Number: LTS5

7.2  Packing Info

Package Includes:

  • LTS5 HMI Touch Screen
  • 5V,2A DC Power Adapter.
  • USB Type C Program Cable

8.  Support

  • Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
  • Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to support@dragino.com.

9.  Reference material

  • Datasheet
  • Source Code
  • Mechinical

10.  FCC Warning

This device complies with part 15 of the FCC Rules.Operation is subject to the following two conditions:

(1) This device may not cause harmful interference;

(2) this device must accept any interference received,including interference that may cause undesired operation.
 

Tags:
    
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0