STM32 - Tester LAN

Page content

Etap 1 - "Hello Ethernet"

W STM32CubeMX:

Nowy projekt dla STM32F767ZI

  • Włącz Ethernet
  • Włącz LWIP
  • Bez FreeRTOS na początek
  • Włącz DHCP

W main() tylko:

MX_LWIP_Init();
netif_set_up(&gnetif);
dhcp_start(&gnetif);

while (1)
{
    MX_LWIP_Process();
}

Po podłączeniu kabla sprawdzasz, czy płytka dostaje adres z DHCP.

Możesz od razu wyświetlać adres przez UART:

printf("IP: %s\r\n", ip4addr_ntoa(netif_ip4_addr(&gnetif)));

To będzie pierwszy sukces.


Etap 2 - Link UP/DOWN

Sprawdzenie:

netif_is_link_up(&gnetif)

i na UART:

LINK UP
100 Mbps

lub

LINK DOWN

Przy testerze sieci to jedna z najważniejszych funkcji.


Etap 3 - Ping

LWIP ma gotowe przykłady ICMP Echo.

Najpierw:

192.168.1.1

(brama)

potem:

8.8.8.8

Wyświetlasz:

Reply 1: 4 ms
Reply 2: 3 ms
Reply 3: 4 ms

W tym momencie masz już działający tester.


Etap 4 - OLED

Dopiero teraz podłączyłbym np.:

  • SSD1306 128x64 I2C

i wyświetlał:

IP: 192.168.1.150

LINK: UP

PING:
8.8.8.8
23 ms

Nie trzeba jeszcze robić menu.


Etap 5 - Przyciski

3 przyciski wystarczą:

UP
DOWN
OK

Menu:

> DHCP
  STATIC
  PING
  INFO

Etap 6 - Static IP

Ustawianie:

IP
MASK
GATEWAY
DNS

i zapis do Flash.


Etap 7 - Bateria

Dopiero gdy wszystko działa.

Najprościej:

  • ogniwo 18650
  • TP4056
  • przetwornica 3.3V

Możesz wtedy mierzyć napięcie baterii ADC-em:

Battery: 3.92V

Dodatkowy pomysł

Ponieważ interesujesz się LibreNMS i monitoringiem, taki tester mógłby wysyłać własne dane przez SNMP:

Battery = 3.92V
Ping = 12 ms
Link = UP

i byłby widoczny jako urządzenie w LibreNMS. To już byłby bardzo ciekawy projekt łączący STM32, Ethernet, SNMP i monitoring sieci.