====== SUT STM32 Laboratory Node Hardware Reference ======
===== Introduction =====
Each laboratory node is equipped with an STM32WB55 chip. Several peripherals, networks and network services are available for the user. The UI is necessary to observe results in the camera when programming remotely. Thus, a proper understanding of UI programming is essential to successfully using the devices.
Note that each node has a unique ID built into the chip, as well as unique MAC addresses for the Bluetooth interface. As STM32WB55 does not support WiFi, every nide has an additional ESP32-C3 mini module which works as a WiFi modem connected with the serial interface.
===== Hardware reference =====
The table {{ref>stm32sutnodehardware}} lists all hardware components of the SUT's STM32WB55 node and hardware details such as connectivity, protocols, GPIOs, etc. Please note that some pins overlap because buses such as SPI and I2C are shared among multiple components.\\
The node is present in the figure {{ref>esp32sutnode1}} and reference numbers reflecting components in the table {{ref>stm32sutnodehardware}}.
STM32WB55 Node Hardware Details
^ Component ID ^ Description ^ Hardware model (controller) ^ Control method ^ GPIOs (as connected to the STM32WB55, Arduino naming [Nucleo naming]) ^ Remarks ^
| 1A | 12V PWM controlled fan | Pe60251b1-000u-g99 | PWM | FAN_PWM = A2 [PA_1] | Fan blows air into the pressure chamber (yellow container) to stimulate air pressure changes. |
| 1B | Pressure and environmental sensor | BME 280 | I2C, address 0x76 | SDA=D14 [PB_9], SCL=D15 [PB_8] | Spinning of the fan causes air to blow inside the yellow chamber and thus causes air pressure to change. |
| 2 | Digital potentiometer | DS1803-100 | I2C, address 0x28 | SDA=D14 [PB_9], SCL=D15 [PB_8], analog input (A/D)=A4 [PC_3] | Digital potententiometer's output is connected to the A/D input of the MCU. |
| 3 | Temperature and humidity sensor 1 | DHT11 | proprietary protocol, one GPIO | control on GPIO=D22 [PB_2] | |
| 4 | Temperature sensor 2 | DS18B20 | 1-Wire | 1-Wire interface on GPIO=D0 [PA_3] | |
| 5 | 2x16 LCD | HD44780 | Proprietary 4 bit control interface | EN=D16 [PB_11], RS=A14 [PC5], D4=D29 [PB_12], D5=D34 [PB_13], D6=D33 [PB_14], D7=D32 [PB_15] | 4-bit, simplified, one-directional (MCU->LCD) communication only |
| 6 | ePaper, B&W 2.13in, 250x122 pixels | Pico-ePaper-2.13 | SPI | SPI_MOSI=D11 [PA_7], SPI_CLK=D13 [PA_5], SPI_DC=D4 [PC_10], EPAPER_CS=D1 [PA_2], EPAPER_RST=D5 [PA_15], EPAPER_BUSY=D7 [PC_13] | Memory size is 64kB (65536ul) |
| 7 | OLED, RGB colourful 1.5in, 128x128 pixels | SSD1351 | SPI | SPI_MOSI=D11 [PA_7], SPI_CLK=D13 [PA_5], SPI_DC=D4 [PC_10], OLED_CS=D2 [PC_6], OLED_RST=D10 [PA_4] | 64k colours RGB (16bit) |
| 8 | RGB Smart LED stripe | 8*WS2812B | Proprietary protocol, one GPIO | NEOPIXEL=D8 [PC_12] | |
| 9A | RGB LED PWM controlled | | PWM | LED_R=D9 [PA_9], LED_B=D6 [PA_8], LED_G=D3 [PA_10] | Each colour can be independently controlled with PWM. The LED is integrated with another, illuminating the colour sensor (9A) so that controlling this RGB LED also directly impacts the other. |
| 9B | Light intensity and colour sensor | TCS 34725 | I2C address 0x29 | SDA=D14 [PB_9], SCL=D15 [PB_8] | The sensor is illuminated by RGB LED (9B) |
| 10 | Standard miniature servo | SG90 or similar | PWM | SERVO_PWM=A3 [PA_0] | Standard timings for micro servo: PWM 50Hz, duty cycle:\\ - 0 deg (right position): 1ms,\\ - 90 deg (up position): 1.5ms,\\ - 180 deg (left position): 2ms. |
A suitable platformio.ini file for the correct code compilation is presented below. It does not contain libraries that need to be added regarding specific tasks and hardware used in particular scenarios. The code below presents only the typical section. Refer to the scenario description for details regarding case-specific libraries needed for the implementation:
[env:nucleo_wb55rg_p]
platform = ststm32
framework = arduino
board = nucleo_wb55rg_p
lib_ldf_mode = deep+
Rozważ dodanie do platformio.ini sekcji lib_ldf_mode = deep+