feat: initial

This commit is contained in:
2025-11-19 08:19:30 +03:00
parent 8d994e877c
commit 0f36507765
46 changed files with 29325 additions and 2 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
.vscode
.DS_Store
build
sdkconfig.old

9
.gitmodules vendored Normal file
View File

@@ -0,0 +1,9 @@
[submodule "components/zh_pcf8574"]
path = components/zh_pcf8574
url = http://git.zh.com.ru/esp_components/zh_pcf8574
[submodule "components/zh_vector"]
path = components/zh_vector
url = http://git.zh.com.ru/esp_components/zh_vector
[submodule "components/zh_ota_server"]
path = components/zh_ota_server
url = http://git.zh.com.ru/esp_components/zh_ota_server

3
CMakeLists.txt Normal file
View File

@@ -0,0 +1,3 @@
cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(ate0004)

View File

@@ -1,3 +1,15 @@
# ate0004.000.000
# ATE0004
Honeywell Retractable Landing Light CMM 33-42-07 P/N 45-0351-X Motor Test Box.
Honeywell Retractable Landing Light CMM 33-42-07 P/N 45-0351-X Motor Test Box.
## Build and flash
Run the following command to firmware build and flash module:
```text
cd your_projects_folder
git clone --recurse-submodules http://git.zh.com.ru/aerotech/ate0004
cd ate0004
idf.py build
idf.py flash
```

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
components/zh_pcf8574 Submodule

Submodule components/zh_pcf8574 added at 157aa7f49b

1
components/zh_vector Submodule

Submodule components/zh_vector added at b487617d3a

1
main/CMakeLists.txt Normal file
View File

@@ -0,0 +1 @@
idf_component_register(SRCS "ate0004.c" INCLUDE_DIRS "" REQUIRES zh_pcf8574 esp_wifi nvs_flash zh_ota_server)

175
main/ate0004.c Normal file
View File

@@ -0,0 +1,175 @@
#include "ate0004.h"
static i2c_master_bus_handle_t i2c_bus_handle = NULL;
static httpd_handle_t webserver_handle = NULL;
static zh_pcf8574_handle_t button_handle = {0};
static zh_pcf8574_handle_t led_handle = {0};
static zh_pcf8574_handle_t relay_handle = {0};
static bool is_ts = true;
static bool is_ret = false;
static bool is_ext = false;
static void zh_wifi_softap_init(void);
static void zh_webserver_init(void);
static void zh_gpio_init(void);
static void zh_io_expander_init(void);
static void zh_pcf8574_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);
void app_main(void)
{
nvs_flash_init();
esp_event_loop_create_default();
zh_wifi_softap_init();
zh_webserver_init();
zh_gpio_init();
gpio_set_level(TRIAC_GPIO, LOW);
zh_io_expander_init();
zh_pcf8574_write_gpio(&led_handle, TS_LED_GREEN, LED_ON);
zh_pcf8574_write_gpio(&led_handle, RET_LED_BLUE, LED_ON);
zh_pcf8574_write_gpio(&led_handle, EXT_LED_BLUE, LED_ON);
}
static void zh_wifi_softap_init(void)
{
esp_netif_init();
esp_netif_create_default_wifi_ap();
wifi_init_config_t wifi_config = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&wifi_config);
wifi_config_t ap_config = {
.ap = {
.ssid = WIFI_SSID,
.password = WIFI_PASS,
.max_connection = 4,
.authmode = WIFI_AUTH_WPA2_PSK,
},
};
esp_wifi_set_mode(WIFI_MODE_AP);
esp_wifi_set_config(WIFI_IF_AP, &ap_config);
esp_wifi_start();
}
static void zh_webserver_init(void)
{
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
httpd_start(&webserver_handle, &config);
zh_ota_server_init(webserver_handle);
}
static void zh_gpio_init(void)
{
gpio_config_t triac_pin_config = {
.intr_type = GPIO_INTR_DISABLE,
.mode = GPIO_MODE_OUTPUT,
.pin_bit_mask = (1ULL << TRIAC_GPIO),
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.pull_up_en = GPIO_PULLUP_DISABLE,
};
gpio_config(&triac_pin_config);
}
static void zh_io_expander_init(void)
{
i2c_master_bus_config_t i2c_bus_config = {
.clk_source = I2C_CLK_SRC_DEFAULT,
.scl_io_num = GPIO_NUM_22,
.sda_io_num = GPIO_NUM_21,
.glitch_ignore_cnt = 7,
};
i2c_new_master_bus(&i2c_bus_config, &i2c_bus_handle);
esp_event_handler_instance_register(ZH_PCF8574, ESP_EVENT_ANY_ID, &zh_pcf8574_event_handler, NULL, NULL);
zh_pcf8574_init_config_t config = ZH_PCF8574_INIT_CONFIG_DEFAULT();
config.i2c_handle = i2c_bus_handle;
config.i2c_address = LED_I2C_ADDRESS;
zh_pcf8574_init(&config, &led_handle);
config.i2c_address = RELAY_I2C_ADDRESS;
zh_pcf8574_init(&config, &relay_handle);
config.i2c_address = BUTTON_I2C_ADDRESS;
config.p0_gpio_work_mode = true;
config.p1_gpio_work_mode = true;
config.p2_gpio_work_mode = true;
config.interrupt_gpio = GPIO_NUM_17;
zh_pcf8574_init(&config, &button_handle);
}
static void zh_pcf8574_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
{
zh_pcf8574_event_on_isr_t *event = event_data;
switch (event->gpio_number)
{
case TS_BUTTON:
if (event->gpio_level == LOW && is_ret == false && is_ext == false)
{
if (is_ts == true)
{
zh_pcf8574_write_gpio(&led_handle, TS_LED_RED, LED_ON);
zh_pcf8574_write_gpio(&led_handle, TS_LED_GREEN, LED_OFF);
zh_pcf8574_write_gpio(&relay_handle, TS_RELAY, RELAY_ON);
is_ts = false;
}
else
{
zh_pcf8574_write_gpio(&led_handle, TS_LED_RED, LED_OFF);
zh_pcf8574_write_gpio(&led_handle, TS_LED_GREEN, LED_ON);
zh_pcf8574_write_gpio(&relay_handle, TS_RELAY, RELAY_OFF);
is_ts = true;
}
}
break;
case RET_BUTTON:
if (is_ext == true)
{
break;
}
if (event->gpio_level == LOW)
{
is_ret = true;
zh_pcf8574_write_gpio(&led_handle, RET_LED_BLUE, LED_OFF);
zh_pcf8574_write_gpio(&led_handle, RET_LED_GREEN, LED_ON);
zh_pcf8574_write_gpio(&relay_handle, RET_RELAY, RELAY_ON);
zh_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_ON);
vTaskDelay(20 / portTICK_PERIOD_MS);
gpio_set_level(TRIAC_GPIO, HIGH);
}
else
{
gpio_set_level(TRIAC_GPIO, LOW);
vTaskDelay(1 / portTICK_PERIOD_MS);
zh_pcf8574_write_gpio(&led_handle, RET_LED_BLUE, LED_ON);
zh_pcf8574_write_gpio(&led_handle, RET_LED_GREEN, LED_OFF);
zh_pcf8574_write_gpio(&relay_handle, RET_RELAY, RELAY_OFF);
zh_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_OFF);
is_ret = false;
}
break;
case EXT_BUTTON:
if (is_ret == true)
{
break;
}
if (event->gpio_level == LOW)
{
is_ext = true;
zh_pcf8574_write_gpio(&led_handle, EXT_LED_BLUE, LED_OFF);
zh_pcf8574_write_gpio(&led_handle, EXT_LED_GREEN, LED_ON);
zh_pcf8574_write_gpio(&relay_handle, EXT_RELAY, RELAY_ON);
zh_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_ON);
vTaskDelay(20 / portTICK_PERIOD_MS);
gpio_set_level(TRIAC_GPIO, HIGH);
}
else
{
gpio_set_level(TRIAC_GPIO, LOW);
vTaskDelay(1 / portTICK_PERIOD_MS);
zh_pcf8574_write_gpio(&led_handle, EXT_LED_BLUE, LED_ON);
zh_pcf8574_write_gpio(&led_handle, EXT_LED_GREEN, LED_OFF);
zh_pcf8574_write_gpio(&relay_handle, EXT_RELAY, RELAY_OFF);
zh_pcf8574_write_gpio(&relay_handle, GROUND_RELAY, RELAY_OFF);
is_ext = false;
}
break;
default:
break;
}
}

51
main/ate0004.h Normal file
View File

@@ -0,0 +1,51 @@
#pragma once
#include "zh_pcf8574.h"
#include "nvs_flash.h"
#include "esp_wifi.h"
#include "zh_ota_server.h"
#define HIGH true
#define LOW false
#define LED_OFF LOW
#define LED_ON HIGH
#define RELAY_OFF LOW
#define RELAY_ON HIGH
#define TRIAC_GPIO GPIO_NUM_4
#define WIFI_SSID "ATE0004"
#define WIFI_PASS "repairlab"
#define WIFI_CHANNEL 1
#define MAX_STA_CONNECTION 4
#define BUTTON_I2C_ADDRESS 0x22 /*!< U7. */
#define LED_I2C_ADDRESS 0x21 /*!< U6. */
#define RELAY_I2C_ADDRESS 0x20 /*!< U5. */
#define GROUND_RELAY 0x00 /*!< Relay K1. RL1 pin on U5. */
#define TS_RELAY 0x03 /*!< Relay K4. RL4 pin on U5. */
#define RET_RELAY 0x02 /*!< Relay K3. RL3 pin on U5. */
#define EXT_RELAY 0x01 /*!< Relay K2. RL2 pin on U5. */
#define TS_BUTTON 0x00 /*!< Connector BT1. B1-0 on U7. */
#define RET_BUTTON 0x01 /*!< Connector BT2. B2-1 on U7. */
#define EXT_BUTTON 0x02 /*!< Connector BT3. B3-2 on U7. */
#define TS_LED_RED 0x00 /*!< Connector LE1. 2 PIN. L1-0 pin on U6. */
#define TS_LED_GREEN 0x01 /*!< Connector LE1. 1 PIN. L1-1 pin on U6. */
#define RET_LED_BLUE 0x02 /*!< Connector LE2. 2 PIN. L2-2 pin on U6. */
#define RET_LED_GREEN 0x03 /*!< Connector LE2. 1 PIN. L2-3 pin on U6. */
#define EXT_LED_BLUE 0x04 /*!< Connector LE3. 2 PIN. L3-4 pin on U6. */
#define EXT_LED_GREEN 0x05 /*!< Connector LE3. 1 PIN. L3-5 pin on U6. */
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef __cplusplus
}
#endif

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

2252
sdkconfig Normal file

File diff suppressed because it is too large Load Diff

1
version.txt Normal file
View File

@@ -0,0 +1 @@
1.0.0