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.