Compare commits

1 Commits

Author SHA1 Message Date
Julian Langhoff
5316dba469 MQTT Last Will & Testament added 2021-05-16 10:27:17 +02:00
58 changed files with 196 additions and 19076 deletions

View File

@@ -12,7 +12,7 @@
platform = espressif8266 platform = espressif8266
board = d1_mini board = d1_mini
framework = arduino framework = arduino
monitor_speed = 115200 monitor_speed = 9600
lib_deps = lib_deps =
mikem/RadioHead@^1.113 mikem/RadioHead@^1.113
tzapu/WiFiManager@^0.16.0 tzapu/WiFiManager@^0.16.0

View File

@@ -4,15 +4,21 @@
* For project specific settings. Copy to config.h and place your settings there. * For project specific settings. Copy to config.h and place your settings there.
**/ **/
// MQTT-Configuration
const char *MQTT_BROKER = "192.168.178.74"; const char *MQTT_BROKER = "192.168.178.74";
const char *MQTT_SENSOR_TOPIC = "living/sensor2"; const char *MQTT_CLIENT_USER = "NULL";
const char *MQTT_CLIENT_PW = "NULL";
const char *MQTT_CLIENT_ID = "living_mobile_sensor"; const char *MQTT_CLIENT_ID = "living_mobile_sensor";
const char *MQTT_SENSOR_TOPIC = "living/sensor2";
const char *MQTT_LAST_WILL_TOPIC = "living/sensor2/status"; const char *MQTT_LAST_WILL_TOPIC = "living/sensor2/status";
const char *MQTT_LAST_WILL_MSG = "offline"; const char *MQTT_LAST_WILL_MSG = "offline";
const char *MQTT_CLIENT_USER = "NULL"; // if NULL, no username or password is used uint8_t MQTT_WILL_QOS = 1; // 0, 1 or 2
const char *MQTT_CLIENT_PW = "NULL"; // if NULL, no password is used boolean MQTT_WILL_RETAIN = true;
const int AirValue = 800; //replace the value with value when placed in air
const int WaterValue = 345; //replace the value with value when placed in water // Configuration for Soil-Sensor
const int AirValue = 700; //replace the value with value when placed in air (800)
const int WaterValue = 150; //replace the value with value when placed in water (345)
#endif #endif

View File

@@ -85,7 +85,7 @@ void setup()
{ {
pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200); Serial.begin(9600);
if (!driver.init()) if (!driver.init())
{ {
Serial.println("init failed"); Serial.println("init failed");
@@ -225,9 +225,10 @@ void reconnect()
// Attempt to connect // Attempt to connect
// Should work without authentication, if credentials are NULL // Should work without authentication, if credentials are NULL
if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_CLIENT_USER, MQTT_CLIENT_PW)) if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_CLIENT_USER, MQTT_CLIENT_PW, MQTT_WILL_TOPIC, MQTT_WILL_QOS, MQTT_WILL_RETAIN, MQTT_WILL_MSG))
{ {
Serial.println("INFO: connected"); Serial.println("INFO: connected");
mqttClient.publish(MQTT_WILL_TOPIC, "online", true);
} }
else else
{ {
@@ -284,6 +285,7 @@ void publishData(float temp, float humid, float soil, long battery)
char data[200]; char data[200];
serializeJson(doc, data); serializeJson(doc, data);
mqttClient.publish(MQTT_SENSOR_TOPIC, data, true); mqttClient.publish(MQTT_SENSOR_TOPIC, data, true);
yield(); yield();
} }

View File

@@ -1,5 +0,0 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

View File

@@ -1,7 +0,0 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
]
}

View File

@@ -1,41 +0,0 @@
# Irrigation with an ESP8266
Tested with D1 mini. Connect a pump with a relais. Relais activation on D4.
## Home Assistant Integration
### Custom Integration (recommended)
A full custom integration with config flow, device registry, and a `water_for` service is included in the [`homeassistant/`](homeassistant/) directory.
See [homeassistant/README.md](homeassistant/README.md) for installation and usage.
### YAML-only (built-in MQTT platform)
`payload_on` can also contain the duration of the pump in ms.
```yaml
switch:
- platform: mqtt
name: "Irrigation Pump"
command_topic: greenhousino/pump
state_topic: greenhousino/pumpstate
payload_on: "on"
payload_off: "off"
state_on: "on"
state_off: "off"
availability_topic: greenhousino/pump/status
payload_available: "online"
payload_not_available: "offline"
qos: 1
```
For duration-based watering via YAML, use an automation:
```yaml
automation:
- alias: "Water for 5 minutes"
action:
- service: mqtt.publish
data:
topic: greenhousino/pump
payload: "300000" # 300000 ms = 5 minutes
```

View File

@@ -1,124 +0,0 @@
# Greenhousino Irrigation — Home Assistant Integration
Custom Home Assistant integration for the Greenhousino ESP8266/ESP32 irrigation controller.
## Features
- **Pump switch** — Turn the irrigation pump on/off from Home Assistant
- **State tracking** — Real-time pump state via MQTT
- **Availability** — Shows online/offline status
- **`water_for` service** — Water for a specific duration (13600 seconds)
- **Config flow** — Set up via Home Assistant UI (Settings → Devices & Services → Add Integration)
- **Device registry** — Appears as a proper device with manufacturer/model info
## Installation
### Option 1: HACS (recommended)
1. Install [HACS](https://hacs.xyz/) in Home Assistant
2. Add this repository as a custom repository
3. Search for "Greenhousino Irrigation" and install
4. Restart Home Assistant
### Option 2: Manual installation
1. Copy the `greenhousino` folder to your Home Assistant config directory:
```bash
cp -r greenhousino /config/custom_components/
```
2. Restart Home Assistant
3. Go to **Settings → Devices & Services → Add Integration** and search for "Greenhousino Irrigation"
## Configuration
The config flow will guide you through two steps:
### Step 1: Host
- **Host IP address** — The IP of your ESP device (e.g., `192.168.178.50`). This is used for the web UI link in device info.
### Step 2: MQTT Topics
- **Command topic** — MQTT topic to send commands (default: `greenhousino/pump`)
- **State topic** — MQTT topic for state updates (default: `greenhousino/pumpstate`)
## Usage
### Switch entity
The integration creates a switch entity (`switch.greenhousino_irrigation_pump`) that you can:
- Toggle on/off from the Home Assistant UI
- Use in automations
- Add to dashboards
### `water_for` service
Water for a specific duration:
```yaml
service: greenhousino.water_for
data:
duration: 60 # seconds
```
Or from an automation:
```yaml
automation:
- alias: "Water garden every morning"
trigger:
- platform: time
at: "06:00:00"
action:
- service: greenhousino.water_for
data:
duration: 300 # 5 minutes
```
## MQTT Topics
| Direction | Topic | Payload | Description |
|-----------|-------|---------|-------------|
| HA → ESP | `greenhousino/pump` | `on` | Turn pump on (default 30s) |
| HA → ESP | `greenhousino/pump` | `off` | Turn pump off |
| HA → ESP | `greenhousino/pump` | `5000` | Turn pump on for 5000ms |
| ESP → HA | `greenhousino/pumpstate` | `on` | Pump is active |
| ESP → HA | `greenhousino/pumpstate` | `off` | Pump is off |
| ESP → HA | `greenhousino/pump/status` | `offline` | Device disconnected |
## Requirements
- Home Assistant 2024.x or later
- MQTT integration configured and connected to the same broker as your ESP device
## Troubleshooting
### Switch shows "unavailable"
- Make sure the MQTT integration is connected
- Verify the ESP device is publishing to the state topic
- Check that topics match between the ESP firmware and HA config
### Service call doesn't work
- Ensure MQTT integration is set up
- Check HA logs: `Logger → greenhousino`
- Verify the ESP is subscribed to the command topic
## YAML-only alternative (no custom component)
If you don't want a custom integration, you can use the built-in MQTT platform:
```yaml
switch:
- platform: mqtt
name: "Irrigation Pump"
command_topic: "greenhousino/pump"
state_topic: "greenhousino/pumpstate"
payload_on: "on"
payload_off: "off"
state_on: "on"
state_off: "off"
availability_topic: "greenhousino/pump/status"
payload_available: "online"
payload_not_available: "offline"
qos: 1
```

View File

@@ -1,143 +0,0 @@
"""Greenhousino Irrigation integration."""
import logging
import voluptuous as vol
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from .const import (
CONF_COMMAND_TOPIC,
CONF_HOST,
CONF_STATE_TOPIC,
DEFAULT_COMMAND_TOPIC,
DEFAULT_STATE_TOPIC,
DOMAIN,
MANUFACTURER,
MODEL,
SERVICE_DATA_DURATION,
SERVICE_WATER_FOR,
)
_LOGGER = logging.getLogger(__name__)
PLATFORMS = ["switch"]
# Service schema
WATER_FOR_SCHEMA = vol.Schema(
{
vol.Required(SERVICE_DATA_DURATION): vol.All(
vol.Coerce(float),
vol.Range(min=1, max=3600),
),
}
)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Greenhousino from a config entry."""
hass_data = entry.runtime_data = GreenhousinoData(entry)
host = entry.data.get(CONF_HOST, "")
# Register device in HA device registry
await _register_device(hass, entry, host)
# Store entry data for service access
if DOMAIN not in hass.data:
hass.data[DOMAIN] = {"entries": {}}
hass.data[DOMAIN]["entries"][entry.entry_id] = hass_data
# Register the water_for service (only once)
if "service_registered" not in hass.data[DOMAIN]:
hass.services.async_register(
DOMAIN,
SERVICE_WATER_FOR,
_make_water_for_handler(hass),
schema=WATER_FOR_SCHEMA,
)
hass.data[DOMAIN]["service_registered"] = True
_LOGGER.info("Registered %s.%s service", DOMAIN, SERVICE_WATER_FOR)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN]["entries"].pop(entry.entry_id, None)
if len(hass.data[DOMAIN]["entries"]) == 0:
hass.services.async_remove(DOMAIN, SERVICE_WATER_FOR)
hass.data[DOMAIN].clear()
return unload_ok
def _make_water_for_handler(hass: HomeAssistant):
"""Create the water_for service handler with hass in closure."""
async def async_water_for(call) -> None:
"""Handle the water_for service call."""
duration_seconds = call.data[SERVICE_DATA_DURATION]
duration_ms = int(duration_seconds * 1000)
# Use first available command topic (or default)
entries = hass.data[DOMAIN].get("entries", {})
command_topic = DEFAULT_COMMAND_TOPIC
for entry_id, data in entries.items():
command_topic = data.command_topic
_LOGGER.info(
"Watering for %d seconds (%d ms) on topic %s (entry: %s)",
duration_seconds,
duration_ms,
command_topic,
entry_id,
)
await hass.services.async_call(
"mqtt",
"publish",
{
"topic": command_topic,
"payload": str(duration_ms),
"qos": 1,
"retain": False,
},
blocking=True,
)
if not entries:
_LOGGER.warning("No Greenhousino entries configured")
return async_water_for
async def _register_device(hass: HomeAssistant, entry: ConfigEntry, host: str):
"""Register the device in the device registry."""
dr.async_get(hass).async_get_or_create(
config_entry_id=entry.entry_id,
connections=set(),
identifiers={(DOMAIN, entry.entry_id)},
manufacturer=MANUFACTURER,
model=MODEL,
name=entry.title,
configuration_url=f"http://{host}" if host else None,
)
class GreenhousinoData:
"""Container for integration data."""
def __init__(self, entry: ConfigEntry) -> None:
self.entry = entry
self.command_topic = entry.data.get(
CONF_COMMAND_TOPIC, DEFAULT_COMMAND_TOPIC
)
self.state_topic = entry.data.get(CONF_STATE_TOPIC, DEFAULT_STATE_TOPIC)

View File

@@ -1,88 +0,0 @@
"""Config flow for Greenhousino Irrigation integration."""
import logging
from typing import Any
import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.core import HomeAssistant
from .const import (
CONF_COMMAND_TOPIC,
CONF_HOST,
CONF_STATE_TOPIC,
DEFAULT_COMMAND_TOPIC,
DEFAULT_NAME,
DEFAULT_STATE_TOPIC,
DOMAIN,
)
_LOGGER = logging.getLogger(__name__)
STEP_ONE_DATA_SCHEMA = vol.Schema(
{
vol.Required(CONF_HOST, description={"suggested_value": ""}): str,
}
)
STEP_TWO_DATA_SCHEMA = vol.Schema(
{
vol.Required(
CONF_COMMAND_TOPIC,
description={"suggested_value": DEFAULT_COMMAND_TOPIC},
): str,
vol.Required(
CONF_STATE_TOPIC,
description={"suggested_value": DEFAULT_STATE_TOPIC},
): str,
}
)
class GreenhousinoConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Greenhousino Irrigation."""
VERSION = 1
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the initial step (host)."""
errors: dict[str, str] = {}
if user_input is not None:
try:
self._tmp_data = user_input
return await self.async_step_mqtt()
except Exception:
errors["base"] = "unknown"
return self.async_show_form(
step_id="user",
data_schema=STEP_ONE_DATA_SCHEMA,
errors=errors,
)
async def async_step_mqtt(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the MQTT topics step."""
errors: dict[str, str] = {}
if user_input is not None:
try:
data = {**self._tmp_data, **user_input}
title = DEFAULT_NAME
if data.get(CONF_HOST):
title = f"{DEFAULT_NAME} ({data[CONF_HOST]})"
return self.async_create_entry(title=title, data=data)
except Exception:
errors["base"] = "unknown"
return self.async_show_form(
step_id="mqtt",
data_schema=STEP_TWO_DATA_SCHEMA,
errors=errors,
)

View File

@@ -1,25 +0,0 @@
"""Constants for Greenhousino Irrigation integration."""
DOMAIN = "greenhousino"
MANUFACTURER = "Greenhousino"
MODEL = "Irrigation Controller"
# Defaults
DEFAULT_NAME = "Greenhousino Irrigation"
DEFAULT_COMMAND_TOPIC = "greenhousino/pump"
DEFAULT_STATE_TOPIC = "greenhousino/pumpstate"
DEFAULT_PAYLOAD_ON = "on"
DEFAULT_PAYLOAD_OFF = "off"
# Config flow keys
CONF_COMMAND_TOPIC = "command_topic"
CONF_STATE_TOPIC = "state_topic"
CONF_HOST = "host"
# Service
SERVICE_WATER_FOR = "water_for"
SERVICE_DATA_DURATION = "duration"
# State
ATTR_DURATION_MS = "duration_ms"
ATTR_PUMP_ACTIVE = "pump_active"

View File

@@ -1,14 +0,0 @@
{
"domain": "greenhousino",
"name": "Greenhousino Irrigation",
"codeowners": [],
"config_flow": true,
"dependencies": [],
"documentation": "https://github.com/greenhousino/irrigation",
"integration_type": "device",
"iot_class": "local_push",
"issue_tracker": "https://github.com/greenhousino/irrigation/issues",
"loggers": ["greenhousino"],
"requirements": [],
"version": "1.0.0"
}

View File

@@ -1,14 +0,0 @@
water_for:
name: Water for duration
description: Activate the irrigation pump for a specified number of seconds.
fields:
duration:
name: Duration
description: How long to water, in seconds (1-3600).
required: true
selector:
number:
min: 1
max: 3600
unit_of_measurement: "seconds"
mode: box

View File

@@ -1,39 +0,0 @@
{
"config": {
"step": {
"user": {
"title": "Greenhousino Irrigation",
"description": "Enter the IP address of your ESP irrigation controller.",
"data": {
"host": "Host IP address"
}
},
"mqtt": {
"title": "MQTT Topics",
"description": "Configure the MQTT topics for your irrigation controller.",
"data": {
"command_topic": "Command topic",
"state_topic": "State topic"
}
}
},
"error": {
"unknown": "An unknown error occurred."
},
"abort": {
"already_configured": "Device is already configured."
}
},
"services": {
"water_for": {
"name": "Water for duration",
"description": "Activate the irrigation pump for a specified number of seconds.",
"fields": {
"duration": {
"name": "Duration",
"description": "How long to water, in seconds."
}
}
}
}
}

View File

@@ -1,151 +0,0 @@
"""Switch platform for Greenhousino Irrigation."""
import logging
from typing import Any
from homeassistant.components import mqtt
from homeassistant.components.switch import SwitchEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
ATTR_PUMP_ACTIVE,
DOMAIN,
MANUFACTURER,
MODEL,
)
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Greenhousino switch from config entry."""
hass_data = entry.runtime_data
async_add_entities(
[
GreenhousinoPumpSwitch(
entry,
hass_data.command_topic,
hass_data.state_topic,
)
]
)
class GreenhousinoPumpSwitch(SwitchEntity):
"""Representation of a Greenhousino pump switch."""
_attr_has_entity_name = True
_attr_name = "Pump"
_attr_should_poll = False
_attr_unique_id = None # will be set from entry_id
_entry_id = None
def __init__(
self,
entry: ConfigEntry,
command_topic: str,
state_topic: str,
) -> None:
"""Initialize the switch."""
self._command_topic = command_topic
self._state_topic = state_topic
self._entry_id = entry.entry_id
self._attr_unique_id = f"{entry.entry_id}-pump"
self._attr_available = False
self._state = False
@property
def device_info(self):
"""Return device info."""
return {
"identifiers": {(DOMAIN, self._entry_id)},
"manufacturer": MANUFACTURER,
"model": MODEL,
}
async def async_added_to_hass(self) -> None:
"""Register callbacks."""
entry = self.config_entry
self.async_on_remove(
mqtt.async_subscribe(
self.hass,
self._state_topic,
self._state_received,
qos=1,
)
)
# Publish availability via MQTT discovery-style
# The device publishes to greenhousino/pump/status with "offline" on disconnect
status_topic = self._state_topic.replace("pumpstate", "pump/status")
self.async_on_remove(
mqtt.async_subscribe(
self.hass,
status_topic,
self._availability_received,
qos=1,
)
)
def _state_received(self, msg: mqtt.MqttReceivePayload) -> None:
"""Handle new MQTT state message."""
payload = msg.decode().strip()
self._state = payload == "on"
self._attr_available = True
self.async_write_ha_state()
_LOGGER.debug("State received: %s -> pump_active=%s", payload, self._state)
def _availability_received(self, msg: mqtt.MqttReceivePayload) -> None:
"""Handle availability message."""
payload = msg.decode().strip()
self._attr_available = payload != "offline"
self.async_write_ha_state()
_LOGGER.debug("Availability: %s", payload)
@property
def is_on(self) -> bool:
"""Return True if the pump is on."""
return self._state
@property
def extra_state_attributes(self) -> dict[str, Any]:
"""Return device state attributes."""
return {
ATTR_PUMP_ACTIVE: self._state,
"command_topic": self._command_topic,
"state_topic": self._state_topic,
"manufacturer": MANUFACTURER,
"model": MODEL,
}
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn the pump on."""
await mqtt.async_publish(
self.hass,
self._command_topic,
"on",
qos=1,
retain=False,
)
self._state = True
self.async_write_ha_state()
async def async_turn_off(self) -> None:
"""Turn the pump off."""
await mqtt.async_publish(
self.hass,
self._command_topic,
"off",
qos=1,
retain=False,
)
self._state = False
self.async_write_ha_state()

View File

@@ -1,39 +0,0 @@
{
"config": {
"step": {
"user": {
"title": "Greenhousino Irrigation",
"description": "Enter the IP address of your ESP irrigation controller.",
"data": {
"host": "Host IP address"
}
},
"mqtt": {
"title": "MQTT Topics",
"description": "Configure the MQTT topics for your irrigation controller.",
"data": {
"command_topic": "Command topic",
"state_topic": "State topic"
}
}
},
"error": {
"unknown": "An unknown error occurred."
},
"abort": {
"already_configured": "Device is already configured."
}
},
"services": {
"water_for": {
"name": "Water for duration",
"description": "Activate the irrigation pump for a specified number of seconds.",
"fields": {
"duration": {
"name": "Duration",
"description": "How long to water, in seconds."
}
}
}
}
}

View File

@@ -1,39 +0,0 @@
This directory is intended for project header files.
A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.
```src/main.c
#include "header.h"
int main (void)
{
...
}
```
Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.
In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.
Read more about using header files in official GCC documentation:
* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

View File

@@ -1,46 +0,0 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html

View File

@@ -1,20 +0,0 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
monitor_speed = 9600
upload_port = /dev/ttyUSB0
lib_deps =
tzapu/WiFiManager@^0.16.0
knolleary/PubSubClient@^2.8
bblanchon/ArduinoJson@^6.17.3

View File

@@ -1 +0,0 @@
config.h

View File

@@ -1,69 +0,0 @@
// HTML web page
const char index_html[] = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
<title>Greenhousino Irrigation System</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial; text-align: center; margin:0px auto; padding-top: 30px;}
.button {
padding: 10px 20px;
font-size: 24px;
text-align: center;
outline: none;
color: #fff;
background-color: #2f4468;
border: none;
border-radius: 5px;
box-shadow: 0 6px #999;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
.button:hover {background-color: #1f2e45}
.button:active {
background-color: #1f2e45;
box-shadow: 0 4px #666;
transform: translateY(2px);
}
</style>
</head>
<body>
<h1>Greenhousino Irrigation System</h1>
Pump state: <span id="state"></span><br/><br/>
<button class="button" onmousedown="toggleCheckbox('on');" ontouchstart="toggleCheckbox('on');" onmouseup="toggleCheckbox('off');" ontouchend="toggleCheckbox('off');">PUMP!</button><br/><br/>
<button class="button" onmouseup="toggleCheckbox('on');" ontouchend="toggleCheckbox('on');">On!</button><br/><br/>
<button class="button" onmouseup="toggleCheckbox('off');" ontouchend="toggleCheckbox('off');">Off!</button><br/><br/>
<script>
setInterval(getState, 500);
function toggleCheckbox(x) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/" + x, true);
xhr.send();
}
function getState() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
displayState(xhr.response);
}
}
xhr.open("GET","/state", true);
xhr.send();
}
function displayState(state) {
document.getElementById("state").innerHTML = state;
}
</script>
</body>
</html>)rawliteral";

View File

@@ -1,21 +0,0 @@
#ifndef __CONFIG_H__
#define __CONFIG_H__
/**
* For project specific settings. Copy to config.h and place your settings there.
**/
const char *MQTT_BROKER = "192.168.178.114";
const char *MQTT_TF_TOPIC = "greenhousino/pump";
const char *MQTT_STATE_TOPIC = "greenhousino/pumpstate";
const char *MQTT_CLIENT_ID = "greenhousino/pump";
const char *MQTT_LAST_WILL_TOPIC = "greenhousino/pump/status";
const char *MQTT_LAST_WILL_MSG = "offline";
const char *MQTT_CLIENT_USER = "NULL"; // if NULL, no username or password is used
const char *MQTT_CLIENT_PW = "NULL"; // if NULL, no password is used
// Max time the pump is active
#define PUMP_ACTIVE_MILLIS 30000
#endif

View File

@@ -1,49 +0,0 @@
<!DOCTYPE HTML><html>
<head>
<title>Greenhousino Irrigation System</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial; text-align: center; margin:0px auto; padding-top: 30px;}
.button {
padding: 10px 20px;
font-size: 24px;
text-align: center;
outline: none;
color: #fff;
background-color: #2f4468;
border: none;
border-radius: 5px;
box-shadow: 0 6px #999;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
.button:hover {background-color: #1f2e45}
.button:active {
background-color: #1f2e45;
box-shadow: 0 4px #666;
transform: translateY(2px);
}
</style>
</head>
<body>
<h1>Greenhousino Irrigation System</h1>
<h2>State: <div id="state"></div></h2>
<button class="button" onmousedown="toggleCheckbox('on');" ontouchstart="toggleCheckbox('on');" onmouseup="toggleCheckbox('off');" ontouchend="toggleCheckbox('off');">PUMP!</button>
<button class="button" onmouseup="toggleCheckbox('on');" ontouchend="toggleCheckbox('on');">On!</button>
<button class="button" onmouseup="toggleCheckbox('off');" ontouchend="toggleCheckbox('off');">Off!</button>
<script>
function toggleCheckbox(x) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/" + x, true);
xhr.send();
}
</script>
</body>
</html>

View File

@@ -1,228 +0,0 @@
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
//needed for library
//#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include "WiFiManager.h" //https://github.com/tzapu/WiFiManager
#include "WebContent.h"
#include <PubSubClient.h> //MQTT
#include <ArduinoJson.h>
#define RelaisPin D4 // Relais
#define SwitchPin D1 // Active Low, Switch between D1 and GND
#define R_ON 0// active Low = 0, otherwise 1
#define R_OFF 1// active Low = 1, otherwise 0
#define MQTT_ON "on"
#define MQTT_OFF "off"
#include "config.h"
ESP8266WebServer server(80); // Create a webserver object that listens for HTTP request on port 80
//MQTT
WiFiClient espClient;
PubSubClient mqttClient(MQTT_BROKER, 1883, espClient);
// time in millis the pump has been started
long pumpStarted = 0;
long waitTimeMillis = PUMP_ACTIVE_MILLIS;
boolean pumpActive = false;
void handleRoot(); // function prototypes for HTTP handlers
void handleOn();
void handleOff();
void handleNotFound();
void handleState();
void deactivatePump();
void activatePump();
void mqtt_callback(char* inTopic, byte* payload, unsigned int length);
void reconnect();
void configModeCallback(WiFiManager *myWiFiManager)
{
Serial.println("Entered config mode");
Serial.println(WiFi.softAPIP());
//if you used auto generated SSID, print it
Serial.println(myWiFiManager->getConfigPortalSSID());
}
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(RelaisPin, OUTPUT);
pinMode(SwitchPin, INPUT_PULLUP);
digitalWrite(RelaisPin, R_OFF);
//WiFiManager
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//reset settings - for testing
//wifiManager.resetSettings();
//set callback that gets called when connecting to previous WiFi fails, and enters Access Point mode
wifiManager.setAPCallback(configModeCallback);
//fetches ssid and pass and tries to connect
//if it does not connect it starts an access point with the specified name
//here "AutoConnectAP"
//and goes into a blocking loop awaiting configuration
if (!wifiManager.autoConnect())
{
Serial.println("failed to connect and hit timeout");
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(1000);
}
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
mqttClient.setCallback(mqtt_callback);
server.on("/", handleRoot); // Call the 'handleRoot' function when a client requests URI "/"
server.on("/on", handleOn);
server.on("/off", handleOff);
server.on("/state", handleState);
server.onNotFound(handleNotFound); // When a client requests an unknown URI (i.e. something other than "/"), call function "handleNotFound"
server.begin(); // Actually start the server
Serial.println("HTTP server started");
}
void loop()
{
server.handleClient(); // Listen for HTTP requests from clients
if (!mqttClient.connected())
{
reconnect();
}
mqttClient.loop();
if (millis()-pumpStarted>waitTimeMillis && pumpActive) {
deactivatePump();
waitTimeMillis = PUMP_ACTIVE_MILLIS;
}
}
void reconnect()
{
// Loop until we're reconnected
while (!mqttClient.connected())
{
Serial.println("INFO: Attempting MQTT connection...");
// Attempt to connect
if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_CLIENT_USER, MQTT_CLIENT_PW,
MQTT_LAST_WILL_TOPIC, 1, true, MQTT_LAST_WILL_MSG))
{
Serial.println("INFO: connected");
if (pumpActive) {
mqttClient.publish(MQTT_STATE_TOPIC, MQTT_ON);
} else {
mqttClient.publish(MQTT_STATE_TOPIC, MQTT_OFF);
}
// Signal online to Home Assistant availability tracker
mqttClient.publish(MQTT_LAST_WILL_TOPIC, "online");
mqttClient.subscribe(MQTT_TF_TOPIC);
} else
{
Serial.print("ERROR: failed, rc=");
Serial.print(mqttClient.state());
Serial.println("DEBUG: try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void mqtt_callback(char* inTopic, byte* payload, unsigned int length){
Serial.println("Got RF data");
Serial.write(payload, length);
Serial.println();
// convert the byte non terminated payload to string:
char pltext[length+1];
strncpy(pltext, (char*)payload, length);
pltext[length]='\0';
// convert payload string to int:
if (String(pltext)==MQTT_ON) {
activatePump();
} else if (String(pltext)==MQTT_OFF) {
deactivatePump();
} else {
long pumpLength = atol(pltext);
if (pumpLength > 0) {
waitTimeMillis = pumpLength;
activatePump();
} else {
Serial.println("mqtt payload unknown!");
}
}
Serial.println("RF data sent");
}
void handleRoot()
{
server.send(200, "text/html", index_html);
}
void activatePump() {
pumpStarted = millis();
digitalWrite(RelaisPin, R_ON);
Serial.println("Pump activated");
pumpActive = true;
}
void deactivatePump() {
digitalWrite(RelaisPin, R_OFF);
Serial.println("Pump deactivated");
pumpActive = false;
}
void handleOn()
{
activatePump();
server.send(200, "text/plain", "on");
mqttClient.publish(MQTT_STATE_TOPIC, MQTT_ON);
}
void handleOff()
{
deactivatePump();
server.send(200, "text/plain", "off");
mqttClient.publish(MQTT_STATE_TOPIC, MQTT_OFF);
}
void handleState()
{
String sstate = "off";
if (pumpActive) {
sstate = "on";
}
server.send(200,"text/plain", sstate);
}
void handleNotFound()
{
server.send(404, "text/plain", "404: Not found"); // Send HTTP status 404 (Not Found) when there's no handler for the URI in the request
}

View File

@@ -1,11 +0,0 @@
This directory is intended for PlatformIO Unit Testing and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PlatformIO Unit Testing:
- https://docs.platformio.org/page/plus/unit-testing.html

View File

@@ -7,9 +7,3 @@ Copy config.h.example to config.h and set your project specific settings there.
# flash attiny with minipro on linux and the TL866II plus after compiling: # flash attiny with minipro on linux and the TL866II plus after compiling:
minipro -p attiny85 -w .pio/build/attiny85/firmware.hex minipro -p attiny85 -w .pio/build/attiny85/firmware.hex
# flash fuses
minipro -p attiny85 -c config -w fuses.config
# read fuses
minipro -p attiny85 -c config -r fuses.out

View File

@@ -1,4 +0,0 @@
fuses_lo = 0xe2
fuses_hi = 0xdf
fuses_ext = 0xff
lock_byte = 0xff

File diff suppressed because it is too large Load Diff

View File

@@ -1,97 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Bot*
G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10O,1.700000X1.700000*%
%ADD11R,1.700000X1.700000*%
%ADD12R,3.000000X3.000000*%
%ADD13C,3.000000*%
%ADD14C,1.600000*%
%ADD15O,1.600000X1.600000*%
%ADD16R,1.600000X1.600000*%
%ADD17R,1.300000X1.300000*%
%ADD18C,1.300000*%
%ADD19C,1.800000*%
%ADD20R,1.800000X1.800000*%
G04 APERTURE END LIST*
D10*
X149860000Y-146050000D03*
X147320000Y-146050000D03*
D11*
X144780000Y-146050000D03*
D12*
X123190000Y-120650000D03*
D13*
X123190000Y-141140000D03*
D14*
X142280000Y-123190000D03*
X144780000Y-123190000D03*
D10*
X115570000Y-113030000D03*
D11*
X115570000Y-110490000D03*
D15*
X147320000Y-129540000D03*
X139700000Y-137160000D03*
X147320000Y-132080000D03*
X139700000Y-134620000D03*
X147320000Y-134620000D03*
X139700000Y-132080000D03*
X147320000Y-137160000D03*
D16*
X139700000Y-129540000D03*
D15*
X157480000Y-111760000D03*
D14*
X157480000Y-119380000D03*
D15*
X152400000Y-121920000D03*
D14*
X152400000Y-129540000D03*
D15*
X157480000Y-129540000D03*
D14*
X157480000Y-121920000D03*
D15*
X152400000Y-119380000D03*
D14*
X152400000Y-111760000D03*
D17*
X132080000Y-120650000D03*
D18*
X134620000Y-120650000D03*
X133350000Y-119380000D03*
D10*
X162560000Y-124460000D03*
D11*
X162560000Y-127000000D03*
D10*
X146050000Y-110490000D03*
X143510000Y-110490000D03*
D11*
X140970000Y-110490000D03*
D10*
X162560000Y-115570000D03*
X162560000Y-113030000D03*
D11*
X162560000Y-110490000D03*
D10*
X134620000Y-110490000D03*
X132080000Y-110490000D03*
X129540000Y-110490000D03*
D11*
X127000000Y-110490000D03*
D19*
X161290000Y-142240000D03*
D20*
X158750000Y-142240000D03*
M02*

View File

@@ -1,15 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

View File

@@ -1,722 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.150000*%
%ADD11O,1.700000X1.700000*%
%ADD12R,1.700000X1.700000*%
%ADD13R,3.000000X3.000000*%
%ADD14C,3.000000*%
%ADD15C,1.600000*%
%ADD16O,1.600000X1.600000*%
%ADD17R,1.600000X1.600000*%
%ADD18R,1.300000X1.300000*%
%ADD19C,1.300000*%
%ADD20C,1.800000*%
%ADD21R,1.800000X1.800000*%
G04 APERTURE END LIST*
D10*
X134952857Y-142899761D02*
X134810000Y-142947380D01*
X134571904Y-142947380D01*
X134476666Y-142899761D01*
X134429047Y-142852142D01*
X134381428Y-142756904D01*
X134381428Y-142661666D01*
X134429047Y-142566428D01*
X134476666Y-142518809D01*
X134571904Y-142471190D01*
X134762380Y-142423571D01*
X134857619Y-142375952D01*
X134905238Y-142328333D01*
X134952857Y-142233095D01*
X134952857Y-142137857D01*
X134905238Y-142042619D01*
X134857619Y-141995000D01*
X134762380Y-141947380D01*
X134524285Y-141947380D01*
X134381428Y-141995000D01*
X133810000Y-142947380D02*
X133905238Y-142899761D01*
X133952857Y-142852142D01*
X134000476Y-142756904D01*
X134000476Y-142471190D01*
X133952857Y-142375952D01*
X133905238Y-142328333D01*
X133810000Y-142280714D01*
X133667142Y-142280714D01*
X133571904Y-142328333D01*
X133524285Y-142375952D01*
X133476666Y-142471190D01*
X133476666Y-142756904D01*
X133524285Y-142852142D01*
X133571904Y-142899761D01*
X133667142Y-142947380D01*
X133810000Y-142947380D01*
X133048095Y-142947380D02*
X133048095Y-142280714D01*
X133048095Y-141947380D02*
X133095714Y-141995000D01*
X133048095Y-142042619D01*
X133000476Y-141995000D01*
X133048095Y-141947380D01*
X133048095Y-142042619D01*
X132429047Y-142947380D02*
X132524285Y-142899761D01*
X132571904Y-142804523D01*
X132571904Y-141947380D01*
X131333809Y-142899761D02*
X131190952Y-142947380D01*
X130952857Y-142947380D01*
X130857619Y-142899761D01*
X130810000Y-142852142D01*
X130762380Y-142756904D01*
X130762380Y-142661666D01*
X130810000Y-142566428D01*
X130857619Y-142518809D01*
X130952857Y-142471190D01*
X131143333Y-142423571D01*
X131238571Y-142375952D01*
X131286190Y-142328333D01*
X131333809Y-142233095D01*
X131333809Y-142137857D01*
X131286190Y-142042619D01*
X131238571Y-141995000D01*
X131143333Y-141947380D01*
X130905238Y-141947380D01*
X130762380Y-141995000D01*
X129952857Y-142899761D02*
X130048095Y-142947380D01*
X130238571Y-142947380D01*
X130333809Y-142899761D01*
X130381428Y-142804523D01*
X130381428Y-142423571D01*
X130333809Y-142328333D01*
X130238571Y-142280714D01*
X130048095Y-142280714D01*
X129952857Y-142328333D01*
X129905238Y-142423571D01*
X129905238Y-142518809D01*
X130381428Y-142614047D01*
X129476666Y-142280714D02*
X129476666Y-142947380D01*
X129476666Y-142375952D02*
X129429047Y-142328333D01*
X129333809Y-142280714D01*
X129190952Y-142280714D01*
X129095714Y-142328333D01*
X129048095Y-142423571D01*
X129048095Y-142947380D01*
X128619523Y-142899761D02*
X128524285Y-142947380D01*
X128333809Y-142947380D01*
X128238571Y-142899761D01*
X128190952Y-142804523D01*
X128190952Y-142756904D01*
X128238571Y-142661666D01*
X128333809Y-142614047D01*
X128476666Y-142614047D01*
X128571904Y-142566428D01*
X128619523Y-142471190D01*
X128619523Y-142423571D01*
X128571904Y-142328333D01*
X128476666Y-142280714D01*
X128333809Y-142280714D01*
X128238571Y-142328333D01*
X127619523Y-142947380D02*
X127714761Y-142899761D01*
X127762380Y-142852142D01*
X127810000Y-142756904D01*
X127810000Y-142471190D01*
X127762380Y-142375952D01*
X127714761Y-142328333D01*
X127619523Y-142280714D01*
X127476666Y-142280714D01*
X127381428Y-142328333D01*
X127333809Y-142375952D01*
X127286190Y-142471190D01*
X127286190Y-142756904D01*
X127333809Y-142852142D01*
X127381428Y-142899761D01*
X127476666Y-142947380D01*
X127619523Y-142947380D01*
X126857619Y-142947380D02*
X126857619Y-142280714D01*
X126857619Y-142471190D02*
X126810000Y-142375952D01*
X126762380Y-142328333D01*
X126667142Y-142280714D01*
X126571904Y-142280714D01*
X139643333Y-143692619D02*
X139595714Y-143645000D01*
X139500476Y-143597380D01*
X139262380Y-143597380D01*
X139167142Y-143645000D01*
X139119523Y-143692619D01*
X139071904Y-143787857D01*
X139071904Y-143883095D01*
X139119523Y-144025952D01*
X139690952Y-144597380D01*
X139071904Y-144597380D01*
X138452857Y-143597380D02*
X138357619Y-143597380D01*
X138262380Y-143645000D01*
X138214761Y-143692619D01*
X138167142Y-143787857D01*
X138119523Y-143978333D01*
X138119523Y-144216428D01*
X138167142Y-144406904D01*
X138214761Y-144502142D01*
X138262380Y-144549761D01*
X138357619Y-144597380D01*
X138452857Y-144597380D01*
X138548095Y-144549761D01*
X138595714Y-144502142D01*
X138643333Y-144406904D01*
X138690952Y-144216428D01*
X138690952Y-143978333D01*
X138643333Y-143787857D01*
X138595714Y-143692619D01*
X138548095Y-143645000D01*
X138452857Y-143597380D01*
X137738571Y-143692619D02*
X137690952Y-143645000D01*
X137595714Y-143597380D01*
X137357619Y-143597380D01*
X137262380Y-143645000D01*
X137214761Y-143692619D01*
X137167142Y-143787857D01*
X137167142Y-143883095D01*
X137214761Y-144025952D01*
X137786190Y-144597380D01*
X137167142Y-144597380D01*
X136214761Y-144597380D02*
X136786190Y-144597380D01*
X136500476Y-144597380D02*
X136500476Y-143597380D01*
X136595714Y-143740238D01*
X136690952Y-143835476D01*
X136786190Y-143883095D01*
X135071904Y-144549761D02*
X134929047Y-144597380D01*
X134690952Y-144597380D01*
X134595714Y-144549761D01*
X134548095Y-144502142D01*
X134500476Y-144406904D01*
X134500476Y-144311666D01*
X134548095Y-144216428D01*
X134595714Y-144168809D01*
X134690952Y-144121190D01*
X134881428Y-144073571D01*
X134976666Y-144025952D01*
X135024285Y-143978333D01*
X135071904Y-143883095D01*
X135071904Y-143787857D01*
X135024285Y-143692619D01*
X134976666Y-143645000D01*
X134881428Y-143597380D01*
X134643333Y-143597380D01*
X134500476Y-143645000D01*
X134214761Y-143930714D02*
X133833809Y-143930714D01*
X134071904Y-143597380D02*
X134071904Y-144454523D01*
X134024285Y-144549761D01*
X133929047Y-144597380D01*
X133833809Y-144597380D01*
X133119523Y-144549761D02*
X133214761Y-144597380D01*
X133405238Y-144597380D01*
X133500476Y-144549761D01*
X133548095Y-144454523D01*
X133548095Y-144073571D01*
X133500476Y-143978333D01*
X133405238Y-143930714D01*
X133214761Y-143930714D01*
X133119523Y-143978333D01*
X133071904Y-144073571D01*
X133071904Y-144168809D01*
X133548095Y-144264047D01*
X132786190Y-143930714D02*
X132405238Y-143930714D01*
X132643333Y-144597380D02*
X132643333Y-143740238D01*
X132595714Y-143645000D01*
X132500476Y-143597380D01*
X132405238Y-143597380D01*
X131643333Y-144597380D02*
X131643333Y-144073571D01*
X131690952Y-143978333D01*
X131786190Y-143930714D01*
X131976666Y-143930714D01*
X132071904Y-143978333D01*
X131643333Y-144549761D02*
X131738571Y-144597380D01*
X131976666Y-144597380D01*
X132071904Y-144549761D01*
X132119523Y-144454523D01*
X132119523Y-144359285D01*
X132071904Y-144264047D01*
X131976666Y-144216428D01*
X131738571Y-144216428D01*
X131643333Y-144168809D01*
X131167142Y-143930714D02*
X131167142Y-144597380D01*
X131167142Y-144025952D02*
X131119523Y-143978333D01*
X131024285Y-143930714D01*
X130881428Y-143930714D01*
X130786190Y-143978333D01*
X130738571Y-144073571D01*
X130738571Y-144597380D01*
X129310000Y-143597380D02*
X129119523Y-143597380D01*
X129024285Y-143645000D01*
X128929047Y-143740238D01*
X128881428Y-143930714D01*
X128881428Y-144264047D01*
X128929047Y-144454523D01*
X129024285Y-144549761D01*
X129119523Y-144597380D01*
X129310000Y-144597380D01*
X129405238Y-144549761D01*
X129500476Y-144454523D01*
X129548095Y-144264047D01*
X129548095Y-143930714D01*
X129500476Y-143740238D01*
X129405238Y-143645000D01*
X129310000Y-143597380D01*
X128500476Y-144549761D02*
X128405238Y-144597380D01*
X128214761Y-144597380D01*
X128119523Y-144549761D01*
X128071904Y-144454523D01*
X128071904Y-144406904D01*
X128119523Y-144311666D01*
X128214761Y-144264047D01*
X128357619Y-144264047D01*
X128452857Y-144216428D01*
X128500476Y-144121190D01*
X128500476Y-144073571D01*
X128452857Y-143978333D01*
X128357619Y-143930714D01*
X128214761Y-143930714D01*
X128119523Y-143978333D01*
X127786190Y-143930714D02*
X127405238Y-143930714D01*
X127643333Y-143597380D02*
X127643333Y-144454523D01*
X127595714Y-144549761D01*
X127500476Y-144597380D01*
X127405238Y-144597380D01*
X126690952Y-144549761D02*
X126786190Y-144597380D01*
X126976666Y-144597380D01*
X127071904Y-144549761D01*
X127119523Y-144454523D01*
X127119523Y-144073571D01*
X127071904Y-143978333D01*
X126976666Y-143930714D01*
X126786190Y-143930714D01*
X126690952Y-143978333D01*
X126643333Y-144073571D01*
X126643333Y-144168809D01*
X127119523Y-144264047D01*
X126214761Y-144597380D02*
X126214761Y-143930714D01*
X126214761Y-144121190D02*
X126167142Y-144025952D01*
X126119523Y-143978333D01*
X126024285Y-143930714D01*
X125929047Y-143930714D01*
X125595714Y-144597380D02*
X125595714Y-143930714D01*
X125595714Y-144025952D02*
X125548095Y-143978333D01*
X125452857Y-143930714D01*
X125310000Y-143930714D01*
X125214761Y-143978333D01*
X125167142Y-144073571D01*
X125167142Y-144597380D01*
X125167142Y-144073571D02*
X125119523Y-143978333D01*
X125024285Y-143930714D01*
X124881428Y-143930714D01*
X124786190Y-143978333D01*
X124738571Y-144073571D01*
X124738571Y-144597380D01*
X123833809Y-144597380D02*
X123833809Y-144073571D01*
X123881428Y-143978333D01*
X123976666Y-143930714D01*
X124167142Y-143930714D01*
X124262380Y-143978333D01*
X123833809Y-144549761D02*
X123929047Y-144597380D01*
X124167142Y-144597380D01*
X124262380Y-144549761D01*
X124310000Y-144454523D01*
X124310000Y-144359285D01*
X124262380Y-144264047D01*
X124167142Y-144216428D01*
X123929047Y-144216428D01*
X123833809Y-144168809D01*
X123357619Y-143930714D02*
X123357619Y-144597380D01*
X123357619Y-144025952D02*
X123310000Y-143978333D01*
X123214761Y-143930714D01*
X123071904Y-143930714D01*
X122976666Y-143978333D01*
X122929047Y-144073571D01*
X122929047Y-144597380D01*
X122452857Y-143930714D02*
X122452857Y-144597380D01*
X122452857Y-144025952D02*
X122405238Y-143978333D01*
X122310000Y-143930714D01*
X122167142Y-143930714D01*
X122071904Y-143978333D01*
X122024285Y-144073571D01*
X122024285Y-144597380D01*
X140238571Y-145580714D02*
X139857619Y-145580714D01*
X140095714Y-145247380D02*
X140095714Y-146104523D01*
X140048095Y-146199761D01*
X139952857Y-146247380D01*
X139857619Y-146247380D01*
X139524285Y-146247380D02*
X139524285Y-145247380D01*
X139095714Y-146247380D02*
X139095714Y-145723571D01*
X139143333Y-145628333D01*
X139238571Y-145580714D01*
X139381428Y-145580714D01*
X139476666Y-145628333D01*
X139524285Y-145675952D01*
X138476666Y-146247380D02*
X138571904Y-146199761D01*
X138619523Y-146152142D01*
X138667142Y-146056904D01*
X138667142Y-145771190D01*
X138619523Y-145675952D01*
X138571904Y-145628333D01*
X138476666Y-145580714D01*
X138333809Y-145580714D01*
X138238571Y-145628333D01*
X138190952Y-145675952D01*
X138143333Y-145771190D01*
X138143333Y-146056904D01*
X138190952Y-146152142D01*
X138238571Y-146199761D01*
X138333809Y-146247380D01*
X138476666Y-146247380D01*
X137762380Y-146199761D02*
X137667142Y-146247380D01*
X137476666Y-146247380D01*
X137381428Y-146199761D01*
X137333809Y-146104523D01*
X137333809Y-146056904D01*
X137381428Y-145961666D01*
X137476666Y-145914047D01*
X137619523Y-145914047D01*
X137714761Y-145866428D01*
X137762380Y-145771190D01*
X137762380Y-145723571D01*
X137714761Y-145628333D01*
X137619523Y-145580714D01*
X137476666Y-145580714D01*
X137381428Y-145628333D01*
X137048095Y-145580714D02*
X136667142Y-145580714D01*
X136905238Y-145247380D02*
X136905238Y-146104523D01*
X136857619Y-146199761D01*
X136762380Y-146247380D01*
X136667142Y-146247380D01*
X135952857Y-146199761D02*
X136048095Y-146247380D01*
X136238571Y-146247380D01*
X136333809Y-146199761D01*
X136381428Y-146104523D01*
X136381428Y-145723571D01*
X136333809Y-145628333D01*
X136238571Y-145580714D01*
X136048095Y-145580714D01*
X135952857Y-145628333D01*
X135905238Y-145723571D01*
X135905238Y-145818809D01*
X136381428Y-145914047D01*
X135476666Y-146247380D02*
X135476666Y-145580714D01*
X135476666Y-145771190D02*
X135429047Y-145675952D01*
X135381428Y-145628333D01*
X135286190Y-145580714D01*
X135190952Y-145580714D01*
X134857619Y-146152142D02*
X134810000Y-146199761D01*
X134857619Y-146247380D01*
X134905238Y-146199761D01*
X134857619Y-146152142D01*
X134857619Y-146247380D01*
X134381428Y-145580714D02*
X134381428Y-146247380D01*
X134381428Y-145675952D02*
X134333809Y-145628333D01*
X134238571Y-145580714D01*
X134095714Y-145580714D01*
X134000476Y-145628333D01*
X133952857Y-145723571D01*
X133952857Y-146247380D01*
X133095714Y-146199761D02*
X133190952Y-146247380D01*
X133381428Y-146247380D01*
X133476666Y-146199761D01*
X133524285Y-146104523D01*
X133524285Y-145723571D01*
X133476666Y-145628333D01*
X133381428Y-145580714D01*
X133190952Y-145580714D01*
X133095714Y-145628333D01*
X133048095Y-145723571D01*
X133048095Y-145818809D01*
X133524285Y-145914047D01*
X132762380Y-145580714D02*
X132381428Y-145580714D01*
X132619523Y-145247380D02*
X132619523Y-146104523D01*
X132571904Y-146199761D01*
X132476666Y-146247380D01*
X132381428Y-146247380D01*
X131333809Y-145199761D02*
X132190952Y-146485476D01*
X130571904Y-145580714D02*
X130571904Y-146390238D01*
X130619523Y-146485476D01*
X130667142Y-146533095D01*
X130762380Y-146580714D01*
X130905238Y-146580714D01*
X131000476Y-146533095D01*
X130571904Y-146199761D02*
X130667142Y-146247380D01*
X130857619Y-146247380D01*
X130952857Y-146199761D01*
X131000476Y-146152142D01*
X131048095Y-146056904D01*
X131048095Y-145771190D01*
X131000476Y-145675952D01*
X130952857Y-145628333D01*
X130857619Y-145580714D01*
X130667142Y-145580714D01*
X130571904Y-145628333D01*
X130095714Y-146247380D02*
X130095714Y-145580714D01*
X130095714Y-145771190D02*
X130048095Y-145675952D01*
X130000476Y-145628333D01*
X129905238Y-145580714D01*
X129810000Y-145580714D01*
X129095714Y-146199761D02*
X129190952Y-146247380D01*
X129381428Y-146247380D01*
X129476666Y-146199761D01*
X129524285Y-146104523D01*
X129524285Y-145723571D01*
X129476666Y-145628333D01*
X129381428Y-145580714D01*
X129190952Y-145580714D01*
X129095714Y-145628333D01*
X129048095Y-145723571D01*
X129048095Y-145818809D01*
X129524285Y-145914047D01*
X128238571Y-146199761D02*
X128333809Y-146247380D01*
X128524285Y-146247380D01*
X128619523Y-146199761D01*
X128667142Y-146104523D01*
X128667142Y-145723571D01*
X128619523Y-145628333D01*
X128524285Y-145580714D01*
X128333809Y-145580714D01*
X128238571Y-145628333D01*
X128190952Y-145723571D01*
X128190952Y-145818809D01*
X128667142Y-145914047D01*
X127762380Y-145580714D02*
X127762380Y-146247380D01*
X127762380Y-145675952D02*
X127714761Y-145628333D01*
X127619523Y-145580714D01*
X127476666Y-145580714D01*
X127381428Y-145628333D01*
X127333809Y-145723571D01*
X127333809Y-146247380D01*
X126857619Y-146247380D02*
X126857619Y-145247380D01*
X126429047Y-146247380D02*
X126429047Y-145723571D01*
X126476666Y-145628333D01*
X126571904Y-145580714D01*
X126714761Y-145580714D01*
X126810000Y-145628333D01*
X126857619Y-145675952D01*
X125810000Y-146247380D02*
X125905238Y-146199761D01*
X125952857Y-146152142D01*
X126000476Y-146056904D01*
X126000476Y-145771190D01*
X125952857Y-145675952D01*
X125905238Y-145628333D01*
X125810000Y-145580714D01*
X125667142Y-145580714D01*
X125571904Y-145628333D01*
X125524285Y-145675952D01*
X125476666Y-145771190D01*
X125476666Y-146056904D01*
X125524285Y-146152142D01*
X125571904Y-146199761D01*
X125667142Y-146247380D01*
X125810000Y-146247380D01*
X124619523Y-145580714D02*
X124619523Y-146247380D01*
X125048095Y-145580714D02*
X125048095Y-146104523D01*
X125000476Y-146199761D01*
X124905238Y-146247380D01*
X124762380Y-146247380D01*
X124667142Y-146199761D01*
X124619523Y-146152142D01*
X124190952Y-146199761D02*
X124095714Y-146247380D01*
X123905238Y-146247380D01*
X123810000Y-146199761D01*
X123762380Y-146104523D01*
X123762380Y-146056904D01*
X123810000Y-145961666D01*
X123905238Y-145914047D01*
X124048095Y-145914047D01*
X124143333Y-145866428D01*
X124190952Y-145771190D01*
X124190952Y-145723571D01*
X124143333Y-145628333D01*
X124048095Y-145580714D01*
X123905238Y-145580714D01*
X123810000Y-145628333D01*
X123333809Y-146247380D02*
X123333809Y-145580714D01*
X123333809Y-145247380D02*
X123381428Y-145295000D01*
X123333809Y-145342619D01*
X123286190Y-145295000D01*
X123333809Y-145247380D01*
X123333809Y-145342619D01*
X122857619Y-145580714D02*
X122857619Y-146247380D01*
X122857619Y-145675952D02*
X122810000Y-145628333D01*
X122714761Y-145580714D01*
X122571904Y-145580714D01*
X122476666Y-145628333D01*
X122429047Y-145723571D01*
X122429047Y-146247380D01*
X121810000Y-146247380D02*
X121905238Y-146199761D01*
X121952857Y-146152142D01*
X122000476Y-146056904D01*
X122000476Y-145771190D01*
X121952857Y-145675952D01*
X121905238Y-145628333D01*
X121810000Y-145580714D01*
X121667142Y-145580714D01*
X121571904Y-145628333D01*
X121524285Y-145675952D01*
X121476666Y-145771190D01*
X121476666Y-146056904D01*
X121524285Y-146152142D01*
X121571904Y-146199761D01*
X121667142Y-146247380D01*
X121810000Y-146247380D01*
%LPC*%
D11*
X149860000Y-146050000D03*
X147320000Y-146050000D03*
D12*
X144780000Y-146050000D03*
D13*
X123190000Y-120650000D03*
D14*
X123190000Y-141140000D03*
D15*
X142280000Y-123190000D03*
X144780000Y-123190000D03*
D11*
X115570000Y-113030000D03*
D12*
X115570000Y-110490000D03*
D16*
X147320000Y-129540000D03*
X139700000Y-137160000D03*
X147320000Y-132080000D03*
X139700000Y-134620000D03*
X147320000Y-134620000D03*
X139700000Y-132080000D03*
X147320000Y-137160000D03*
D17*
X139700000Y-129540000D03*
D16*
X157480000Y-111760000D03*
D15*
X157480000Y-119380000D03*
D16*
X152400000Y-121920000D03*
D15*
X152400000Y-129540000D03*
D16*
X157480000Y-129540000D03*
D15*
X157480000Y-121920000D03*
D16*
X152400000Y-119380000D03*
D15*
X152400000Y-111760000D03*
D18*
X132080000Y-120650000D03*
D19*
X134620000Y-120650000D03*
X133350000Y-119380000D03*
D11*
X162560000Y-124460000D03*
D12*
X162560000Y-127000000D03*
D11*
X146050000Y-110490000D03*
X143510000Y-110490000D03*
D12*
X140970000Y-110490000D03*
D11*
X162560000Y-115570000D03*
X162560000Y-113030000D03*
D12*
X162560000Y-110490000D03*
D11*
X134620000Y-110490000D03*
X132080000Y-110490000D03*
X129540000Y-110490000D03*
D12*
X127000000Y-110490000D03*
D20*
X161290000Y-142240000D03*
D21*
X158750000Y-142240000D03*
M02*

View File

@@ -1,26 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,Profile*
%ADD10C,0.050000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X107950000Y-148590000D02*
X107950000Y-106680000D01*
X166370000Y-148590000D02*
X107950000Y-148590000D01*
X166370000Y-106680000D02*
X166370000Y-148590000D01*
X107950000Y-106680000D02*
X166370000Y-106680000D01*
M02*

File diff suppressed because it is too large Load Diff

View File

@@ -1,97 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Top*
G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10O,1.700000X1.700000*%
%ADD11R,1.700000X1.700000*%
%ADD12R,3.000000X3.000000*%
%ADD13C,3.000000*%
%ADD14C,1.600000*%
%ADD15O,1.600000X1.600000*%
%ADD16R,1.600000X1.600000*%
%ADD17R,1.300000X1.300000*%
%ADD18C,1.300000*%
%ADD19C,1.800000*%
%ADD20R,1.800000X1.800000*%
G04 APERTURE END LIST*
D10*
X149860000Y-146050000D03*
X147320000Y-146050000D03*
D11*
X144780000Y-146050000D03*
D12*
X123190000Y-120650000D03*
D13*
X123190000Y-141140000D03*
D14*
X142280000Y-123190000D03*
X144780000Y-123190000D03*
D10*
X115570000Y-113030000D03*
D11*
X115570000Y-110490000D03*
D15*
X147320000Y-129540000D03*
X139700000Y-137160000D03*
X147320000Y-132080000D03*
X139700000Y-134620000D03*
X147320000Y-134620000D03*
X139700000Y-132080000D03*
X147320000Y-137160000D03*
D16*
X139700000Y-129540000D03*
D15*
X157480000Y-111760000D03*
D14*
X157480000Y-119380000D03*
D15*
X152400000Y-121920000D03*
D14*
X152400000Y-129540000D03*
D15*
X157480000Y-129540000D03*
D14*
X157480000Y-121920000D03*
D15*
X152400000Y-119380000D03*
D14*
X152400000Y-111760000D03*
D17*
X132080000Y-120650000D03*
D18*
X134620000Y-120650000D03*
X133350000Y-119380000D03*
D10*
X162560000Y-124460000D03*
D11*
X162560000Y-127000000D03*
D10*
X146050000Y-110490000D03*
X143510000Y-110490000D03*
D11*
X140970000Y-110490000D03*
D10*
X162560000Y-115570000D03*
X162560000Y-113030000D03*
D11*
X162560000Y-110490000D03*
D10*
X134620000Y-110490000D03*
X132080000Y-110490000D03*
X129540000Y-110490000D03*
D11*
X127000000Y-110490000D03*
D19*
X161290000Y-142240000D03*
D20*
X158750000Y-142240000D03*
M02*

View File

@@ -1,15 +0,0 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*
G04 #@! TF.CreationDate,2021-05-06T21:17:37+02:00*
G04 #@! TF.ProjectId,schema,73636865-6d61-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:17:37*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

File diff suppressed because it is too large Load Diff

View File

@@ -1,108 +0,0 @@
%FSLAX45Y45*%
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-05-06 21:18:17*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.050000*%
%TD*%
%ADD11C,0.200000*%
%ADD12C,0.300000*%
G04 APERTURE END LIST*
D10*
X10795000Y-14859000D02*
X10795000Y-10668000D01*
X16637000Y-14859000D02*
X10795000Y-14859000D01*
X16637000Y-10668000D02*
X16637000Y-14859000D01*
X10795000Y-10668000D02*
X16637000Y-10668000D01*
D11*
D12*
X11078928Y-15327214D02*
X11078928Y-15027214D01*
X11150357Y-15027214D01*
X11193214Y-15041500D01*
X11221786Y-15070071D01*
X11236071Y-15098643D01*
X11250357Y-15155786D01*
X11250357Y-15198643D01*
X11236071Y-15255786D01*
X11221786Y-15284357D01*
X11193214Y-15312929D01*
X11150357Y-15327214D01*
X11078928Y-15327214D01*
X11378928Y-15327214D02*
X11378928Y-15127214D01*
X11378928Y-15184357D02*
X11393214Y-15155786D01*
X11407500Y-15141500D01*
X11436071Y-15127214D01*
X11464643Y-15127214D01*
X11564643Y-15327214D02*
X11564643Y-15127214D01*
X11564643Y-15027214D02*
X11550357Y-15041500D01*
X11564643Y-15055786D01*
X11578928Y-15041500D01*
X11564643Y-15027214D01*
X11564643Y-15055786D01*
X11750357Y-15327214D02*
X11721786Y-15312929D01*
X11707500Y-15284357D01*
X11707500Y-15027214D01*
X11907500Y-15327214D02*
X11878928Y-15312929D01*
X11864643Y-15284357D01*
X11864643Y-15027214D01*
X12250357Y-15327214D02*
X12250357Y-15027214D01*
X12350357Y-15241500D01*
X12450357Y-15027214D01*
X12450357Y-15327214D01*
X12721786Y-15327214D02*
X12721786Y-15170071D01*
X12707500Y-15141500D01*
X12678928Y-15127214D01*
X12621786Y-15127214D01*
X12593214Y-15141500D01*
X12721786Y-15312929D02*
X12693214Y-15327214D01*
X12621786Y-15327214D01*
X12593214Y-15312929D01*
X12578928Y-15284357D01*
X12578928Y-15255786D01*
X12593214Y-15227214D01*
X12621786Y-15212929D01*
X12693214Y-15212929D01*
X12721786Y-15198643D01*
X12864643Y-15127214D02*
X12864643Y-15427214D01*
X12864643Y-15141500D02*
X12893214Y-15127214D01*
X12950357Y-15127214D01*
X12978928Y-15141500D01*
X12993214Y-15155786D01*
X13007500Y-15184357D01*
X13007500Y-15270071D01*
X12993214Y-15298643D01*
X12978928Y-15312929D01*
X12950357Y-15327214D01*
X12893214Y-15327214D01*
X12864643Y-15312929D01*
X13136071Y-15298643D02*
X13150357Y-15312929D01*
X13136071Y-15327214D01*
X13121786Y-15312929D01*
X13136071Y-15298643D01*
X13136071Y-15327214D01*
X13136071Y-15141500D02*
X13150357Y-15155786D01*
X13136071Y-15170071D01*
X13121786Y-15155786D01*
X13136071Y-15141500D01*
X13136071Y-15170071D01*
M02*

View File

@@ -1,13 +0,0 @@
M48
; DRILL file {KiCad 5.1.9+dfsg1-1} date Thu May 6 21:18:16 2021
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2021-05-06T21:18:16+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.9+dfsg1-1
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2
METRIC
%
G90
G05
T0
M30

File diff suppressed because it is too large Load Diff

View File

@@ -1,78 +0,0 @@
M48
; DRILL file {KiCad 5.1.9+dfsg1-1} date Thu May 6 21:18:16 2021
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2021-05-06T21:18:16+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.9+dfsg1-1
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2
METRIC
T1C0.400
T2C0.750
T3C0.800
T4C0.900
T5C1.000
T6C1.500
%
G90
G05
T1
X133.35Y-123.19
X133.35Y-124.46
X137.16Y-123.19
X139.7Y-123.19
X143.51Y-119.38
X143.51Y-127.0
X146.05Y-119.38
X149.86Y-132.08
X151.13Y-134.62
X156.21Y-132.08
X160.02Y-132.08
T2
X132.08Y-120.65
X133.35Y-119.38
X134.62Y-120.65
T3
X139.7Y-129.54
X139.7Y-132.08
X139.7Y-134.62
X139.7Y-137.16
X142.28Y-123.19
X144.78Y-123.19
X147.32Y-129.54
X147.32Y-132.08
X147.32Y-134.62
X147.32Y-137.16
X152.4Y-111.76
X152.4Y-119.38
X152.4Y-121.92
X152.4Y-129.54
X157.48Y-111.76
X157.48Y-119.38
X157.48Y-121.92
X157.48Y-129.54
T4
X158.75Y-142.24
X161.29Y-142.24
T5
X115.57Y-110.49
X115.57Y-113.03
X127.0Y-110.49
X129.54Y-110.49
X132.08Y-110.49
X134.62Y-110.49
X140.97Y-110.49
X143.51Y-110.49
X144.78Y-146.05
X146.05Y-110.49
X147.32Y-146.05
X149.86Y-146.05
X162.56Y-110.49
X162.56Y-113.03
X162.56Y-115.57
X162.56Y-124.46
X162.56Y-127.0
T6
X123.19Y-120.65
X123.19Y-141.14
T0
M30

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -1,9 +1,9 @@
(kicad_pcb (version 20171130) (host pcbnew 5.1.9+dfsg1-1) (kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~88~ubuntu20.04.1)
(general (general
(thickness 1.6) (thickness 1.6)
(drawings 16) (drawings 10)
(tracks 109) (tracks 108)
(zones 0) (zones 0)
(modules 15) (modules 15)
(nets 13) (nets 13)
@@ -63,10 +63,10 @@
(visible_elements FFFFFF7F) (visible_elements FFFFFF7F)
(pcbplotparams (pcbplotparams
(layerselection 0x010fc_ffffffff) (layerselection 0x010fc_ffffffff)
(usegerberextensions true) (usegerberextensions false)
(usegerberattributes false) (usegerberattributes true)
(usegerberadvancedattributes false) (usegerberadvancedattributes true)
(creategerberjobfile false) (creategerberjobfile true)
(excludeedgelayer true) (excludeedgelayer true)
(linewidth 0.100000) (linewidth 0.100000)
(plotframeref false) (plotframeref false)
@@ -79,15 +79,15 @@
(psnegative false) (psnegative false)
(psa4output false) (psa4output false)
(plotreference true) (plotreference true)
(plotvalue false) (plotvalue true)
(plotinvisibletext false) (plotinvisibletext false)
(padsonsilk false) (padsonsilk false)
(subtractmaskfromsilk true) (subtractmaskfromsilk false)
(outputformat 1) (outputformat 1)
(mirror false) (mirror false)
(drillshape 0) (drillshape 1)
(scaleselection 1) (scaleselection 1)
(outputdirectory "gerber")) (outputdirectory ""))
) )
(net 0 "") (net 0 "")
@@ -97,12 +97,12 @@
(net 4 "Net-(D1-Pad1)") (net 4 "Net-(D1-Pad1)")
(net 5 /DHT) (net 5 /DHT)
(net 6 /SOIL) (net 6 /SOIL)
(net 7 /DATA) (net 7 "Net-(J3-Pad1)")
(net 8 "Net-(Q1-Pad1)") (net 8 /DATA)
(net 9 "Net-(R1-Pad2)") (net 9 "Net-(Q1-Pad1)")
(net 10 /TRANSIS) (net 10 "Net-(R1-Pad2)")
(net 11 /MISC) (net 11 /TRANSIS)
(net 12 "Net-(J2-Pad4)") (net 12 /MISC)
(net_class Default "This is the default net class." (net_class Default "This is the default net class."
(clearance 0.2) (clearance 0.2)
@@ -120,7 +120,7 @@
(add_net GND) (add_net GND)
(add_net "Net-(D1-Pad1)") (add_net "Net-(D1-Pad1)")
(add_net "Net-(D1-Pad2)") (add_net "Net-(D1-Pad2)")
(add_net "Net-(J2-Pad4)") (add_net "Net-(J3-Pad1)")
(add_net "Net-(Q1-Pad1)") (add_net "Net-(Q1-Pad1)")
(add_net "Net-(R1-Pad2)") (add_net "Net-(R1-Pad2)")
) )
@@ -155,11 +155,11 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 11 /MISC)) (net 12 /MISC))
(pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 2 +5V)) (net 2 +5V))
(pad 1 thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 7 "Net-(J3-Pad1)"))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -345,15 +345,15 @@
(pad 7 thru_hole oval (at 7.62 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 7 thru_hole oval (at 7.62 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 6 /SOIL)) (net 6 /SOIL))
(pad 3 thru_hole oval (at 0 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 3 thru_hole oval (at 0 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 10 /TRANSIS)) (net 11 /TRANSIS))
(pad 6 thru_hole oval (at 7.62 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 6 thru_hole oval (at 7.62 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 5 /DHT)) (net 5 /DHT))
(pad 2 thru_hole oval (at 0 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 7 /DATA)) (net 8 /DATA))
(pad 5 thru_hole oval (at 7.62 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 5 thru_hole oval (at 7.62 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 11 /MISC)) (net 12 /MISC))
(pad 1 thru_hole rect (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 9 "Net-(R1-Pad2)")) (net 10 "Net-(R1-Pad2)"))
(model ${KISYS3DMOD}/Package_DIP.3dshapes/DIP-8_W7.62mm.wrl (model ${KISYS3DMOD}/Package_DIP.3dshapes/DIP-8_W7.62mm.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -392,7 +392,7 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 2 thru_hole oval (at 7.62 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 7.62 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 7 "Net-(J3-Pad1)"))
(pad 1 thru_hole circle (at 0 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 1 thru_hole circle (at 0 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 4 "Net-(D1-Pad1)")) (net 4 "Net-(D1-Pad1)"))
(model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl (model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl
@@ -433,9 +433,9 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 2 thru_hole oval (at 7.62 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 7.62 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 8 "Net-(Q1-Pad1)")) (net 9 "Net-(Q1-Pad1)"))
(pad 1 thru_hole circle (at 0 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 1 thru_hole circle (at 0 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 10 /TRANSIS)) (net 11 /TRANSIS))
(model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl (model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -515,7 +515,7 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 2 thru_hole oval (at 7.62 0 270) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 7.62 0 270) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 9 "Net-(R1-Pad2)")) (net 10 "Net-(R1-Pad2)"))
(pad 1 thru_hole circle (at 0 0 270) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (pad 1 thru_hole circle (at 0 0 270) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 2 +5V)) (net 2 +5V))
(model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl (model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal.wrl
@@ -550,11 +550,11 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 1 thru_hole rect (at 0 0) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask)
(net 8 "Net-(Q1-Pad1)")) (net 9 "Net-(Q1-Pad1)"))
(pad 3 thru_hole circle (at 2.54 0) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask) (pad 3 thru_hole circle (at 2.54 0) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask)
(net 1 GND)) (net 1 GND))
(pad 2 thru_hole circle (at 1.27 -1.27) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask) (pad 2 thru_hole circle (at 1.27 -1.27) (size 1.3 1.3) (drill 0.75) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 7 "Net-(J3-Pad1)"))
(model ${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-92.wrl (model ${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-92.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -632,11 +632,11 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 7 /DATA)) (net 8 /DATA))
(pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 2 +5V)) (net 2 +5V))
(pad 1 thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 7 "Net-(J3-Pad1)"))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -678,7 +678,7 @@
(pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 2 +5V)) (net 2 +5V))
(pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 7 "Net-(J3-Pad1)"))
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl
(at (xyz 0 0 0)) (at (xyz 0 0 0))
(scale (xyz 1 1 1)) (scale (xyz 1 1 1))
@@ -716,7 +716,7 @@
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(pad 4 thru_hole oval (at 0 7.62 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 4 thru_hole oval (at 0 7.62 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 "Net-(J2-Pad4)")) (net 1 GND))
(pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) (pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
(pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 5 /DHT)) (net 5 /DHT))
@@ -764,25 +764,7 @@
) )
) )
(gr_text "Soil Sensor\n2021 Stefan Ostermann\nthoster.net/greenhousino" (at 130.81 144.145) (layer B.SilkS) (gr_text MISC (at 144.78 143.51) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(gr_text "+5V\n\nGND" (at 119.38 111.76) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text "GND +5V DAT" (at 147.955 142.875) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text "GND\n\n+5V\n\nSOIL" (at 165.1 113.03) (layer F.SilkS)
(effects (font (size 1 0.6) (thickness 0.15)))
)
(gr_text "GND +5V DAT" (at 143.51 114.935) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text +5V (at 126.365 113.03) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text MISC (at 153.67 146.05) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(gr_text BAT (at 115.57 115.57) (layer F.SilkS) (gr_text BAT (at 115.57 115.57) (layer F.SilkS)
@@ -870,52 +852,51 @@
(segment (start 148.495013 133.255013) (end 155.034987 133.255013) (width 0.25) (layer B.Cu) (net 6)) (segment (start 148.495013 133.255013) (end 155.034987 133.255013) (width 0.25) (layer B.Cu) (net 6))
(segment (start 155.034987 133.255013) (end 155.810001 132.479999) (width 0.25) (layer B.Cu) (net 6)) (segment (start 155.034987 133.255013) (end 155.810001 132.479999) (width 0.25) (layer B.Cu) (net 6))
(segment (start 155.810001 132.479999) (end 156.21 132.08) (width 0.25) (layer B.Cu) (net 6)) (segment (start 155.810001 132.479999) (end 156.21 132.08) (width 0.25) (layer B.Cu) (net 6))
(segment (start 133.35 118.11) (end 140.97 110.49) (width 0.25) (layer F.Cu) (net 12)) (segment (start 133.35 118.11) (end 140.97 110.49) (width 0.25) (layer F.Cu) (net 7))
(segment (start 133.35 119.38) (end 133.35 118.11) (width 0.25) (layer F.Cu) (net 12)) (segment (start 133.35 119.38) (end 133.35 118.11) (width 0.25) (layer F.Cu) (net 7))
(segment (start 158.75 110.49) (end 157.48 111.76) (width 0.25) (layer B.Cu) (net 12)) (segment (start 158.75 110.49) (end 157.48 111.76) (width 0.25) (layer B.Cu) (net 7))
(segment (start 162.56 110.49) (end 158.75 110.49) (width 0.25) (layer B.Cu) (net 12)) (segment (start 162.56 110.49) (end 158.75 110.49) (width 0.25) (layer B.Cu) (net 7))
(segment (start 157.48 111.76) (end 154.94 109.22) (width 0.25) (layer B.Cu) (net 12)) (segment (start 157.48 111.76) (end 154.94 109.22) (width 0.25) (layer B.Cu) (net 7))
(segment (start 141.770998 110.49) (end 140.97 110.49) (width 0.25) (layer B.Cu) (net 12)) (segment (start 141.770998 110.49) (end 140.97 110.49) (width 0.25) (layer B.Cu) (net 7))
(segment (start 143.040998 109.22) (end 141.770998 110.49) (width 0.25) (layer B.Cu) (net 12)) (segment (start 143.040998 109.22) (end 141.770998 110.49) (width 0.25) (layer B.Cu) (net 7))
(segment (start 154.94 109.22) (end 143.040998 109.22) (width 0.25) (layer B.Cu) (net 12)) (segment (start 154.94 109.22) (end 143.040998 109.22) (width 0.25) (layer B.Cu) (net 7))
(segment (start 144.78 146.05) (end 137.16 138.43) (width 0.25) (layer B.Cu) (net 12)) (segment (start 144.78 146.05) (end 137.16 138.43) (width 0.25) (layer B.Cu) (net 7))
(segment (start 137.16 128.27) (end 133.35 124.46) (width 0.25) (layer B.Cu) (net 12)) (segment (start 137.16 128.27) (end 133.35 124.46) (width 0.25) (layer B.Cu) (net 7))
(segment (start 137.16 138.43) (end 137.16 128.27) (width 0.25) (layer B.Cu) (net 12)) (segment (start 137.16 138.43) (end 137.16 128.27) (width 0.25) (layer B.Cu) (net 7))
(via (at 133.35 124.46) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 12)) (via (at 133.35 124.46) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 7))
(segment (start 133.35 124.46) (end 133.35 123.19) (width 0.25) (layer F.Cu) (net 12)) (segment (start 133.35 124.46) (end 133.35 123.19) (width 0.25) (layer F.Cu) (net 7))
(via (at 133.35 123.19) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 12)) (via (at 133.35 123.19) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 7))
(segment (start 133.35 123.19) (end 133.35 119.38) (width 0.25) (layer B.Cu) (net 12)) (segment (start 133.35 123.19) (end 133.35 119.38) (width 0.25) (layer B.Cu) (net 7))
(segment (start 146.05 110.49) (end 146.05 115.57) (width 0.25) (layer B.Cu) (net 7)) (segment (start 146.05 110.49) (end 146.05 115.57) (width 0.25) (layer B.Cu) (net 8))
(segment (start 137.16 124.46) (end 137.16 127.63359) (width 0.25) (layer B.Cu) (net 7)) (segment (start 137.16 124.46) (end 137.16 127.63359) (width 0.25) (layer B.Cu) (net 8))
(segment (start 146.05 115.57) (end 137.16 124.46) (width 0.25) (layer B.Cu) (net 7)) (segment (start 146.05 115.57) (end 137.16 124.46) (width 0.25) (layer B.Cu) (net 8))
(segment (start 137.16 127.63359) (end 137.610011 128.0836) (width 0.25) (layer B.Cu) (net 7)) (segment (start 137.16 127.63359) (end 137.610011 128.0836) (width 0.25) (layer B.Cu) (net 8))
(segment (start 137.610011 128.0836) (end 137.610011 129.990011) (width 0.25) (layer B.Cu) (net 7)) (segment (start 137.610011 128.0836) (end 137.610011 129.990011) (width 0.25) (layer B.Cu) (net 8))
(segment (start 137.610011 129.990011) (end 139.7 132.08) (width 0.25) (layer B.Cu) (net 7)) (segment (start 137.610011 129.990011) (end 139.7 132.08) (width 0.25) (layer B.Cu) (net 8))
(segment (start 152.4 121.92) (end 149.86 121.92) (width 0.25) (layer F.Cu) (net 8)) (segment (start 152.4 121.92) (end 149.86 121.92) (width 0.25) (layer F.Cu) (net 9))
(via (at 146.05 119.38) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 8)) (via (at 146.05 119.38) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 9))
(segment (start 147.32 119.38) (end 146.05 119.38) (width 0.25) (layer F.Cu) (net 8)) (segment (start 147.32 119.38) (end 146.05 119.38) (width 0.25) (layer F.Cu) (net 9))
(segment (start 149.86 121.92) (end 147.32 119.38) (width 0.25) (layer F.Cu) (net 8)) (segment (start 149.86 121.92) (end 147.32 119.38) (width 0.25) (layer F.Cu) (net 9))
(via (at 143.51 119.38) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 8)) (via (at 143.51 119.38) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 9))
(segment (start 146.05 119.38) (end 143.51 119.38) (width 0.25) (layer B.Cu) (net 8)) (segment (start 146.05 119.38) (end 143.51 119.38) (width 0.25) (layer B.Cu) (net 9))
(segment (start 135.088001 121.625001) (end 133.055001 121.625001) (width 0.25) (layer F.Cu) (net 8)) (segment (start 135.088001 121.625001) (end 133.055001 121.625001) (width 0.25) (layer F.Cu) (net 9))
(segment (start 137.333002 119.38) (end 135.088001 121.625001) (width 0.25) (layer F.Cu) (net 8)) (segment (start 137.333002 119.38) (end 135.088001 121.625001) (width 0.25) (layer F.Cu) (net 9))
(segment (start 143.51 119.38) (end 137.333002 119.38) (width 0.25) (layer F.Cu) (net 8)) (segment (start 143.51 119.38) (end 137.333002 119.38) (width 0.25) (layer F.Cu) (net 9))
(segment (start 133.055001 121.625001) (end 132.08 120.65) (width 0.25) (layer F.Cu) (net 8)) (segment (start 133.055001 121.625001) (end 132.08 120.65) (width 0.25) (layer F.Cu) (net 9))
(segment (start 142.24 129.54) (end 152.4 119.38) (width 0.25) (layer B.Cu) (net 9)) (segment (start 142.24 129.54) (end 152.4 119.38) (width 0.25) (layer B.Cu) (net 10))
(segment (start 139.7 129.54) (end 142.24 129.54) (width 0.25) (layer B.Cu) (net 9)) (segment (start 139.7 129.54) (end 142.24 129.54) (width 0.25) (layer B.Cu) (net 10))
(segment (start 152.4 130.67137) (end 150.266368 132.805002) (width 0.25) (layer B.Cu) (net 10)) (segment (start 152.4 130.67137) (end 150.266368 132.805002) (width 0.25) (layer B.Cu) (net 11))
(segment (start 149.134998 131.991408) (end 148.098589 130.954999) (width 0.25) (layer B.Cu) (net 10)) (segment (start 149.134998 131.991408) (end 148.098589 130.954999) (width 0.25) (layer B.Cu) (net 11))
(segment (start 149.134998 132.428002) (end 149.134998 131.991408) (width 0.25) (layer B.Cu) (net 10)) (segment (start 149.134998 132.428002) (end 149.134998 131.991408) (width 0.25) (layer B.Cu) (net 11))
(segment (start 143.365001 130.954999) (end 139.7 134.62) (width 0.25) (layer B.Cu) (net 10)) (segment (start 143.365001 130.954999) (end 139.7 134.62) (width 0.25) (layer B.Cu) (net 11))
(segment (start 148.098589 130.954999) (end 143.365001 130.954999) (width 0.25) (layer B.Cu) (net 10)) (segment (start 148.098589 130.954999) (end 143.365001 130.954999) (width 0.25) (layer B.Cu) (net 11))
(segment (start 150.266368 132.805002) (end 149.511998 132.805002) (width 0.25) (layer B.Cu) (net 10)) (segment (start 150.266368 132.805002) (end 149.511998 132.805002) (width 0.25) (layer B.Cu) (net 11))
(segment (start 152.4 129.54) (end 152.4 130.67137) (width 0.25) (layer B.Cu) (net 10)) (segment (start 152.4 129.54) (end 152.4 130.67137) (width 0.25) (layer B.Cu) (net 11))
(segment (start 149.511998 132.805002) (end 149.134998 132.428002) (width 0.25) (layer B.Cu) (net 10)) (segment (start 149.511998 132.805002) (end 149.134998 132.428002) (width 0.25) (layer B.Cu) (net 11))
(segment (start 149.86 139.7) (end 147.32 137.16) (width 0.25) (layer F.Cu) (net 11)) (segment (start 149.86 139.7) (end 147.32 137.16) (width 0.25) (layer F.Cu) (net 12))
(segment (start 149.86 146.05) (end 149.86 139.7) (width 0.25) (layer F.Cu) (net 11)) (segment (start 149.86 146.05) (end 149.86 139.7) (width 0.25) (layer F.Cu) (net 12))
(segment (start 140.97 110.49) (end 134.62 110.49) (width 0.25) (layer F.Cu) (net 12))
(zone (net 1) (net_name GND) (layer F.Cu) (tstamp 609440D7) (hatch edge 0.508) (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 608D4866) (hatch edge 0.508)
(connect_pads (clearance 0.508)) (connect_pads (clearance 0.508))
(min_thickness 0.254) (min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
@@ -1084,22 +1065,47 @@
(xy 142.806589 109.17401) (xy 142.563368 109.336525) (xy 142.431513 109.46838) (xy 142.409502 109.39582) (xy 142.350537 109.285506) (xy 142.806589 109.17401) (xy 142.563368 109.336525) (xy 142.431513 109.46838) (xy 142.409502 109.39582) (xy 142.350537 109.285506)
(xy 142.271185 109.188815) (xy 142.174494 109.109463) (xy 142.06418 109.050498) (xy 141.944482 109.014188) (xy 141.82 109.001928) (xy 142.271185 109.188815) (xy 142.174494 109.109463) (xy 142.06418 109.050498) (xy 141.944482 109.014188) (xy 141.82 109.001928)
(xy 140.12 109.001928) (xy 139.995518 109.014188) (xy 139.87582 109.050498) (xy 139.765506 109.109463) (xy 139.668815 109.188815) (xy 140.12 109.001928) (xy 139.995518 109.014188) (xy 139.87582 109.050498) (xy 139.765506 109.109463) (xy 139.668815 109.188815)
(xy 139.589463 109.285506) (xy 139.530498 109.39582) (xy 139.494188 109.515518) (xy 139.481928 109.64) (xy 139.481928 109.73) (xy 139.589463 109.285506) (xy 139.530498 109.39582) (xy 139.494188 109.515518) (xy 139.481928 109.64) (xy 139.481928 110.90327)
(xy 135.898178 109.73) (xy 135.773475 109.543368) (xy 135.566632 109.336525) (xy 135.323411 109.17401) (xy 135.053158 109.062068) (xy 132.838998 117.546201) (xy 132.81 117.569999) (xy 132.786202 117.598997) (xy 132.786201 117.598998) (xy 132.715026 117.685724)
(xy 134.76626 109.005) (xy 134.47374 109.005) (xy 134.186842 109.062068) (xy 133.916589 109.17401) (xy 133.673368 109.336525) (xy 132.644454 117.817754) (xy 132.629815 117.866015) (xy 132.608432 117.936509) (xy 132.600998 117.961015) (xy 132.586324 118.11)
(xy 133.466525 109.543368) (xy 133.35 109.71776) (xy 133.233475 109.543368) (xy 133.026632 109.336525) (xy 132.783411 109.17401) (xy 132.590001 118.147332) (xy 132.590001 118.342358) (xy 132.53086 118.381875) (xy 132.351875 118.56086) (xy 132.211247 118.771324)
(xy 132.513158 109.062068) (xy 132.22626 109.005) (xy 131.93374 109.005) (xy 131.646842 109.062068) (xy 131.376589 109.17401) (xy 132.114381 119.005179) (xy 132.065 119.253439) (xy 132.065 119.361928) (xy 131.43 119.361928) (xy 131.305518 119.374188)
(xy 131.133368 109.336525) (xy 130.926525 109.543368) (xy 130.81 109.71776) (xy 130.693475 109.543368) (xy 130.486632 109.336525) (xy 131.18582 119.410498) (xy 131.075506 119.469463) (xy 130.978815 119.548815) (xy 130.899463 119.645506) (xy 130.840498 119.75582)
(xy 130.243411 109.17401) (xy 129.973158 109.062068) (xy 129.68626 109.005) (xy 129.39374 109.005) (xy 129.106842 109.062068) (xy 130.804188 119.875518) (xy 130.791928 120) (xy 130.791928 121.3) (xy 130.793406 121.315011) (xy 127.10659 121.315011)
(xy 128.836589 109.17401) (xy 128.593368 109.336525) (xy 128.461513 109.46838) (xy 128.439502 109.39582) (xy 128.380537 109.285506) (xy 125.846534 120.054956) (xy 125.818817 120.021183) (xy 125.684059 119.910589) (xy 125.530313 119.828411) (xy 125.36349 119.777805)
(xy 128.301185 109.188815) (xy 128.204494 109.109463) (xy 128.09418 109.050498) (xy 127.974482 109.014188) (xy 127.85 109.001928) (xy 125.328072 119.774317) (xy 125.328072 119.15) (xy 125.315812 119.025518) (xy 125.279502 118.90582) (xy 125.220537 118.795506)
(xy 126.15 109.001928) (xy 126.025518 109.014188) (xy 125.90582 109.050498) (xy 125.795506 109.109463) (xy 125.698815 109.188815) (xy 125.141185 118.698815) (xy 125.044494 118.619463) (xy 124.93418 118.560498) (xy 124.814482 118.524188) (xy 124.69 118.511928)
(xy 125.619463 109.285506) (xy 125.560498 109.39582) (xy 125.524188 109.515518) (xy 125.511928 109.64) (xy 125.511928 109.73) (xy 124.075 118.511928) (xy 124.075 118.153465) (xy 124.079281 118.109999) (xy 124.075 118.066533) (xy 124.075 118.066523)
(xy 117.058072 109.73) (xy 117.058072 109.64) (xy 117.045812 109.515518) (xy 117.009502 109.39582) (xy 116.950537 109.285506) (xy 124.062195 117.93651) (xy 124.011589 117.769687) (xy 123.929411 117.615941) (xy 123.818817 117.481183) (xy 123.785049 117.45347)
(xy 116.871185 109.188815) (xy 116.774494 109.109463) (xy 116.66418 109.050498) (xy 116.544482 109.014188) (xy 116.42 109.001928) (xy 117.581578 111.25) (xy 125.511928 111.25) (xy 125.511928 111.34) (xy 125.524188 111.464482) (xy 125.560498 111.58418)
(xy 114.72 109.001928) (xy 114.595518 109.014188) (xy 114.47582 109.050498) (xy 114.365506 109.109463) (xy 114.268815 109.188815) (xy 125.619463 111.694494) (xy 125.698815 111.791185) (xy 125.795506 111.870537) (xy 125.90582 111.929502) (xy 126.025518 111.965812)
(xy 114.189463 109.285506) (xy 114.130498 109.39582) (xy 114.094188 109.515518) (xy 114.081928 109.64) (xy 108.61 109.64) (xy 126.15 111.978072) (xy 127.85 111.978072) (xy 127.974482 111.965812) (xy 128.09418 111.929502) (xy 128.204494 111.870537)
(xy 108.61 107.34) (xy 165.71 107.34) (xy 128.301185 111.791185) (xy 128.380537 111.694494) (xy 128.439502 111.58418) (xy 128.461513 111.51162) (xy 128.593368 111.643475)
(xy 128.836589 111.80599) (xy 129.106842 111.917932) (xy 129.39374 111.975) (xy 129.68626 111.975) (xy 129.973158 111.917932)
(xy 130.243411 111.80599) (xy 130.486632 111.643475) (xy 130.693475 111.436632) (xy 130.81 111.26224) (xy 130.926525 111.436632)
(xy 131.133368 111.643475) (xy 131.376589 111.80599) (xy 131.646842 111.917932) (xy 131.93374 111.975) (xy 132.22626 111.975)
(xy 132.513158 111.917932) (xy 132.783411 111.80599) (xy 133.026632 111.643475) (xy 133.233475 111.436632) (xy 133.355195 111.254466)
(xy 133.424822 111.371355) (xy 133.619731 111.587588) (xy 133.85308 111.761641) (xy 134.115901 111.886825) (xy 134.26311 111.931476)
(xy 134.493 111.810155) (xy 134.493 110.617) (xy 134.747 110.617) (xy 134.747 111.810155) (xy 134.97689 111.931476)
(xy 135.124099 111.886825) (xy 135.38692 111.761641) (xy 135.620269 111.587588) (xy 135.815178 111.371355) (xy 135.964157 111.121252)
(xy 136.061481 110.846891) (xy 135.940814 110.617) (xy 134.747 110.617) (xy 134.493 110.617) (xy 134.473 110.617)
(xy 134.473 110.363) (xy 134.493 110.363) (xy 134.493 109.169845) (xy 134.747 109.169845) (xy 134.747 110.363)
(xy 135.940814 110.363) (xy 136.061481 110.133109) (xy 135.964157 109.858748) (xy 135.815178 109.608645) (xy 135.620269 109.392412)
(xy 135.38692 109.218359) (xy 135.124099 109.093175) (xy 134.97689 109.048524) (xy 134.747 109.169845) (xy 134.493 109.169845)
(xy 134.26311 109.048524) (xy 134.115901 109.093175) (xy 133.85308 109.218359) (xy 133.619731 109.392412) (xy 133.424822 109.608645)
(xy 133.355195 109.725534) (xy 133.233475 109.543368) (xy 133.026632 109.336525) (xy 132.783411 109.17401) (xy 132.513158 109.062068)
(xy 132.22626 109.005) (xy 131.93374 109.005) (xy 131.646842 109.062068) (xy 131.376589 109.17401) (xy 131.133368 109.336525)
(xy 130.926525 109.543368) (xy 130.81 109.71776) (xy 130.693475 109.543368) (xy 130.486632 109.336525) (xy 130.243411 109.17401)
(xy 129.973158 109.062068) (xy 129.68626 109.005) (xy 129.39374 109.005) (xy 129.106842 109.062068) (xy 128.836589 109.17401)
(xy 128.593368 109.336525) (xy 128.461513 109.46838) (xy 128.439502 109.39582) (xy 128.380537 109.285506) (xy 128.301185 109.188815)
(xy 128.204494 109.109463) (xy 128.09418 109.050498) (xy 127.974482 109.014188) (xy 127.85 109.001928) (xy 126.15 109.001928)
(xy 126.025518 109.014188) (xy 125.90582 109.050498) (xy 125.795506 109.109463) (xy 125.698815 109.188815) (xy 125.619463 109.285506)
(xy 125.560498 109.39582) (xy 125.524188 109.515518) (xy 125.511928 109.64) (xy 125.511928 109.73) (xy 117.058072 109.73)
(xy 117.058072 109.64) (xy 117.045812 109.515518) (xy 117.009502 109.39582) (xy 116.950537 109.285506) (xy 116.871185 109.188815)
(xy 116.774494 109.109463) (xy 116.66418 109.050498) (xy 116.544482 109.014188) (xy 116.42 109.001928) (xy 114.72 109.001928)
(xy 114.595518 109.014188) (xy 114.47582 109.050498) (xy 114.365506 109.109463) (xy 114.268815 109.188815) (xy 114.189463 109.285506)
(xy 114.130498 109.39582) (xy 114.094188 109.515518) (xy 114.081928 109.64) (xy 108.61 109.64) (xy 108.61 107.34)
(xy 165.71 107.34)
) )
) )
(filled_polygon (filled_polygon
@@ -1119,7 +1125,7 @@
) )
) )
) )
(zone (net 1) (net_name GND) (layer B.Cu) (tstamp 609440D4) (hatch edge 0.508) (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 608D4863) (hatch edge 0.508)
(connect_pads (clearance 0.508)) (connect_pads (clearance 0.508))
(min_thickness 0.254) (min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
@@ -1355,24 +1361,27 @@
(xy 137.199801 122.155) (xy 137.194999 122.150198) (xy 137.194999 117.422321) (xy 137.198675 117.384999) (xy 137.194999 117.347676) (xy 137.199801 122.155) (xy 137.194999 122.150198) (xy 137.194999 117.422321) (xy 137.198675 117.384999) (xy 137.194999 117.347676)
(xy 137.194999 117.347666) (xy 137.184002 117.236013) (xy 137.140545 117.092752) (xy 137.089862 116.997932) (xy 137.069973 116.960722) (xy 137.194999 117.347666) (xy 137.184002 117.236013) (xy 137.140545 117.092752) (xy 137.089862 116.997932) (xy 137.069973 116.960722)
(xy 136.998798 116.873996) (xy 136.975 116.844998) (xy 136.946002 116.8212) (xy 132.099801 111.975) (xy 132.22626 111.975) (xy 136.998798 116.873996) (xy 136.975 116.844998) (xy 136.946002 116.8212) (xy 132.099801 111.975) (xy 132.22626 111.975)
(xy 132.513158 111.917932) (xy 132.783411 111.80599) (xy 133.026632 111.643475) (xy 133.233475 111.436632) (xy 133.35 111.26224) (xy 132.513158 111.917932) (xy 132.783411 111.80599) (xy 133.026632 111.643475) (xy 133.233475 111.436632) (xy 133.355195 111.254466)
(xy 133.466525 111.436632) (xy 133.673368 111.643475) (xy 133.916589 111.80599) (xy 134.186842 111.917932) (xy 134.47374 111.975) (xy 133.424822 111.371355) (xy 133.619731 111.587588) (xy 133.85308 111.761641) (xy 134.115901 111.886825) (xy 134.26311 111.931476)
(xy 134.76626 111.975) (xy 135.053158 111.917932) (xy 135.323411 111.80599) (xy 135.566632 111.643475) (xy 135.773475 111.436632) (xy 134.493 111.810155) (xy 134.493 110.617) (xy 134.747 110.617) (xy 134.747 111.810155) (xy 134.97689 111.931476)
(xy 135.93599 111.193411) (xy 136.047932 110.923158) (xy 136.105 110.63626) (xy 136.105 110.34374) (xy 136.047932 110.056842) (xy 135.124099 111.886825) (xy 135.38692 111.761641) (xy 135.620269 111.587588) (xy 135.815178 111.371355) (xy 135.964157 111.121252)
(xy 135.93599 109.786589) (xy 135.773475 109.543368) (xy 135.566632 109.336525) (xy 135.323411 109.17401) (xy 135.053158 109.062068) (xy 136.061481 110.846891) (xy 135.940814 110.617) (xy 134.747 110.617) (xy 134.493 110.617) (xy 134.473 110.617)
(xy 134.76626 109.005) (xy 134.47374 109.005) (xy 134.186842 109.062068) (xy 133.916589 109.17401) (xy 133.673368 109.336525) (xy 134.473 110.363) (xy 134.493 110.363) (xy 134.493 109.169845) (xy 134.747 109.169845) (xy 134.747 110.363)
(xy 133.466525 109.543368) (xy 133.35 109.71776) (xy 133.233475 109.543368) (xy 133.026632 109.336525) (xy 132.783411 109.17401) (xy 135.940814 110.363) (xy 136.061481 110.133109) (xy 135.964157 109.858748) (xy 135.815178 109.608645) (xy 135.620269 109.392412)
(xy 132.513158 109.062068) (xy 132.22626 109.005) (xy 131.93374 109.005) (xy 131.646842 109.062068) (xy 131.376589 109.17401) (xy 135.38692 109.218359) (xy 135.124099 109.093175) (xy 134.97689 109.048524) (xy 134.747 109.169845) (xy 134.493 109.169845)
(xy 131.133368 109.336525) (xy 130.926525 109.543368) (xy 130.81 109.71776) (xy 130.693475 109.543368) (xy 130.486632 109.336525) (xy 134.26311 109.048524) (xy 134.115901 109.093175) (xy 133.85308 109.218359) (xy 133.619731 109.392412) (xy 133.424822 109.608645)
(xy 130.243411 109.17401) (xy 129.973158 109.062068) (xy 129.68626 109.005) (xy 129.39374 109.005) (xy 129.106842 109.062068) (xy 133.355195 109.725534) (xy 133.233475 109.543368) (xy 133.026632 109.336525) (xy 132.783411 109.17401) (xy 132.513158 109.062068)
(xy 128.836589 109.17401) (xy 128.593368 109.336525) (xy 128.461513 109.46838) (xy 128.439502 109.39582) (xy 128.380537 109.285506) (xy 132.22626 109.005) (xy 131.93374 109.005) (xy 131.646842 109.062068) (xy 131.376589 109.17401) (xy 131.133368 109.336525)
(xy 128.301185 109.188815) (xy 128.204494 109.109463) (xy 128.09418 109.050498) (xy 127.974482 109.014188) (xy 127.85 109.001928) (xy 130.926525 109.543368) (xy 130.81 109.71776) (xy 130.693475 109.543368) (xy 130.486632 109.336525) (xy 130.243411 109.17401)
(xy 126.15 109.001928) (xy 126.025518 109.014188) (xy 125.90582 109.050498) (xy 125.795506 109.109463) (xy 125.698815 109.188815) (xy 129.973158 109.062068) (xy 129.68626 109.005) (xy 129.39374 109.005) (xy 129.106842 109.062068) (xy 128.836589 109.17401)
(xy 125.619463 109.285506) (xy 125.560498 109.39582) (xy 125.524188 109.515518) (xy 125.511928 109.64) (xy 117.058072 109.64) (xy 128.593368 109.336525) (xy 128.461513 109.46838) (xy 128.439502 109.39582) (xy 128.380537 109.285506) (xy 128.301185 109.188815)
(xy 117.045812 109.515518) (xy 117.009502 109.39582) (xy 116.950537 109.285506) (xy 116.871185 109.188815) (xy 116.774494 109.109463) (xy 128.204494 109.109463) (xy 128.09418 109.050498) (xy 127.974482 109.014188) (xy 127.85 109.001928) (xy 126.15 109.001928)
(xy 116.66418 109.050498) (xy 116.544482 109.014188) (xy 116.42 109.001928) (xy 114.72 109.001928) (xy 114.595518 109.014188) (xy 126.025518 109.014188) (xy 125.90582 109.050498) (xy 125.795506 109.109463) (xy 125.698815 109.188815) (xy 125.619463 109.285506)
(xy 114.47582 109.050498) (xy 114.365506 109.109463) (xy 114.268815 109.188815) (xy 114.189463 109.285506) (xy 114.130498 109.39582) (xy 125.560498 109.39582) (xy 125.524188 109.515518) (xy 125.511928 109.64) (xy 117.058072 109.64) (xy 117.045812 109.515518)
(xy 114.094188 109.515518) (xy 114.081928 109.64) (xy 108.61 109.64) (xy 108.61 107.34) (xy 165.71 107.34) (xy 117.009502 109.39582) (xy 116.950537 109.285506) (xy 116.871185 109.188815) (xy 116.774494 109.109463) (xy 116.66418 109.050498)
(xy 116.544482 109.014188) (xy 116.42 109.001928) (xy 114.72 109.001928) (xy 114.595518 109.014188) (xy 114.47582 109.050498)
(xy 114.365506 109.109463) (xy 114.268815 109.188815) (xy 114.189463 109.285506) (xy 114.130498 109.39582) (xy 114.094188 109.515518)
(xy 114.081928 109.64) (xy 108.61 109.64) (xy 108.61 107.34) (xy 165.71 107.34)
) )
) )
(filled_polygon (filled_polygon

View File

@@ -1,8 +1,8 @@
(kicad_pcb (version 20171130) (host pcbnew 5.1.9+dfsg1-1) (kicad_pcb (version 20171130) (host pcbnew 5.1.10-88a1d61d58~88~ubuntu20.04.1)
(general (general
(thickness 1.6) (thickness 1.6)
(drawings 16) (drawings 10)
(tracks 108) (tracks 108)
(zones 0) (zones 0)
(modules 15) (modules 15)
@@ -63,10 +63,10 @@
(visible_elements FFFFFF7F) (visible_elements FFFFFF7F)
(pcbplotparams (pcbplotparams
(layerselection 0x010fc_ffffffff) (layerselection 0x010fc_ffffffff)
(usegerberextensions true) (usegerberextensions false)
(usegerberattributes false) (usegerberattributes true)
(usegerberadvancedattributes false) (usegerberadvancedattributes true)
(creategerberjobfile false) (creategerberjobfile true)
(excludeedgelayer true) (excludeedgelayer true)
(linewidth 0.100000) (linewidth 0.100000)
(plotframeref false) (plotframeref false)
@@ -79,15 +79,15 @@
(psnegative false) (psnegative false)
(psa4output false) (psa4output false)
(plotreference true) (plotreference true)
(plotvalue false) (plotvalue true)
(plotinvisibletext false) (plotinvisibletext false)
(padsonsilk false) (padsonsilk false)
(subtractmaskfromsilk true) (subtractmaskfromsilk false)
(outputformat 1) (outputformat 1)
(mirror false) (mirror false)
(drillshape 0) (drillshape 1)
(scaleselection 1) (scaleselection 1)
(outputdirectory "gerber")) (outputdirectory ""))
) )
(net 0 "") (net 0 "")
@@ -136,6 +136,9 @@
(fp_text value Free (at 0 7.41 90) (layer F.Fab) (fp_text value Free (at 0 7.41 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(fp_text user %R (at 0 2.54) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1))
(fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1))
@@ -151,9 +154,6 @@
(fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 0 2.54) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
(net 12 /MISC)) (net 12 /MISC))
(pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
@@ -172,7 +172,7 @@
(descr http://www.keyelco.com/product-pdf.cfm?p=719) (descr http://www.keyelco.com/product-pdf.cfm?p=719)
(tags "Keystone type 103 battery holder") (tags "Keystone type 103 battery holder")
(path /6099105D) (path /6099105D)
(fp_text reference BT1 (at -1.27 -5.08 90) (layer F.SilkS) (fp_text reference BT1 (at 0 -4.3 90) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(fp_text value Battery_Cell (at 15 13 90) (layer F.Fab) (fp_text value Battery_Cell (at 15 13 90) (layer F.Fab)
@@ -216,7 +216,7 @@
(fp_text user %R (at 0 0 90) (layer F.Fab) (fp_text user %R (at 0 0 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(fp_text user + (at 3.81 0 90) (layer F.SilkS) (fp_text user + (at 2.75 0 90) (layer F.SilkS)
(effects (font (size 1.5 1.5) (thickness 0.15))) (effects (font (size 1.5 1.5) (thickness 0.15)))
) )
(pad 1 thru_hole rect (at 0 0 270) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (pad 1 thru_hole rect (at 0 0 270) (size 3 3) (drill 1.5) (layers *.Cu *.Mask)
@@ -764,25 +764,7 @@
) )
) )
(gr_text "Soil Sensor\n2021 Stefan Ostermann\nthoster.net/greenhousino" (at 130.81 144.145) (layer B.SilkS) (gr_text MISC (at 144.78 143.51) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(gr_text "+5V\n\nGND" (at 119.38 111.76) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text "GND +5V DAT" (at 147.955 142.875) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text "GND\n\n+5V\n\nSOIL" (at 165.1 113.03) (layer F.SilkS)
(effects (font (size 1 0.6) (thickness 0.15)))
)
(gr_text "GND +5V DAT" (at 143.51 114.935) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text +5V (at 126.365 113.03) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text MISC (at 153.67 146.05) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15))) (effects (font (size 1 1) (thickness 0.15)))
) )
(gr_text BAT (at 115.57 115.57) (layer F.SilkS) (gr_text BAT (at 115.57 115.57) (layer F.SilkS)
@@ -914,7 +896,7 @@
(segment (start 149.86 139.7) (end 147.32 137.16) (width 0.25) (layer F.Cu) (net 12)) (segment (start 149.86 139.7) (end 147.32 137.16) (width 0.25) (layer F.Cu) (net 12))
(segment (start 149.86 146.05) (end 149.86 139.7) (width 0.25) (layer F.Cu) (net 12)) (segment (start 149.86 146.05) (end 149.86 139.7) (width 0.25) (layer F.Cu) (net 12))
(zone (net 1) (net_name GND) (layer F.Cu) (tstamp 609440D7) (hatch edge 0.508) (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 0) (hatch edge 0.508)
(connect_pads (clearance 0.508)) (connect_pads (clearance 0.508))
(min_thickness 0.254) (min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
@@ -1143,7 +1125,7 @@
) )
) )
) )
(zone (net 1) (net_name GND) (layer B.Cu) (tstamp 609440D4) (hatch edge 0.508) (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 0) (hatch edge 0.508)
(connect_pads (clearance 0.508)) (connect_pads (clearance 0.508))
(min_thickness 0.254) (min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))

View File

@@ -306,6 +306,19 @@ Wire Wire Line
5550 4500 6600 4500 5550 4500 6600 4500
Wire Wire Line Wire Wire Line
7150 3700 7000 3700 7150 3700 7000 3700
Wire Wire Line
7000 3700 7000 3750
$Comp
L power:GND #PWR03
U 1 1 60912FD7
P 7000 3750
F 0 "#PWR03" H 7000 3500 50 0001 C CNN
F 1 "GND" H 7005 3577 50 0000 C CNN
F 2 "" H 7000 3750 50 0001 C CNN
F 3 "" H 7000 3750 50 0001 C CNN
1 7000 3750
1 0 0 -1
$EndComp
Wire Wire Line Wire Wire Line
6150 3700 6500 3700 6150 3700 6500 3700
Text Label 6200 3700 0 50 ~ 0 Text Label 6200 3700 0 50 ~ 0
@@ -397,7 +410,4 @@ Wire Wire Line
6150 3400 6400 3400 6150 3400 6400 3400
Text Label 6200 3400 0 50 ~ 0 Text Label 6200 3400 0 50 ~ 0
MISC MISC
Wire Wire Line
7000 3700 7000 4500
Connection ~ 7000 4500
$EndSCHEMATC $EndSCHEMATC

View File

@@ -373,10 +373,10 @@ Wire Wire Line
3650 4500 3900 4500 3650 4500 3900 4500
Connection ~ 3900 4500 Connection ~ 3900 4500
$Comp $Comp
L Connector_Generic:Conn_01x03 J6 L Connector_Generic:Conn_01x03 J?
U 1 1 609A27EB U 1 1 609A27EB
P 8050 4200 P 8050 4200
F 0 "J6" H 8130 4242 50 0000 L CNN F 0 "J?" H 8130 4242 50 0000 L CNN
F 1 "Free" H 8130 4151 50 0000 L CNN F 1 "Free" H 8130 4151 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 8050 4200 50 0001 C CNN F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 8050 4200 50 0001 C CNN
F 3 "~" H 8050 4200 50 0001 C CNN F 3 "~" H 8050 4200 50 0001 C CNN

View File

@@ -15,6 +15,6 @@
#define WATCHDOG_SLEEP_FURTHER 8 #define WATCHDOG_SLEEP_FURTHER 8
// define wether to use a DHT-Sensor or not // define wether to use a DHT-Sensor or not
#define USE_DHT_SENSOR true bool USE_DHT_SENSOR = true;
#endif #endif

View File

@@ -68,7 +68,7 @@ void setup()
pinMode(SOIL_PIN, INPUT); pinMode(SOIL_PIN, INPUT);
// init the DHT22 // init the DHT22
if (USE_DHT_SENSOR) if (USE_DHT_SENSOR == 1)
{ {
dht_init(&dht, DHT_PIN); dht_init(&dht, DHT_PIN);
} }
@@ -106,7 +106,7 @@ void loop()
long battery = 0; long battery = 0;
// wait for everything the transistor switched on: // wait for everything the transistor switched on:
delay(500); delay(50);
if (counter % 4 == 0) if (counter % 4 == 0)
{ {
@@ -115,7 +115,7 @@ void loop()
memcpy(&rh_buf[1], &battery, 4); memcpy(&rh_buf[1], &battery, 4);
rh_send(rh_buf,RH_BUF_LEN); rh_send(rh_buf,RH_BUF_LEN);
} }
else if (USE_DHT_SENSOR) else if (USE_DHT_SENSOR == 1)
{ {
if (dht_read_data(&dht, &t, &h) == 1) if (dht_read_data(&dht, &t, &h) == 1)
{ {