My Hoby Blog
luni, 28 octombrie 2019
3.5inch LCD-TFT 380x480 px ILI9846/XPT2046
Salut,
In cele din urma am ales de pe ocazii, un display nou TFT LCD 3.5 inch livrat cu promptitudine de OptimusDigital. Un dispozitiv similar gasiti pe Aliexpress
Am afacut aceasta alegere pentru ca are interfata de bus paralela 8080-16-bits pentru a avea un acces cat mai rapid si sa evit acele episoade sporadice de "slow motion".
Acest dispozitiv are doare interfata paralela pe 16 biti/canale deci nu il putem folosi pe o seriala SPI care in principiu este mai lenta.
El are nevoie de o sursa de alimentare de 3.3V DC.
MCU urile traditionale nu prea pot fi folosite din diverse motive.Sa le luam pe rand:
-Arduino UNO lucreaza pe 5V si in plus poti lucra in mod paralel pe 8biti.
-Arduino Mega ar putea lucra pe 16-biti paralel pentru ca are suficienti pini dar din pacate tori sunt la 5V...ar insemna sa face shift-voltage(5V la 3.3V) pe prea mult pini...si nu se merita.
-ESP32,ESP8266 are 3.3V dar insuficienti pini pt paralel
De altfel in documentatia de pe LcdWiki se specifica ca se poate conecta direct pin la pin(plug & use/play) pe diverse placi de dezvoltare bazate pe STM32 cum ar fi:
ALIENTEK STM32 Mini,
Elite, WarShip,
Explorer,
Apollo
Studiind placa de dezvoltare ALIENTEK STM32 mini am vazut ca ea este construita in jurul lui STM32F103RCT6.
Revenind la display-ul acesta sa mentionam ca are comunicatie SPI(seriala) dar numai pe partea de touch nu si pe partea de LCD.
Pentru partea de afisare LCD se bazeaza pe ILI9846 8080-16bits iar pe partea de touch se bazeaza pe IC-ul XPT2046.
Are o rezolutie de 320(RGB 18 biti) x 480 px si are o interfata pe 34pini(34P).
luni, 21 octombrie 2019
Ububtu WSL on W10-Pro
Salut,
In postul anterior am vorbit despre esp32 si display-ul de 3.5".
Am vorbit de asemena despre solutia IoT pt esp32 ce asigura si include suport si pentru libraria littlevGL(LvGL).
Printre exemplele esp-iot-solution gasim in directorul hmi si un exemplu pt LvGL.
Acest framework esp-iot-solution se bazeaza si-l include pe esp-idf(in special pe freeRTOS).
ESP-IDF este cadrul oficial de dezvoltare pentru chip-ul ESP32.
Trebuie stiut ca sunt mai multe versiuni de esp-if.
De preferat este de folosit versiunea esp-idf stabila (dar bineinteles ca poate fi folosita si ultima versiune daca doriti acest lucru).
Pentru a testa corecta instalare a cadrului esp-iot solution va trebui sa rulati 2 exemple
unul ce se refera la un smart-device si altul denumit unit-test .
Pentru a realiza atat prepararea dependentelor cat si constructia acestor exemple avem nevoie de make sau de cmake.
In cele din urma o sa optam pentru make(in loc sa-l utilizam pe cmake)atat pentru primul exemplu cat si pentru unit-test.
Pentru viitor atat pentru make(cat si pentru cmake) se poate incepe cu un proiect-empty(gol).
Asadar in sistemul de operare Windows 10 (Profesional) o sa emulez un sistem de operare din familia linux si anume Ubuntu.
Ubuntu-WSL se instaleaza si ruleaza sub W10-Pro.
Daca aveti deja instalat Ubuntu-WSL pe Windos-ul dvs. poate ca ar fi bine sa-l resetati ca sa putem lucra pe unul nou(clean).
Directorul windows unde se va instala ubuntu va fi ceva de genul:
C:\Users\{UserName}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows _79rhkp1fndgsc\LocalState\rootfs
Inainte de a instala pas cu pas cadrul esp-idf vom vorbi cateva lucruri elementare sau notabile despre unele comenzi W10-shell si Ububtu-bash.
Lansarea cu bash sau din task-bar(daca a fost agatat in bara=pin) o gasiti aici.
Sub Ubuntu-WSL puteti utiliza comenzi ca:
-afisare cale director curent(.):
$ pwd
-sterge ecranul:
$ clear
-pentru a inhiba afisarea comenzilor daca se ruleaza un shell script:
$ echo off
$ echo on
-afisare nu fisiere si subdirectoare aflate/situate/continute in directorul curent;
$ dir
$ ls
$ ls -l
-pt a da mai multe comenzi intr-o succesiune data :
$ cd /usr/local/lib/ && ls -l
-afisarea continutului unui fisier din directorul curent:
$ cat test-file
-stergerea unui fisier din directorul curent:
$ rm test-file
-afisarea orei si datei curente
$ date
-creare sudirector nou:
$ mkdir esp
-pt a schimba directorul ccurent si a merge in alt subdirector existent:
$ cd esp
-creare utilizator nou:
$ adduser crosstoolng
-a se studia si cda chown :
$ chown crosstoolng:crosstoolng <crosstool-path>
- pt a schimba userul curent(de exemplu root) putem folosi:
$ su crosstoolng
-daca doriti sa rulati un fisier executabil(de ex. install.sh) din directorul curent puteti folosi :
$ sudo ./install.sh
(*) ar fi util sa vedeti si acest articol despre sudo.
-pt a afla care este user-ul curent putem folosi:
$ whoami
-pt a rula un anumit program ct-ng cu parametrul build de exemplu vom avea:
$ ./ct-ng build
-pt a afla unde este instalat un program se foloseste:
$ whereis python2.7
$ whereis python3.2
-pt a chema in sursele python de oriunde sub linux:
va rog sa cititi acest articol si aici.
-despre python pe ubuntu-wsl cititi aici!
-despre environment-ul python puteti citi aici!
-cum se seteaza si se citeste PYTHONPATH:
$ export PYTHONPATH=/usr/lib/python2.7
$ export PYTHONPATH=/usr/lib/python3.6
$ echo $PYTHONPATH
$python3 --version
-cum se utilizeaza variabila PYTHONPATH cititi aici:
scrieti #!/usr/bin/env python in inprima linie a fisierului gbmx.py si apoi
$ chmod +x /home/randy/lib/python/gbmx.py
-pt a vedea versiunea unui program(ce se afla intr-una din caile din environment)-de ex python:
$ pthon --version
-pt a instala diverse programe puteti folosi de ex pt python(2.7 si 3.6):
$ sudo apt update
$ sudo apt install python
$ python -V
$ sudo apt-install python3
$ sudo apt install python-pip python3-pip python-ipykernel python3-ipykernel
$ sudo apt install python3-pip
$ python3 -V && pip3 -V
$ sudo apt install python-pip
$ python -V && pip -V
-cititi cum se instaleaza pip3 pe python 3.6 sub un ubuntu 18.04(user percy cu parola percy):
$ sudo apt update
$ sudo apt install python3-pip
$ pip3 --version
-pt a instala utilitarul git:
$ sudo apt install git
-pt a descarca o arhiva din internet folosind utilitarul git:
$ git clone -b v3.3 --recursive https://github.com/espressif/esp-idf.git
-pt a descarca anumite modulee ce sunt necesare unei proceduri de instalare:
$ sudo python -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python2.7 -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python3 -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python -m pip install --user -r $IDF_PATH/requirements.txt
-pt a copia un fisier in directorul curent:
$ cd ~/esp
$ cp -r $IDF_PATH/examples/get-started/hello_world .
-pt a configura:
$ cd hello_world
In postul anterior am vorbit despre esp32 si display-ul de 3.5".
Am vorbit de asemena despre solutia IoT pt esp32 ce asigura si include suport si pentru libraria littlevGL(LvGL).
Printre exemplele esp-iot-solution gasim in directorul hmi si un exemplu pt LvGL.
Acest framework esp-iot-solution se bazeaza si-l include pe esp-idf(in special pe freeRTOS).
ESP-IDF este cadrul oficial de dezvoltare pentru chip-ul ESP32.
Trebuie stiut ca sunt mai multe versiuni de esp-if.
De preferat este de folosit versiunea esp-idf stabila (dar bineinteles ca poate fi folosita si ultima versiune daca doriti acest lucru).
Pentru a testa corecta instalare a cadrului esp-iot solution va trebui sa rulati 2 exemple
unul ce se refera la un smart-device si altul denumit unit-test .
Pentru a realiza atat prepararea dependentelor cat si constructia acestor exemple avem nevoie de make sau de cmake.
In cele din urma o sa optam pentru make(in loc sa-l utilizam pe cmake)atat pentru primul exemplu cat si pentru unit-test.
Pentru viitor atat pentru make(cat si pentru cmake) se poate incepe cu un proiect-empty(gol).
Asadar in sistemul de operare Windows 10 (Profesional) o sa emulez un sistem de operare din familia linux si anume Ubuntu.
Ubuntu-WSL se instaleaza si ruleaza sub W10-Pro.
Daca aveti deja instalat Ubuntu-WSL pe Windos-ul dvs. poate ca ar fi bine sa-l resetati ca sa putem lucra pe unul nou(clean).
Directorul windows unde se va instala ubuntu va fi ceva de genul:
C:\Users\{UserName}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows _79rhkp1fndgsc\LocalState\rootfs
Inainte de a instala pas cu pas cadrul esp-idf vom vorbi cateva lucruri elementare sau notabile despre unele comenzi W10-shell si Ububtu-bash.
Lansarea cu bash sau din task-bar(daca a fost agatat in bara=pin) o gasiti aici.
Sub Ubuntu-WSL puteti utiliza comenzi ca:
-afisare cale director curent(.):
$ pwd
-sterge ecranul:
$ clear
-pentru a inhiba afisarea comenzilor daca se ruleaza un shell script:
$ echo off
$ echo on
-afisare nu fisiere si subdirectoare aflate/situate/continute in directorul curent;
$ dir
$ ls
$ ls -l
-pt a da mai multe comenzi intr-o succesiune data :
$ cd /usr/local/lib/ && ls -l
-afisarea continutului unui fisier din directorul curent:
$ cat test-file
-stergerea unui fisier din directorul curent:
$ rm test-file
-afisarea orei si datei curente
$ date
-creare sudirector nou:
$ mkdir esp
-pt a schimba directorul ccurent si a merge in alt subdirector existent:
$ cd esp
-creare utilizator nou:
$ adduser crosstoolng
-a se studia si cda chown :
$ chown crosstoolng:crosstoolng <crosstool-path>
- pt a schimba userul curent(de exemplu root) putem folosi:
$ su crosstoolng
-daca doriti sa rulati un fisier executabil(de ex. install.sh) din directorul curent puteti folosi :
$ sudo ./install.sh
(*) ar fi util sa vedeti si acest articol despre sudo.
-pt a afla care este user-ul curent putem folosi:
$ whoami
-pt a rula un anumit program ct-ng cu parametrul build de exemplu vom avea:
$ ./ct-ng build
-pt a afla unde este instalat un program se foloseste:
$ whereis python2.7
$ whereis python3.2
-pt a chema in sursele python de oriunde sub linux:
va rog sa cititi acest articol si aici.
-despre python pe ubuntu-wsl cititi aici!
-despre environment-ul python puteti citi aici!
-cum se seteaza si se citeste PYTHONPATH:
$ export PYTHONPATH=/usr/lib/python2.7
$ export PYTHONPATH=/usr/lib/python3.6
$ echo $PYTHONPATH
$python3 --version
-cum se utilizeaza variabila PYTHONPATH cititi aici:
scrieti #!/usr/bin/env python in inprima linie a fisierului gbmx.py si apoi
$ chmod +x /home/randy/lib/python/gbmx.py
-pt a vedea versiunea unui program(ce se afla intr-una din caile din environment)-de ex python:
$ pthon --version
-pt a instala diverse programe puteti folosi de ex pt python(2.7 si 3.6):
$ sudo apt update
$ sudo apt install python
$ python -V
$ sudo apt-install python3
$ sudo apt install python-pip python3-pip python-ipykernel python3-ipykernel
$ sudo apt install python3-pip
$ python3 -V && pip3 -V
$ sudo apt install python-pip
$ python -V && pip -V
-cititi cum se instaleaza pip3 pe python 3.6 sub un ubuntu 18.04(user percy cu parola percy):
$ sudo apt update
$ sudo apt install python3-pip
$ pip3 --version
-pt a instala utilitarul git:
$ sudo apt install git
-pt a descarca o arhiva din internet folosind utilitarul git:
$ git clone -b v3.3 --recursive https://github.com/espressif/esp-idf.git
-pt a descarca anumite modulee ce sunt necesare unei proceduri de instalare:
$ sudo python -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python2.7 -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python3 -m pip install --user -r $IDF_PATH/requirements.txt
$ sudo python -m pip install --user -r $IDF_PATH/requirements.txt
-pt a copia un fisier in directorul curent:
$ cd ~/esp
$ cp -r $IDF_PATH/examples/get-started/hello_world .
-pt a configura:
$ cd hello_world
$ make menuconfig
-cum fac sa execut un fisier(ex putty.exe) descarcat in directorul c/Users/{UserName}/Downloads din W10-Pro:
$ export PATH=$PATH:/home/randy/lib/python # export PATH=$PATH:/mnt/c/Users/{UserName}/Downloads
# cd /mnt/c/Users/{UserName}/Downloads
# chmod a+x putty.exe
# ./putty.exe
-pt. a atribui diverse valori variabilelor din environment si apoi a le citi pt a vedea valoarea curenta puteti citi acest articol.
# export IDF_PATH=~/esp/esp-idf
# export IDF_PATH=/home/percy/esp/esp-idf
# echo $IDF_PATH
(*) a se vedea si articolul urmator despre echo
# printenv
# printenv IDF_PATH
# printenv | grep IDF_PATH
-how to compile Kernel Ubuntu 18.04(obs: sudo tar linux-4.19.34.tar.xz)?
-install esp32 development pe WSL
-cum fac sa execut un fisier(ex putty.exe) descarcat in directorul c/Users/{UserName}/Downloads din W10-Pro:
$ export PATH=$PATH:/home/randy/lib/python # export PATH=$PATH:/mnt/c/Users/{UserName}/Downloads
# cd /mnt/c/Users/{UserName}/Downloads
# chmod a+x putty.exe
# ./putty.exe
-pt. a atribui diverse valori variabilelor din environment si apoi a le citi pt a vedea valoarea curenta puteti citi acest articol.
# export IDF_PATH=~/esp/esp-idf
# export IDF_PATH=/home/percy/esp/esp-idf
# echo $IDF_PATH
(*) a se vedea si articolul urmator despre echo
# printenv
# printenv IDF_PATH
# printenv | grep IDF_PATH
-how to compile Kernel Ubuntu 18.04(obs: sudo tar linux-4.19.34.tar.xz)?
-install esp32 development pe WSL
esp32 si ili9488,ili9486 ori iliili9341
Salut,
Astazi ma gandeam sa realizez o schema electronica bazata pe placa de dezvoltare
esp32(esp wroom 32 devkitC V1.0 de la Espressif) utilizand un display tft-lcd de 3.5" (RGB color, rezolutie 480px x 320 px , driver grafic ILI 9488, alimentare VDD=3.3V DC) cu touch-screen (CTP=capacitive) conectat prin SPI-4 (conexiune seriala SPI pe 4 fire si interfata Pin Header ori Conector FCC).
Un astfel de ecran(ER-TFTM035-6) destul de ieftin am vazut pe site-ul budydisplay.
O alta optiune hardware(HW) potrivita ca display ar fi si acest Modul LCD SPI de 3.5'' cu Touchscreen - Controller ILI9486 și XPT2046 (320x480 px) la care se poate utiliza una dintre librariile UTFT, Adafruit HX8357 ori UCGlib / Waveshare ILI9486 pentru screen si o librarie adecvata pt controller-ul de touch cum ar fi libraria XPT2046.
Pentru alte librarii daca utilizati mediul de dezvoltare Arduino IDE puteti consulta si acest site.
Software-ul(SW) ce urmeaza sa-l scriu pentru o Interfata Grafica Utilizator(GUI) va utiliza libraria littlevGL(lvGL).
Pentru aceasta librarie am gasit chiar si un tutorial interesant dar desigur pe internet puteti gasi o sumedenie de astfel de initiative.
Alegerea acestei librarii s-a bazat si pe faptul ca Espressif a anuntat oficial ca esp32 asigura acum suport pentru librariile littlevGL si μGFX. Mai mult, Espressif ofera chiar o solutie IoT.
Am vazut pe blogul Expressif in acest anunt oficial ca pentru cadrul de dezvoltare esp-idf are chiar o solutie directa. Aceasta solutie directa pentru esp-idf face trimitere catre un proiect pentru driverul display-ului grafic ILI9431 si driverul de touch-screen XPT2046.
De altfel in cadrul anuntului in aliniatul GUI with ESP32 se precizeaza ca desi modulul ESP32 nu are interfata RGB LCD sau un port de interfata paralela pt a se ocupa de acest afisaj are totusi porturi rapide pentru protocului SPI.
Asadar display-urile echipate sau bazate pe drivere ILI9341, ST7789 SSD1306 au interfata SPI si se pot conecta la acest MCU(esp32 devkitC de la Espresssif).
Se naste totusi urmatoarea intrebare:
- Daca pentru ILI9341(conexiune SPI) Espressif ne asigura ca libraria LittlevGL va functiona corect, oare si pentru driver-ul ILI9488 vom avea suport(mai ales ca pe diverse forum-uri am gasit destui utilizatori ce aveau diverse probleme)?
- Raspunsul este da sunt probleme cu acest driver ILI9488 dar se pare ca acestea pot fi depasite
( a se vedea acest material pe YT).
O alternativa SW la libraria LvGL ar putea fi si TFT library pentru ESP32 care suporta driver-ul grafic ILI9488.
In cele din urma am optat pentru ILI9486/XPT2046 rezolutie 240x320 px deoarece pe piata in momentul de fata pentru ILI9488 se gasesc numai solutii dedicate(shield pt uno,due or mega256 sau Raspberry pi 3 B).
Astazi ma gandeam sa realizez o schema electronica bazata pe placa de dezvoltare
esp32(esp wroom 32 devkitC V1.0 de la Espressif) utilizand un display tft-lcd de 3.5" (RGB color, rezolutie 480px x 320 px , driver grafic ILI 9488, alimentare VDD=3.3V DC) cu touch-screen (CTP=capacitive) conectat prin SPI-4 (conexiune seriala SPI pe 4 fire si interfata Pin Header ori Conector FCC).
Un astfel de ecran(ER-TFTM035-6) destul de ieftin am vazut pe site-ul budydisplay.
O alta optiune hardware(HW) potrivita ca display ar fi si acest Modul LCD SPI de 3.5'' cu Touchscreen - Controller ILI9486 și XPT2046 (320x480 px) la care se poate utiliza una dintre librariile UTFT, Adafruit HX8357 ori UCGlib / Waveshare ILI9486 pentru screen si o librarie adecvata pt controller-ul de touch cum ar fi libraria XPT2046.
Pentru alte librarii daca utilizati mediul de dezvoltare Arduino IDE puteti consulta si acest site.
Software-ul(SW) ce urmeaza sa-l scriu pentru o Interfata Grafica Utilizator(GUI) va utiliza libraria littlevGL(lvGL).
Pentru aceasta librarie am gasit chiar si un tutorial interesant dar desigur pe internet puteti gasi o sumedenie de astfel de initiative.
Alegerea acestei librarii s-a bazat si pe faptul ca Espressif a anuntat oficial ca esp32 asigura acum suport pentru librariile littlevGL si μGFX. Mai mult, Espressif ofera chiar o solutie IoT.
Am vazut pe blogul Expressif in acest anunt oficial ca pentru cadrul de dezvoltare esp-idf are chiar o solutie directa. Aceasta solutie directa pentru esp-idf face trimitere catre un proiect pentru driverul display-ului grafic ILI9431 si driverul de touch-screen XPT2046.
De altfel in cadrul anuntului in aliniatul GUI with ESP32 se precizeaza ca desi modulul ESP32 nu are interfata RGB LCD sau un port de interfata paralela pt a se ocupa de acest afisaj are totusi porturi rapide pentru protocului SPI.
Asadar display-urile echipate sau bazate pe drivere ILI9341, ST7789 SSD1306 au interfata SPI si se pot conecta la acest MCU(esp32 devkitC de la Espresssif).
Se naste totusi urmatoarea intrebare:
- Daca pentru ILI9341(conexiune SPI) Espressif ne asigura ca libraria LittlevGL va functiona corect, oare si pentru driver-ul ILI9488 vom avea suport(mai ales ca pe diverse forum-uri am gasit destui utilizatori ce aveau diverse probleme)?
- Raspunsul este da sunt probleme cu acest driver ILI9488 dar se pare ca acestea pot fi depasite
( a se vedea acest material pe YT).
O alternativa SW la libraria LvGL ar putea fi si TFT library pentru ESP32 care suporta driver-ul grafic ILI9488.
In cele din urma am optat pentru ILI9486/XPT2046 rezolutie 240x320 px deoarece pe piata in momentul de fata pentru ILI9488 se gasesc numai solutii dedicate(shield pt uno,due or mega256 sau Raspberry pi 3 B).
Abonați-vă la:
Postări (Atom)