Compare commits

...

7 Commits

Author SHA1 Message Date
8a2c0a60d5 add BLE bonding
Some checks failed
ESP-IDF Build / build (esp32, latest) (push) Failing after 46s
ESP-IDF Build / build (esp32, release-v5.4) (push) Failing after 46s
ESP-IDF Build / build (esp32, release-v5.5) (push) Failing after 45s
ESP-IDF Build / build (esp32c3, latest) (push) Failing after 45s
ESP-IDF Build / build (esp32c3, release-v5.4) (push) Failing after 45s
ESP-IDF Build / build (esp32c3, release-v5.5) (push) Failing after 45s
ESP-IDF Build / build (esp32c5, latest) (push) Failing after 45s
ESP-IDF Build / build (esp32c5, release-v5.4) (push) Failing after 45s
ESP-IDF Build / build (esp32c5, release-v5.5) (push) Failing after 45s
ESP-IDF Build / build (esp32c6, latest) (push) Failing after 45s
ESP-IDF Build / build (esp32c6, release-v5.4) (push) Failing after 45s
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Failing after 45s
ESP-IDF Build / build (esp32h2, latest) (push) Failing after 46s
ESP-IDF Build / build (esp32h2, release-v5.4) (push) Failing after 45s
ESP-IDF Build / build (esp32h2, release-v5.5) (push) Failing after 45s
ESP-IDF Build / build (esp32p4, latest) (push) Failing after 45s
ESP-IDF Build / build (esp32p4, release-v5.4) (push) Failing after 45s
ESP-IDF Build / build (esp32p4, release-v5.5) (push) Failing after 52s
ESP-IDF Build / build (esp32s3, latest) (push) Failing after 56s
ESP-IDF Build / build (esp32s3, release-v5.4) (push) Failing after 46s
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Failing after 45s
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-20 20:26:23 +02:00
07f955d949 some tweeks for hardware
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-20 20:25:35 +02:00
b7f47a60c1 more idf versions
Some checks failed
ESP-IDF Build / build (esp32, latest) (push) Failing after 58s
ESP-IDF Build / build (esp32, release-v5.4) (push) Failing after 57s
ESP-IDF Build / build (esp32, release-v5.5) (push) Failing after 56s
ESP-IDF Build / build (esp32c3, latest) (push) Failing after 55s
ESP-IDF Build / build (esp32c3, release-v5.4) (push) Failing after 55s
ESP-IDF Build / build (esp32c3, release-v5.5) (push) Failing after 54s
ESP-IDF Build / build (esp32c5, latest) (push) Failing after 55s
ESP-IDF Build / build (esp32c5, release-v5.4) (push) Failing after 54s
ESP-IDF Build / build (esp32c5, release-v5.5) (push) Failing after 55s
ESP-IDF Build / build (esp32c6, latest) (push) Failing after 59s
ESP-IDF Build / build (esp32c6, release-v5.4) (push) Failing after 54s
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Failing after 55s
ESP-IDF Build / build (esp32h2, latest) (push) Failing after 58s
ESP-IDF Build / build (esp32h2, release-v5.4) (push) Failing after 1m7s
ESP-IDF Build / build (esp32h2, release-v5.5) (push) Failing after 54s
ESP-IDF Build / build (esp32p4, latest) (push) Failing after 54s
ESP-IDF Build / build (esp32p4, release-v5.4) (push) Failing after 55s
ESP-IDF Build / build (esp32p4, release-v5.5) (push) Failing after 56s
ESP-IDF Build / build (esp32s3, latest) (push) Failing after 55s
ESP-IDF Build / build (esp32s3, release-v5.4) (push) Failing after 55s
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Failing after 54s
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-16 21:14:02 +02:00
295004db97 add fail-fast
Some checks failed
ESP-IDF Build / build (esp32, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32c3, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32c3, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32c5, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32c5, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32c6, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32h2, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32h2, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32p4, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32p4, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32s3, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Has been cancelled
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-16 21:12:27 +02:00
c2e38457b9 remove issue templates
Some checks failed
ESP-IDF Build / build (esp32, latest) (push) Failing after 3m22s
ESP-IDF Build / build (esp32, release-v5.5) (push) Failing after 56s
ESP-IDF Build / build (esp32c3, latest) (push) Failing after 56s
ESP-IDF Build / build (esp32c3, release-v5.5) (push) Failing after 56s
ESP-IDF Build / build (esp32c5, latest) (push) Failing after 54s
ESP-IDF Build / build (esp32c5, release-v5.5) (push) Has started running
ESP-IDF Build / build (esp32c6, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32h2, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32h2, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32p4, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32p4, release-v5.5) (push) Has been cancelled
ESP-IDF Build / build (esp32s3, latest) (push) Has been cancelled
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Has been cancelled
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-16 21:04:51 +02:00
520c0c0efd move actions to gitea
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-16 21:04:40 +02:00
21ead32851 new mcu board design
Signed-off-by: Peter Siegmund <mars3142@users.noreply.github.com>
2025-09-16 20:23:52 +02:00
27 changed files with 2082 additions and 2085 deletions

View File

@@ -22,6 +22,7 @@ concurrency:
jobs:
build:
strategy:
fail-fast: true
matrix:
idf_ver: [release-v5.4, release-v5.5, latest]
idf_target:

View File

@@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

2
.gitignore vendored
View File

@@ -6,5 +6,5 @@
**/pcbway_production/
**/*_front.png
**/*_back.png
**/*_schematics.png
**/*_schematics*.png
**/*_board.pdf

View File

@@ -14,7 +14,11 @@ esp_err_t wled_init(void)
led_strip_config_t strip_config = {.strip_gpio_num = CONFIG_WLED_DIN_PIN,
.max_leds = led_matrix.size,
.led_model = LED_MODEL_WS2812,
.color_component_format = LED_STRIP_COLOR_COMPONENT_FMT_GRB,
#if CONFIG_WLED_WITH_WHITE
.color_component_format = LED_STRIP_COLOR_COMPONENT_FMT_GRBW,
#else
.color_component_format = LED_STRIP_COLOR_COMPONENT_FMT_RGB,
#endif
.flags = {
.invert_out = false,
}};

View File

@@ -7,26 +7,21 @@
static const char *TAG = "outdoor";
// Timer resolution (10 bit = 1024 steps)
#define LEDC_RESOLUTION LEDC_TIMER_10_BIT
#define LEDC_RESOLUTION LEDC_TIMER_10_BIT // Timer resolution (10 bit = 1024 steps)
#define MAX_DUTY 1023
// Constant brightness for the "normal state" (approx. 90%)
#define NORMAL_DUTY (MAX_DUTY * 0.9)
#define NORMAL_DUTY (MAX_DUTY * 0.9) // 90% brightness
// Parameters for flickering
#define FLICKER_CHANCE 5 // 5% chance of flickering per cycle
#define FLICKER_CHANCE 2 // 2% chance of flickering per cycle
#define FLICKER_COUNT 8 // Number of brightness changes during a flicker
TaskHandle_t outdoor_task_handle = NULL;
void outdoor_task(void *pvParameters)
{
ESP_LOGI(TAG, "Simulation of a defective light bulb started.");
int led_pin = *(int *)pvParameters;
// 1. LEDC timer configuration
ledc_timer_config_t ledc_timer = {.speed_mode = LEDC_LOW_SPEED_MODE,
.timer_num = LEDC_TIMER_0,
.duty_resolution = LEDC_RESOLUTION,
@@ -34,7 +29,6 @@ void outdoor_task(void *pvParameters)
.clk_cfg = LEDC_AUTO_CLK};
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
// 2. LEDC channel configuration
ledc_channel_config_t ledc_channel = {.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
@@ -44,40 +38,38 @@ void outdoor_task(void *pvParameters)
.hpoint = 0};
ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
// 3. Main loop with flicker logic
while (1)
{
// First, set the LED to its normal brightness
ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, NORMAL_DUTY);
ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
// Random trigger for flickering
uint32_t random_val = esp_random() % 100; // Random number between 0 and 99
uint32_t random_val = esp_random() % 100;
if (random_val < FLICKER_CHANCE)
{
// Start flicker sequence
for (int i = 0; i < FLICKER_COUNT; i++)
{
// Set a random, lower brightness (e.g., 30-70% of normal brightness)
uint32_t flicker_duty = (NORMAL_DUTY * 0.3) + (esp_random() % (uint32_t)(NORMAL_DUTY * 0.4));
ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, flicker_duty);
ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
// Short, random delay for irregular flickering
vTaskDelay(pdMS_TO_TICKS(20 + (esp_random() % 50)));
}
}
// A fixed delay in normal operation
vTaskDelay(pdMS_TO_TICKS(100));
}
}
esp_err_t outdoor_start(void)
{
static const int led_pin = 13;
xTaskCreate(outdoor_task, "outdoor_task", 2048, (void *)&led_pin, 5, &outdoor_task_handle);
ESP_LOGI(TAG, "Simulation of a defective light bulb started.");
static const int led_left_pin = CONFIG_LED_PIN_LEFT;
xTaskCreate(outdoor_task, "outdoor_task_left", 2048, (void *)&led_left_pin, 5, &outdoor_task_handle);
static const int led_right_pin = CONFIG_LED_PIN_RIGHT;
xTaskCreate(outdoor_task, "outdoor_task_right", 2048, (void *)&led_right_pin, 5, &outdoor_task_handle);
return ESP_OK;
}

View File

@@ -3,6 +3,7 @@
typedef enum
{
VALUE_TYPE_STRING,
VALUE_TYPE_INT8,
VALUE_TYPE_INT32,
} persistence_value_type_t;

View File

@@ -10,6 +10,149 @@ static const char *TAG = "persistence";
static nvs_handle_t persistence_handle;
static SemaphoreHandle_t persistence_mutex;
#include "esp_log.h"
#include "nvs.h"
#include "nvs_flash.h"
static const char *nvs_type_to_str(nvs_type_t type)
{
switch (type)
{
case NVS_TYPE_U8:
return "U8";
case NVS_TYPE_I8:
return "I8";
case NVS_TYPE_U16:
return "U16";
case NVS_TYPE_I16:
return "I16";
case NVS_TYPE_U32:
return "U32";
case NVS_TYPE_I32:
return "I32";
case NVS_TYPE_U64:
return "U64";
case NVS_TYPE_I64:
return "I64";
case NVS_TYPE_STR:
return "STR";
case NVS_TYPE_BLOB:
return "BLOB";
case NVS_TYPE_ANY:
return "ANY";
default:
return "UNKNOWN";
}
}
void display_nvs_value(const char *namespace_name, const char *key, nvs_type_t type)
{
nvs_handle_t handle;
esp_err_t err = nvs_open(namespace_name, NVS_READONLY, &handle);
if (err != ESP_OK)
{
return;
}
switch (type)
{
case NVS_TYPE_I8: {
int8_t value;
if (nvs_get_i8(handle, key, &value) == ESP_OK)
{
ESP_LOGI(TAG, " -> Value (I8): %d", value);
}
break;
}
case NVS_TYPE_I32: {
int32_t value;
if (nvs_get_i32(handle, key, &value) == ESP_OK)
{
ESP_LOGI(TAG, " -> Value (I32): %d", value);
}
break;
}
case NVS_TYPE_STR: {
size_t length = 0;
nvs_get_str(handle, key, NULL, &length);
if (length > 0)
{
char *value = malloc(length);
if (nvs_get_str(handle, key, value, &length) == ESP_OK)
{
ESP_LOGI(TAG, " -> Value (STR): %s", value);
}
free(value);
}
break;
}
case NVS_TYPE_BLOB: {
size_t length = 0;
nvs_get_blob(handle, key, NULL, &length);
if (length > 0)
{
ESP_LOGI(TAG, " -> Value (BLOB): %d bytes", length);
// Optional: Erste Bytes als Hex anzeigen
uint8_t *blob = malloc(length);
if (nvs_get_blob(handle, key, blob, &length) == ESP_OK)
{
ESP_LOG_BUFFER_HEX_LEVEL(TAG, blob, MIN(length, 32), ESP_LOG_INFO);
}
free(blob);
}
break;
}
default:
break;
}
nvs_close(handle);
}
static void list_all_nvs_entries(void)
{
ESP_LOGI(TAG, "========== NVS ENTRIES ==========");
nvs_iterator_t it = NULL;
esp_err_t err;
// Iterator für alle Namespaces und Keys erstellen
err = nvs_entry_find(NVS_DEFAULT_PART_NAME, NULL, NVS_TYPE_ANY, &it);
while (err == ESP_OK)
{
nvs_entry_info_t info;
nvs_entry_info(it, &info);
ESP_LOGI(TAG, "Namespace: %-16s | Key: %-16s | Type: %s", info.namespace_name, info.key,
nvs_type_to_str(info.type));
// Optional: Wert anzeigen
display_nvs_value(info.namespace_name, info.key, info.type);
err = nvs_entry_next(&it);
}
nvs_release_iterator(it);
ESP_LOGI(TAG, "==================================");
}
static void check_nvs_stats(void)
{
nvs_stats_t nvs_stats;
esp_err_t err = nvs_get_stats(NULL, &nvs_stats);
if (err == ESP_OK)
{
ESP_LOGI(TAG, "NVS: Used entries = %d, Free entries = %d, Total entries = %d", nvs_stats.used_entries,
nvs_stats.free_entries, nvs_stats.total_entries);
size_t used_kb = (nvs_stats.used_entries * 32) / 1024; // Grobe Schätzung
size_t free_kb = (nvs_stats.free_entries * 32) / 1024;
ESP_LOGI(TAG, "NVS: ~%d KB used, ~%d KB free", used_kb, free_kb);
}
}
void persistence_init(const char *namespace_name)
{
esp_err_t ret = nvs_flash_init();
@@ -20,6 +163,9 @@ void persistence_init(const char *namespace_name)
}
ESP_ERROR_CHECK(ret);
list_all_nvs_entries();
check_nvs_stats();
ESP_ERROR_CHECK(nvs_open(namespace_name, NVS_READWRITE, &persistence_handle));
persistence_mutex = xSemaphoreCreateMutex();
@@ -43,6 +189,10 @@ void persistence_save(persistence_value_type_t value_type, const char *key, cons
err = nvs_set_str(persistence_handle, key, (char *)value);
break;
case VALUE_TYPE_INT8:
err = nvs_set_i8(persistence_handle, key, *(int8_t *)value);
break;
case VALUE_TYPE_INT32:
err = nvs_set_i32(persistence_handle, key, *(int32_t *)value);
break;
@@ -80,6 +230,10 @@ void *persistence_load(persistence_value_type_t value_type, const char *key, voi
err = nvs_get_str(persistence_handle, key, (char *)out, NULL);
break;
case VALUE_TYPE_INT8:
err = nvs_get_i8(persistence_handle, key, (int8_t *)out);
break;
case VALUE_TYPE_INT32:
err = nvs_get_i32(persistence_handle, key, (int32_t *)out);
break;

View File

@@ -1,3 +1,15 @@
#pragma once
#include "host/ble_hs.h"
#include "sdkconfig.h"
typedef struct
{
uint16_t conn_handle;
bool is_connected;
} ble_connection_t;
extern ble_connection_t g_connections[CONFIG_BT_NIMBLE_MAX_CONNECTIONS];
void remote_control_init(void);
bool is_any_device_connected(void);

View File

@@ -14,8 +14,7 @@ extern const ble_uuid128_t gatt_svr_chr_uart_rx_uuid;
// TX Characteristic UUID: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
extern const ble_uuid128_t gatt_svr_chr_uart_tx_uuid;
extern uint16_t conn_handle;
extern uint16_t tx_chr_val_handle;
extern uint16_t tx_chr_val_handle; // This is still needed as it's set once by the stack
int gatt_svr_chr_uart_access(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg);
void send_ble_data(const char *data);

View File

@@ -3,6 +3,7 @@
#include "persistence.h"
static uint8_t g_beacon_enabled = 0;
static int8_t g_led_value = 0;
/// Characteristic Callbacks
int gatt_svr_chr_light_led_access(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt,
@@ -14,13 +15,18 @@ int gatt_svr_chr_light_led_access(uint16_t conn_handle, uint16_t attr_handle, st
os_mbuf_append(ctxt->om, data, strlen(data));
return 0;
}
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR)
{
int8_t led_value = 0;
persistence_load(VALUE_TYPE_INT8, "LED_VALUE", &led_value);
}
return BLE_ATT_ERR_UNLIKELY;
}
int gatt_svr_chr_light_beacon_access(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt,
void *arg)
{
persistence_load(VALUE_TYPE_INT32, "BEACON_ENABLED", &g_beacon_enabled);
if (ctxt->op == BLE_GATT_ACCESS_OP_READ_CHR)
{
return os_mbuf_append(ctxt->om, &g_beacon_enabled, sizeof(g_beacon_enabled)) == 0
@@ -29,6 +35,9 @@ int gatt_svr_chr_light_beacon_access(uint16_t conn_handle, uint16_t attr_handle,
}
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR)
{
int8_t beacon_enabled = 0;
persistence_load(VALUE_TYPE_INT8, "BEACON_ENABLED", &beacon_enabled);
// it has to be 1 Byte (0 or 1)
if (OS_MBUF_PKTLEN(ctxt->om) != 1)
{
@@ -56,7 +65,7 @@ int gatt_svr_chr_light_beacon_access(uint16_t conn_handle, uint16_t attr_handle,
{
beacon_stop();
}
persistence_save(VALUE_TYPE_INT32, "BEACON_ENABLED", &g_beacon_enabled);
persistence_save(VALUE_TYPE_INT8, "BEACON_ENABLED", &g_beacon_enabled);
return 0;
}
return BLE_ATT_ERR_UNLIKELY;

View File

@@ -5,6 +5,7 @@
#include "esp_event.h"
#include "esp_log.h"
#include "esp_mac.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "freertos/task.h"
@@ -21,6 +22,8 @@
#include "services/gap/ble_svc_gap.h"
#include "services/gatt/ble_svc_gatt.h"
void ble_store_config_init(void);
static const char *TAG = "remote_control";
static const ble_uuid16_t gatt_svr_svc_device_uuid = BLE_UUID16_INIT(0x180A);
@@ -29,6 +32,29 @@ static const ble_uuid16_t gatt_svr_svc_settings_uuid = BLE_UUID16_INIT(0xA999);
uint8_t ble_addr_type;
ble_connection_t g_connections[CONFIG_BT_NIMBLE_MAX_CONNECTIONS];
static void init_connection_pool()
{
for (int i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++)
{
g_connections[i].conn_handle = BLE_HS_CONN_HANDLE_NONE;
g_connections[i].is_connected = false;
}
}
bool is_any_device_connected(void)
{
for (int i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++)
{
if (g_connections[i].is_connected)
{
return true;
}
}
return false;
}
static void ble_app_advertise(void);
// Descriptors for the Beacon Characteristic
@@ -121,14 +147,16 @@ static const struct ble_gatt_svc_def gatt_svcs[] = {
{
// Beacon Characteristic
.uuid = BLE_UUID16_DECLARE(0xBEA0),
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE,
.flags =
BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ_ENC | BLE_GATT_CHR_F_WRITE_ENC,
.access_cb = gatt_svr_chr_light_beacon_access,
.descriptors = beacon_char_desc,
},
{
// LED Characteristic
.uuid = BLE_UUID16_DECLARE(0xF037),
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE,
.flags =
BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ_ENC | BLE_GATT_CHR_F_WRITE_ENC,
.access_cb = gatt_svr_chr_light_led_access,
.descriptors = led_char_desc,
},
@@ -165,23 +193,174 @@ static const struct ble_gatt_svc_def gatt_svcs[] = {
},
{0}};
inline static void format_addr(char *addr_str, uint8_t addr[])
{
sprintf(addr_str, "%02X:%02X:%02X:%02X:%02X:%02X", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
}
static void print_conn_desc(struct ble_gap_conn_desc *desc)
{
/* Local variables */
char addr_str[18] = {0};
/* Connection handle */
ESP_LOGI(TAG, "connection handle: %d", desc->conn_handle);
/* Local ID address */
format_addr(addr_str, desc->our_id_addr.val);
ESP_LOGI(TAG, "device id address: type=%d, value=%s", desc->our_id_addr.type, addr_str);
/* Peer ID address */
format_addr(addr_str, desc->peer_id_addr.val);
ESP_LOGI(TAG, "peer id address: type=%d, value=%s", desc->peer_id_addr.type, addr_str);
/* Connection info */
ESP_LOGI(TAG,
"conn_itvl=%d, conn_latency=%d, supervision_timeout=%d, "
"encrypted=%d, authenticated=%d, bonded=%d\n",
desc->conn_itvl, desc->conn_latency, desc->supervision_timeout, desc->sec_state.encrypted,
desc->sec_state.authenticated, desc->sec_state.bonded);
}
// BLE event handling
static int ble_gap_event(struct ble_gap_event *event, void *arg)
{
esp_err_t rc;
struct ble_gap_conn_desc desc;
switch (event->type)
{
case BLE_GAP_EVENT_CONNECT:
ESP_LOGI(TAG, "Connection established; status=%d", event->connect.status);
conn_handle = event->connect.conn_handle;
ESP_LOGI(TAG, "Connection handle: %d", conn_handle);
break;
/* A new connection was established or a connection attempt failed. */
ESP_LOGI(TAG, "connection %s; status=%d", event->connect.status == 0 ? "established" : "failed",
event->connect.status);
/* Connection succeeded */
if (event->connect.status == 0)
{
bool found_slot = false;
for (int i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++)
{
if (!g_connections[i].is_connected)
{
g_connections[i].conn_handle = event->connect.conn_handle;
g_connections[i].is_connected = true;
found_slot = true;
ESP_LOGI(TAG, "Connection stored in slot %d", i);
break;
}
}
if (!found_slot)
{
ESP_LOGW(TAG, "No free connection slot available!");
}
/* Check connection handle */
rc = ble_gap_conn_find(event->connect.conn_handle, &desc);
if (rc != 0)
{
}
print_conn_desc(&desc);
/* Try to update connection parameters */
struct ble_gap_upd_params params = {.itvl_min = desc.conn_itvl,
.itvl_max = desc.conn_itvl,
.latency = 3,
.supervision_timeout = desc.supervision_timeout};
rc = ble_gap_update_params(event->connect.conn_handle, &params);
if (rc != 0)
{
ESP_LOGE(TAG, "failed to update connection parameters, error code: %d", rc);
return rc;
}
}
/* Connection failed, restart advertising */
else
{
ble_app_advertise();
}
return rc;
case BLE_GAP_EVENT_DISCONNECT:
ESP_LOGI(TAG, "Disconnected; reason=%d", event->disconnect.reason);
conn_handle = 0;
ble_app_advertise();
for (int i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++)
{
if (g_connections[i].conn_handle == event->disconnect.conn.conn_handle)
{
g_connections[i].is_connected = false;
g_connections[i].conn_handle = BLE_HS_CONN_HANDLE_NONE;
ESP_LOGI(TAG, "Connection from slot %d removed", i);
ble_app_advertise(); // Restart advertising to allow new connections
break;
}
}
break;
case BLE_GAP_EVENT_PASSKEY_ACTION:
ESP_LOGI(TAG, "Passkey action required: %d", event->passkey.params.action);
struct ble_sm_io pkey = {0};
switch (event->passkey.params.action)
{
case BLE_SM_IOACT_DISP:
pkey.action = BLE_SM_IOACT_DISP;
pkey.passkey = CONFIG_BONDING_PASSPHRASE;
ESP_LOGI(TAG, "Displaying passkey: %06d", pkey.passkey);
rc = ble_sm_inject_io(event->passkey.conn_handle, &pkey);
if (rc != 0)
{
ESP_LOGE(TAG, "failed to inject security manager io, error code: %d", rc);
return rc;
}
break;
default:
ESP_LOGE(TAG, "Unknown passkey action: %d", event->passkey.params.action);
return 0;
}
break;
case BLE_GAP_EVENT_ENC_CHANGE:
ESP_LOGI(TAG, "Encryption change event; status=%d", event->enc_change.status);
if (event->enc_change.status != 0)
{
ESP_LOGW(TAG, "Encryption failed with status %d", event->enc_change.status);
rc = ble_gap_conn_find(event->enc_change.conn_handle, &desc);
if (rc == 0)
{
char addr_str[18] = {0};
format_addr(addr_str, desc.peer_id_addr.val);
ESP_LOGI(TAG, "Deleting bond for peer: %s", addr_str);
ble_store_util_delete_peer(&desc.peer_id_addr);
ble_gap_terminate(event->enc_change.conn_handle, BLE_ERR_REM_USER_CONN_TERM);
}
}
else
{
ESP_LOGI(TAG, "Encryption successfully established");
}
break;
case BLE_GAP_EVENT_REPEAT_PAIRING:
ESP_LOGI(TAG, "Repeat pairing requested");
rc = ble_gap_conn_find(event->repeat_pairing.conn_handle, &desc);
if (rc == 0)
{
char addr_str[18] = {0};
format_addr(addr_str, desc.peer_id_addr.val);
ESP_LOGI(TAG, "Deleting old bond for specific peer: %s", addr_str);
ble_store_util_delete_peer(&desc.peer_id_addr);
}
return BLE_GAP_REPEAT_PAIRING_RETRY;
case BLE_GAP_EVENT_ADV_COMPLETE:
ESP_LOGI(TAG, "Advertising complete");
ble_app_advertise();
@@ -254,15 +433,29 @@ static void ble_app_advertise(void)
}
}
// The application
static void ble_app_on_sync(void)
static void on_stack_reset(int reason)
{
/* On reset, print reset reason to console */
ESP_LOGI(TAG, "nimble stack reset, reset reason: %d", reason);
}
static void on_stack_sync(void)
{
esp_err_t ret;
uint8_t ble_addr[6] = {0};
int ret = ble_hs_id_copy_addr(BLE_ADDR_PUBLIC, ble_addr, NULL);
/* Figure out address to use while advertising (no privacy for now) */
ret = ble_hs_id_infer_auto(0, &ble_addr_type);
if (ret != 0)
{
ESP_LOGE(TAG, "error determining address type; rc=%d", ret);
return;
}
ret = ble_hs_id_copy_addr(ble_addr_type, ble_addr, NULL);
if (ret != 0)
{
ESP_LOGE(TAG, "Failed to get BLE MAC address (err: %d)", ret);
return;
}
char formatted_name[32];
@@ -270,26 +463,88 @@ static void ble_app_on_sync(void)
ble_svc_gap_device_name_set(formatted_name);
// Start Advertising
ble_hs_id_infer_auto(0, &ble_addr_type); // Determines the best address type automatically
ble_app_advertise();
}
static esp_err_t gatt_svc_init(void)
{
esp_err_t ret;
ble_svc_gatt_init();
ret = ble_gatts_count_cfg(gatt_svcs);
if (ret != ESP_OK)
{
return ret;
}
ret = ble_gatts_add_svcs(gatt_svcs);
if (ret != ESP_OK)
{
return ret;
}
return ESP_OK;
}
static esp_err_t gap_init(void)
{
ble_svc_gap_init();
return ESP_OK;
}
// The infinite task
static void host_task(void *param)
{
nimble_port_run(); // This function will return only when nimble_port_stop() is executed
}
static void nimble_host_config_init(void)
{
// callbacks
ble_hs_cfg.reset_cb = on_stack_reset;
ble_hs_cfg.sync_cb = on_stack_sync;
ble_hs_cfg.sm_io_cap = BLE_SM_IO_CAP_DISP_ONLY;
ble_hs_cfg.sm_bonding = 1;
ble_hs_cfg.sm_mitm = 1;
ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID;
ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID;
// Initialize BLE store configuration
ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
ble_store_config_init();
}
void remote_control_init(void)
{
nimble_port_init();
ble_svc_gap_init();
ble_svc_gatt_init();
ble_gatts_count_cfg(gatt_svcs);
ble_gatts_add_svcs(gatt_svcs);
esp_err_t ret;
// Callback for synchronization
ble_hs_cfg.sync_cb = ble_app_on_sync;
ret = nimble_port_init();
if (ret != ESP_OK)
{
ESP_LOGE(TAG, "Failed to initialize nimble stack (err: %s)", esp_err_to_name(ret));
return;
}
init_connection_pool();
ret = gap_init();
if (ret != ESP_OK)
{
ESP_LOGE(TAG, "Failed to initialize GAP service (err: %s)", esp_err_to_name(ret));
return;
}
ret = gatt_svc_init();
if (ret != ESP_OK)
{
ESP_LOGE(TAG, "Failed to initialize GATT server (err: %s)", esp_err_to_name(ret));
return;
}
nimble_host_config_init();
nimble_port_freertos_init(host_task); // Start BLE host task

View File

@@ -1,4 +1,7 @@
#include "include/uart_service.h"
#include "esp_log.h"
#include "include/remote_control.h"
#include "sdkconfig.h"
static const char *TAG = "uart_service";
@@ -14,7 +17,6 @@ const ble_uuid128_t gatt_svr_chr_uart_rx_uuid =
const ble_uuid128_t gatt_svr_chr_uart_tx_uuid =
BLE_UUID128_INIT(0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x03, 0x00, 0x40, 0x6E);
uint16_t conn_handle;
uint16_t tx_chr_val_handle;
// Callback function for GATT events (read/write on characteristics)
@@ -51,19 +53,26 @@ int gatt_svr_chr_uart_access(uint16_t conn_handle, uint16_t attr_handle, struct
// Function to send data via the TX characteristic
void send_ble_data(const char *data)
{
if (conn_handle != 0)
{ // Only send when connected
struct os_mbuf *om = ble_hs_mbuf_from_flat(data, strlen(data));
if (om)
ESP_LOGI(TAG, "Preparing to send data: %s", data);
struct os_mbuf *om;
for (int i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++)
{
if (g_connections[i].is_connected)
{
int rc = ble_gatts_notify_custom(conn_handle, tx_chr_val_handle, om);
if (rc == 0)
om = ble_hs_mbuf_from_flat(data, strlen(data));
if (om)
{
ESP_LOGI(TAG, "Sent data: %s", data);
}
else
{
ESP_LOGE(TAG, "Error sending data: %d", rc);
int rc = ble_gatts_notify_custom(g_connections[i].conn_handle, tx_chr_val_handle, om);
if (rc == 0)
{
ESP_LOGI(TAG, "Sent data to conn_handle %d: %s", g_connections[i].conn_handle, data);
}
else if (rc != BLE_HS_ENOTCONN) // Ignore "not connected" errors if a device just disconnected
{
ESP_LOGE(TAG, "Error sending data to conn_handle %d: %d", g_connections[i].conn_handle, rc);
}
}
}
}
@@ -76,7 +85,7 @@ void uart_tx_task(void *param)
while (1)
{
vTaskDelay(pdMS_TO_TICKS(2000));
if (conn_handle != 0)
if (is_any_device_connected())
{
ESP_LOGI(TAG, "Sending data over BLE UART TX");
sprintf(buffer, "Hello World #%d", count++);

View File

@@ -15,4 +15,29 @@ menu "Warnemuende Lighthouse"
int
default 1 if WLED_USE_DMA
default 0 if !WLED_USE_DMA
config WLED_WITH_WHITE
bool "WLED with White Channel"
default y
help
Use a WLED strip with a white channel (e.g. WS2812B RGBW).
config LED_PIN_LEFT
int "LED Left Pin"
default 11
help
The pin of the LED for the left side.
config LED_PIN_RIGHT
int "LED Right Pin"
default 12
help
The pin of the LED for the right side.
config BONDING_PASSPHRASE
int "Bonding Passphrase"
default 123456
help
The passphrase for the BLE bonding.
endmenu

View File

@@ -25,14 +25,6 @@ void app_main(void)
printf("Failed to initialize beacon");
return;
}
/// start beacon service
uint8_t beacon_enabled = 1;
persistence_load(VALUE_TYPE_INT32, "BEACON_ENABLED", &beacon_enabled);
if (beacon_enabled && beacon_start() != ESP_OK)
{
printf("Failed to start beacon");
return;
}
/// start outdoor light service
if (outdoor_start() != ESP_OK)

View File

@@ -1,6 +1,5 @@
# Name , Type , SubType , Offset , Size , Flags
nvs , data , nvs , 0x9000 , 20k ,
otadata , data , ota , 0xe000 , 8k ,
app0 , app , ota_0 , 0x10000 , 1792k ,
app1 , app , ota_1 , , 1792k ,
nvs , data , nvs , 0x9000 , 24k ,
phy_init , data , phy , , 4k ,
factory , app , factory , 0x10000 , 3584K ,
coredump , data , coredump , , 64k ,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 20k 24k
3 otadata phy_init data ota phy 0xe000 8k 4k
4 app0 factory app ota_0 factory 0x10000 1792k 3584K
app1 app ota_1 1792k
5 coredump data coredump 64k

View File

@@ -3,10 +3,10 @@ CONFIG_BT_ENABLED=y
CONFIG_BT_NIMBLE_ENABLED=y
# NimBLE Options
CONFIG_BT_NIMBLE_SECURITY_ENABLE=n
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="lighthouse"
CONFIG_BT_NIMBLE_SECURITY_ENABLE=y
CONFIG_BT_NIMBLE_NVS_PERSIST=y
CONFIG_BT_NIMBLE_SMP_ID_RESET=y
CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y
# Flash Size
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y

View File

@@ -725,13 +725,12 @@
)
)
)
(pad "1" thru_hole roundrect
(pad "1" thru_hole circle
(at 0 0)
(size 1.6 1.6)
(drill 0.6)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(roundrect_rratio 0.15625)
(net 7 "Net-(J4-Pad1)")
(pinfunction "1")
(pintype "passive")
@@ -869,13 +868,12 @@
)
)
)
(pad "1" thru_hole roundrect
(pad "1" thru_hole circle
(at 0 0)
(size 1.6 1.6)
(drill 0.6)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(roundrect_rratio 0.15625)
(net 8 "Net-(J5-Pad1)")
(pinfunction "1")
(pintype "passive")
@@ -1732,6 +1730,32 @@
)
)
)
(property "MPN" "1212"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "ddec7a54-c291-4fc6-9971-2b78203f0511")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "LCSC" "511-STM32F405RGT6"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "5a6552f6-f162-42ba-994d-a5bce00185dd")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property ki_fp_filters "LED*WS2812*PLCC*5.0x5.0mm*P3.2mm*")
(path "/483ce52f-60c4-48a2-8bf7-9330166e3f00")
(sheetname "/")
@@ -3173,13 +3197,14 @@
(xy 92.539505 60.702697) (xy 92.539506 60.70269) (xy 92.549999 60.599986) (xy 92.55 60.599973) (xy 92.55 60.25)
(xy 91.5 60.25) (xy 91.5 61.299999) (xy 90.999999 61.299999) (xy 91 61.299998) (xy 91 60.25) (xy 89.950001 60.25)
(xy 89.950001 60.599986) (xy 88.520606 60.599986) (xy 88.505219 60.32599) (xy 88.505024 60.319037)
(xy 88.505024 59.680962) (xy 88.505219 59.674009) (xy 88.5245 59.330668) (xy 88.540997 59.036914)
(xy 88.541581 59.029997) (xy 88.613025 58.395915) (xy 88.613988 58.389088) (xy 88.720879 57.759974)
(xy 88.722234 57.753166) (xy 88.864225 57.13106) (xy 88.865946 57.124388) (xy 89.002619 56.649983)
(xy 89.9495 56.649983) (xy 89.9495 57.850001) (xy 89.949501 57.850018) (xy 89.96 57.952796) (xy 89.960001 57.952799)
(xy 89.998393 58.068656) (xy 90.015186 58.119334) (xy 90.107288 58.268656) (xy 90.231344 58.392712)
(xy 90.380666 58.484814) (xy 90.449302 58.507557) (xy 90.506746 58.54733) (xy 90.533569 58.611845)
(xy 90.521254 58.680621) (xy 90.473711 58.731821) (xy 90.449301 58.742969) (xy 90.38088 58.765641)
(xy 88.505024 59.680962) (xy 88.505219 59.674009) (xy 88.520635 59.3995) (xy 88.540997 59.036914)
(xy 88.541581 59.029997) (xy 88.544056 59.008034) (xy 88.613025 58.395915) (xy 88.613988 58.389088)
(xy 88.720879 57.759974) (xy 88.722234 57.753166) (xy 88.860439 57.147648) (xy 89.9495 57.147648)
(xy 89.9495 57.352351) (xy 89.981522 57.554534) (xy 90.044781 57.749223) (xy 90.088924 57.835857)
(xy 90.128878 57.914271) (xy 90.137715 57.931613) (xy 90.258028 58.097213) (xy 90.402786 58.241971)
(xy 90.534522 58.337681) (xy 90.56839 58.362287) (xy 90.750781 58.45522) (xy 90.759548 58.458068)
(xy 90.817224 58.497501) (xy 90.844426 58.561858) (xy 90.832516 58.630705) (xy 90.785275 58.682184)
(xy 90.721237 58.7) (xy 90.650029 58.7) (xy 90.650012 58.700001) (xy 90.547302 58.710494) (xy 90.38088 58.765641)
(xy 90.380875 58.765643) (xy 90.231654 58.857684) (xy 90.107684 58.981654) (xy 90.015643 59.130875)
(xy 90.015641 59.13088) (xy 89.960494 59.297302) (xy 89.960493 59.297309) (xy 89.95 59.400013) (xy 89.95 59.75)
(xy 91.083012 59.75) (xy 91.065795 59.75994) (xy 91.00994 59.815795) (xy 90.970444 59.884204) (xy 90.95 59.960504)
@@ -3188,35 +3213,35 @@
(xy 91.529556 60.115796) (xy 91.55 60.039496) (xy 91.55 59.960504) (xy 91.529556 59.884204) (xy 91.49006 59.815795)
(xy 91.434205 59.75994) (xy 91.416988 59.75) (xy 92.549999 59.75) (xy 92.549999 59.400028) (xy 92.549998 59.400013)
(xy 92.539505 59.297302) (xy 92.484358 59.13088) (xy 92.484356 59.130875) (xy 92.392315 58.981654)
(xy 92.268345 58.857684) (xy 92.119124 58.765643) (xy 92.119119 58.765641) (xy 92.050698 58.742969)
(xy 91.993253 58.703196) (xy 91.96643 58.638681) (xy 91.978745 58.569905) (xy 92.026288 58.518705)
(xy 92.050691 58.507559) (xy 92.119334 58.484814) (xy 92.268656 58.392712) (xy 92.392712 58.268656)
(xy 92.484814 58.119334) (xy 92.539999 57.952797) (xy 92.539999 57.952793) (xy 92.540912 57.948533)
(xy 92.555623 57.921382) (xy 92.56845 57.893297) (xy 92.57212 57.890938) (xy 92.574199 57.887102)
(xy 92.601255 57.872214) (xy 92.627228 57.855523) (xy 92.633133 57.854673) (xy 92.635414 57.853419)
(xy 92.662163 57.8505) (xy 92.754092 57.8505) (xy 92.821131 57.870185) (xy 92.859636 57.914271)
(xy 92.861395 57.913187) (xy 92.865185 57.919331) (xy 92.865186 57.919334) (xy 92.957288 58.068656)
(xy 92.957289 58.068657) (xy 93.050951 58.162319) (xy 93.084436 58.223642) (xy 93.079452 58.293334)
(xy 93.050951 58.337681) (xy 92.957289 58.431342) (xy 92.865187 58.580663) (xy 92.865186 58.580666)
(xy 92.810001 58.747203) (xy 92.810001 58.747204) (xy 92.81 58.747204) (xy 92.7995 58.849983) (xy 92.7995 59.650001)
(xy 92.799501 59.650019) (xy 92.81 59.752796) (xy 92.810001 59.752799) (xy 92.855154 59.889059)
(xy 92.865186 59.919334) (xy 92.957288 60.068656) (xy 93.081344 60.192712) (xy 93.230666 60.284814)
(xy 93.314505 60.312595) (xy 93.371948 60.352366) (xy 93.398772 60.416882) (xy 93.3995 60.4303)
(xy 93.3995 63.41333) (xy 93.399499 63.413348) (xy 93.399499 63.579054) (xy 93.399498 63.579054)
(xy 93.440423 63.731785) (xy 93.469358 63.7819) (xy 93.469359 63.781904) (xy 93.46936 63.781904)
(xy 93.519479 63.868714) (xy 93.519481 63.868717) (xy 93.638349 63.987585) (xy 93.638355 63.98759)
(xy 94.574957 64.924192) (xy 94.608442 64.985515) (xy 94.603458 65.055207) (xy 94.561586 65.11114)
(xy 94.503837 65.133685) (xy 94.503921 65.134077) (xy 94.501514 65.134592) (xy 94.499878 65.135231)
(xy 94.497302 65.135494) (xy 94.33088 65.190641) (xy 94.330875 65.190643) (xy 94.181654 65.282684)
(xy 94.057684 65.406654) (xy 93.965643 65.555875) (xy 93.965641 65.55588) (xy 93.910494 65.722302)
(xy 93.910493 65.722309) (xy 93.9 65.825013) (xy 93.9 66.25) (xy 94.71967 66.25) (xy 94.699925 66.269745)
(xy 94.650556 66.355255) (xy 94.625 66.45063) (xy 94.625 66.54937) (xy 94.650556 66.644745) (xy 94.699925 66.730255)
(xy 94.71967 66.75) (xy 93.900001 66.75) (xy 93.900001 67.174986) (xy 93.910494 67.277697) (xy 93.965641 67.444119)
(xy 93.965643 67.444124) (xy 94.057684 67.593345) (xy 94.181654 67.717315) (xy 94.330875 67.809356)
(xy 94.33088 67.809358) (xy 94.497302 67.864505) (xy 94.497309 67.864506) (xy 94.600019 67.874999)
(xy 94.749999 67.874999) (xy 94.75 67.874998) (xy 94.75 66.78033) (xy 94.769745 66.800075) (xy 94.855255 66.849444)
(xy 94.95063 66.875) (xy 95.04937 66.875) (xy 95.144745 66.849444) (xy 95.230255 66.800075) (xy 95.25 66.78033)
(xy 95.25 67.874999) (xy 95.399972 67.874999) (xy 95.399986 67.874998) (xy 95.502697 67.864505)
(xy 92.268345 58.857684) (xy 92.119124 58.765643) (xy 92.119119 58.765641) (xy 91.952697 58.710494)
(xy 91.95269 58.710493) (xy 91.849986 58.7) (xy 91.778767 58.7) (xy 91.711728 58.680315) (xy 91.665973 58.627511)
(xy 91.656029 58.558353) (xy 91.685054 58.494797) (xy 91.740448 58.458069) (xy 91.749219 58.45522)
(xy 91.93161 58.362287) (xy 92.049882 58.276358) (xy 92.097213 58.241971) (xy 92.097215 58.241968)
(xy 92.097219 58.241966) (xy 92.241966 58.097219) (xy 92.241968 58.097215) (xy 92.241971 58.097213)
(xy 92.362284 57.931614) (xy 92.362285 57.931613) (xy 92.362287 57.93161) (xy 92.369117 57.918204)
(xy 92.417091 57.867409) (xy 92.479602 57.8505) (xy 92.754092 57.8505) (xy 92.821131 57.870185)
(xy 92.859636 57.914271) (xy 92.861395 57.913187) (xy 92.865185 57.919331) (xy 92.865186 57.919334)
(xy 92.957288 58.068656) (xy 92.957289 58.068657) (xy 93.050951 58.162319) (xy 93.084436 58.223642)
(xy 93.079452 58.293334) (xy 93.050951 58.337681) (xy 92.957289 58.431342) (xy 92.865187 58.580663)
(xy 92.865185 58.580668) (xy 92.851328 58.622486) (xy 92.810001 58.747203) (xy 92.810001 58.747204)
(xy 92.81 58.747204) (xy 92.7995 58.849983) (xy 92.7995 59.650001) (xy 92.799501 59.650019) (xy 92.81 59.752796)
(xy 92.810001 59.752799) (xy 92.855154 59.889059) (xy 92.865186 59.919334) (xy 92.957288 60.068656)
(xy 93.081344 60.192712) (xy 93.230666 60.284814) (xy 93.314505 60.312595) (xy 93.371948 60.352366)
(xy 93.398772 60.416882) (xy 93.3995 60.4303) (xy 93.3995 63.41333) (xy 93.399499 63.413348) (xy 93.399499 63.579054)
(xy 93.399498 63.579054) (xy 93.440423 63.731785) (xy 93.469358 63.7819) (xy 93.469359 63.781904)
(xy 93.46936 63.781904) (xy 93.519479 63.868714) (xy 93.519481 63.868717) (xy 93.638349 63.987585)
(xy 93.638355 63.98759) (xy 94.574957 64.924192) (xy 94.608442 64.985515) (xy 94.603458 65.055207)
(xy 94.561586 65.11114) (xy 94.503837 65.133685) (xy 94.503921 65.134077) (xy 94.501514 65.134592)
(xy 94.499878 65.135231) (xy 94.497302 65.135494) (xy 94.33088 65.190641) (xy 94.330875 65.190643)
(xy 94.181654 65.282684) (xy 94.057684 65.406654) (xy 93.965643 65.555875) (xy 93.965641 65.55588)
(xy 93.910494 65.722302) (xy 93.910493 65.722309) (xy 93.9 65.825013) (xy 93.9 66.25) (xy 94.71967 66.25)
(xy 94.699925 66.269745) (xy 94.650556 66.355255) (xy 94.625 66.45063) (xy 94.625 66.54937) (xy 94.650556 66.644745)
(xy 94.699925 66.730255) (xy 94.71967 66.75) (xy 93.900001 66.75) (xy 93.900001 67.174986) (xy 93.910494 67.277697)
(xy 93.965641 67.444119) (xy 93.965643 67.444124) (xy 94.057684 67.593345) (xy 94.181654 67.717315)
(xy 94.330875 67.809356) (xy 94.33088 67.809358) (xy 94.497302 67.864505) (xy 94.497309 67.864506)
(xy 94.600019 67.874999) (xy 94.749999 67.874999) (xy 94.75 67.874998) (xy 94.75 66.78033) (xy 94.769745 66.800075)
(xy 94.855255 66.849444) (xy 94.95063 66.875) (xy 95.04937 66.875) (xy 95.144745 66.849444) (xy 95.230255 66.800075)
(xy 95.25 66.78033) (xy 95.25 67.874999) (xy 95.399972 67.874999) (xy 95.399986 67.874998) (xy 95.502697 67.864505)
(xy 95.669119 67.809358) (xy 95.669124 67.809356) (xy 95.818345 67.717315) (xy 95.942315 67.593345)
(xy 95.981945 67.529094) (xy 96.033893 67.482368) (xy 96.102855 67.471145) (xy 96.166937 67.498988)
(xy 96.175166 67.506508) (xy 96.283072 67.614414) (xy 96.423212 67.716232) (xy 96.577555 67.794873)
@@ -3263,112 +3288,117 @@
(xy 106.939999 61.497203) (xy 106.884814 61.330666) (xy 106.792712 61.181344) (xy 106.699049 61.087681)
(xy 106.665564 61.026358) (xy 106.670548 60.956666) (xy 106.699049 60.912319) (xy 106.742517 60.868851)
(xy 106.792712 60.818656) (xy 106.884814 60.669334) (xy 106.884815 60.669331) (xy 106.888605 60.663187)
(xy 106.890399 60.664293) (xy 106.929687 60.619663) (xy 106.995908 60.6005) (xy 107.337837 60.6005)
(xy 107.404876 60.620185) (xy 107.450631 60.672989) (xy 107.459089 60.698541) (xy 107.459999 60.702792)
(xy 107.483805 60.774633) (xy 107.515186 60.869334) (xy 107.607288 61.018656) (xy 107.731344 61.142712)
(xy 107.880666 61.234814) (xy 108.047203 61.289999) (xy 108.149991 61.3005) (xy 109.350008 61.300499)
(xy 109.452797 61.289999) (xy 109.619334 61.234814) (xy 109.768656 61.142712) (xy 109.892712 61.018656)
(xy 109.984814 60.869334) (xy 110.039999 60.702797) (xy 110.0505 60.600009) (xy 110.050499 59.399992)
(xy 110.04774 59.372987) (xy 110.039999 59.297203) (xy 110.039998 59.2972) (xy 110.036055 59.2853)
(xy 109.984814 59.130666) (xy 109.892712 58.981344) (xy 109.768656 58.857288) (xy 109.619334 58.765186)
(xy 109.550696 58.742441) (xy 109.493252 58.702669) (xy 109.46643 58.638153) (xy 109.478745 58.569377)
(xy 109.526289 58.518177) (xy 109.550699 58.50703) (xy 109.619117 58.484359) (xy 109.619124 58.484356)
(xy 109.768345 58.392315) (xy 109.892315 58.268345) (xy 109.984356 58.119124) (xy 109.984358 58.119119)
(xy 110.039505 57.952697) (xy 110.039506 57.95269) (xy 110.049999 57.849986) (xy 110.05 57.849973)
(xy 110.05 57.5) (xy 108.916988 57.5) (xy 108.934205 57.49006) (xy 108.99006 57.434205) (xy 109.029556 57.365796)
(xy 109.05 57.289496) (xy 109.05 57.210504) (xy 109.029556 57.134204) (xy 108.99006 57.065795) (xy 108.934205 57.00994)
(xy 108.916988 57) (xy 109 57) (xy 110.049999 57) (xy 110.049999 56.650028) (xy 110.049998 56.650013)
(xy 110.039505 56.547302) (xy 109.984358 56.38088) (xy 109.984356 56.380875) (xy 109.892315 56.231654)
(xy 109.768345 56.107684) (xy 109.619124 56.015643) (xy 109.619119 56.015641) (xy 109.452697 55.960494)
(xy 109.45269 55.960493) (xy 109.349986 55.95) (xy 109 55.95) (xy 109 57) (xy 108.916988 57) (xy 108.865796 56.970444)
(xy 108.789496 56.95) (xy 108.710504 56.95) (xy 108.634204 56.970444) (xy 108.565795 57.00994) (xy 108.50994 57.065795)
(xy 108.470444 57.134204) (xy 108.45 57.210504) (xy 108.45 57.289496) (xy 108.470444 57.365796)
(xy 108.50994 57.434205) (xy 108.565795 57.49006) (xy 108.583012 57.5) (xy 107.450001 57.5) (xy 107.450001 57.849986)
(xy 107.460494 57.952697) (xy 107.515641 58.119119) (xy 107.515643 58.119124) (xy 107.607684 58.268345)
(xy 107.731654 58.392315) (xy 107.880875 58.484356) (xy 107.880882 58.484359) (xy 107.9493 58.50703)
(xy 108.006745 58.546802) (xy 108.033569 58.611317) (xy 108.021254 58.680093) (xy 107.973712 58.731294)
(xy 107.949302 58.742441) (xy 107.880674 58.765182) (xy 107.880663 58.765187) (xy 107.731342 58.857289)
(xy 107.607289 58.981342) (xy 107.515187 59.130663) (xy 107.515185 59.130668) (xy 107.46 59.297204)
(xy 107.459088 59.301467) (xy 107.425801 59.362898) (xy 107.364586 59.396581) (xy 107.337837 59.3995)
(xy 106.995908 59.3995) (xy 106.928869 59.379815) (xy 106.890363 59.335728) (xy 106.888605 59.336813)
(xy 106.884812 59.330663) (xy 106.792712 59.181344) (xy 106.668656 59.057288) (xy 106.546033 58.981654)
(xy 106.519336 58.965187) (xy 106.519331 58.965185) (xy 106.470225 58.948913) (xy 106.352797 58.910001)
(xy 106.352795 58.91) (xy 106.25001 58.8995) (xy 105.249998 58.8995) (xy 105.24998 58.899501) (xy 105.147203 58.91)
(xy 105.1472 58.910001) (xy 104.980668 58.965185) (xy 104.980663 58.965187) (xy 104.831342 59.057289)
(xy 104.707289 59.181342) (xy 104.615187 59.330663) (xy 104.615185 59.330668) (xy 104.56 59.497204)
(xy 104.5495 59.599983) (xy 104.5495 60.400001) (xy 104.549501 60.400019) (xy 104.56 60.502796)
(xy 104.560001 60.502799) (xy 104.615185 60.669331) (xy 104.615187 60.669336) (xy 104.63576 60.70269)
(xy 104.679867 60.7742) (xy 104.707289 60.818657) (xy 104.800951 60.912319) (xy 104.834436 60.973642)
(xy 104.829452 61.043334) (xy 104.800951 61.087681) (xy 104.707289 61.181342) (xy 104.615187 61.330663)
(xy 104.615186 61.330666) (xy 104.560001 61.497203) (xy 104.560001 61.497204) (xy 104.56 61.497204)
(xy 104.5495 61.599983) (xy 104.5495 62.299902) (xy 104.529815 62.366941) (xy 104.513181 62.387583)
(xy 102.519481 64.381282) (xy 102.519477 64.381287) (xy 102.474206 64.459701) (xy 102.474206 64.459702)
(xy 102.440423 64.518214) (xy 102.440423 64.518215) (xy 102.399499 64.670943) (xy 102.399499 64.670945)
(xy 102.399499 64.839046) (xy 102.3995 64.839059) (xy 102.3995 65.237814) (xy 102.379815 65.304853)
(xy 102.348387 65.338131) (xy 102.283072 65.385585) (xy 102.160588 65.508069) (xy 102.160581 65.508078)
(xy 102.100317 65.591023) (xy 102.044987 65.633689) (xy 101.975374 65.639667) (xy 101.913579 65.607061)
(xy 101.899683 65.591023) (xy 101.839655 65.508404) (xy 101.839414 65.508072) (xy 101.716928 65.385586)
(xy 101.677104 65.356652) (xy 101.651613 65.338131) (xy 101.608948 65.282801) (xy 101.6005 65.237814)
(xy 101.6005 62.721537) (xy 101.620185 62.654498) (xy 101.672989 62.608743) (xy 101.740691 62.598599)
(xy 101.751329 62.6) (xy 102.2 62.6) (xy 102.7 62.6) (xy 103.148671 62.6) (xy 103.264019 62.584814)
(xy 103.264024 62.584812) (xy 103.407541 62.525366) (xy 103.407542 62.525366) (xy 103.530792 62.430792)
(xy 103.625366 62.307542) (xy 103.625366 62.307541) (xy 103.684812 62.164024) (xy 103.684814 62.164019)
(xy 103.7 62.04867) (xy 103.7 61.9) (xy 102.7 61.9) (xy 102.7 62.6) (xy 102.2 62.6) (xy 102.2 61.4)
(xy 102.7 61.4) (xy 103.7 61.4) (xy 103.7 61.251329) (xy 103.684814 61.13598) (xy 103.684812 61.135975)
(xy 103.625366 60.992458) (xy 103.625366 60.992457) (xy 103.530792 60.869207) (xy 103.407541 60.774633)
(xy 103.264024 60.715187) (xy 103.264019 60.715185) (xy 103.148671 60.7) (xy 102.7 60.7) (xy 102.7 61.4)
(xy 102.2 61.4) (xy 102.2 60.7) (xy 101.751333 60.7) (xy 101.740682 60.701402) (xy 101.671647 60.690634)
(xy 101.619393 60.644253) (xy 101.6005 60.578462) (xy 101.6005 60.100097) (xy 101.620185 60.033058)
(xy 101.636819 60.012416) (xy 102.312417 59.336818) (xy 102.37374 59.303333) (xy 102.400098 59.300499)
(xy 103.148703 59.300499) (xy 103.264142 59.285303) (xy 103.264146 59.285301) (xy 103.264151 59.285301)
(xy 103.407798 59.2258) (xy 103.531149 59.131149) (xy 103.6258 59.007798) (xy 103.685301 58.864151)
(xy 103.7005 58.748701) (xy 103.700499 57.9513) (xy 103.700499 57.951298) (xy 103.700499 57.951296)
(xy 103.685303 57.835857) (xy 103.685301 57.83585) (xy 103.685301 57.835849) (xy 103.6258 57.692202)
(xy 103.531149 57.568851) (xy 103.407798 57.4742) (xy 103.407794 57.474198) (xy 103.264151 57.414699)
(xy 103.264149 57.414698) (xy 103.148701 57.3995) (xy 101.751296 57.3995) (xy 101.635857 57.414696)
(xy 101.635848 57.414699) (xy 101.492205 57.474198) (xy 101.368851 57.568851) (xy 101.274198 57.692205)
(xy 101.214699 57.835848) (xy 101.214698 57.83585) (xy 101.1995 57.951298) (xy 101.1995 58.699901)
(xy 101.179815 58.76694) (xy 101.163181 58.787582) (xy 100.631286 59.319478) (xy 100.519481 59.431282)
(xy 100.51948 59.431284) (xy 100.481422 59.497203) (xy 100.440423 59.568215) (xy 100.399499 59.720943)
(xy 100.399499 59.720945) (xy 100.399499 59.889046) (xy 100.3995 59.889059) (xy 100.3995 65.237814)
(xy 100.379815 65.304853) (xy 100.348387 65.338131) (xy 100.283072 65.385585) (xy 100.160588 65.508069)
(xy 100.160581 65.508078) (xy 100.100317 65.591023) (xy 100.082137 65.605041) (xy 100.067114 65.622405)
(xy 100.054992 65.625973) (xy 100.044987 65.633689) (xy 100.022111 65.635653) (xy 100.000088 65.642137)
(xy 99.987962 65.638585) (xy 99.975374 65.639667) (xy 99.955067 65.628952) (xy 99.933035 65.6225)
(xy 99.920603 65.610767) (xy 99.913579 65.607061) (xy 99.906345 65.599406) (xy 99.902825 65.595349)
(xy 99.839414 65.508072) (xy 99.746225 65.414883) (xy 99.743345 65.411564) (xy 99.730561 65.383624)
(xy 99.715834 65.356652) (xy 99.7151 65.349834) (xy 99.714275 65.348029) (xy 99.714635 65.345507)
(xy 99.713 65.330295) (xy 99.713 56.650013) (xy 107.45 56.650013) (xy 107.45 57) (xy 108.5 57) (xy 108.5 55.95)
(xy 108.150028 55.95) (xy 108.150012 55.950001) (xy 108.047302 55.960494) (xy 107.88088 56.015641)
(xy 107.880875 56.015643) (xy 107.731654 56.107684) (xy 107.607684 56.231654) (xy 107.515643 56.380875)
(xy 107.515641 56.38088) (xy 107.460494 56.547302) (xy 107.460493 56.547309) (xy 107.45 56.650013)
(xy 99.713 56.650013) (xy 99.713 56.421248) (xy 99.732685 56.354209) (xy 99.748651 56.334239) (xy 99.759157 56.32357)
(xy 99.768656 56.317712) (xy 99.892712 56.193656) (xy 99.902114 56.178411) (xy 99.911944 56.168431)
(xy 99.930722 56.15799) (xy 99.946694 56.143623) (xy 99.96065 56.14135) (xy 99.97301 56.134479)
(xy 99.99445 56.135847) (xy 100.015656 56.132395) (xy 100.028625 56.138029) (xy 100.042737 56.13893)
(xy 100.060034 56.151673) (xy 100.07974 56.160234) (xy 100.094019 56.176712) (xy 100.098989 56.180373)
(xy 100.100403 56.184078) (xy 100.105829 56.190339) (xy 100.107681 56.193341) (xy 100.107683 56.193344)
(xy 100.231654 56.317315) (xy 100.380875 56.409356) (xy 100.38088 56.409358) (xy 100.547302 56.464505)
(xy 100.547309 56.464506) (xy 100.650019 56.474999) (xy 100.787499 56.474999) (xy 101.2875 56.474999)
(xy 101.424972 56.474999) (xy 101.424986 56.474998) (xy 101.527697 56.464505) (xy 101.694119 56.409358)
(xy 101.694124 56.409356) (xy 101.843345 56.317315) (xy 101.967315 56.193345) (xy 102.059356 56.044124)
(xy 102.059358 56.044119) (xy 102.114505 55.877697) (xy 102.114506 55.87769) (xy 102.124999 55.774986)
(xy 102.125 55.774973) (xy 102.125 55.5) (xy 101.2875 55.5) (xy 101.2875 56.474999) (xy 100.787499 56.474999)
(xy 100.7875 56.474998) (xy 100.7875 55) (xy 101.2875 55) (xy 102.124999 55) (xy 102.124999 54.725028)
(xy 102.124998 54.725013) (xy 102.114505 54.622302) (xy 102.059358 54.45588) (xy 102.059356 54.455875)
(xy 101.967315 54.306654) (xy 101.843345 54.182684) (xy 101.694124 54.090643) (xy 101.694119 54.090641)
(xy 101.527697 54.035494) (xy 101.52769 54.035493) (xy 101.424986 54.025) (xy 101.2875 54.025) (xy 101.2875 55)
(xy 100.7875 55) (xy 100.7875 54.025) (xy 100.650027 54.025) (xy 100.650012 54.025001) (xy 100.547302 54.035494)
(xy 100.38088 54.090641) (xy 100.380875 54.090643) (xy 100.231654 54.182684) (xy 100.107683 54.306655)
(xy 100.107679 54.30666) (xy 100.105826 54.309665) (xy 100.104018 54.31129) (xy 100.103202 54.312323)
(xy 100.103025 54.312183) (xy 100.053874 54.356385) (xy 99.984911 54.367601) (xy 99.920831 54.339752)
(xy 99.894753 54.309653) (xy 99.894737 54.309628) (xy 99.892712 54.306344) (xy 99.768656 54.182288)
(xy 99.619334 54.090186) (xy 99.452797 54.035001) (xy 99.452795 54.035) (xy 99.35001 54.0245) (xy 98.574998 54.0245)
(xy 98.57498 54.024501) (xy 98.472203 54.035) (xy 98.4722 54.035001) (xy 98.305668 54.090185) (xy 98.305663 54.090187)
(xy 98.156342 54.182289) (xy 98.032289 54.306342) (xy 97.940187 54.455663) (xy 97.940185 54.455668)
(xy 97.940115 54.45588) (xy 97.885001 54.622203) (xy 97.885001 54.622204) (xy 97.885 54.622204)
(xy 97.8745 54.724983) (xy 97.8745 55.775001) (xy 97.874501 55.775019) (xy 97.885 55.877796) (xy 97.885001 55.877799)
(xy 97.912404 55.960494) (xy 97.940186 56.044334) (xy 98.032096 56.193345) (xy 98.032289 56.193657)
(xy 106.890399 60.664293) (xy 106.929687 60.619663) (xy 106.995908 60.6005) (xy 107.520398 60.6005)
(xy 107.587437 60.620185) (xy 107.630882 60.668204) (xy 107.631458 60.669334) (xy 107.637715 60.681614)
(xy 107.758028 60.847213) (xy 107.902786 60.991971) (xy 108.034522 61.087681) (xy 108.06839 61.112287)
(xy 108.184607 61.171503) (xy 108.250776 61.205218) (xy 108.250778 61.205218) (xy 108.250781 61.20522)
(xy 108.340459 61.234358) (xy 108.445465 61.268477) (xy 108.546557 61.284488) (xy 108.647648 61.3005)
(xy 108.647649 61.3005) (xy 108.852351 61.3005) (xy 108.852352 61.3005) (xy 109.054534 61.268477)
(xy 109.249219 61.20522) (xy 109.43161 61.112287) (xy 109.549882 61.026358) (xy 109.597213 60.991971)
(xy 109.597215 60.991968) (xy 109.597219 60.991966) (xy 109.741966 60.847219) (xy 109.741968 60.847215)
(xy 109.741971 60.847213) (xy 109.837892 60.715187) (xy 109.862287 60.68161) (xy 109.95522 60.499219)
(xy 110.018477 60.304534) (xy 110.0505 60.102352) (xy 110.0505 59.897648) (xy 110.027558 59.752799)
(xy 110.018477 59.695465) (xy 109.955218 59.500776) (xy 109.916352 59.424499) (xy 109.862287 59.31839)
(xy 109.795018 59.225801) (xy 109.741971 59.152786) (xy 109.597213 59.008028) (xy 109.431613 58.887715)
(xy 109.431612 58.887714) (xy 109.43161 58.887713) (xy 109.249219 58.79478) (xy 109.240443 58.791928)
(xy 109.182771 58.752494) (xy 109.155572 58.688136) (xy 109.167486 58.619289) (xy 109.214729 58.567813)
(xy 109.278764 58.549999) (xy 109.349971 58.549999) (xy 109.349987 58.549998) (xy 109.452697 58.539505)
(xy 109.619119 58.484358) (xy 109.619124 58.484356) (xy 109.768345 58.392315) (xy 109.892315 58.268345)
(xy 109.984356 58.119124) (xy 109.984358 58.119119) (xy 110.039505 57.952697) (xy 110.039506 57.95269)
(xy 110.049999 57.849986) (xy 110.05 57.849973) (xy 110.05 57.5) (xy 108.916988 57.5) (xy 108.934205 57.49006)
(xy 108.99006 57.434205) (xy 109.029556 57.365796) (xy 109.05 57.289496) (xy 109.05 57.210504) (xy 109.029556 57.134204)
(xy 108.99006 57.065795) (xy 108.934205 57.00994) (xy 108.916988 57) (xy 109 57) (xy 110.049999 57)
(xy 110.049999 56.650028) (xy 110.049998 56.650013) (xy 110.039505 56.547302) (xy 109.984358 56.38088)
(xy 109.984356 56.380875) (xy 109.892315 56.231654) (xy 109.768345 56.107684) (xy 109.619124 56.015643)
(xy 109.619119 56.015641) (xy 109.452697 55.960494) (xy 109.45269 55.960493) (xy 109.349986 55.95)
(xy 109 55.95) (xy 109 57) (xy 108.916988 57) (xy 108.865796 56.970444) (xy 108.789496 56.95) (xy 108.710504 56.95)
(xy 108.634204 56.970444) (xy 108.565795 57.00994) (xy 108.50994 57.065795) (xy 108.470444 57.134204)
(xy 108.45 57.210504) (xy 108.45 57.289496) (xy 108.470444 57.365796) (xy 108.50994 57.434205) (xy 108.565795 57.49006)
(xy 108.583012 57.5) (xy 107.450001 57.5) (xy 107.450001 57.849986) (xy 107.460494 57.952697) (xy 107.515641 58.119119)
(xy 107.515643 58.119124) (xy 107.607684 58.268345) (xy 107.731654 58.392315) (xy 107.880875 58.484356)
(xy 107.88088 58.484358) (xy 108.047302 58.539505) (xy 108.047309 58.539506) (xy 108.150019 58.549999)
(xy 108.22123 58.549999) (xy 108.28827 58.569683) (xy 108.334026 58.622486) (xy 108.34397 58.691644)
(xy 108.314946 58.7552) (xy 108.259559 58.791927) (xy 108.25078 58.794779) (xy 108.068386 58.887715)
(xy 107.902786 59.008028) (xy 107.758028 59.152786) (xy 107.637715 59.318385) (xy 107.630883 59.331795)
(xy 107.582909 59.382591) (xy 107.520398 59.3995) (xy 106.995908 59.3995) (xy 106.928869 59.379815)
(xy 106.890363 59.335728) (xy 106.888605 59.336813) (xy 106.884812 59.330663) (xy 106.792712 59.181344)
(xy 106.668656 59.057288) (xy 106.519334 58.965186) (xy 106.352797 58.910001) (xy 106.352795 58.91)
(xy 106.25001 58.8995) (xy 105.249998 58.8995) (xy 105.24998 58.899501) (xy 105.147203 58.91) (xy 105.1472 58.910001)
(xy 104.980668 58.965185) (xy 104.980663 58.965187) (xy 104.831342 59.057289) (xy 104.707289 59.181342)
(xy 104.615187 59.330663) (xy 104.615185 59.330668) (xy 104.56 59.497204) (xy 104.5495 59.599983)
(xy 104.5495 60.400001) (xy 104.549501 60.400019) (xy 104.56 60.502796) (xy 104.560001 60.502799)
(xy 104.615185 60.669331) (xy 104.615187 60.669336) (xy 104.63576 60.70269) (xy 104.679867 60.7742)
(xy 104.707289 60.818657) (xy 104.800951 60.912319) (xy 104.834436 60.973642) (xy 104.829452 61.043334)
(xy 104.800951 61.087681) (xy 104.707289 61.181342) (xy 104.615187 61.330663) (xy 104.615186 61.330666)
(xy 104.560001 61.497203) (xy 104.560001 61.497204) (xy 104.56 61.497204) (xy 104.5495 61.599983)
(xy 104.5495 62.299902) (xy 104.529815 62.366941) (xy 104.513181 62.387583) (xy 102.519481 64.381282)
(xy 102.519477 64.381287) (xy 102.474206 64.459701) (xy 102.474206 64.459702) (xy 102.440423 64.518214)
(xy 102.440423 64.518215) (xy 102.399499 64.670943) (xy 102.399499 64.670945) (xy 102.399499 64.839046)
(xy 102.3995 64.839059) (xy 102.3995 65.237814) (xy 102.379815 65.304853) (xy 102.348387 65.338131)
(xy 102.283072 65.385585) (xy 102.160588 65.508069) (xy 102.160581 65.508078) (xy 102.100317 65.591023)
(xy 102.044987 65.633689) (xy 101.975374 65.639667) (xy 101.913579 65.607061) (xy 101.899683 65.591023)
(xy 101.839655 65.508404) (xy 101.839414 65.508072) (xy 101.716928 65.385586) (xy 101.677104 65.356652)
(xy 101.651613 65.338131) (xy 101.608948 65.282801) (xy 101.6005 65.237814) (xy 101.6005 62.721537)
(xy 101.620185 62.654498) (xy 101.672989 62.608743) (xy 101.740691 62.598599) (xy 101.751329 62.6)
(xy 102.2 62.6) (xy 102.7 62.6) (xy 103.148671 62.6) (xy 103.264019 62.584814) (xy 103.264024 62.584812)
(xy 103.407541 62.525366) (xy 103.407542 62.525366) (xy 103.530792 62.430792) (xy 103.625366 62.307542)
(xy 103.625366 62.307541) (xy 103.684812 62.164024) (xy 103.684814 62.164019) (xy 103.7 62.04867)
(xy 103.7 61.9) (xy 102.7 61.9) (xy 102.7 62.6) (xy 102.2 62.6) (xy 102.2 61.4) (xy 102.7 61.4)
(xy 103.7 61.4) (xy 103.7 61.251329) (xy 103.684814 61.13598) (xy 103.684812 61.135975) (xy 103.625366 60.992458)
(xy 103.625366 60.992457) (xy 103.530792 60.869207) (xy 103.407541 60.774633) (xy 103.264024 60.715187)
(xy 103.264019 60.715185) (xy 103.148671 60.7) (xy 102.7 60.7) (xy 102.7 61.4) (xy 102.2 61.4) (xy 102.2 60.7)
(xy 101.751333 60.7) (xy 101.740682 60.701402) (xy 101.671647 60.690634) (xy 101.619393 60.644253)
(xy 101.6005 60.578462) (xy 101.6005 60.100097) (xy 101.620185 60.033058) (xy 101.636819 60.012416)
(xy 102.312417 59.336818) (xy 102.37374 59.303333) (xy 102.400098 59.300499) (xy 103.148703 59.300499)
(xy 103.264142 59.285303) (xy 103.264146 59.285301) (xy 103.264151 59.285301) (xy 103.407798 59.2258)
(xy 103.531149 59.131149) (xy 103.6258 59.007798) (xy 103.685301 58.864151) (xy 103.7005 58.748701)
(xy 103.700499 57.9513) (xy 103.700499 57.951298) (xy 103.700499 57.951296) (xy 103.685303 57.835857)
(xy 103.685301 57.83585) (xy 103.685301 57.835849) (xy 103.6258 57.692202) (xy 103.531149 57.568851)
(xy 103.407798 57.4742) (xy 103.407794 57.474198) (xy 103.264151 57.414699) (xy 103.264149 57.414698)
(xy 103.148701 57.3995) (xy 101.751296 57.3995) (xy 101.635857 57.414696) (xy 101.635848 57.414699)
(xy 101.492205 57.474198) (xy 101.368851 57.568851) (xy 101.274198 57.692205) (xy 101.214699 57.835848)
(xy 101.214698 57.83585) (xy 101.1995 57.951298) (xy 101.1995 58.699901) (xy 101.179815 58.76694)
(xy 101.163181 58.787582) (xy 100.631286 59.319478) (xy 100.519481 59.431282) (xy 100.51948 59.431284)
(xy 100.481422 59.497203) (xy 100.440423 59.568215) (xy 100.399499 59.720943) (xy 100.399499 59.720945)
(xy 100.399499 59.889046) (xy 100.3995 59.889059) (xy 100.3995 65.237814) (xy 100.379815 65.304853)
(xy 100.348387 65.338131) (xy 100.283072 65.385585) (xy 100.160588 65.508069) (xy 100.160581 65.508078)
(xy 100.100317 65.591023) (xy 100.082137 65.605041) (xy 100.067114 65.622405) (xy 100.054992 65.625973)
(xy 100.044987 65.633689) (xy 100.022111 65.635653) (xy 100.000088 65.642137) (xy 99.987962 65.638585)
(xy 99.975374 65.639667) (xy 99.955067 65.628952) (xy 99.933035 65.6225) (xy 99.920603 65.610767)
(xy 99.913579 65.607061) (xy 99.906345 65.599406) (xy 99.902825 65.595349) (xy 99.839414 65.508072)
(xy 99.746225 65.414883) (xy 99.743345 65.411564) (xy 99.730561 65.383624) (xy 99.715834 65.356652)
(xy 99.7151 65.349834) (xy 99.714275 65.348029) (xy 99.714635 65.345507) (xy 99.713 65.330295) (xy 99.713 56.650013)
(xy 107.45 56.650013) (xy 107.45 57) (xy 108.5 57) (xy 108.5 55.95) (xy 108.150028 55.95) (xy 108.150012 55.950001)
(xy 108.047302 55.960494) (xy 107.88088 56.015641) (xy 107.880875 56.015643) (xy 107.731654 56.107684)
(xy 107.607684 56.231654) (xy 107.515643 56.380875) (xy 107.515641 56.38088) (xy 107.460494 56.547302)
(xy 107.460493 56.547309) (xy 107.45 56.650013) (xy 99.713 56.650013) (xy 99.713 56.421248) (xy 99.732685 56.354209)
(xy 99.748651 56.334239) (xy 99.759157 56.32357) (xy 99.768656 56.317712) (xy 99.892712 56.193656)
(xy 99.902114 56.178411) (xy 99.911944 56.168431) (xy 99.930722 56.15799) (xy 99.946694 56.143623)
(xy 99.96065 56.14135) (xy 99.97301 56.134479) (xy 99.99445 56.135847) (xy 100.015656 56.132395)
(xy 100.028625 56.138029) (xy 100.042737 56.13893) (xy 100.060034 56.151673) (xy 100.07974 56.160234)
(xy 100.094019 56.176712) (xy 100.098989 56.180373) (xy 100.100403 56.184078) (xy 100.105829 56.190339)
(xy 100.107681 56.193341) (xy 100.107683 56.193344) (xy 100.231654 56.317315) (xy 100.380875 56.409356)
(xy 100.38088 56.409358) (xy 100.547302 56.464505) (xy 100.547309 56.464506) (xy 100.650019 56.474999)
(xy 100.787499 56.474999) (xy 101.2875 56.474999) (xy 101.424972 56.474999) (xy 101.424986 56.474998)
(xy 101.527697 56.464505) (xy 101.694119 56.409358) (xy 101.694124 56.409356) (xy 101.843345 56.317315)
(xy 101.967315 56.193345) (xy 102.059356 56.044124) (xy 102.059358 56.044119) (xy 102.114505 55.877697)
(xy 102.114506 55.87769) (xy 102.124999 55.774986) (xy 102.125 55.774973) (xy 102.125 55.5) (xy 101.2875 55.5)
(xy 101.2875 56.474999) (xy 100.787499 56.474999) (xy 100.7875 56.474998) (xy 100.7875 55) (xy 101.2875 55)
(xy 102.124999 55) (xy 102.124999 54.725028) (xy 102.124998 54.725013) (xy 102.114505 54.622302)
(xy 102.059358 54.45588) (xy 102.059356 54.455875) (xy 101.967315 54.306654) (xy 101.843345 54.182684)
(xy 101.694124 54.090643) (xy 101.694119 54.090641) (xy 101.527697 54.035494) (xy 101.52769 54.035493)
(xy 101.424986 54.025) (xy 101.2875 54.025) (xy 101.2875 55) (xy 100.7875 55) (xy 100.7875 54.025)
(xy 100.650027 54.025) (xy 100.650012 54.025001) (xy 100.547302 54.035494) (xy 100.38088 54.090641)
(xy 100.380875 54.090643) (xy 100.231654 54.182684) (xy 100.107683 54.306655) (xy 100.107679 54.30666)
(xy 100.105826 54.309665) (xy 100.104018 54.31129) (xy 100.103202 54.312323) (xy 100.103025 54.312183)
(xy 100.053874 54.356385) (xy 99.984911 54.367601) (xy 99.920831 54.339752) (xy 99.894753 54.309653)
(xy 99.894737 54.309628) (xy 99.892712 54.306344) (xy 99.768656 54.182288) (xy 99.619334 54.090186)
(xy 99.452797 54.035001) (xy 99.452795 54.035) (xy 99.35001 54.0245) (xy 98.574998 54.0245) (xy 98.57498 54.024501)
(xy 98.472203 54.035) (xy 98.4722 54.035001) (xy 98.305668 54.090185) (xy 98.305663 54.090187) (xy 98.156342 54.182289)
(xy 98.032289 54.306342) (xy 97.940187 54.455663) (xy 97.940185 54.455668) (xy 97.940115 54.45588)
(xy 97.885001 54.622203) (xy 97.885001 54.622204) (xy 97.885 54.622204) (xy 97.8745 54.724983) (xy 97.8745 55.775001)
(xy 97.874501 55.775019) (xy 97.885 55.877796) (xy 97.885001 55.877799) (xy 97.940185 56.044331)
(xy 97.940187 56.044336) (xy 97.975069 56.100888) (xy 98.032096 56.193345) (xy 98.032289 56.193657)
(xy 98.156345 56.317713) (xy 98.162013 56.322195) (xy 98.160818 56.323705) (xy 98.169203 56.327535)
(xy 98.182889 56.348831) (xy 98.19982 56.367654) (xy 98.202464 56.379291) (xy 98.206977 56.386313)
(xy 98.212 56.421248) (xy 98.212 56.575269) (xy 98.192315 56.642308) (xy 98.175681 56.66295) (xy 97.475449 57.363181)
@@ -3379,7 +3409,7 @@
(xy 96.592202 59.2258) (xy 96.735849 59.285301) (xy 96.851299 59.3005) (xy 98.088 59.300499) (xy 98.155039 59.320184)
(xy 98.200794 59.372987) (xy 98.212 59.424499) (xy 98.212 60.5755) (xy 98.192315 60.642539) (xy 98.139511 60.688294)
(xy 98.088 60.6995) (xy 96.851296 60.6995) (xy 96.735857 60.714696) (xy 96.735848 60.714699) (xy 96.592205 60.774198)
(xy 96.592202 60.774199) (xy 96.592202 60.7742) (xy 96.468851 60.868851) (xy 96.396553 60.963072)
(xy 96.592202 60.774199) (xy 96.592202 60.7742) (xy 96.468851 60.868851) (xy 96.374378 60.991971)
(xy 96.374198 60.992205) (xy 96.314699 61.135848) (xy 96.314698 61.13585) (xy 96.2995 61.251298)
(xy 96.2995 62.048703) (xy 96.314696 62.164142) (xy 96.314699 62.164151) (xy 96.374093 62.307541)
(xy 96.3742 62.307798) (xy 96.468851 62.431149) (xy 96.592202 62.5258) (xy 96.735849 62.585301)
@@ -3398,36 +3428,35 @@
(xy 94.6005 60.4303) (xy 94.620185 60.363261) (xy 94.672989 60.317506) (xy 94.685482 60.312599)
(xy 94.769334 60.284814) (xy 94.918656 60.192712) (xy 95.042712 60.068656) (xy 95.134814 59.919334)
(xy 95.189999 59.752797) (xy 95.2005 59.650009) (xy 95.200499 58.849992) (xy 95.191882 58.765641)
(xy 95.189999 58.747203) (xy 95.189998 58.7472) (xy 95.175242 58.702669) (xy 95.134814 58.580666)
(xy 95.042712 58.431344) (xy 94.949049 58.337681) (xy 94.915564 58.276358) (xy 94.920548 58.206666)
(xy 94.949049 58.162319) (xy 94.992249 58.119119) (xy 95.042712 58.068656) (xy 95.134814 57.919334)
(xy 95.189999 57.752797) (xy 95.2005 57.650009) (xy 95.200499 56.849992) (xy 95.189999 56.747203)
(xy 95.134814 56.580666) (xy 95.042712 56.431344) (xy 94.918656 56.307288) (xy 94.796033 56.231654)
(xy 94.769336 56.215187) (xy 94.769331 56.215185) (xy 94.730733 56.202395) (xy 94.602797 56.160001)
(xy 94.602795 56.16) (xy 94.50001 56.1495) (xy 93.499998 56.1495) (xy 93.49998 56.149501) (xy 93.397203 56.16)
(xy 93.3972 56.160001) (xy 93.230668 56.215185) (xy 93.230663 56.215187) (xy 93.081342 56.307289)
(xy 92.957289 56.431342) (xy 92.957288 56.431344) (xy 92.867441 56.577011) (xy 92.861395 56.586813)
(xy 92.8596 56.585706) (xy 92.855014 56.590916) (xy 92.847805 56.606703) (xy 92.832406 56.616598)
(xy 92.820313 56.630337) (xy 92.803425 56.635224) (xy 92.789027 56.644477) (xy 92.754092 56.6495)
(xy 92.662163 56.6495) (xy 92.595124 56.629815) (xy 92.549369 56.577011) (xy 92.540911 56.551459)
(xy 92.54 56.547207) (xy 92.525879 56.504593) (xy 92.484814 56.380666) (xy 92.392712 56.231344)
(xy 92.268656 56.107288) (xy 92.119334 56.015186) (xy 91.952797 55.960001) (xy 91.952795 55.96)
(xy 91.85001 55.9495) (xy 90.649998 55.9495) (xy 90.649981 55.949501) (xy 90.547203 55.96) (xy 90.5472 55.960001)
(xy 90.380668 56.015185) (xy 90.380663 56.015187) (xy 90.231342 56.107289) (xy 90.107289 56.231342)
(xy 90.015187 56.380663) (xy 90.015185 56.380668) (xy 89.998393 56.431344) (xy 89.960001 56.547203)
(xy 89.960001 56.547204) (xy 89.96 56.547204) (xy 89.9495 56.649983) (xy 89.002619 56.649983) (xy 89.042602 56.5112)
(xy 89.044708 56.504593) (xy 89.255462 55.902293) (xy 89.257939 55.895807) (xy 89.502126 55.306287)
(xy 89.504948 55.299981) (xy 89.781819 54.725051) (xy 89.784988 54.718917) (xy 90.093653 54.16043)
(xy 90.097186 54.154442) (xy 90.436678 53.614143) (xy 90.440511 53.608406) (xy 90.809791 53.087955)
(xy 90.813923 53.082464) (xy 91.211802 52.583539) (xy 91.216243 52.57828) (xy 91.641475 52.102446)
(xy 91.64622 52.097428) (xy 92.097428 51.64622) (xy 92.102446 51.641475) (xy 92.57828 51.216243)
(xy 92.583539 51.211802) (xy 93.082464 50.813923) (xy 93.087955 50.809791) (xy 93.608406 50.440511)
(xy 93.614143 50.436678) (xy 94.154444 50.097184) (xy 94.160433 50.093652) (xy 94.315338 50.008039)
(xy 94.718917 49.784988) (xy 94.725051 49.781819) (xy 95.299981 49.504948) (xy 95.306287 49.502126)
(xy 95.89582 49.257933) (xy 95.902293 49.255462) (xy 96.504603 49.044704) (xy 96.5112 49.042602)
(xy 97.124388 48.865946) (xy 97.13106 48.864225) (xy 97.75318 48.722231) (xy 97.759974 48.720879)
(xy 98.389088 48.613988) (xy 98.395915 48.613025) (xy 99.030007 48.54158) (xy 99.036914 48.540997)
(xy 99.67401 48.505219) (xy 99.680963 48.505024) (xy 100.319037 48.505024)
(xy 95.189999 58.747203) (xy 95.189998 58.7472) (xy 95.174357 58.7) (xy 95.134814 58.580666) (xy 95.042712 58.431344)
(xy 94.949049 58.337681) (xy 94.915564 58.276358) (xy 94.920548 58.206666) (xy 94.949049 58.162319)
(xy 94.992249 58.119119) (xy 95.042712 58.068656) (xy 95.134814 57.919334) (xy 95.189999 57.752797)
(xy 95.2005 57.650009) (xy 95.200499 56.849992) (xy 95.190364 56.750781) (xy 95.189999 56.747203)
(xy 95.189998 56.7472) (xy 95.1511 56.629815) (xy 95.134814 56.580666) (xy 95.042712 56.431344)
(xy 94.918656 56.307288) (xy 94.769334 56.215186) (xy 94.602797 56.160001) (xy 94.602795 56.16)
(xy 94.50001 56.1495) (xy 93.499998 56.1495) (xy 93.49998 56.149501) (xy 93.397203 56.16) (xy 93.3972 56.160001)
(xy 93.230668 56.215185) (xy 93.230663 56.215187) (xy 93.081342 56.307289) (xy 92.957289 56.431342)
(xy 92.957288 56.431344) (xy 92.872761 56.568386) (xy 92.861395 56.586813) (xy 92.8596 56.585706)
(xy 92.820313 56.630337) (xy 92.754092 56.6495) (xy 92.479602 56.6495) (xy 92.412563 56.629815)
(xy 92.369117 56.581795) (xy 92.362284 56.568385) (xy 92.241971 56.402786) (xy 92.097213 56.258028)
(xy 91.931613 56.137715) (xy 91.931612 56.137714) (xy 91.93161 56.137713) (xy 91.872675 56.107684)
(xy 91.749223 56.044781) (xy 91.554534 55.981522) (xy 91.379995 55.953878) (xy 91.352352 55.9495)
(xy 91.147648 55.9495) (xy 91.123329 55.953351) (xy 90.945465 55.981522) (xy 90.750776 56.044781)
(xy 90.568386 56.137715) (xy 90.402786 56.258028) (xy 90.258028 56.402786) (xy 90.137715 56.568386)
(xy 90.044781 56.750776) (xy 89.981522 56.945465) (xy 89.9495 57.147648) (xy 88.860439 57.147648)
(xy 88.864225 57.13106) (xy 88.865957 57.124351) (xy 89.042602 56.5112) (xy 89.044708 56.504593)
(xy 89.255462 55.902293) (xy 89.257939 55.895807) (xy 89.502126 55.306287) (xy 89.504948 55.299981)
(xy 89.781819 54.725051) (xy 89.784988 54.718917) (xy 90.093653 54.16043) (xy 90.097186 54.154442)
(xy 90.436678 53.614143) (xy 90.440511 53.608406) (xy 90.809791 53.087955) (xy 90.813923 53.082464)
(xy 91.211802 52.583539) (xy 91.216243 52.57828) (xy 91.641475 52.102446) (xy 91.64622 52.097428)
(xy 92.097428 51.64622) (xy 92.102446 51.641475) (xy 92.57828 51.216243) (xy 92.583539 51.211802)
(xy 93.082464 50.813923) (xy 93.087955 50.809791) (xy 93.608406 50.440511) (xy 93.614143 50.436678)
(xy 94.154444 50.097184) (xy 94.160433 50.093652) (xy 94.315338 50.008039) (xy 94.718917 49.784988)
(xy 94.725051 49.781819) (xy 95.299981 49.504948) (xy 95.306287 49.502126) (xy 95.89582 49.257933)
(xy 95.902293 49.255462) (xy 96.504603 49.044704) (xy 96.5112 49.042602) (xy 97.124388 48.865946)
(xy 97.13106 48.864225) (xy 97.75318 48.722231) (xy 97.759974 48.720879) (xy 98.389088 48.613988)
(xy 98.395915 48.613025) (xy 99.030007 48.54158) (xy 99.036914 48.540997) (xy 99.67401 48.505219)
(xy 99.680963 48.505024) (xy 100.319037 48.505024)
)
)
(filled_polygon
@@ -3552,84 +3581,95 @@
(xy 89.504954 64.700031) (xy 89.502117 64.69369) (xy 89.257939 64.104192) (xy 89.255458 64.097694)
(xy 89.044708 63.495406) (xy 89.042596 63.488779) (xy 88.865949 62.87562) (xy 88.864223 62.868931)
(xy 88.722232 62.246826) (xy 88.720877 62.240011) (xy 88.613989 61.610916) (xy 88.613024 61.604079)
(xy 88.54158 60.969995) (xy 88.540996 60.963072) (xy 88.526379 60.702795) (xy 88.520606 60.599986)
(xy 89.950001 60.599986) (xy 89.960494 60.702697) (xy 90.015641 60.869119) (xy 90.015643 60.869124)
(xy 90.107684 61.018345) (xy 90.231654 61.142315) (xy 90.380875 61.234356) (xy 90.38088 61.234358)
(xy 90.547302 61.289505) (xy 90.547309 61.289506) (xy 90.650019 61.299999) (xy 90.999999 61.299999)
(xy 91.5 61.299999) (xy 91.849972 61.299999) (xy 91.849986 61.299998) (xy 91.952697 61.289505) (xy 92.119119 61.234358)
(xy 92.119124 61.234356) (xy 92.268345 61.142315) (xy 92.392315 61.018345) (xy 92.484356 60.869124)
(xy 92.484358 60.869119) (xy 92.539505 60.702697) (xy 92.539506 60.70269) (xy 92.549999 60.599986)
(xy 92.55 60.599973) (xy 92.55 60.25) (xy 91.5 60.25) (xy 91.5 61.299999) (xy 90.999999 61.299999)
(xy 91 61.299998) (xy 91 60.25) (xy 89.950001 60.25) (xy 89.950001 60.599986) (xy 88.520606 60.599986)
(xy 88.505219 60.32599) (xy 88.505024 60.319037) (xy 88.505024 59.680962) (xy 88.505219 59.674009)
(xy 88.506608 59.64927) (xy 88.540997 59.036914) (xy 88.541581 59.029997) (xy 88.560996 58.857684)
(xy 88.613025 58.395915) (xy 88.613988 58.389088) (xy 88.720879 57.759974) (xy 88.722234 57.753166)
(xy 88.864225 57.13106) (xy 88.865946 57.124388) (xy 89.002619 56.649983) (xy 89.9495 56.649983)
(xy 89.9495 57.850001) (xy 89.949501 57.850018) (xy 89.96 57.952796) (xy 89.960001 57.952799) (xy 90.015115 58.119119)
(xy 90.015186 58.119334) (xy 90.107288 58.268656) (xy 90.231344 58.392712) (xy 90.380666 58.484814)
(xy 90.449302 58.507557) (xy 90.506746 58.54733) (xy 90.533569 58.611845) (xy 90.521254 58.680621)
(xy 90.473711 58.731821) (xy 90.449301 58.742969) (xy 90.38088 58.765641) (xy 90.380875 58.765643)
(xy 90.231654 58.857684) (xy 90.107684 58.981654) (xy 90.015643 59.130875) (xy 90.015641 59.13088)
(xy 89.960494 59.297302) (xy 89.960493 59.297309) (xy 89.95 59.400013) (xy 89.95 59.75) (xy 91.083012 59.75)
(xy 91.065795 59.75994) (xy 91.00994 59.815795) (xy 90.970444 59.884204) (xy 90.95 59.960504) (xy 90.95 60.039496)
(xy 90.970444 60.115796) (xy 91.00994 60.184205) (xy 91.065795 60.24006) (xy 91.134204 60.279556)
(xy 91.210504 60.3) (xy 91.289496 60.3) (xy 91.365796 60.279556) (xy 91.434205 60.24006) (xy 91.49006 60.184205)
(xy 91.529556 60.115796) (xy 91.55 60.039496) (xy 91.55 59.960504) (xy 91.529556 59.884204) (xy 91.49006 59.815795)
(xy 91.434205 59.75994) (xy 91.416988 59.75) (xy 92.549999 59.75) (xy 92.549999 59.400024) (xy 92.549998 59.400016)
(xy 92.549995 59.399983) (xy 107.4495 59.399983) (xy 107.4495 60.600001) (xy 107.449501 60.600018)
(xy 107.46 60.702796) (xy 107.460001 60.702799) (xy 107.515115 60.869119) (xy 107.515186 60.869334)
(xy 107.607288 61.018656) (xy 107.731344 61.142712) (xy 107.880666 61.234814) (xy 108.047203 61.289999)
(xy 108.149991 61.3005) (xy 109.350008 61.300499) (xy 109.452797 61.289999) (xy 109.619334 61.234814)
(xy 109.768656 61.142712) (xy 109.892712 61.018656) (xy 109.984814 60.869334) (xy 110.039999 60.702797)
(xy 110.0505 60.600009) (xy 110.050499 59.399992) (xy 110.039999 59.297203) (xy 109.984814 59.130666)
(xy 109.892712 58.981344) (xy 109.768656 58.857288) (xy 109.619334 58.765186) (xy 109.550696 58.742441)
(xy 109.493252 58.702669) (xy 109.46643 58.638153) (xy 109.478745 58.569377) (xy 109.526289 58.518177)
(xy 109.550699 58.50703) (xy 109.619117 58.484359) (xy 109.619124 58.484356) (xy 109.768345 58.392315)
(xy 109.892315 58.268345) (xy 109.984356 58.119124) (xy 109.984358 58.119119) (xy 110.039505 57.952697)
(xy 110.039506 57.95269) (xy 110.049999 57.849986) (xy 110.05 57.849973) (xy 110.05 57.5) (xy 108.916988 57.5)
(xy 108.934205 57.49006) (xy 108.99006 57.434205) (xy 109.029556 57.365796) (xy 109.05 57.289496)
(xy 109.05 57.210504) (xy 109.029556 57.134204) (xy 108.99006 57.065795) (xy 108.934205 57.00994)
(xy 108.916988 57) (xy 109 57) (xy 110.049999 57) (xy 110.049999 56.650028) (xy 110.049998 56.650013)
(xy 110.039505 56.547302) (xy 109.984358 56.38088) (xy 109.984356 56.380875) (xy 109.892315 56.231654)
(xy 109.768345 56.107684) (xy 109.619124 56.015643) (xy 109.619119 56.015641) (xy 109.452697 55.960494)
(xy 109.45269 55.960493) (xy 109.349986 55.95) (xy 109 55.95) (xy 109 57) (xy 108.916988 57) (xy 108.865796 56.970444)
(xy 108.789496 56.95) (xy 108.710504 56.95) (xy 108.634204 56.970444) (xy 108.565795 57.00994) (xy 108.50994 57.065795)
(xy 108.470444 57.134204) (xy 108.45 57.210504) (xy 108.45 57.289496) (xy 108.470444 57.365796)
(xy 108.50994 57.434205) (xy 108.565795 57.49006) (xy 108.583012 57.5) (xy 107.450001 57.5) (xy 107.450001 57.849986)
(xy 107.460494 57.952697) (xy 107.515641 58.119119) (xy 107.515643 58.119124) (xy 107.607684 58.268345)
(xy 107.731654 58.392315) (xy 107.880875 58.484356) (xy 107.880882 58.484359) (xy 107.9493 58.50703)
(xy 108.006745 58.546802) (xy 108.033569 58.611317) (xy 108.021254 58.680093) (xy 107.973712 58.731294)
(xy 107.949302 58.742441) (xy 107.880674 58.765182) (xy 107.880663 58.765187) (xy 107.731342 58.857289)
(xy 107.607289 58.981342) (xy 107.515187 59.130663) (xy 107.515185 59.130668) (xy 107.515115 59.13088)
(xy 107.460001 59.297203) (xy 107.460001 59.297204) (xy 107.46 59.297204) (xy 107.4495 59.399983)
(xy 92.549995 59.399983) (xy 92.539505 59.297302) (xy 92.484358 59.13088) (xy 92.484356 59.130875)
(xy 88.54158 60.969995) (xy 88.540996 60.963072) (xy 88.520606 60.599986) (xy 89.950001 60.599986)
(xy 89.960494 60.702697) (xy 90.015641 60.869119) (xy 90.015643 60.869124) (xy 90.107684 61.018345)
(xy 90.231654 61.142315) (xy 90.380875 61.234356) (xy 90.38088 61.234358) (xy 90.547302 61.289505)
(xy 90.547309 61.289506) (xy 90.650019 61.299999) (xy 90.999999 61.299999) (xy 91.5 61.299999) (xy 91.849972 61.299999)
(xy 91.849986 61.299998) (xy 91.952697 61.289505) (xy 92.119119 61.234358) (xy 92.119124 61.234356)
(xy 92.268345 61.142315) (xy 92.392315 61.018345) (xy 92.484356 60.869124) (xy 92.484358 60.869119)
(xy 92.539505 60.702697) (xy 92.539506 60.70269) (xy 92.549999 60.599986) (xy 92.55 60.599973) (xy 92.55 60.25)
(xy 91.5 60.25) (xy 91.5 61.299999) (xy 90.999999 61.299999) (xy 91 61.299998) (xy 91 60.25) (xy 89.950001 60.25)
(xy 89.950001 60.599986) (xy 88.520606 60.599986) (xy 88.505219 60.32599) (xy 88.505024 60.319037)
(xy 88.505024 59.680962) (xy 88.505219 59.674009) (xy 88.540996 59.036927) (xy 88.541581 59.029997)
(xy 88.544056 59.008034) (xy 88.613025 58.395915) (xy 88.613988 58.389088) (xy 88.720879 57.759974)
(xy 88.722234 57.753166) (xy 88.723135 57.749219) (xy 88.860439 57.147648) (xy 89.9495 57.147648)
(xy 89.9495 57.352351) (xy 89.981522 57.554534) (xy 90.044781 57.749223) (xy 90.137715 57.931613)
(xy 90.258028 58.097213) (xy 90.402786 58.241971) (xy 90.557749 58.354556) (xy 90.56839 58.362287)
(xy 90.750781 58.45522) (xy 90.759548 58.458068) (xy 90.817224 58.497501) (xy 90.844426 58.561858)
(xy 90.832516 58.630705) (xy 90.785275 58.682184) (xy 90.721237 58.7) (xy 90.650029 58.7) (xy 90.650012 58.700001)
(xy 90.547302 58.710494) (xy 90.38088 58.765641) (xy 90.380875 58.765643) (xy 90.231654 58.857684)
(xy 90.107684 58.981654) (xy 90.015643 59.130875) (xy 90.015641 59.13088) (xy 89.960494 59.297302)
(xy 89.960493 59.297309) (xy 89.95 59.400013) (xy 89.95 59.75) (xy 91.083012 59.75) (xy 91.065795 59.75994)
(xy 91.00994 59.815795) (xy 90.970444 59.884204) (xy 90.95 59.960504) (xy 90.95 60.039496) (xy 90.970444 60.115796)
(xy 91.00994 60.184205) (xy 91.065795 60.24006) (xy 91.134204 60.279556) (xy 91.210504 60.3) (xy 91.289496 60.3)
(xy 91.365796 60.279556) (xy 91.434205 60.24006) (xy 91.49006 60.184205) (xy 91.529556 60.115796)
(xy 91.55 60.039496) (xy 91.55 59.960504) (xy 91.533158 59.897648) (xy 107.4495 59.897648) (xy 107.4495 60.102351)
(xy 107.481522 60.304534) (xy 107.544781 60.499223) (xy 107.637715 60.681613) (xy 107.758028 60.847213)
(xy 107.902786 60.991971) (xy 108.057749 61.104556) (xy 108.06839 61.112287) (xy 108.184607 61.171503)
(xy 108.250776 61.205218) (xy 108.250778 61.205218) (xy 108.250781 61.20522) (xy 108.340459 61.234358)
(xy 108.445465 61.268477) (xy 108.546557 61.284488) (xy 108.647648 61.3005) (xy 108.647649 61.3005)
(xy 108.852351 61.3005) (xy 108.852352 61.3005) (xy 109.054534 61.268477) (xy 109.249219 61.20522)
(xy 109.43161 61.112287) (xy 109.52459 61.044732) (xy 109.597213 60.991971) (xy 109.597215 60.991968)
(xy 109.597219 60.991966) (xy 109.741966 60.847219) (xy 109.741968 60.847215) (xy 109.741971 60.847213)
(xy 109.794732 60.77459) (xy 109.862287 60.68161) (xy 109.95522 60.499219) (xy 110.018477 60.304534)
(xy 110.0505 60.102352) (xy 110.0505 59.897648) (xy 110.028689 59.75994) (xy 110.018477 59.695465)
(xy 109.955218 59.500776) (xy 109.921503 59.434607) (xy 109.862287 59.31839) (xy 109.846966 59.297302)
(xy 109.741971 59.152786) (xy 109.597213 59.008028) (xy 109.431613 58.887715) (xy 109.431612 58.887714)
(xy 109.43161 58.887713) (xy 109.249219 58.79478) (xy 109.240443 58.791928) (xy 109.182771 58.752494)
(xy 109.155572 58.688136) (xy 109.167486 58.619289) (xy 109.214729 58.567813) (xy 109.278764 58.549999)
(xy 109.349971 58.549999) (xy 109.349987 58.549998) (xy 109.452697 58.539505) (xy 109.619119 58.484358)
(xy 109.619124 58.484356) (xy 109.768345 58.392315) (xy 109.892315 58.268345) (xy 109.984356 58.119124)
(xy 109.984358 58.119119) (xy 110.039505 57.952697) (xy 110.039506 57.95269) (xy 110.049999 57.849986)
(xy 110.05 57.849973) (xy 110.05 57.5) (xy 108.916988 57.5) (xy 108.934205 57.49006) (xy 108.99006 57.434205)
(xy 109.029556 57.365796) (xy 109.05 57.289496) (xy 109.05 57.210504) (xy 109.029556 57.134204)
(xy 108.99006 57.065795) (xy 108.934205 57.00994) (xy 108.916988 57) (xy 109 57) (xy 110.049999 57)
(xy 110.049999 56.650028) (xy 110.049998 56.650013) (xy 110.039505 56.547302) (xy 109.984358 56.38088)
(xy 109.984356 56.380875) (xy 109.892315 56.231654) (xy 109.768345 56.107684) (xy 109.619124 56.015643)
(xy 109.619119 56.015641) (xy 109.452697 55.960494) (xy 109.45269 55.960493) (xy 109.349986 55.95)
(xy 109 55.95) (xy 109 57) (xy 108.916988 57) (xy 108.865796 56.970444) (xy 108.789496 56.95) (xy 108.710504 56.95)
(xy 108.634204 56.970444) (xy 108.565795 57.00994) (xy 108.50994 57.065795) (xy 108.470444 57.134204)
(xy 108.45 57.210504) (xy 108.45 57.289496) (xy 108.470444 57.365796) (xy 108.50994 57.434205) (xy 108.565795 57.49006)
(xy 108.583012 57.5) (xy 107.450001 57.5) (xy 107.450001 57.849986) (xy 107.460494 57.952697) (xy 107.515641 58.119119)
(xy 107.515643 58.119124) (xy 107.607684 58.268345) (xy 107.731654 58.392315) (xy 107.880875 58.484356)
(xy 107.88088 58.484358) (xy 108.047302 58.539505) (xy 108.047309 58.539506) (xy 108.150019 58.549999)
(xy 108.22123 58.549999) (xy 108.28827 58.569683) (xy 108.334026 58.622486) (xy 108.34397 58.691644)
(xy 108.314946 58.7552) (xy 108.259559 58.791927) (xy 108.25078 58.794779) (xy 108.068386 58.887715)
(xy 107.902786 59.008028) (xy 107.758028 59.152786) (xy 107.637715 59.318386) (xy 107.544781 59.500776)
(xy 107.481522 59.695465) (xy 107.4495 59.897648) (xy 91.533158 59.897648) (xy 91.529556 59.884204)
(xy 91.49006 59.815795) (xy 91.434205 59.75994) (xy 91.416988 59.75) (xy 92.549999 59.75) (xy 92.549999 59.400028)
(xy 92.549998 59.400013) (xy 92.539505 59.297302) (xy 92.484358 59.13088) (xy 92.484356 59.130875)
(xy 92.392315 58.981654) (xy 92.268345 58.857684) (xy 92.119124 58.765643) (xy 92.119119 58.765641)
(xy 92.050698 58.742969) (xy 91.993253 58.703196) (xy 91.96643 58.638681) (xy 91.978745 58.569905)
(xy 92.026288 58.518705) (xy 92.050691 58.507559) (xy 92.119334 58.484814) (xy 92.268656 58.392712)
(xy 92.392712 58.268656) (xy 92.484814 58.119334) (xy 92.539999 57.952797) (xy 92.5505 57.850009)
(xy 92.550499 56.650013) (xy 107.45 56.650013) (xy 107.45 57) (xy 108.5 57) (xy 108.5 55.95) (xy 108.150028 55.95)
(xy 108.150012 55.950001) (xy 108.047302 55.960494) (xy 107.88088 56.015641) (xy 107.880875 56.015643)
(xy 107.731654 56.107684) (xy 107.607684 56.231654) (xy 107.515643 56.380875) (xy 107.515641 56.38088)
(xy 107.460494 56.547302) (xy 107.460493 56.547309) (xy 107.45 56.650013) (xy 92.550499 56.650013)
(xy 92.550499 56.649992) (xy 92.539999 56.547203) (xy 92.484814 56.380666) (xy 92.392712 56.231344)
(xy 92.268656 56.107288) (xy 92.119334 56.015186) (xy 91.952797 55.960001) (xy 91.952795 55.96)
(xy 91.85001 55.9495) (xy 90.649998 55.9495) (xy 90.649981 55.949501) (xy 90.547203 55.96) (xy 90.5472 55.960001)
(xy 90.380668 56.015185) (xy 90.380663 56.015187) (xy 90.231342 56.107289) (xy 90.107289 56.231342)
(xy 90.015187 56.380663) (xy 90.015185 56.380668) (xy 90.015115 56.38088) (xy 89.960001 56.547203)
(xy 89.960001 56.547204) (xy 89.96 56.547204) (xy 89.9495 56.649983) (xy 89.002619 56.649983) (xy 89.042602 56.5112)
(xy 89.044708 56.504593) (xy 89.087999 56.380875) (xy 89.255462 55.902293) (xy 89.257939 55.895807)
(xy 89.405196 55.540298) (xy 89.502126 55.306287) (xy 89.504948 55.299981) (xy 89.781819 54.725051)
(xy 89.784988 54.718917) (xy 90.093653 54.16043) (xy 90.097186 54.154442) (xy 90.436678 53.614143)
(xy 90.440511 53.608406) (xy 90.809791 53.087955) (xy 90.813923 53.082464) (xy 91.211802 52.583539)
(xy 91.216243 52.57828) (xy 91.641475 52.102446) (xy 91.64622 52.097428) (xy 92.097428 51.64622)
(xy 92.102446 51.641475) (xy 92.57828 51.216243) (xy 92.583539 51.211802) (xy 93.082464 50.813923)
(xy 93.087955 50.809791) (xy 93.608406 50.440511) (xy 93.614143 50.436678) (xy 94.154444 50.097184)
(xy 94.160433 50.093652) (xy 94.315338 50.008039) (xy 94.718917 49.784988) (xy 94.725051 49.781819)
(xy 95.299981 49.504948) (xy 95.306287 49.502126) (xy 95.89582 49.257933) (xy 95.902293 49.255462)
(xy 96.504603 49.044704) (xy 96.5112 49.042602) (xy 97.124388 48.865946) (xy 97.13106 48.864225)
(xy 97.75318 48.722231) (xy 97.759974 48.720879) (xy 98.389088 48.613988) (xy 98.395915 48.613025)
(xy 99.030007 48.54158) (xy 99.036914 48.540997) (xy 99.67401 48.505219) (xy 99.680963 48.505024)
(xy 100.319037 48.505024)
(xy 91.952697 58.710494) (xy 91.95269 58.710493) (xy 91.849986 58.7) (xy 91.778767 58.7) (xy 91.711728 58.680315)
(xy 91.665973 58.627511) (xy 91.656029 58.558353) (xy 91.685054 58.494797) (xy 91.740448 58.458069)
(xy 91.749219 58.45522) (xy 91.93161 58.362287) (xy 92.02459 58.294732) (xy 92.097213 58.241971)
(xy 92.097215 58.241968) (xy 92.097219 58.241966) (xy 92.241966 58.097219) (xy 92.241968 58.097215)
(xy 92.241971 58.097213) (xy 92.294732 58.02459) (xy 92.362287 57.93161) (xy 92.45522 57.749219)
(xy 92.518477 57.554534) (xy 92.5505 57.352352) (xy 92.5505 57.147648) (xy 92.528689 57.00994) (xy 92.518477 56.945465)
(xy 92.496049 56.87644) (xy 92.45522 56.750781) (xy 92.455217 56.750777) (xy 92.455217 56.750774)
(xy 92.430956 56.70316) (xy 92.430955 56.703159) (xy 92.403876 56.650013) (xy 107.45 56.650013)
(xy 107.45 57) (xy 108.5 57) (xy 108.5 55.95) (xy 108.150028 55.95) (xy 108.150012 55.950001) (xy 108.047302 55.960494)
(xy 107.88088 56.015641) (xy 107.880875 56.015643) (xy 107.731654 56.107684) (xy 107.607684 56.231654)
(xy 107.515643 56.380875) (xy 107.515641 56.38088) (xy 107.460494 56.547302) (xy 107.460493 56.547309)
(xy 107.45 56.650013) (xy 92.403876 56.650013) (xy 92.362287 56.56839) (xy 92.362285 56.568387)
(xy 92.362284 56.568385) (xy 92.241971 56.402786) (xy 92.097213 56.258028) (xy 91.931613 56.137715)
(xy 91.931612 56.137714) (xy 91.93161 56.137713) (xy 91.872675 56.107684) (xy 91.749223 56.044781)
(xy 91.554534 55.981522) (xy 91.379995 55.953878) (xy 91.352352 55.9495) (xy 91.147648 55.9495)
(xy 91.123329 55.953351) (xy 90.945465 55.981522) (xy 90.750776 56.044781) (xy 90.568386 56.137715)
(xy 90.402786 56.258028) (xy 90.258028 56.402786) (xy 90.137715 56.568386) (xy 90.044781 56.750776)
(xy 89.981522 56.945465) (xy 89.9495 57.147648) (xy 88.860439 57.147648) (xy 88.864225 57.13106)
(xy 88.865957 57.124351) (xy 89.042602 56.5112) (xy 89.044708 56.504593) (xy 89.150452 56.202395)
(xy 89.255462 55.902293) (xy 89.257939 55.895807) (xy 89.405196 55.540298) (xy 89.502126 55.306287)
(xy 89.504948 55.299981) (xy 89.781819 54.725051) (xy 89.784988 54.718917) (xy 90.093653 54.16043)
(xy 90.097186 54.154442) (xy 90.436678 53.614143) (xy 90.440511 53.608406) (xy 90.809791 53.087955)
(xy 90.813923 53.082464) (xy 91.211802 52.583539) (xy 91.216243 52.57828) (xy 91.641475 52.102446)
(xy 91.64622 52.097428) (xy 92.097428 51.64622) (xy 92.102446 51.641475) (xy 92.57828 51.216243)
(xy 92.583539 51.211802) (xy 93.082464 50.813923) (xy 93.087955 50.809791) (xy 93.608406 50.440511)
(xy 93.614143 50.436678) (xy 94.154444 50.097184) (xy 94.160433 50.093652) (xy 94.315338 50.008039)
(xy 94.718917 49.784988) (xy 94.725051 49.781819) (xy 95.299981 49.504948) (xy 95.306287 49.502126)
(xy 95.89582 49.257933) (xy 95.902293 49.255462) (xy 96.504603 49.044704) (xy 96.5112 49.042602)
(xy 97.124388 48.865946) (xy 97.13106 48.864225) (xy 97.75318 48.722231) (xy 97.759974 48.720879)
(xy 98.389088 48.613988) (xy 98.395915 48.613025) (xy 99.030007 48.54158) (xy 99.036914 48.540997)
(xy 99.67401 48.505219) (xy 99.680963 48.505024) (xy 100.319037 48.505024)
)
)
)

View File

@@ -1,6 +1,6 @@
{
"board": {
"active_layer": 33,
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],

View File

@@ -37,9 +37,9 @@
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 1.27,
"width": 2.54
"drill": 0.6,
"height": 1.6,
"width": 1.6
},
"silk_line_width": 0.1,
"silk_text_italic": false,

View File

@@ -0,0 +1,612 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "2b6d4934-f26b-4a9c-be2f-091658a1cf69")
(paper "A5")
(title_block
(title "Mole Beacon")
(date "05.10.2025")
(rev "2.1")
(company "Peter Siegmund")
(comment 1 "kicad@mars3142.org")
(comment 2 "https://wiki.mars3142.dev/project/maerklin/warnemuende/lighthouse/start")
)
(lib_symbols
(symbol "aliexpress:Buck_Converter"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "J"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "aliexpress:Buck Converter (30V to 5V)"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "Buck_Converter_0_1"
(rectangle
(start -7.62 6.35)
(end 8.89 -6.35)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
)
(symbol "Buck_Converter_1_1"
(pin passive line
(at -7.62 3.81 0)
(length 2.54)
(name "IN-"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at -7.62 -3.81 0)
(length 2.54)
(name "IN+"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 8.89 3.81 180)
(length 2.54)
(name "OUT-"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 8.89 -3.81 180)
(length 2.54)
(name "OUT+"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
(symbol "pcbway:LOGO"
(pin_names
(offset 1.016)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "#G"
(at 0 1.3915 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "LOGO"
(at 0 -1.3915 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "LOGO_0_0"
(polyline
(pts
(xy -4.9134 -1.4708) (xy -4.9126 -1.4707) (xy -4.8189 -1.4495) (xy -4.6929 -1.4238) (xy -4.5386 -1.3944)
(xy -4.3599 -1.3618) (xy -4.1609 -1.3267) (xy -3.9455 -1.2898) (xy -3.7176 -1.2516) (xy -3.4814 -1.2129)
(xy -3.2407 -1.1744) (xy -2.9995 -1.1365) (xy -2.7618 -1.1001) (xy -2.5316 -1.0658) (xy -2.3129 -1.0341)
(xy -2.1096 -1.0058) (xy -1.9257 -0.9816) (xy -1.8406 -0.9707) (xy -1.7364 -0.9574) (xy -1.6414 -0.9453)
(xy -1.5633 -0.9355) (xy -1.3456 -0.9108) (xy -1.1003 -0.8857) (xy -0.8339 -0.8607) (xy -0.5527 -0.8364)
(xy -0.2632 -0.8133) (xy 0.0281 -0.7919) (xy 0.3148 -0.7728) (xy 0.5903 -0.7564) (xy 0.8484 -0.7434)
(xy 1.0295 -0.7365) (xy 1.237 -0.7311) (xy 1.459 -0.7275) (xy 1.6882 -0.7256) (xy 1.9173 -0.7254)
(xy 2.139 -0.727) (xy 2.346 -0.7303) (xy 2.531 -0.7353) (xy 2.6867 -0.7421) (xy 2.8242 -0.7501)
(xy 2.9888 -0.7606) (xy 3.1492 -0.7717) (xy 3.3014 -0.7831) (xy 3.4413 -0.7945) (xy 3.5649 -0.8054)
(xy 3.668 -0.8156) (xy 3.7467 -0.8248) (xy 3.7969 -0.8325) (xy 3.8145 -0.8384) (xy 3.8143 -0.8409)
(xy 3.8058 -0.871) (xy 3.7886 -0.916) (xy 3.7846 -0.9258) (xy 3.771 -0.9651) (xy 3.7687 -0.9842)
(xy 3.7691 -0.9844) (xy 3.7919 -0.9862) (xy 3.8435 -0.9868) (xy 3.9167 -0.9863) (xy 4.0043 -0.9847)
(xy 4.2339 -0.979) (xy 4.2463 -0.9225) (xy 4.2587 -0.866) (xy 4.3988 -0.8781) (xy 4.4006 -0.8783)
(xy 4.5698 -0.8927) (xy 4.7063 -0.9038) (xy 4.8134 -0.9117) (xy 4.895 -0.9167) (xy 4.9545 -0.919)
(xy 4.9956 -0.9186) (xy 5.0218 -0.9159) (xy 5.0369 -0.9109) (xy 5.0411 -0.9085) (xy 5.0489 -0.902)
(xy 5.0468 -0.8961) (xy 5.0309 -0.89) (xy 4.9975 -0.8831) (xy 4.9428 -0.8748) (xy 4.8631 -0.8642)
(xy 4.7545 -0.8507) (xy 4.6132 -0.8337) (xy 4.5312 -0.8238) (xy 4.4395 -0.8123) (xy 4.3662 -0.8027)
(xy 4.3174 -0.7959) (xy 4.2991 -0.7925) (xy 4.2991 -0.7924) (xy 4.3052 -0.7734) (xy 4.3229 -0.7235)
(xy 4.3509 -0.6462) (xy 4.3879 -0.5446) (xy 4.4329 -0.4222) (xy 4.4845 -0.2822) (xy 4.5415 -0.1282)
(xy 4.6028 0.0367) (xy 4.9097 0.862) (xy 4.6983 0.8672) (xy 4.6201 0.8681) (xy 4.5478 0.8667)
(xy 4.4966 0.8633) (xy 4.4741 0.858) (xy 4.4707 0.8511) (xy 4.4567 0.8138) (xy 4.4347 0.7493)
(xy 4.4061 0.6628) (xy 4.3729 0.5593) (xy 4.3366 0.4442) (xy 4.3159 0.3788) (xy 4.2814 0.2728)
(xy 4.2508 0.1831) (xy 4.2257 0.1145) (xy 4.208 0.0716) (xy 4.1992 0.059) (xy 4.1955 0.0663) (xy 4.1808 0.1038)
(xy 4.1572 0.1683) (xy 4.1268 0.2546) (xy 4.0912 0.3576) (xy 4.0523 0.4723) (xy 3.9182 0.8712)
(xy 3.6924 0.8712) (xy 3.4666 0.8712) (xy 3.5005 0.7841) (xy 3.508 0.7647) (xy 3.5295 0.7081)
(xy 3.5611 0.6249) (xy 3.6009 0.5199) (xy 3.647 0.398) (xy 3.6977 0.264) (xy 3.751 0.1226) (xy 3.9676 -0.4517)
(xy 3.9338 -0.5468) (xy 3.9211 -0.5816) (xy 3.8967 -0.6472) (xy 3.877 -0.6975) (xy 3.854 -0.7531)
(xy 3.628 -0.7302) (xy 3.4379 -0.7118) (xy 2.7081 -0.6577) (xy 1.9525 -0.6269) (xy 1.1731 -0.6191)
(xy 0.3719 -0.6344) (xy -0.449 -0.6725) (xy -1.2878 -0.7334) (xy -2.1424 -0.817) (xy -3.0108 -0.9231)
(xy -3.891 -1.0516) (xy -4.7811 -1.2025) (xy -4.8948 -1.2231) (xy -4.9162 -1.3263) (xy -4.9257 -1.3701)
(xy -4.9386 -1.424) (xy -4.9477 -1.4556) (xy -4.9489 -1.4591) (xy -4.9449 -1.4741) (xy -4.9134 -1.4708)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy -4.4015 -0.1587) (xy -4.4015 0.1685) (xy -4.1218 0.1801) (xy -4.0185 0.1852) (xy -3.8966 0.1948)
(xy -3.8007 0.2088) (xy -3.7242 0.229) (xy -3.661 0.2572) (xy -3.6047 0.2953) (xy -3.5488 0.3451)
(xy -3.4926 0.4076) (xy -3.4351 0.5046) (xy -3.4029 0.6167) (xy -3.3928 0.752) (xy -3.3973 0.8282)
(xy -3.4295 0.9614) (xy -3.4906 1.0768) (xy -3.5783 1.1706) (xy -3.6901 1.2387) (xy -3.7066 1.2458)
(xy -3.7363 1.2571) (xy -3.7677 1.2658) (xy -3.806 1.2721) (xy -3.8559 1.2765) (xy -3.9227 1.2794)
(xy -4.0111 1.2811) (xy -4.1263 1.282) (xy -4.2731 1.2826) (xy -4.7591 1.2838) (xy -4.7621 0.7332)
(xy -4.4015 0.7332) (xy -4.4015 0.984) (xy -4.1542 0.978) (xy -3.9068 0.972) (xy -3.841 0.9062)
(xy -3.7879 0.8322) (xy -3.7655 0.7493) (xy -3.7753 0.6671) (xy -3.8164 0.5925) (xy -3.888 0.5325)
(xy -3.9112 0.5206) (xy -3.9504 0.5074) (xy -4.0024 0.4985) (xy -4.0753 0.4927) (xy -4.1768 0.4887)
(xy -4.4015 0.4823) (xy -4.4015 0.7332) (xy -4.7621 0.7332) (xy -4.7639 0.3989) (xy -4.7686 -0.4859)
(xy -4.5851 -0.4859) (xy -4.4015 -0.4859) (xy -4.4015 -0.1587)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy -2.2997 -0.4376) (xy -2.145 -0.4058) (xy -2.0093 -0.3536) (xy -1.9936 -0.3451) (xy -1.9404 -0.3123)
(xy -1.881 -0.2711) (xy -1.8226 -0.2273) (xy -1.7727 -0.1865) (xy -1.7388 -0.1545) (xy -1.728 -0.1369)
(xy -1.7291 -0.135) (xy -1.7474 -0.1118) (xy -1.7829 -0.0707) (xy -1.8293 -0.0194) (xy -1.9254 0.0852)
(xy -2.031 0.0037) (xy -2.0456 -0.0075) (xy -2.1453 -0.0738) (xy -2.2391 -0.1143) (xy -2.3399 -0.1333)
(xy -2.4607 -0.1348) (xy -2.5469 -0.1275) (xy -2.6582 -0.1012) (xy -2.7542 -0.0527) (xy -2.8461 0.0226)
(xy -2.8681 0.0454) (xy -2.9387 0.1496) (xy -2.9831 0.2709) (xy -3.0002 0.4011) (xy -2.9885 0.532)
(xy -2.9467 0.6553) (xy -2.9257 0.6949) (xy -2.8431 0.8056) (xy -2.7393 0.8863) (xy -2.614 0.9375)
(xy -2.4667 0.9593) (xy -2.4009 0.96) (xy -2.2641 0.9418) (xy -2.1394 0.8938) (xy -2.0174 0.8127)
(xy -1.923 0.7375) (xy -1.8235 0.8358) (xy -1.8148 0.8445) (xy -1.7687 0.8936) (xy -1.7362 0.9334)
(xy -1.7239 0.9561) (xy -1.7368 0.9774) (xy -1.7714 1.0132) (xy -1.8202 1.0555) (xy -1.8224 1.0573)
(xy -1.9755 1.1583) (xy -2.1393 1.2278) (xy -2.3093 1.266) (xy -2.481 1.2731) (xy -2.6498 1.2493)
(xy -2.8112 1.1949) (xy -2.9606 1.11) (xy -3.0935 0.9949) (xy -3.1044 0.9832) (xy -3.1893 0.8775)
(xy -3.249 0.7677) (xy -3.292 0.6386) (xy -3.2988 0.6111) (xy -3.3213 0.4372) (xy -3.3104 0.2682)
(xy -3.2684 0.1081) (xy -3.1975 -0.0393) (xy -3.1001 -0.17) (xy -2.9783 -0.2802) (xy -2.8346 -0.3659)
(xy -2.6712 -0.4232) (xy -2.6169 -0.4343) (xy -2.461 -0.4475) (xy -2.2997 -0.4376)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy -1.1233 -0.4824) (xy -0.6144 -0.4768) (xy -0.5044 -0.4253) (xy -0.4147 -0.3761) (xy -0.3096 -0.2901)
(xy -0.2368 -0.1887) (xy -0.2186 -0.1342) (xy -0.2057 -0.0498) (xy -0.2012 0.0482) (xy -0.2056 0.1482)
(xy -0.2194 0.2385) (xy -0.2196 0.2395) (xy -0.2514 0.3086) (xy -0.3088 0.3766) (xy -0.382 0.4337)
(xy -0.4608 0.4706) (xy -0.4769 0.4757) (xy -0.5159 0.4912) (xy -0.5312 0.5027) (xy -0.5303 0.505)
(xy -0.5102 0.5238) (xy -0.4723 0.5502) (xy -0.4354 0.5773) (xy -0.3655 0.6584) (xy -0.3198 0.758)
(xy -0.2999 0.8684) (xy -0.3078 0.9819) (xy -0.3454 1.0904) (xy -0.3828 1.1433) (xy -0.4566 1.2066)
(xy -0.5495 1.2577) (xy -0.6517 1.29) (xy -0.6547 1.2905) (xy -0.7121 1.2974) (xy -0.8003 1.3032)
(xy -0.9138 1.3076) (xy -1.0472 1.3103) (xy -1.1952 1.3113) (xy -1.6322 1.3113) (xy -1.6322 0.7886)
(xy -1.1738 0.7886) (xy -1.1738 0.9812) (xy -1.0481 0.9812) (xy -0.9444 0.9758) (xy -0.8595 0.9557)
(xy -0.8033 0.919) (xy -0.7728 0.8635) (xy -0.7649 0.7872) (xy -0.7798 0.7121) (xy -0.8234 0.6516)
(xy -0.8939 0.6154) (xy -0.9248 0.6087) (xy -0.9951 0.5997) (xy -1.0683 0.5962) (xy -1.1738 0.5961)
(xy -1.1738 0.7886) (xy -1.6322 0.7886) (xy -1.6322 0.4116) (xy -1.6322 0.0642) (xy -1.1738 0.0642)
(xy -1.1738 0.2843) (xy -0.999 0.2843) (xy -0.8935 0.2814) (xy -0.8043 0.2699) (xy -0.7406 0.2477)
(xy -0.6969 0.2129) (xy -0.6676 0.1634) (xy -0.6614 0.1473) (xy -0.6473 0.0584) (xy -0.6665 -0.0226)
(xy -0.7164 -0.0896) (xy -0.7944 -0.1363) (xy -0.8055 -0.1396) (xy -0.8572 -0.1479) (xy -0.9294 -0.1537)
(xy -1.0099 -0.1558) (xy -1.1738 -0.1558) (xy -1.1738 0.0642) (xy -1.6322 0.0642) (xy -1.6322 -0.4881)
(xy -1.1233 -0.4824)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 0.9153 0.0572) (xy 0.9251 0.0964) (xy 0.9604 0.2344) (xy 0.9922 0.3536) (xy 1.0194 0.4507)
(xy 1.0411 0.5223) (xy 1.0564 0.565) (xy 1.0642 0.5753) (xy 1.0653 0.5727) (xy 1.0753 0.5412)
(xy 1.0927 0.4801) (xy 1.1164 0.3939) (xy 1.145 0.2874) (xy 1.1774 0.1652) (xy 1.2121 0.0321)
(xy 1.3464 -0.4859) (xy 1.5993 -0.4859) (xy 1.6293 -0.4859) (xy 1.7169 -0.4854) (xy 1.7877 -0.4844)
(xy 1.8351 -0.483) (xy 1.8524 -0.4814) (xy 1.8527 -0.4802) (xy 1.8591 -0.4541) (xy 1.8735 -0.3967)
(xy 1.895 -0.3114) (xy 1.9228 -0.2014) (xy 1.956 -0.0701) (xy 1.9938 0.079) (xy 2.0353 0.2426)
(xy 2.0797 0.4173) (xy 2.3067 1.3113) (xy 2.0743 1.3113) (xy 1.8419 1.3113) (xy 1.7888 1.0591)
(xy 1.7741 0.9897) (xy 1.748 0.8675) (xy 1.7185 0.7302) (xy 1.6881 0.5898) (xy 1.6595 0.4587)
(xy 1.5832 0.1105) (xy 1.5069 0.4312) (xy 1.4943 0.4842) (xy 1.4612 0.6236) (xy 1.4262 0.7712)
(xy 1.3928 0.9122) (xy 1.3644 1.0322) (xy 1.2981 1.3124) (xy 1.0683 1.3073) (xy 0.8385 1.3021)
(xy 0.8152 1.2104) (xy 0.8049 1.1696) (xy 0.7869 1.0983) (xy 0.7628 1.0027) (xy 0.734 0.8886)
(xy 0.7021 0.7617) (xy 0.6684 0.6278) (xy 0.6647 0.6131) (xy 0.6325 0.4867) (xy 0.6032 0.3735)
(xy 0.578 0.2782) (xy 0.5579 0.205) (xy 0.5444 0.1585) (xy 0.5384 0.1432) (xy 0.5348 0.1554) (xy 0.5245 0.1994)
(xy 0.5089 0.2704) (xy 0.4889 0.3638) (xy 0.4657 0.4744) (xy 0.4403 0.5975) (xy 0.4238 0.6777)
(xy 0.3969 0.8082) (xy 0.3716 0.9304) (xy 0.3493 1.0375) (xy 0.3315 1.1224) (xy 0.3196 1.1784)
(xy 0.2909 1.3113) (xy 0.0525 1.3113) (xy -0.0203 1.3111) (xy -0.0949 1.3099) (xy -0.1422 1.3069)
(xy -0.1679 1.3013) (xy -0.1774 1.2923) (xy -0.1762 1.2792) (xy -0.1743 1.2727) (xy -0.1641 1.2338)
(xy -0.1466 1.166) (xy -0.1229 1.0737) (xy -0.0944 0.9617) (xy -0.062 0.8346) (xy -0.0272 0.6969)
(xy 0.0101 0.5501) (xy 0.0593 0.3563) (xy 0.1053 0.1756) (xy 0.1472 0.0112) (xy 0.1844 -0.1336)
(xy 0.2159 -0.2558) (xy 0.2408 -0.352) (xy 0.2585 -0.4191) (xy 0.268 -0.4538) (xy 0.2719 -0.4627)
(xy 0.2849 -0.4729) (xy 0.3112 -0.4797) (xy 0.3567 -0.4836) (xy 0.4273 -0.4855) (xy 0.5288 -0.4859)
(xy 0.78 -0.4859) (xy 0.9153 0.0572)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 2.7284 -0.5176) (xy 2.8095 -0.5036) (xy 2.8434 -0.4913) (xy 2.9068 -0.4604) (xy 2.97 -0.4224)
(xy 3.0626 -0.36) (xy 3.0626 -0.423) (xy 3.0626 -0.4859) (xy 3.2735 -0.4859) (xy 3.4844 -0.4859)
(xy 3.4844 0.0373) (xy 3.4844 0.1188) (xy 3.4837 0.2684) (xy 3.4817 0.3878) (xy 3.4776 0.4816)
(xy 3.4708 0.5543) (xy 3.4604 0.6102) (xy 3.4459 0.654) (xy 3.4264 0.69) (xy 3.4013 0.7227) (xy 3.3698 0.7566)
(xy 3.3417 0.7811) (xy 3.2784 0.8224) (xy 3.2103 0.8552) (xy 3.1456 0.8742) (xy 3.0351 0.8928)
(xy 2.9059 0.9034) (xy 2.7679 0.9054) (xy 2.6311 0.8987) (xy 2.5053 0.8827) (xy 2.4693 0.8762)
(xy 2.403 0.8636) (xy 2.3561 0.8538) (xy 2.3369 0.8484) (xy 2.3351 0.8353) (xy 2.3327 0.794) (xy 2.3305 0.7347)
(xy 2.3286 0.6673) (xy 2.3273 0.6022) (xy 2.327 0.5494) (xy 2.3278 0.5192) (xy 2.3289 0.5181)
(xy 2.352 0.5205) (xy 2.3992 0.5332) (xy 2.462 0.5541) (xy 2.5151 0.5713) (xy 2.6377 0.5981) (xy 2.7546 0.6071)
(xy 2.8601 0.599) (xy 2.9488 0.5746) (xy 3.0148 0.5345) (xy 3.0527 0.4794) (xy 3.0566 0.4676)
(xy 3.0605 0.4386) (xy 3.0486 0.4187) (xy 3.0155 0.4051) (xy 2.9561 0.3956) (xy 2.8652 0.3874)
(xy 2.8371 0.3851) (xy 2.6604 0.3614) (xy 2.5157 0.3236) (xy 2.4013 0.2706) (xy 2.315 0.2013)
(xy 2.2548 0.1144) (xy 2.2189 0.0089) (xy 2.2129 -0.0619) (xy 2.6408 -0.0619) (xy 2.6423 -0.039)
(xy 2.6685 0.0286) (xy 2.7271 0.0802) (xy 2.8177 0.1154) (xy 2.9395 0.1337) (xy 3.0643 0.1426)
(xy 3.0589 -0.0001) (xy 3.0579 -0.0227) (xy 3.0535 -0.0885) (xy 3.0453 -0.1298) (xy 3.0306 -0.1563)
(xy 3.0065 -0.1778) (xy 2.9902 -0.1877) (xy 2.9312 -0.2091) (xy 2.8598 -0.2216) (xy 2.8537 -0.2221)
(xy 2.7598 -0.2185) (xy 2.6934 -0.1909) (xy 2.6539 -0.1388) (xy 2.6408 -0.0619) (xy 2.2129 -0.0619)
(xy 2.2081 -0.1187) (xy 2.229 -0.2381) (xy 2.2793 -0.3439) (xy 2.3562 -0.4308) (xy 2.4574 -0.4934)
(xy 2.4696 -0.4981) (xy 2.5435 -0.5144) (xy 2.6348 -0.521) (xy 2.7284 -0.5176)
)
(stroke
(width 0.01)
(type default)
)
(fill
(type outline)
)
)
)
(embedded_fonts no)
)
)
(wire
(pts
(xy 113.03 57.15) (xy 110.49 57.15)
)
(stroke
(width 0)
(type default)
)
(uuid "4453f97c-cdbc-4460-9e53-f51c10cc29a5")
)
(wire
(pts
(xy 91.44 64.77) (xy 93.98 64.77)
)
(stroke
(width 0)
(type default)
)
(uuid "67c206ab-60ee-4c7c-b954-bee69696c05f")
)
(wire
(pts
(xy 113.03 64.77) (xy 110.49 64.77)
)
(stroke
(width 0)
(type default)
)
(uuid "9ed28e20-21fd-46b1-a63e-a1e91617e8d5")
)
(wire
(pts
(xy 91.44 57.15) (xy 93.98 57.15)
)
(stroke
(width 0)
(type default)
)
(uuid "b8ec37a6-0ec9-4e6a-9799-41ba25c072f8")
)
(hierarchical_label "+5V"
(shape input)
(at 113.03 64.77 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
(uuid "49736fc8-7582-437f-b944-e335a12eb6ef")
)
(hierarchical_label "GND"
(shape input)
(at 91.44 57.15 180)
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
(uuid "7a2c1cd9-2455-4c87-a3c7-0b784b36e211")
)
(hierarchical_label "IN+"
(shape input)
(at 91.44 64.77 180)
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
(uuid "a24b21ef-aabc-4e5d-b273-111ad1e61ae6")
)
(hierarchical_label "GND"
(shape input)
(at 113.03 57.15 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
(uuid "bc457276-adce-45f2-9626-ce9aff50f3ce")
)
(symbol
(lib_id "pcbway:LOGO")
(at 191.77 106.68 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "1cf32eeb-f182-44f8-a55b-83c815fa5863")
(property "Reference" "#G2"
(at 191.77 105.2885 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "LOGO"
(at 191.77 108.0715 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Footprint" ""
(at 191.77 106.68 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 191.77 106.68 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 191.77 106.68 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a/3530c7d0-16a6-4646-8301-a5537eed1d29"
(reference "#G2")
(unit 1)
)
)
)
)
(symbol
(lib_id "aliexpress:Buck_Converter")
(at 101.6 60.96 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "b229468b-72ca-47f8-8cce-9b4eb7310737")
(property "Reference" "J6"
(at 101.6 49.53 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "~"
(at 101.6 52.07 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "aliexpress:Buck Converter (30V to 5V)"
(at 101.6 60.96 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 101.6 60.96 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 101.6 60.96 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "4"
(uuid "b5d773f6-ff23-4250-ad99-ddc43d1dce14")
)
(pin "3"
(uuid "a6ca6a9e-52e1-423f-b1b3-910fc7ca555d")
)
(pin "2"
(uuid "90722ccd-14f2-44b4-822c-7792d3188d0e")
)
(pin "1"
(uuid "41ee7aa9-98e6-4e48-805e-fe101b8b3930")
)
(instances
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a/3530c7d0-16a6-4646-8301-a5537eed1d29"
(reference "J6")
(unit 1)
)
)
)
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"board": {
"active_layer": 0,
"active_layer": 2,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_netclasses": [],
@@ -49,7 +49,7 @@
"conflict_shadows",
"shapes"
],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
"visible_layers": "00000000_00000000_00002a8a_aaaaaaaf",
"zone_display_mode": 0
},
"git": {

View File

@@ -490,20 +490,6 @@
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
},
{
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_width": 0.2,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 0,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.5,
"via_diameter": 0.6,
"via_drill": 0.3
}
],
"meta": {
@@ -637,7 +623,7 @@
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"page_layout_descr_file": "kicad-embed://pcbway.kicad_wks",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
@@ -653,6 +639,10 @@
[
"7f117d42-0d8b-4a32-a9d3-0b04c0222a5a",
"Root"
],
[
"3530c7d0-16a6-4646-8301-a5537eed1d29",
"Buck Converter"
]
],
"text_variables": {}

View File

@@ -7,7 +7,7 @@
(title_block
(title "Mole Beacon")
(date "05.10.2025")
(rev "2.0")
(rev "2.1")
(company "Peter Siegmund")
(comment 1 "kicad@mars3142.org")
(comment 2 "https://wiki.mars3142.dev/project/maerklin/warnemuende/lighthouse/start")
@@ -743,142 +743,6 @@
)
(embedded_fonts no)
)
(symbol "aliexpress:Buck_Converter"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "J"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "aliexpress:Buck Converter (30V to 5V)"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "Buck_Converter_0_1"
(rectangle
(start -7.62 6.35)
(end 8.89 -6.35)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
)
(symbol "Buck_Converter_1_1"
(pin passive line
(at -7.62 3.81 0)
(length 2.54)
(name "IN+"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at -7.62 -3.81 0)
(length 2.54)
(name "IN-"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 8.89 3.81 180)
(length 2.54)
(name "OUT+"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 8.89 -3.81 180)
(length 2.54)
(name "OUT-"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
(symbol "pcbway:LOGO"
(pin_names
(offset 1.016)
@@ -2120,18 +1984,6 @@
)
(uuid cf812ae0-560b-413f-92d1-b730cdc0cdf4)
)
(rectangle
(start 133.35 41.91)
(end 162.56 74.93)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid d7f1024f-5623-4315-a2fa-d274f8162a08)
)
(text "Connector"
(exclude_from_sim no)
(at 109.22 44.45 0)
@@ -2152,16 +2004,6 @@
)
(uuid "ab900126-cfae-4d8f-85d9-7dba67c31e4e")
)
(text "Buck Converter"
(exclude_from_sim no)
(at 142.24 44.45 0)
(effects
(font
(size 1.27 1.27)
)
)
(uuid "be0a1c83-01b8-4606-9abb-a3283a130ffc")
)
(text "MCU"
(exclude_from_sim no)
(at 38.1 44.45 0)
@@ -2230,6 +2072,16 @@
)
(uuid "138bb844-b8b0-48b1-96ce-857e99a2861e")
)
(wire
(pts
(xy 156.21 68.58) (xy 156.21 66.04)
)
(stroke
(width 0)
(type default)
)
(uuid "27cb9d76-8c0d-440f-b1e3-8f10844b28ed")
)
(wire
(pts
(xy 46.99 64.77) (xy 49.53 64.77)
@@ -2242,33 +2094,23 @@
)
(wire
(pts
(xy 158.75 55.88) (xy 158.75 53.34)
(xy 137.16 50.8) (xy 137.16 53.34)
)
(stroke
(width 0)
(type default)
)
(uuid "5a7691b5-6a2c-48ef-9f81-1275c7d0cd0d")
(uuid "58609cc6-60db-49e2-a8f1-08a56d93dc64")
)
(wire
(pts
(xy 156.21 63.5) (xy 158.75 63.5)
(xy 170.18 53.34) (xy 173.99 53.34)
)
(stroke
(width 0)
(type default)
)
(uuid "7b259590-ebdd-4457-ba02-bd6359e44d79")
)
(wire
(pts
(xy 156.21 55.88) (xy 158.75 55.88)
)
(stroke
(width 0)
(type default)
)
(uuid "8ce447bc-8028-4a90-b3d4-df46351c1100")
(uuid "7472efae-d3c6-4124-be7b-251604dab3ee")
)
(wire
(pts
@@ -2280,16 +2122,6 @@
)
(uuid "8d2604b8-f530-4ca1-ae7b-91ca3249b74c")
)
(wire
(pts
(xy 137.16 63.5) (xy 139.7 63.5)
)
(stroke
(width 0)
(type default)
)
(uuid "8fc600ef-a12b-48be-9df9-0a2ff8ec3834")
)
(wire
(pts
(xy 83.82 72.39) (xy 80.01 72.39)
@@ -2322,43 +2154,23 @@
)
(wire
(pts
(xy 137.16 55.88) (xy 139.7 55.88)
(xy 173.99 50.8) (xy 173.99 53.34)
)
(stroke
(width 0)
(type default)
)
(uuid "b1ead9fa-0289-42bc-9d81-ae7cc298c405")
(uuid "c9915e38-92e5-45a8-9e03-a843c960cc4e")
)
(wire
(pts
(xy 137.16 66.04) (xy 137.16 63.5)
(xy 140.97 53.34) (xy 137.16 53.34)
)
(stroke
(width 0)
(type default)
)
(uuid "c2ae12e3-47b0-42b9-b71a-a4ce7a320c25")
)
(wire
(pts
(xy 158.75 63.5) (xy 158.75 66.04)
)
(stroke
(width 0)
(type default)
)
(uuid "cc175ac2-4858-4503-b814-be26c3a9f6c2")
)
(wire
(pts
(xy 137.16 53.34) (xy 137.16 55.88)
)
(stroke
(width 0)
(type default)
)
(uuid "cdd2c775-e2f4-4b53-a44e-524928ab02cd")
(uuid "ed1f9560-0939-497a-a125-8788151a9329")
)
(global_label "OUTDOOR_L"
(shape input)
@@ -2536,138 +2348,6 @@
)
)
)
(symbol
(lib_id "power:VCC")
(at 137.16 53.34 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "0546d755-55a1-487a-9476-3a7ac65ca049")
(property "Reference" "#PWR03"
(at 137.16 57.15 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "VCC"
(at 137.16 48.26 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 137.16 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 137.16 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"VCC\""
(at 137.16 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "4372f9bc-e3ab-4544-85ef-877fbb0956a3")
)
(instances
(project ""
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR03")
(unit 1)
)
)
)
)
(symbol
(lib_id "power:+5V")
(at 158.75 53.34 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "116d424e-08c1-4790-900d-c1079395c7c9")
(property "Reference" "#PWR04"
(at 158.75 57.15 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "+5V"
(at 158.75 48.26 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 158.75 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 158.75 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"+5V\""
(at 158.75 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "6da24567-9056-4207-991f-a04f7dfcbdeb")
)
(instances
(project ""
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR04")
(unit 1)
)
)
)
)
(symbol
(lib_id "power:GND")
(at 96.52 57.15 0)
@@ -2761,7 +2441,7 @@
(justify left)
)
)
(property "Footprint" "Connector_JST:JST_PH_S4B-PH-K_1x06_P2.00mm_Horizontal"
(property "Footprint" "Connector_JST:JST_PH_S6B-PH-K_1x06_P2.00mm_Horizontal"
(at 121.92 53.34 0)
(effects
(font
@@ -2952,80 +2632,6 @@
)
)
)
(symbol
(lib_id "aliexpress:Buck_Converter")
(at 147.32 59.69 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "53815356-ea40-4e41-a9a3-22e2dbcf5773")
(property "Reference" "J2"
(at 147.32 48.26 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "~"
(at 147.32 50.8 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "aliexpress:Buck Converter (30V to 5V)"
(at 147.32 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 147.32 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 147.32 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "4"
(uuid "1ba711ee-3c46-462e-a43b-0a0f5bf487fb")
)
(pin "3"
(uuid "aaa84d7a-8e68-4380-a460-5b3f2200439b")
)
(pin "2"
(uuid "0fb7adc2-71dc-4e5a-84cb-669f302bf5e4")
)
(pin "1"
(uuid "747b5aa1-ec5c-4598-99d7-5f6358378a1a")
)
(instances
(project ""
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "J2")
(unit 1)
)
)
)
)
(symbol
(lib_id "power:GND")
(at 116.84 66.04 270)
@@ -3292,17 +2898,17 @@
)
)
(symbol
(lib_id "power:GND")
(at 137.16 66.04 0)
(lib_id "power:+5V")
(at 173.99 50.8 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "bcd48e18-5afb-4c3c-94cf-77b3c9b18e73")
(property "Reference" "#PWR09"
(at 137.16 72.39 0)
(uuid "8c9ef1fc-52e4-4e13-9040-6ff498a067fa")
(property "Reference" "#PWR014"
(at 173.99 54.61 0)
(effects
(font
(size 1.27 1.27)
@@ -3310,8 +2916,8 @@
(hide yes)
)
)
(property "Value" "GND"
(at 137.16 71.12 0)
(property "Value" "+5V"
(at 173.99 45.72 0)
(effects
(font
(size 1.27 1.27)
@@ -3319,7 +2925,7 @@
)
)
(property "Footprint" ""
(at 137.16 66.04 0)
(at 173.99 50.8 0)
(effects
(font
(size 1.27 1.27)
@@ -3328,7 +2934,7 @@
)
)
(property "Datasheet" ""
(at 137.16 66.04 0)
(at 173.99 50.8 0)
(effects
(font
(size 1.27 1.27)
@@ -3336,8 +2942,8 @@
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"GND\" , ground"
(at 137.16 66.04 0)
(property "Description" "Power symbol creates a global label with name \"+5V\""
(at 173.99 50.8 0)
(effects
(font
(size 1.27 1.27)
@@ -3346,12 +2952,78 @@
)
)
(pin "1"
(uuid "e29f0422-730e-445c-aca9-6963a35b90e4")
(uuid "9aef3444-d9be-48f1-9705-17fcd5126995")
)
(instances
(project ""
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR09")
(reference "#PWR014")
(unit 1)
)
)
)
)
(symbol
(lib_id "power:VCC")
(at 137.16 50.8 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "b12d1505-06d5-40db-89de-ffdf1c860048")
(property "Reference" "#PWR015"
(at 137.16 54.61 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "VCC"
(at 137.16 45.72 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 137.16 50.8 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 137.16 50.8 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"VCC\""
(at 137.16 50.8 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "6a8c9f70-9387-4f92-ab62-2850449b0a20")
)
(instances
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR015")
(unit 1)
)
)
@@ -3487,72 +3159,6 @@
)
)
)
(symbol
(lib_id "power:GND")
(at 158.75 66.04 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "e5d72153-3dda-43e6-9381-527c962657b0")
(property "Reference" "#PWR010"
(at 158.75 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "GND"
(at 158.75 71.12 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 158.75 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 158.75 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"GND\" , ground"
(at 158.75 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "6d9166cf-dca1-4668-bd10-347090075e7a")
)
(instances
(project ""
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR010")
(unit 1)
)
)
)
)
(symbol
(lib_id "wemos:Conn_ESP32-H2_Super-Mini_-_Pins_only")
(at 64.77 62.23 0)
@@ -3579,7 +3185,7 @@
)
)
)
(property "Footprint" "wemos:PinSocket_S3 Zero"
(property "Footprint" "wemos:PinSocket_H2 Super-Mini"
(at 48.26 62.23 0)
(effects
(font
@@ -3742,6 +3348,72 @@
)
)
)
(symbol
(lib_id "power:GND")
(at 156.21 68.58 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "fb2512d8-8e34-4b0a-bfa3-1706940f6f34")
(property "Reference" "#PWR016"
(at 156.21 74.93 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Value" "GND"
(at 156.21 73.66 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 156.21 68.58 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 156.21 68.58 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Power symbol creates a global label with name \"GND\" , ground"
(at 156.21 68.58 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "114b7f86-2385-4dcc-a475-abc0ab785287")
)
(instances
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(reference "#PWR016")
(unit 1)
)
)
)
)
(symbol
(lib_id "power:GND")
(at 116.84 60.96 270)
@@ -3876,10 +3548,102 @@
)
)
)
(sheet
(at 140.97 45.72)
(size 29.21 20.32)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 0 0 0 0.0000)
)
(uuid "3530c7d0-16a6-4646-8301-a5537eed1d29")
(property "Sheetname" "Buck Converter"
(at 142.24 44.45 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Sheetfile" "buck_converter.kicad_sch"
(at 140.97 66.6246 0)
(effects
(font
(size 1.27 1.27)
)
(justify left top)
(hide yes)
)
)
(pin "+5V" input
(at 170.18 53.34 0)
(uuid "1aec6008-1383-4bf2-ab81-ad9c9493532f")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
)
(pin "GND" input
(at 156.21 66.04 270)
(uuid "2a982b45-921e-446c-952b-adf1ef9b7341")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(pin "IN+" input
(at 140.97 53.34 180)
(uuid "0387bc56-9531-4a63-ab61-f117e6aaf4da")
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(instances
(project "mcu_board"
(path "/7f117d42-0d8b-4a32-a9d3-0b04c0222a5a"
(page "2")
)
)
)
)
(sheet_instances
(path "/"
(page "1")
)
)
(embedded_fonts no)
(embedded_files
(file
(name "pcbway.kicad_wks")
(type worksheet)
(data |KLUv/WAtCaUUAGZdXSEA1TZqxSYpSnAbOsWn6jgBcMQyc4EzL++4wmTo/39CwQRTAEwAVwAfib/D
sXnSvpaTvVHzGxcLF61mdz60Ir9WLFwVbS/Z8kf+BAAgQILey1kpKA2V8dvQNSJJdcbvZb/OIQAC
BYxSatVZ+2JbZg8RAIHyI9KEHmg/hLSv2iUmKUr1j/y/v6Z11Z4XaZTBa99z0nP2mzH4Ys+e1AfE
4tcuvv32znd4QTh7TfVfH0cM1q4dXj9YPSntz96XFNU+evdBzyP+xwFZpWS5UMRfH+qG0Swht2AY
1RBaHVox6YSycRYNo2lkjA1iGlzV1ZNSRYXoBHbSuqyh0S4ct5kGvfD3GjlnUva/DjZpY78Eea7a
NCPVq+f3fZNagMBfvAmBAqJeCqtah6qwKKJOi3YTTUK6HjlixqyZSVaRUBiJR5dVOk17cBhmVQdJ
NtEim8M6QCt6bztRTapFuq0T33aVhrbfvcMJDCdBuFH93pjxprOTXsWiVQJ/oBFFhhRNSQqSFDLM
AXBEpObIdIhoeADgyjYO5AUHII+5zeGUZ8OCCgxpYQqEQHAhLidmCx0AKeQ9n6T/yBrb7V12yDYr
OiEXJglxtvK15pFxtmAHCO91fmulXHfWElz75BBUrBctqPwIp/TZhV6iCDIApxHAeXt16x/Kg7DG
kiWEXtJRLCUAuZbMBWDdLI5A4osumcUmrV5EsjmvZPcMXsOAYTw4linxEUyETifR+zbQER70Mm3G
h/OmhDwS8UnyTSUo/nDK0UuSa6aYZw+3mSUACEI+UaM6ItXawEKAG2ER79AKTrs0yN07DJnJ2GGX
ZfKigD5qX0sOMakP3fYKbZusDnmUYtdHdIyXSuldo/AF/MS73bQI2vgwVQ==|
)
(checksum "9F561F2F5A0DC32E669BBA2695209430")
)
)
)