Advertisement
SergoM73

Untitled

Feb 23rd, 2025
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "freertos/FreeRTOS.h"
  5. #include "freertos/task.h"
  6. #include "esp_system.h"
  7. #include "esp_wifi.h"
  8. #include "esp_event.h"
  9. #include "esp_log.h"
  10. #include "esp_netif.h"
  11. #include "nvs_flash.h"
  12.  
  13. #include "ssd1306.h"
  14. #define WIFI_SSID "XXXXXXX"
  15. #define WIFI_PASS "XXXXXXX"
  16. #define tag "SSD1306"
  17. #define TAG "WIFI_DISPLAY"
  18.  
  19. SSD1306_t dev;
  20.  
  21. static esp_ip4_addr_t ip_addr;
  22. static void wifi_init_sta(void);
  23. static void display_init(void);
  24. static void display_ip(void);
  25. static void event_handler(void* arg, esp_event_base_t event_base,
  26.                           int32_t event_id, void* event_data)
  27. {
  28.     if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
  29.         esp_wifi_connect();
  30.     } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
  31.         esp_wifi_connect();
  32.     } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
  33.         ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
  34.         ip_addr = event->ip_info.ip;
  35.         ESP_LOGI(TAG, "Got IP: " IPSTR, IP2STR(&ip_addr));
  36.         display_ip();
  37.     }
  38. }
  39.  
  40. void app_main(void)
  41. {
  42.     display_init();
  43.     wifi_init_sta();
  44. }
  45.  
  46. static void display_init(void)
  47. {
  48. ESP_LOGI(tag,"Initing display");
  49.     ESP_LOGI(tag, "INTERFACE is i2c");
  50.     ESP_LOGI(tag, "CONFIG_SDA_GPIO=%d",CONFIG_SDA_GPIO);
  51.     ESP_LOGI(tag, "CONFIG_SCL_GPIO=%d",CONFIG_SCL_GPIO);
  52.     ESP_LOGI(tag, "CONFIG_RESET_GPIO=%d",CONFIG_RESET_GPIO);
  53.     i2c_master_init(&dev, CONFIG_SDA_GPIO, CONFIG_SCL_GPIO, CONFIG_RESET_GPIO);
  54. #if CONFIG_FLIP
  55.     dev._flip = true;
  56.     ESP_LOGW(tag, "Flip upside down");
  57. #endif
  58.  
  59.     ESP_LOGI(tag, "Panel is 128x64");
  60.     ssd1306_init(&dev, 128, 64);
  61.    
  62.     ssd1306_clear_screen(&dev, false);
  63.     ssd1306_display_text(&dev, 0, "Connecting WiFi...", 17, false);
  64. ESP_LOGI(TAG,"Connecting WiFi...");
  65.     }
  66.  
  67. static void display_ip(void)
  68. {
  69.     char ip_str[16];
  70.     snprintf(ip_str, sizeof(ip_str), IPSTR, IP2STR(&ip_addr));
  71.     ssd1306_clear_screen(&dev, false);
  72.     ssd1306_display_text(&dev, 0, "WiFi Connected!", 14, false);
  73.     ssd1306_display_text(&dev, 2, "IP:", 3, false);
  74.     ssd1306_display_text(&dev, 3, ip_str, strlen(ip_str), false);
  75.  
  76. }
  77.  
  78. static void wifi_init_sta(void)
  79. {
  80.     ESP_ERROR_CHECK(esp_netif_init());
  81.     ESP_ERROR_CHECK(esp_event_loop_create_default());
  82.     esp_netif_create_default_wifi_sta();
  83.  
  84.     wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  85.     ESP_ERROR_CHECK(esp_wifi_init(&cfg));
  86.     esp_event_handler_instance_t instance_any_id;
  87.     esp_event_handler_instance_t instance_got_ip;
  88.     ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
  89.                                                         ESP_EVENT_ANY_ID,
  90.                                                         &event_handler,
  91.                                                         NULL,
  92.                                                         &instance_any_id));
  93.     ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT,
  94.                                                         IP_EVENT_STA_GOT_IP,
  95.                                                         &event_handler,
  96.                                                         NULL,
  97.                                                         &instance_got_ip));
  98.     wifi_config_t wifi_config = {
  99.         .sta = {
  100.             .ssid = WIFI_SSID,
  101.             .password = WIFI_PASS,
  102.             .threshold.authmode = WIFI_AUTH_WPA2_PSK
  103.         },
  104.     };
  105.     ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
  106.     ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
  107.     ESP_ERROR_CHECK(esp_wifi_start());
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement