Hlavní stránka ukázek v MicroPythonu:
https://github.com/octopuslab-cz/esp32_s3_robotics
Využívá se OctopusLAM MicroPython framework:
https://github.com/octopuslab-cz/esp32_micropython_framework
Ve spolupráci s BitBeam máme už rozpracováno několik projektů. které chceme postupně publikovat.
BitBeam je revoluční stavebnice, která kombinuje modulární design s pokročilými technologiemi, aby uživatelům nabídla možnosti pro stavbu, programování a inovace. Z 3D tištených částí v kombinaci s elektronickými moduly se dají realizovat jednoduché experimenty i složité robotické systémy.
https://bitbeam.cc/cs/how-to/esp32-s3-robotic-board

Zapojení PINů
S využitím Frameworku v setup() následným příkazem pi
[pi] - PINs info dostanete výpis:
--------------------------------
device_config (board_type):
S3Robotics
--------------------------------
1 SPI_CLK_PIN: 12
2 SPI_MOSI_PIN: 11
3 I2C_SCL_PIN: 2
4 I2C_SDA_PIN: 1
5 BUTT0_PIN: 0
6 SPI_MISO_PIN: 13
7 SPI_CS0_PIN: 10
8 P1_PIN: 21
9 P2_PIN: 47
10 P3_PIN: 9
11 P4_PIN: 15
12 P5_PIN: 16
13 P6_PIN: 3
14 P7_PIN: 48
15 P8_PIN: 14
16 BATMES_PIN: 5
17 PWM1_PIN: 21
18 PWM2_PIN: 47
19 PWM3_PIN: 9
20 LED1_PIN: 14
21 LED2_PIN: 48
22 WSLED_PIN: 38
23 D1_PIN: 16
24 D2_PIN: 15
25 D3_PIN: 3
26 RXD1: 18
27 TXD1: 17
28 RXD0: 20
29 TXD0: 21
Pro udržení zpětné kompatibility jsou některé názvy zdvojené.
Aktuální PINout je dostupný i na Githubu:
https://github.com/octopuslab-cz/esp32_micropython_framework/blob/main/pinouts/esp32s3_robotics.py
Základní jednoduché ukázky
Blikání LEDkou s využitím Frameworku
# (c) OctopusLAB 2016-25 - MIT
from time import sleep_ms
from utils.pinout import set_pinout
from components.led import Led
print("[--- init ---] pinout / LED")
pinout = set_pinout()
led = Led(pinout.LED1_PIN) # 14
print("[--- test ---] blink 3x")
for blink in range(3):
led.value(1)
sleep_ms(500)
led.value(0)
sleep_ms(500)
Stačí znát jen „název PINU“:
LED1_PIN – osazuje se červená
LED2_PIN – osazuje se zelená
Čtyřmístný sedmisegmentový displej TM1637
# simple MicroPython example | ESP32 & TM1637
# (c) OctopusLAB 2017-25 - MIT
from time import sleep
from machine import Pin
from utils.pinout import set_pinout
from components.display4 import TM1637Decimal
pinout = set_pinout()
print("[--- init ---] display4")
# tm = TM1637Decimal(clk=Pin(18), dio=Pin(19)) # DoIt
# tm = TM1637Decimal(clk=Pin(47), dio=Pin(9)) # S3
tm = TM1637Decimal(clk=Pin(pinout.P2_PIN), dio=Pin(pinout.P3_PIN))
tm.show("----")
for i in range(7):
tm.show("--"+str(7-i))
sleep(0.3)
tm.show('abcd')
sleep(2)
for i in range(6):
tm.show('1234')
sleep(1)
tm.show('12.34')
sleep(1)
print(i)
-------------------------------
připojení 2x dvoužilový kablík
...
P3 x x 3
P2 x x 2
P1 - + x
TM1637:
Ucc +
GND -
DIO P3
CLK P2
-------------------------------
Měření (a zobrazení) napětí na baterce
# simple MicroPython example | ESP32 & TM1637
# (c) OctopusLAB 2017-25 - MIT
from time import sleep
from machine import Pin
from utils.pinout import set_pinout
from components.display4 import TM1637Decimal
from components.analog import Analog
pinout = set_pinout()
print("[--- init ---] analog")
an1 = Analog(pinout.BATMES_PIN) # BATMES_PIN 5
an1.adc_test()
an1.get_adc_aver(20)
def raw_to_volts(raw):
U0 = 0.0 # napětí při nule
R0 = 15 # raw při nule
U1 = 4.75 # napětí při max
R1 = 2850 # raw při max
return (raw - R0) * (U1 - U0) / (R1 - R0) + U0
# an1.adc.atten(ADC.ATTN_2_5DB) #Full range: 3.3v
print("[--- init ---] display4")
# tm = TM1637Decimal(clk=Pin(18), dio=Pin(19)) # DoIt
# tm = TM1637Decimal(clk=Pin(47), dio=Pin(9)) # S3
tm = TM1637Decimal(clk=Pin(pinout.P2_PIN), dio=Pin(pinout.P3_PIN))
tm.show("----")
for i in range(7):
tm.show("--"+str(7-i))
sleep(0.3)
tm.show('abcd')
sleep(2)
# for i in range(6):
while True:
v = an1.get_adc_aver(20)
print(v, raw_to_volts(v))
tm.show(' ')
tm.show(str(raw_to_volts(v)))
sleep(0.5)
Robotické vozítko ovládané pomocí BT (BLE) „mobilem“
https://github.com/octopuslab-cz/esp32_s3_robotics/tree/main/rc_robot
I2C expander
# pcf 8-bit expander
from time import sleep
from octopus_lib import i2c_init
from components.i2c_expander import Expander8
print("[--- init ---] I2C ")
i2c = i2c_init()
print(i2c.scan())
# [61, 104]
exp = Expander8(61, i2c_bus=i2c) # 62?
inputs = exp.read()
print(inputs)
...
Připojení k SHIELD01 – může být nahrazen i libovolnou universální PCB deskou, ale připravujeme jako open HW už optimalizované připojení s celou řadou projektů. Některé z nich už máme i na githubu:
esp32_s3_robotics/shield01 at main · octopuslab-cz/esp32_s3_robotics · GitHub
