cat ~/.xinitrc
#!/bin/sh
# enable numlock *after* X11 starts
numlockx on &
# start XFCE
exec startxfce4
cat .bash_profile
#numlockx on &
if [ -z "${DISPLAY}" ] && [ $(tty) = /dev/tty1 ]; then
startx
fi
cat ~/.xinitrc
#!/bin/sh
# enable numlock *after* X11 starts
numlockx on &
# start XFCE
exec startxfce4
cat .bash_profile
#numlockx on &
if [ -z "${DISPLAY}" ] && [ $(tty) = /dev/tty1 ]; then
startx
fi
ESP-01 -> USB-TTL
===================
3v3, EN -> 3V
TX -> RX
RX -> TX
GND,IO0 -> GND
IO0 -> GND -- programming mode
IO0 -> 3.3V -- normal boot mode
RST - via button - GND - when you press button it resets
It draws around 60-80ma @ 3.3V. Can check the USB to TTL 3.3V regulator on the back for max power. Mine is AMS1117. Can supplu 1A - (1.5A maximum)
sudo apt install esptool
Read chip info:
esptool.py --port /dev/ttyUSB0 flash_id
esptool.py --port flash_id
Output:
Detecting chip type... ESP8266
Chip is ESP8266EX
Detected flash size: 1MB
The cip supports external FLASH via SPI up to 16MB. You can find 1MB or 4MB versions.
Dowload firmware:
https://www.espressif.com/en/support/download/all?keys=8266 pick ESP8266 NONOS SDK
Direct link: https://codeload.github.com/espressif/ESP8266_NONOS_SDK/zip/refs/tags/v3.0.6
extract and go into /bin
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash \
--flash_mode dout --flash_size 1MB \
0x00000 boot_v1.7.bin \
0x01000 at/512+512/user1.1024.new.2.bin \
0xFC000 esp_init_data_default_v08.bin \
0x7e000 blank.bin
0xfe000 blank.bin
Make a backup:
esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x100000 esp8266_at_backup.bin
Restore backup:
esptool.py --port /dev/ttyUSB0 write_flash 0x00000 esp8266_at_backup.bin
Connect to ttyUSB0 you can use CuteCom. Use speed 115200 and at INPUT select CR/LF.
Commands:
https://docs.espressif.com/projects/esp-at/en/release-v2.2.0.0_esp8266/AT_Command_Set/index.html
AT
Ouput: OK
AT+GMR
Output:
AT version:1.7.6.0(Jan 24 2022 08:56:02)␍␊
SDK version:3.0.6-dev(072755c)␍␊
compile time:Jun 17 2024 07:38:00␍␊
Bin version(Wroom 02):1.7.6␍␊
AT+CWMODE?
→ shows current Wi-Fi mode:
1 = Station
2 = SoftAP
3 = Both
Optional if you want better speed
ESP3D/esp3d/src/core/esp3d_settings.cpp
#define DEFAULT_BAUD_RATE "230400"
#define DEFAULT_SERIAL_BRIDGE_BAUD_RATE "230400"
Compile
====
python3 -m venv platformio
source platformio/bin/activate
pip install platformio
cd ESP3D
platformio run -e esp01_1m_bridge --target clean
platformio run -e esp01_1m_bridge
Upload firmaware
====== dont forget to have IO0 to GND and reset before uploading
esptool.py --port /dev/ttyUSB0 flash_id
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 write_flash 0x00000 .pioenvs/esp01_1m_bridge/firmware.bin
If you want more speed use a ESP32
build_flags =
-DESP_SERIAL_BRIDGE
-DCONFIG_FREERTOS_HZ=1000
platformio = pio (same command)
pio run -e esp32dev
pio run -e esp32dev -t upload
curl -L http://s3.voneicken.com/esp-link/esp-link-v3.0.14-g963ffbb.tgz | tar xzf -
I installed micropython on my esp32 for easier coding - no more waiting for the arduino code to recompile, and easy testing of new code.
All good for now.
A few problems started to appear.
When using a LCD a ST7735 the refresh is very slow, you can see the screen being painted from top to bottom. Its not terrible but not that great, on arduino with C code was fine.
Second problem, when I tried to log some data online with urequest, or even with sockets.
I started to get: OSError: (-29312, 'MBEDTLS_ERR_SSL_CONN_EOF')
The problem comes from SSL part - if the server is using anything more powerfull then RSA for the HTTPS certificate we have a problem.
ESP32 is left with too little memory and cpu from running micropython.
Two solutions.
If you remove the TFT library it works, but this is not really a solution, since I want the data displayed on the screen as well.
I went through the library and started to remove pieces of code not required, like they have 3 functions to initrb, initrg, initrr - to initialize the screen with red, green or blue. Just keep the red one and remove the others.
I also removed the drawing functions like circle, line, rect etc - I only needed text.
After this trimming, I got the first success, urequests actually working, but not all the time.
So second solution was to ditch the HTTPS.
Setup the server to accept http. Then it works fine.