Compare commits
5 Commits
56a58fca79
...
9faf03daf0
| Author | SHA1 | Date | |
|---|---|---|---|
| 9faf03daf0 | |||
| 7dd9ed7d0f | |||
| 17e2480102 | |||
| 22a02d1d66 | |||
| 2699d85193 |
@@ -1,6 +1,6 @@
|
|||||||
# The following lines of boilerplate have to be in your project's
|
# The following lines of boilerplate have to be in your project's
|
||||||
# CMakeLists in this exact order for cmake to work correctly
|
# CMakeLists in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(hello-world)
|
project(hello_world)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
idf_component_register(SRCS "hello_world_main.c"
|
idf_component_register(SRCS "main.c" "font.c" "display.c" "text.c" "wlan.c"
|
||||||
INCLUDE_DIRS "")
|
INCLUDE_DIRS "")
|
||||||
67
main/Kconfig.projbuild
Normal file
67
main/Kconfig.projbuild
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
menu "WiFi Credentials"
|
||||||
|
|
||||||
|
config ESP_WIFI_SSID
|
||||||
|
string "WiFi SSID"
|
||||||
|
default "myssid"
|
||||||
|
help
|
||||||
|
SSID (network name) for the example to connect to.
|
||||||
|
|
||||||
|
config ESP_WIFI_PASSWORD
|
||||||
|
string "WiFi Password"
|
||||||
|
default "mypassword"
|
||||||
|
help
|
||||||
|
WiFi password (WPA or WPA2) for the example to use.
|
||||||
|
|
||||||
|
choice ESP_WIFI_SAE_MODE
|
||||||
|
prompt "WPA3 SAE mode selection"
|
||||||
|
default ESP_WPA3_SAE_PWE_BOTH
|
||||||
|
help
|
||||||
|
Select mode for SAE as Hunt and Peck, H2E or both.
|
||||||
|
config ESP_WPA3_SAE_PWE_HUNT_AND_PECK
|
||||||
|
bool "HUNT AND PECK"
|
||||||
|
config ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT
|
||||||
|
bool "H2E"
|
||||||
|
config ESP_WPA3_SAE_PWE_BOTH
|
||||||
|
bool "BOTH"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ESP_WIFI_PW_ID
|
||||||
|
string "PASSWORD IDENTIFIER"
|
||||||
|
depends on ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT|| ESP_WPA3_SAE_PWE_BOTH
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
password identifier for SAE H2E
|
||||||
|
|
||||||
|
config ESP_MAXIMUM_RETRY
|
||||||
|
int "Maximum retry"
|
||||||
|
default 5
|
||||||
|
help
|
||||||
|
Set the Maximum retry to avoid station reconnecting to the AP unlimited when the AP is really inexistent.
|
||||||
|
|
||||||
|
choice ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD
|
||||||
|
prompt "WiFi Scan auth mode threshold"
|
||||||
|
default ESP_WIFI_AUTH_WPA2_PSK
|
||||||
|
help
|
||||||
|
The weakest authmode to accept in the scan mode.
|
||||||
|
This value defaults to ESP_WIFI_AUTH_WPA2_PSK incase password is present and ESP_WIFI_AUTH_OPEN is used.
|
||||||
|
Please select ESP_WIFI_AUTH_WEP/ESP_WIFI_AUTH_WPA_PSK incase AP is operating in WEP/WPA mode.
|
||||||
|
|
||||||
|
config ESP_WIFI_AUTH_OPEN
|
||||||
|
bool "OPEN"
|
||||||
|
config ESP_WIFI_AUTH_WEP
|
||||||
|
bool "WEP"
|
||||||
|
config ESP_WIFI_AUTH_WPA_PSK
|
||||||
|
bool "WPA PSK"
|
||||||
|
config ESP_WIFI_AUTH_WPA2_PSK
|
||||||
|
bool "WPA2 PSK"
|
||||||
|
config ESP_WIFI_AUTH_WPA_WPA2_PSK
|
||||||
|
bool "WPA/WPA2 PSK"
|
||||||
|
config ESP_WIFI_AUTH_WPA3_PSK
|
||||||
|
bool "WPA3 PSK"
|
||||||
|
config ESP_WIFI_AUTH_WPA2_WPA3_PSK
|
||||||
|
bool "WPA2/WPA3 PSK"
|
||||||
|
config ESP_WIFI_AUTH_WAPI_PSK
|
||||||
|
bool "WAPI PSK"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
endmenu
|
||||||
@@ -59,7 +59,7 @@ void display_init(){
|
|||||||
gpio_set_level(GPIO_OE, 0);
|
gpio_set_level(GPIO_OE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_cycle(){
|
void display_cycle(void* arg){
|
||||||
static uint8_t line = 0;
|
static uint8_t line = 0;
|
||||||
|
|
||||||
for(uint8_t i=0;i<128;i++){
|
for(uint8_t i=0;i<128;i++){
|
||||||
|
|||||||
@@ -31,6 +31,6 @@ void write_address(uint8_t addr);
|
|||||||
void latch(void);
|
void latch(void);
|
||||||
void clock(void);
|
void clock(void);
|
||||||
void display_init(void);
|
void display_init(void);
|
||||||
void display_cycle(void);
|
void display_cycle(void* arg);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ const uint8_t font[96][7] = {
|
|||||||
{0x7c,0x44,0x44,0x6c,0x00,0x00,0x00}, // c
|
{0x7c,0x44,0x44,0x6c,0x00,0x00,0x00}, // c
|
||||||
{0x7c,0x44,0x44,0x7f,0x00,0x00,0x00}, // d
|
{0x7c,0x44,0x44,0x7f,0x00,0x00,0x00}, // d
|
||||||
{0x7c,0x54,0x54,0x5c,0x00,0x00,0x00}, // e
|
{0x7c,0x54,0x54,0x5c,0x00,0x00,0x00}, // e
|
||||||
{0x7f,0x05,0x05,0x01,0x00,0x00,0x00}, // f
|
{0x04,0x7e,0x05,0x01,0x00,0x00,0x00}, // f
|
||||||
{0xbc,0xa4,0xa4,0xfc,0x00,0x00,0x00}, // g
|
{0xbc,0xa4,0xa4,0xfc,0x00,0x00,0x00}, // g
|
||||||
{0x7f,0x04,0x04,0x7c,0x00,0x00,0x00}, // h
|
{0x7f,0x04,0x04,0x7c,0x00,0x00,0x00}, // h
|
||||||
{0x7d,0x00,0x00,0x00,0x00,0x00,0x00}, // i
|
{0x7d,0x00,0x00,0x00,0x00,0x00,0x00}, // i
|
||||||
|
|||||||
29
main/main.c
29
main/main.c
@@ -11,12 +11,12 @@
|
|||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "esp_spi_flash.h"
|
#include "nvs_flash.h"
|
||||||
|
#include "esp_timer.h"
|
||||||
#include "driver/gpio.h"
|
|
||||||
|
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "text.h"
|
#include "text.h"
|
||||||
|
#include "wlan.h"
|
||||||
|
|
||||||
#ifdef CONFIG_IDF_TARGET_ESP32
|
#ifdef CONFIG_IDF_TARGET_ESP32
|
||||||
#define CHIP_NAME "ESP32"
|
#define CHIP_NAME "ESP32"
|
||||||
@@ -26,14 +26,33 @@
|
|||||||
#define CHIP_NAME "ESP32-S2 Beta"
|
#define CHIP_NAME "ESP32-S2 Beta"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const esp_timer_create_args_t periodic_timer_args = {
|
||||||
|
.callback = &display_cycle,
|
||||||
|
};
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
{
|
{
|
||||||
printf("Hello world!\n");
|
printf("Hello world!\n");
|
||||||
display_init();
|
display_init();
|
||||||
|
|
||||||
put_line(fb, 2, "429 Amalienplatz", 1, 1);
|
esp_timer_handle_t periodic_timer;
|
||||||
|
ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer));
|
||||||
|
ESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, 500));
|
||||||
|
|
||||||
|
put_line(fb, 1, "MauMau", 1, 1);
|
||||||
|
|
||||||
|
//Initialize WiFi
|
||||||
|
esp_err_t ret = nvs_flash_init();
|
||||||
|
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
||||||
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
||||||
|
ret = nvs_flash_init();
|
||||||
|
}
|
||||||
|
ESP_ERROR_CHECK(ret);
|
||||||
|
wifi_init_sta();
|
||||||
|
|
||||||
|
put_line(fb, 2, "wifi", 1, 1);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
display_cycle();
|
vTaskDelay(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
105
main/wlan.c
Normal file
105
main/wlan.c
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
#include "sdkconfig.h"
|
||||||
|
#include "esp_system.h"
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
#include "esp_event.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
|
||||||
|
static const char *TAG = "wifi station";
|
||||||
|
|
||||||
|
/* The event group allows multiple bits for each event, but we only care about two events:
|
||||||
|
* - we are connected to the AP with an IP
|
||||||
|
* - we failed to connect after the maximum amount of retries */
|
||||||
|
#define WIFI_CONNECTED_BIT BIT0
|
||||||
|
#define WIFI_FAIL_BIT BIT1
|
||||||
|
|
||||||
|
/* FreeRTOS event group to signal when we are connected*/
|
||||||
|
static EventGroupHandle_t s_wifi_event_group;
|
||||||
|
static int s_retry_num = 0;
|
||||||
|
static void event_handler(void* arg, esp_event_base_t event_base,
|
||||||
|
int32_t event_id, void* event_data)
|
||||||
|
{
|
||||||
|
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
|
||||||
|
esp_wifi_connect();
|
||||||
|
} else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
|
||||||
|
if (s_retry_num < CONFIG_ESP_MAXIMUM_RETRY) {
|
||||||
|
esp_wifi_connect();
|
||||||
|
s_retry_num++;
|
||||||
|
ESP_LOGI(TAG, "retry to connect to the AP");
|
||||||
|
} else {
|
||||||
|
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
||||||
|
}
|
||||||
|
ESP_LOGI(TAG,"connect to the AP fail");
|
||||||
|
} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
|
||||||
|
ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
|
||||||
|
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
|
||||||
|
s_retry_num = 0;
|
||||||
|
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wifi_init_sta(void)
|
||||||
|
{
|
||||||
|
s_wifi_event_group = xEventGroupCreate();
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(esp_netif_init());
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
esp_netif_create_default_wifi_sta();
|
||||||
|
|
||||||
|
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
||||||
|
|
||||||
|
esp_event_handler_instance_t instance_any_id;
|
||||||
|
esp_event_handler_instance_t instance_got_ip;
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
|
||||||
|
ESP_EVENT_ANY_ID,
|
||||||
|
&event_handler,
|
||||||
|
NULL,
|
||||||
|
&instance_any_id));
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT,
|
||||||
|
IP_EVENT_STA_GOT_IP,
|
||||||
|
&event_handler,
|
||||||
|
NULL,
|
||||||
|
&instance_got_ip));
|
||||||
|
|
||||||
|
wifi_config_t wifi_config = {
|
||||||
|
.sta = {
|
||||||
|
.ssid = CONFIG_ESP_WIFI_SSID,
|
||||||
|
.password = CONFIG_ESP_WIFI_PASSWORD,
|
||||||
|
///* Authmode threshold resets to WPA2 as default if password matches WPA2 standards (pasword len => 8).
|
||||||
|
// * If you want to connect the device to deprecated WEP/WPA networks, Please set the threshold value
|
||||||
|
// * to WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK and set the password with length and format matching to
|
||||||
|
// * WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK standards.
|
||||||
|
// */
|
||||||
|
//.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
|
||||||
|
//.sae_pwe_h2e = ESP_WIFI_SAE_MODE,
|
||||||
|
//.sae_h2e_identifier = EXAMPLE_H2E_IDENTIFIER,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
|
||||||
|
/* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
|
||||||
|
* number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group,
|
||||||
|
WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,
|
||||||
|
pdFALSE,
|
||||||
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
|
||||||
|
/* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
|
||||||
|
* happened. */
|
||||||
|
if (bits & WIFI_CONNECTED_BIT) {
|
||||||
|
ESP_LOGI(TAG, "connected to ap SSID:%s password:%s",
|
||||||
|
CONFIG_ESP_WIFI_SSID, CONFIG_ESP_WIFI_PASSWORD);
|
||||||
|
} else if (bits & WIFI_FAIL_BIT) {
|
||||||
|
ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s",
|
||||||
|
CONFIG_ESP_WIFI_SSID, CONFIG_ESP_WIFI_PASSWORD);
|
||||||
|
} else {
|
||||||
|
ESP_LOGE(TAG, "UNEXPECTED EVENT");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
1
main/wlan.h
Normal file
1
main/wlan.h
Normal file
@@ -0,0 +1 @@
|
|||||||
|
void wifi_init_sta(void);
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
CONFIG_APP_BUILD_TYPE_ELF_RAM=y
|
|
||||||
CONFIG_VFS_SUPPORT_TERMIOS=
|
|
||||||
CONFIG_NEWLIB_NANO_FORMAT=y
|
|
||||||
CONFIG_ESP32_PANIC_PRINT_HALT=y
|
|
||||||
CONFIG_ESP32_DEBUG_STUBS_ENABLE=
|
|
||||||
CONFIG_ESP_ERR_TO_NAME_LOOKUP=
|
|
||||||
|
|||||||
1501
sdkconfig.old
1501
sdkconfig.old
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user