main files

This commit is contained in:
locker98 2024-07-27 10:37:54 -04:00
commit 783f2268ac
32 changed files with 198846 additions and 0 deletions

BIN
3D/Bottom.stl Executable file

Binary file not shown.

BIN
3D/Button 1.stl Executable file

Binary file not shown.

BIN
3D/Button 2.stl Executable file

Binary file not shown.

BIN
3D/Button 3.stl Executable file

Binary file not shown.

BIN
3D/Button 4.stl Executable file

Binary file not shown.

BIN
3D/Kam+Barn+Alarm+Holder.f3d Executable file

Binary file not shown.

BIN
3D/Top.stl Executable file

Binary file not shown.

612
ESP32 Code/barn/barn.ino Executable file
View File

@ -0,0 +1,612 @@
#include <Arduino.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <Preferences.h>
#include <ESP32Ping.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Preferences prefs;
WiFiClient client;
HTTPClient http;
// Screen configuration
Adafruit_SSD1306 display(128, 32, &Wire, -1);
AsyncWebServer server(80);
String ssid, pass, ip_address;
bool tone_on = false;
bool connected = false;
bool sermon_over = false;
unsigned long previousMillis, currentMillis;
int count;
char ssid_char[20];
char pass_char[20];
// HTML web page to handle 3 input fields (input1, input2, input3)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML>
<html>
<head>
<title>ESP Kid's Alarm Barn</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
}
#container {
text-align: center;
background-color: white;
padding: 20px;
border-radius: 10px;
}
#logout_button {
position: absolute;
top: 20px;
right: 20px;
}
h1 {
margin-top: 0;
}
h2 {
margin-bottom: 10px;
}
form {
margin-bottom: 20px;
}
input[type="text"],
input[type="password"] {
width: 200px;
}
button,
input[type="submit"] {
padding: 10px 20px;
cursor: pointer;
background-color: #007bff;
border: none;
color: white;
border-radius: 5px;
}
button:hover,
input[type="submit"]:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div id="logout_button">
<button onclick="window.location.href='/?logout=1';">Logout</button>
</div>
<div id="container">
<h1>ESP Kid's Alarm Barn</h1>
<hr>
<h2>Change WIFI Password</h2>
<form action="/" id="form_wifi">
SSID: <input type="text" name="ssid" id="ssid">
<br>
Password: <input type="password" name="pass" id="pass">
<br>
<input type="submit" value="Update Wifi" id="submit_wifi">
</form>
<button onclick="window.location.href='/?data=1';">Get Current Wifi Data</button>
<br>
<br>
<br>
<h2>Set Remote Alarm IP</h2>
<form action="/" id="form_key">
<input type="text" minlength="7" maxlength="15" size="1" id="ipaddress" name="ipaddress" placeholder="xxx.xxx.xxx.xxx" autocomplete="off">
<br>
<input type="submit" value="Update IP" id="submit_ip">
</form>
<button onclick="window.location.href='/?ipget=1';">Get Current Remote IP</button>
<script>
document.getElementById('submit_wifi').disabled = true;
document.getElementById('submit_ip').disabled = true;
document.addEventListener('keyup', e => {
if (document.getElementById('ssid').value == "" || document.getElementById('pass').value == "") {
document.getElementById('submit_wifi').disabled = true;
} else {
document.getElementById('submit_wifi').disabled = false;
}
if (document.getElementById("ipaddress").value == "") {
document.getElementById('submit_ip').disabled = true;
} else {
document.getElementById('submit_ip').disabled = false;
}
});
</script>
</div>
</body>
</html>
)rawliteral";
#define FRAME_COUNT_UPLOAD (sizeof(frames_upload) / sizeof(frames_upload[0]))
const byte PROGMEM frames_upload[][128] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 13, 160, 0, 0, 25, 144, 0, 0, 17, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 13, 176, 0, 0, 9, 144, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 3, 192, 0, 0, 3, 192, 0, 0, 5, 160, 0, 0, 5, 176, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 3, 192, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 1, 128, 4, 48, 1, 128, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 64, 1, 128, 2, 64, 1, 128, 2, 64, 3, 192, 2, 64, 3, 192, 2, 32, 3, 192, 4, 48, 1, 128, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 5, 160, 0, 0, 1, 128, 0, 64, 1, 128, 2, 64, 1, 128, 2, 64, 1, 128, 2, 64, 1, 128, 2, 32, 1, 128, 4, 48, 1, 128, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 5, 160, 0, 0, 9, 144, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 1, 128, 2, 64, 1, 128, 2, 64, 1, 128, 2, 64, 1, 128, 2, 32, 1, 128, 4, 48, 1, 128, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 176, 0, 0, 25, 152, 0, 0, 17, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 1, 128, 2, 64, 1, 128, 2, 64, 1, 128, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 13, 176, 0, 0, 25, 152, 0, 0, 49, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 17, 132, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 13, 176, 0, 0, 25, 152, 0, 0, 17, 140, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 0, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 224, 0, 0, 13, 176, 0, 0, 25, 152, 0, 0, 49, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 0, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 3, 192, 0, 0, 7, 160, 0, 0, 13, 144, 0, 0, 25, 136, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 0, 1, 128, 0, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 2, 32, 0, 0, 4, 48, 0, 0, 4, 31, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0 }
};
#define FRAME_COUNT_WIFI (sizeof(frames_wifi) / sizeof(frames_wifi[0]))
const byte PROGMEM frames_wifi[][128] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 15, 240, 38, 56, 112, 14, 28, 16, 192, 3, 8, 3, 0, 0, 192, 3, 15, 240, 64, 1, 48, 12, 128, 0, 224, 7, 0, 0, 1, 193, 0, 0, 14, 240, 0, 0, 24, 24, 0, 0, 8, 16, 0, 0, 4, 32, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 120, 63, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 24, 32, 112, 14, 4, 193, 128, 1, 131, 102, 15, 240, 102, 60, 112, 14, 60, 16, 192, 3, 8, 3, 0, 0, 192, 2, 15, 240, 64, 1, 48, 28, 192, 0, 224, 7, 128, 0, 0, 1, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 252, 0, 0, 224, 15, 0, 7, 0, 0, 224, 12, 0, 0, 48, 48, 31, 248, 8, 96, 224, 7, 6, 195, 0, 1, 195, 102, 3, 224, 102, 56, 62, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 2, 3, 192, 64, 3, 30, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 8, 48, 0, 0, 4, 96, 0, 0, 2, 64, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 248, 0, 0, 248, 31, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 8, 96, 112, 30, 6, 193, 128, 1, 131, 70, 0, 0, 98, 60, 0, 0, 62, 16, 0, 0, 12, 0, 0, 0, 0, 0, 0, 128, 0, 0, 31, 248, 0, 0, 32, 4, 0, 0, 192, 3, 0, 0, 143, 241, 0, 0, 88, 11, 0, 0, 32, 6, 0, 0, 7, 224, 0, 0, 8, 16, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 248, 0, 0, 224, 7, 0, 1, 0, 128, 128, 6, 30, 120, 96, 12, 96, 6, 48, 5, 128, 1, 32, 3, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 15, 48, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 8, 16, 0, 0, 37, 116, 0, 0, 31, 248, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 192, 0, 0, 15, 208, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 48, 28, 0, 0, 192, 131, 0, 1, 158, 248, 128, 3, 32, 4, 192, 1, 192, 3, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 240, 0, 0, 28, 56, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 124, 62, 0, 1, 128, 3, 128, 6, 0, 128, 96, 12, 31, 248, 16, 48, 224, 7, 12, 49, 128, 1, 140, 30, 0, 0, 120, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 30, 120, 0, 0, 48, 12, 0, 0, 103, 230, 0, 0, 60, 28, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 248, 0, 0, 248, 31, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 8, 96, 112, 30, 6, 193, 128, 1, 131, 70, 0, 0, 98, 60, 0, 0, 62, 16, 0, 0, 12, 0, 7, 240, 0, 0, 60, 60, 0, 0, 224, 6, 0, 1, 128, 1, 128, 1, 15, 240, 128, 0, 176, 13, 0, 0, 96, 7, 0, 0, 0, 0, 0, 0, 7, 224, 0, 0, 8, 16, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 252, 0, 0, 224, 15, 0, 7, 0, 0, 224, 12, 0, 0, 48, 48, 31, 248, 8, 96, 224, 7, 6, 195, 0, 1, 195, 102, 3, 224, 102, 56, 62, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 2, 3, 192, 64, 3, 30, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 8, 48, 0, 0, 4, 96, 0, 0, 2, 64, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 120, 63, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 24, 32, 112, 14, 4, 193, 128, 1, 131, 102, 15, 240, 102, 60, 112, 14, 60, 16, 192, 3, 8, 3, 0, 0, 192, 2, 15, 240, 64, 1, 48, 28, 192, 0, 224, 7, 128, 0, 0, 1, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 15, 240, 38, 56, 112, 14, 28, 16, 192, 3, 8, 3, 0, 0, 192, 3, 15, 240, 64, 1, 48, 12, 128, 0, 224, 7, 0, 0, 1, 193, 0, 0, 14, 240, 0, 0, 24, 24, 0, 0, 8, 16, 0, 0, 4, 32, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
#define FRAME_COUNT_ALARM (sizeof(frames_alarm) / sizeof(frames_alarm[0]))
const byte PROGMEM frames_alarm[][128] = {
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 6, 0, 0, 192, 2, 0, 0, 128, 3, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 128, 3, 0, 0, 128, 2, 0, 0, 128, 6, 0, 0, 192, 12, 0, 0, 96, 8, 0, 0, 32, 8, 0, 0, 48, 14, 0, 0, 32, 3, 248, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 24, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 96, 14, 0, 0, 64, 3, 252, 3, 192, 0, 31, 254, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 96, 24, 0, 0, 128, 12, 0, 0, 128, 4, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 12, 0, 2, 0, 24, 0, 2, 0, 48, 0, 3, 0, 32, 0, 1, 0, 32, 0, 1, 128, 24, 0, 0, 128, 15, 0, 0, 128, 1, 252, 1, 128, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 31, 192, 0, 0, 96, 96, 0, 0, 192, 24, 0, 0, 128, 8, 0, 1, 0, 4, 0, 1, 0, 4, 0, 3, 0, 4, 0, 2, 0, 6, 0, 2, 0, 6, 0, 2, 0, 6, 0, 6, 0, 4, 0, 4, 0, 4, 0, 12, 0, 4, 0, 8, 0, 4, 0, 24, 0, 4, 0, 48, 0, 4, 0, 64, 0, 6, 0, 64, 0, 2, 0, 96, 0, 2, 0, 24, 0, 1, 0, 7, 0, 1, 0, 1, 252, 1, 0, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 128, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 31, 192, 0, 0, 96, 96, 0, 0, 192, 24, 0, 1, 128, 8, 0, 1, 0, 12, 0, 1, 0, 4, 0, 2, 0, 4, 0, 2, 0, 4, 0, 2, 0, 4, 0, 6, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 4, 0, 24, 0, 4, 0, 48, 0, 4, 0, 96, 0, 4, 0, 192, 0, 4, 0, 64, 0, 6, 0, 96, 0, 2, 0, 24, 0, 3, 0, 7, 128, 1, 0, 0, 252, 3, 0, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 64, 24, 0, 0, 128, 12, 0, 1, 128, 4, 0, 1, 0, 6, 0, 1, 0, 2, 0, 3, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 4, 0, 2, 0, 8, 0, 2, 0, 24, 0, 2, 0, 32, 0, 2, 0, 96, 0, 3, 0, 32, 0, 1, 0, 24, 0, 0, 128, 15, 0, 0, 128, 1, 252, 1, 128, 0, 31, 254, 0, 0, 16, 96, 0, 0, 24, 64, 0, 0, 8, 192, 0, 0, 7, 128, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 6, 0, 0, 64, 12, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 32, 128, 0, 0, 32, 128, 0, 0, 17, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 240, 0, 0, 12, 28, 0, 0, 24, 2, 0, 0, 48, 1, 0, 0, 32, 1, 0, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 96, 0, 64, 0, 32, 0, 64, 0, 48, 0, 64, 0, 16, 0, 192, 0, 12, 0, 128, 0, 4, 1, 128, 0, 4, 3, 0, 0, 8, 3, 0, 0, 112, 1, 128, 31, 128, 0, 127, 240, 0, 0, 64, 128, 0, 0, 33, 128, 0, 0, 51, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 248, 0, 0, 6, 140, 0, 0, 24, 3, 0, 0, 16, 1, 128, 0, 32, 0, 128, 0, 32, 0, 128, 0, 32, 0, 192, 0, 96, 0, 64, 0, 96, 0, 64, 0, 96, 0, 64, 0, 32, 0, 96, 0, 32, 0, 32, 0, 32, 0, 48, 0, 32, 0, 16, 0, 32, 0, 8, 0, 32, 0, 4, 0, 96, 0, 2, 0, 64, 0, 2, 0, 64, 0, 6, 0, 128, 0, 28, 0, 128, 0, 224, 0, 192, 31, 0, 0, 127, 224, 0, 0, 8, 32, 0, 0, 8, 32, 0, 0, 12, 96, 0, 0, 7, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 248, 0, 0, 12, 12, 0, 0, 24, 2, 0, 0, 48, 1, 0, 0, 32, 1, 0, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 192, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 32, 0, 64, 0, 32, 0, 64, 0, 48, 0, 64, 0, 24, 0, 64, 0, 12, 0, 128, 0, 6, 1, 128, 0, 4, 1, 0, 0, 8, 1, 0, 0, 112, 1, 128, 31, 128, 0, 127, 243, 0, 0, 0, 131, 0, 0, 0, 194, 0, 0, 0, 102, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 24, 0, 0, 48, 4, 0, 0, 96, 2, 0, 0, 64, 3, 0, 0, 192, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 128, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 1, 128, 0, 192, 1, 0, 0, 64, 3, 0, 0, 32, 2, 0, 0, 48, 4, 0, 0, 16, 4, 0, 0, 16, 6, 0, 0, 48, 3, 224, 15, 192, 0, 127, 248, 64, 0, 0, 16, 64, 0, 0, 16, 192, 0, 0, 15, 128, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 6, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 3, 0, 2, 0, 3, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 16, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 64, 14, 0, 0, 64, 3, 252, 1, 192, 0, 31, 254, 0, 0, 0, 130, 0, 0, 0, 130, 0, 0, 0, 196, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 96, 24, 0, 0, 128, 12, 0, 0, 128, 4, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 12, 0, 2, 0, 24, 0, 2, 0, 48, 0, 3, 0, 32, 0, 1, 0, 32, 0, 1, 128, 24, 0, 0, 128, 15, 0, 0, 192, 1, 252, 1, 128, 0, 63, 254, 0, 0, 32, 192, 0, 0, 48, 128, 0, 0, 17, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 3, 0, 2, 0, 3, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 16, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 64, 14, 0, 0, 64, 3, 252, 1, 192, 1, 159, 254, 0, 1, 6, 0, 0, 0, 132, 0, 0, 0, 236, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 2, 0, 0, 64, 3, 0, 0, 192, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 128, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 1, 128, 0, 128, 1, 0, 0, 192, 1, 0, 0, 64, 3, 0, 0, 96, 6, 0, 0, 48, 12, 0, 0, 16, 12, 0, 0, 16, 6, 0, 0, 48, 3, 240, 15, 192, 0, 127, 248, 0, 0, 32, 128, 0, 0, 33, 128, 0, 0, 49, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 240, 0, 0, 12, 28, 0, 0, 16, 6, 0, 0, 32, 3, 0, 0, 64, 1, 0, 0, 64, 1, 0, 0, 64, 1, 128, 0, 64, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 64, 0, 128, 0, 64, 0, 128, 0, 96, 0, 128, 0, 32, 1, 128, 0, 16, 1, 0, 0, 8, 2, 0, 0, 8, 6, 0, 0, 24, 2, 0, 0, 112, 1, 192, 31, 128, 0, 127, 252, 0, 0, 2, 8, 0, 0, 2, 8, 0, 0, 3, 24, 0, 0, 0, 240, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 12, 24, 0, 0, 48, 4, 0, 0, 32, 2, 0, 0, 64, 3, 0, 0, 64, 1, 0, 0, 192, 1, 0, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 192, 0, 128, 0, 64, 1, 128, 0, 96, 1, 0, 0, 32, 3, 0, 0, 16, 6, 0, 0, 8, 4, 0, 0, 24, 6, 0, 0, 48, 3, 224, 31, 192, 0, 127, 251, 0, 0, 0, 130, 0, 0, 0, 194, 0, 0, 0, 102, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 1, 4, 0, 0, 1, 4, 0, 0, 1, 136, 0, 0, 0, 112, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 0, 128, 3, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 1, 128, 2, 0, 0, 128, 4, 0, 0, 128, 12, 0, 0, 64, 24, 0, 0, 32, 8, 0, 0, 32, 14, 0, 0, 96, 3, 248, 3, 192, 0, 31, 252, 0, 0, 8, 32, 0, 0, 8, 32, 0, 0, 4, 96, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 6, 0, 0, 192, 2, 0, 0, 128, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 0, 128, 2, 0, 0, 128, 6, 0, 0, 192, 12, 0, 0, 64, 24, 0, 0, 32, 8, 0, 0, 48, 14, 0, 0, 96, 3, 248, 7, 192, 0, 63, 252, 0, 0, 16, 64, 0, 0, 16, 64, 0, 0, 24, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 6, 0, 0, 64, 12, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 24, 32, 0, 0, 8, 96, 0, 0, 12, 64, 0, 0, 7, 128, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 }
};
void displaytask(void *prameters) {
int frame;
int old_count;
//Start Screen
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("SSD1306 allocation failed");
for (;;)
; // Don't proceed, loop forever
}
display.display();
display.clearDisplay();
old_count = count;
while (true) {
display.fillRect(0, 0, 32, 32, 0);
display.drawFastVLine(36, 0, 32, 255);
if (!connected) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
if (WiFi.status() != WL_CONNECTED) {
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 1); // Start at top-left corner
display.print("Connect");
display.setCursor(42, 10); // Start at top-left corner
display.print("Phone");
} else {
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 15); // Start at top-left corner
display.print(WiFi.localIP());
}
for (int i = 0; i < FRAME_COUNT_WIFI; i++) {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[i], 32, 32, 1);
display.display();
vTaskDelay(42 / portTICK_PERIOD_MS);
}
} else if (tone_on) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 2); // Start at top-left corner
display.print("Come Over");
display.setCursor(42, 15); // Start at top-left corner
display.print("To Church");
for (int i = 0; i < FRAME_COUNT_ALARM; i++) {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_alarm[i], 32, 32, 1);
display.display();
vTaskDelay(21 / portTICK_PERIOD_MS);
}
} else if (sermon_over) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 1); // Start at top-left corner
display.print("Sermon Over");
display.setCursor(42, 12); // Start at top-left corner
display.print("Worship");
display.setCursor(42, 24); // Start at top-left corner
display.print("Started");
sermon_over = false;
} else if (count != old_count) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextSize(2); // Normal 1:1 pixel scale
if (count == -1) {
display.setCursor(55, 0); // Start at top-left corner
display.print("Count");
display.setCursor(55, 17); // Start at top-left corner
display.print("Sent");
for (int i = 0; i < FRAME_COUNT_UPLOAD; i++) {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_upload[i], 32, 32, 1);
display.display();
vTaskDelay(42 / portTICK_PERIOD_MS);
}
count = 0;
} else if (count == -2) {
display.setTextSize(1);
display.setCursor(55, 0); // Start at top-left corner
display.print("Count");
display.setCursor(55, 17); // Start at top-left corner
display.print("Received");
count = 0;
} else {
display.setCursor(55, 0); // Start at top-left corner
display.print("Count");
display.setCursor(70, 17); // Start at top-left corner
display.print(count);
}
old_count = count;
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[23], 32, 32, 1);
} else {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[23], 32, 32, 1);
}
display.display();
vTaskDelay(50 / portTICK_PERIOD_MS);
}
}
#define BUTTON1 33
#define BUTTON2 32
#define BUTTON3 5
#define BUTTON4 0
#define BUZZER1 27
void setup() {
Serial.begin(9600);
xTaskCreate(
displaytask, // Funcction name
"Task for Display", // Task Name
4000, // stack size
NULL, // task parameters
1, // task priority
NULL // task handel
);
//buzzer
pinMode(BUZZER1, OUTPUT);
digitalWrite(BUZZER1, HIGH);
//buttons
pinMode(BUTTON1, INPUT_PULLUP);
pinMode(BUTTON2, INPUT_PULLUP);
pinMode(BUTTON3, INPUT_PULLUP);
pinMode(BUTTON4, INPUT_PULLUP);
prefs.begin("kam_alarm");
ip_address = prefs.getString("IPADDRESS");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
ssid = prefs.getString("SSID");
pass = prefs.getString("PASS");
ssid.toCharArray(ssid_char, 20);
pass.toCharArray(pass_char, 20);
WiFi.begin(ssid_char, pass_char);
// Allow Time for Wifi Connection 10 seconds
delay(10000);
// Check if connected to wifi
if (WiFi.status() != WL_CONNECTED) {
WiFi.mode(WIFI_MODE_AP);
WiFi.softAP("KamAlarm", "KAMisFun!");
WiFi.softAPIP();
}
// Send web page with input fields to client
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
if (!request->authenticate("admin", "KAM_alarm"))
return request->requestAuthentication();
if (request->hasParam("pass") && request->hasParam("ssid")) {
request->send_P(200, "text/html", index_html);
ssid = request->getParam("ssid")->value();
pass = request->getParam("pass")->value();
Serial.print("New Password is:\t");
Serial.println(pass);
Serial.print("New SSID is:\t");
Serial.println(ssid);
prefs.putString("SSID", ssid);
prefs.putString("PASS", pass);
Serial.println("Done");
} else if (request->hasParam("data")) {
ssid = prefs.getString("SSID");
pass = prefs.getString("PASS");
request->send(200, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Current WIFI Settings</h1><hr><br/>SSID: \"" + ssid + "\"<br/>Password: \"" + pass + "\"<br/><br/><br/><hr><button onclick=\"window.location.href='/';\">Back</button></body></html>");
} else if (request->hasParam("logout")) {
request->send(401, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Success</h1><hr><br/><br/><br/><button onclick=\"window.location.href='/';\">Login</button></body></html>");
} else if (request->hasParam("ipaddress")) {
request->send_P(200, "text/html", index_html);
ip_address = request->getParam("ipaddress")->value();
prefs.putString("IPADDRESS", ip_address);
} else if (request->hasParam("sermonover")) {
request->send_P(200, "text/html", "");
sermon_over = true;
} else if (request->hasParam("ipget")) {
ip_address = prefs.getString("IPADDRESS");
request->send(200, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Current IP Settings</h1><hr>Remote IP Address: \"" + ip_address + "\"<br/><br/><br/><hr><button onclick=\"window.location.href='/';\">Back</button></body></html>");
} else if (request->hasParam("cancel")) {
request->send(200, "text/html", "");
tone_on = false;
display.clearDisplay();
tone(BUZZER1, 0);
} else if (request->hasParam("receivedcount")) {
request->send(200, "text/html", "");
count = -2;
} else if (request->hasParam("comeback")) {
tone(BUZZER1, 300);
tone_on = true;
request->send_P(200, "text/html", "");
} else {
request->send_P(200, "text/html", index_html);
}
});
// Start Server
server.begin();
}
void loop() {
getconnection();
if (!digitalRead(BUTTON1) && tone_on) {
tone_on = false;
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?got_message=1");
Serial.println(httpResponseCode);
if (httpResponseCode != 200) {
connected = false;
} else {
tone(BUZZER1, 0);
}
while (!digitalRead(BUTTON1))
;
}
if (!digitalRead(BUTTON2)) {
if (count > 0)
count--;
while (!digitalRead(BUTTON2))
;
}
if (!digitalRead(BUTTON3)) {
count++;
while (!digitalRead(BUTTON3))
;
}
if (!digitalRead(BUTTON4) && count > 0) {
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?count=" + count);
count = -1;
while (!digitalRead(BUTTON4))
;
}
}
void getconnection() {
currentMillis = millis();
if (currentMillis - previousMillis > 10000) {
int response = GETRequest("http://admin:KAM_alarm@" + ip_address);
if (response == 200) {
connected = true;
Serial.println("Connected");
} else {
connected = false;
Serial.println("Not Connected");
}
previousMillis = currentMillis;
}
}
int GETRequest(String URL) {
int response;
HTTPClient http;
http.begin(URL.c_str());
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.setTimeout(5000);
response = http.GET();
http.end();
Serial.println(URL);
return response;
}
int POSTRequest(String URL) {
int response;
HTTPClient http;
http.begin(URL.c_str());
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.setTimeout(5000);
response = http.POST("");
http.end();
Serial.println(URL);
return response;
}

608
ESP32 Code/sound/sound.ino Executable file
View File

@ -0,0 +1,608 @@
#include <Arduino.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <Preferences.h>
#include <ESP32Ping.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Preferences prefs;
WiFiClient client;
HTTPClient http;
// Screen configuration
Adafruit_SSD1306 display(128, 32, &Wire, -1);
AsyncWebServer server(80);
String ssid, pass, ip_address;
bool tone_on = false;
bool gotmessage = false;
bool sermon_over = false;
bool failed = false;
bool cancel = false;
bool connected = false;
unsigned long previousMillis, currentMillis;
int count;
char ssid_char[20];
char pass_char[20];
// HTML web page to handle 3 input fields (input1, input2, input3)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML>
<html>
<head>
<title>ESP Kid's Alarm Sound</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
}
#container {
text-align: center;
background-color: white;
padding: 20px;
border-radius: 10px;
}
#logout_button {
position: absolute;
top: 20px;
right: 20px;
}
h1 {
margin-top: 0;
}
h2 {
margin-bottom: 10px;
}
form {
margin-bottom: 20px;
}
input[type="text"],
input[type="password"] {
width: 200px;
}
button,
input[type="submit"] {
padding: 10px 20px;
cursor: pointer;
background-color: #007bff;
border: none;
color: white;
border-radius: 5px;
}
button:hover,
input[type="submit"]:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div id="logout_button">
<button onclick="window.location.href='/?logout=1';">Logout</button>
</div>
<div id="container">
<h1>ESP Kid's Alarm Soud</h1>
<hr>
<h2>Change WIFI Password</h2>
<form action="/" id="form_wifi">
SSID: <input type="text" name="ssid" id="ssid">
<br>
Password: <input type="password" name="pass" id="pass">
<br>
<input type="submit" value="Update Wifi" id="submit_wifi">
</form>
<button onclick="window.location.href='/?data=1';">Get Current Wifi Data</button>
<br>
<br>
<br>
<h2>Set Remote Alarm IP</h2>
<form action="/" id="form_key">
<input type="text" minlength="7" maxlength="15" size="1" id="ipaddress" name="ipaddress" placeholder="xxx.xxx.xxx.xxx" autocomplete="off">
<br>
<input type="submit" value="Update IP" id="submit_ip">
</form>
<button onclick="window.location.href='/?ipget=1';">Get Current Remote IP</button>
<script>
document.getElementById('submit_wifi').disabled = true;
document.getElementById('submit_ip').disabled = true;
document.addEventListener('keyup', e => {
if (document.getElementById('ssid').value == "" || document.getElementById('pass').value == "") {
document.getElementById('submit_wifi').disabled = true;
} else {
document.getElementById('submit_wifi').disabled = false;
}
if (document.getElementById("ipaddress").value == "") {
document.getElementById('submit_ip').disabled = true;
} else {
document.getElementById('submit_ip').disabled = false;
}
});
</script>
</div>
</body>
</html>
)rawliteral";
#define FRAME_COUNT_WIFI (sizeof(frames_wifi) / sizeof(frames_wifi[0]))
const byte PROGMEM frames_wifi[][128] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 15, 240, 38, 56, 112, 14, 28, 16, 192, 3, 8, 3, 0, 0, 192, 3, 15, 240, 64, 1, 48, 12, 128, 0, 224, 7, 0, 0, 1, 193, 0, 0, 14, 240, 0, 0, 24, 24, 0, 0, 8, 16, 0, 0, 4, 32, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 120, 63, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 24, 32, 112, 14, 4, 193, 128, 1, 131, 102, 15, 240, 102, 60, 112, 14, 60, 16, 192, 3, 8, 3, 0, 0, 192, 2, 15, 240, 64, 1, 48, 28, 192, 0, 224, 7, 128, 0, 0, 1, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 252, 0, 0, 224, 15, 0, 7, 0, 0, 224, 12, 0, 0, 48, 48, 31, 248, 8, 96, 224, 7, 6, 195, 0, 1, 195, 102, 3, 224, 102, 56, 62, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 2, 3, 192, 64, 3, 30, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 8, 48, 0, 0, 4, 96, 0, 0, 2, 64, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 248, 0, 0, 248, 31, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 8, 96, 112, 30, 6, 193, 128, 1, 131, 70, 0, 0, 98, 60, 0, 0, 62, 16, 0, 0, 12, 0, 0, 0, 0, 0, 0, 128, 0, 0, 31, 248, 0, 0, 32, 4, 0, 0, 192, 3, 0, 0, 143, 241, 0, 0, 88, 11, 0, 0, 32, 6, 0, 0, 7, 224, 0, 0, 8, 16, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 248, 0, 0, 224, 7, 0, 1, 0, 128, 128, 6, 30, 120, 96, 12, 96, 6, 48, 5, 128, 1, 32, 3, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 15, 48, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 8, 16, 0, 0, 37, 116, 0, 0, 31, 248, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 192, 0, 0, 15, 208, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 48, 28, 0, 0, 192, 131, 0, 1, 158, 248, 128, 3, 32, 4, 192, 1, 192, 3, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 240, 0, 0, 28, 56, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 124, 62, 0, 1, 128, 3, 128, 6, 0, 128, 96, 12, 31, 248, 16, 48, 224, 7, 12, 49, 128, 1, 140, 30, 0, 0, 120, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 0, 0, 30, 120, 0, 0, 48, 12, 0, 0, 103, 230, 0, 0, 60, 28, 0, 0, 31, 248, 0, 0, 24, 24, 0, 0, 8, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 248, 0, 0, 248, 31, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 8, 96, 112, 30, 6, 193, 128, 1, 131, 70, 0, 0, 98, 60, 0, 0, 62, 16, 0, 0, 12, 0, 7, 240, 0, 0, 60, 60, 0, 0, 224, 6, 0, 1, 128, 1, 128, 1, 15, 240, 128, 0, 176, 13, 0, 0, 96, 7, 0, 0, 0, 0, 0, 0, 7, 224, 0, 0, 8, 16, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 252, 0, 0, 224, 15, 0, 7, 0, 0, 224, 12, 0, 0, 48, 48, 31, 248, 8, 96, 224, 7, 6, 195, 0, 1, 195, 102, 3, 224, 102, 56, 62, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 2, 3, 192, 64, 3, 30, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 0, 0, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 8, 48, 0, 0, 4, 96, 0, 0, 2, 64, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 240, 0, 0, 120, 63, 0, 3, 128, 1, 192, 12, 0, 0, 48, 24, 15, 248, 24, 32, 112, 14, 4, 193, 128, 1, 131, 102, 15, 240, 102, 60, 112, 14, 60, 16, 192, 3, 8, 3, 0, 0, 192, 2, 15, 240, 64, 1, 48, 28, 192, 0, 224, 7, 128, 0, 0, 1, 0, 0, 7, 224, 0, 0, 24, 24, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 6, 96, 0, 0, 3, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 15, 240, 38, 56, 112, 14, 28, 16, 192, 3, 8, 3, 0, 0, 192, 3, 15, 240, 64, 1, 48, 12, 128, 0, 224, 7, 0, 0, 1, 193, 0, 0, 14, 240, 0, 0, 24, 24, 0, 0, 8, 16, 0, 0, 4, 32, 0, 0, 2, 96, 0, 0, 1, 192, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 252, 0, 0, 192, 3, 128, 7, 0, 0, 224, 12, 0, 128, 16, 48, 63, 252, 12, 96, 192, 3, 6, 67, 0, 0, 195, 38, 3, 224, 38, 56, 30, 124, 28, 16, 224, 7, 8, 1, 128, 1, 128, 3, 3, 224, 192, 3, 28, 120, 192, 1, 160, 5, 128, 0, 192, 3, 0, 0, 3, 224, 0, 0, 12, 48, 0, 0, 24, 24, 0, 0, 12, 48, 0, 0, 4, 96, 0, 0, 2, 192, 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
#define FRAME_COUNT_ALARM (sizeof(frames_alarm) / sizeof(frames_alarm[0]))
const byte PROGMEM frames_alarm[][128] = {
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 6, 0, 0, 192, 2, 0, 0, 128, 3, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 128, 3, 0, 0, 128, 2, 0, 0, 128, 6, 0, 0, 192, 12, 0, 0, 96, 8, 0, 0, 32, 8, 0, 0, 48, 14, 0, 0, 32, 3, 248, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 24, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 96, 14, 0, 0, 64, 3, 252, 3, 192, 0, 31, 254, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 96, 24, 0, 0, 128, 12, 0, 0, 128, 4, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 12, 0, 2, 0, 24, 0, 2, 0, 48, 0, 3, 0, 32, 0, 1, 0, 32, 0, 1, 128, 24, 0, 0, 128, 15, 0, 0, 128, 1, 252, 1, 128, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 31, 192, 0, 0, 96, 96, 0, 0, 192, 24, 0, 0, 128, 8, 0, 1, 0, 4, 0, 1, 0, 4, 0, 3, 0, 4, 0, 2, 0, 6, 0, 2, 0, 6, 0, 2, 0, 6, 0, 6, 0, 4, 0, 4, 0, 4, 0, 12, 0, 4, 0, 8, 0, 4, 0, 24, 0, 4, 0, 48, 0, 4, 0, 64, 0, 6, 0, 64, 0, 2, 0, 96, 0, 2, 0, 24, 0, 1, 0, 7, 0, 1, 0, 1, 252, 1, 0, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 128, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 31, 192, 0, 0, 96, 96, 0, 0, 192, 24, 0, 1, 128, 8, 0, 1, 0, 12, 0, 1, 0, 4, 0, 2, 0, 4, 0, 2, 0, 4, 0, 2, 0, 4, 0, 6, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 4, 0, 24, 0, 4, 0, 48, 0, 4, 0, 96, 0, 4, 0, 192, 0, 4, 0, 64, 0, 6, 0, 96, 0, 2, 0, 24, 0, 3, 0, 7, 128, 1, 0, 0, 252, 3, 0, 0, 15, 254, 0, 0, 8, 48, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 64, 24, 0, 0, 128, 12, 0, 1, 128, 4, 0, 1, 0, 6, 0, 1, 0, 2, 0, 3, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 4, 0, 2, 0, 8, 0, 2, 0, 24, 0, 2, 0, 32, 0, 2, 0, 96, 0, 3, 0, 32, 0, 1, 0, 24, 0, 0, 128, 15, 0, 0, 128, 1, 252, 1, 128, 0, 31, 254, 0, 0, 16, 96, 0, 0, 24, 64, 0, 0, 8, 192, 0, 0, 7, 128, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 6, 0, 0, 64, 12, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 32, 128, 0, 0, 32, 128, 0, 0, 17, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 240, 0, 0, 12, 28, 0, 0, 24, 2, 0, 0, 48, 1, 0, 0, 32, 1, 0, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 96, 0, 64, 0, 32, 0, 64, 0, 48, 0, 64, 0, 16, 0, 192, 0, 12, 0, 128, 0, 4, 1, 128, 0, 4, 3, 0, 0, 8, 3, 0, 0, 112, 1, 128, 31, 128, 0, 127, 240, 0, 0, 64, 128, 0, 0, 33, 128, 0, 0, 51, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 248, 0, 0, 6, 140, 0, 0, 24, 3, 0, 0, 16, 1, 128, 0, 32, 0, 128, 0, 32, 0, 128, 0, 32, 0, 192, 0, 96, 0, 64, 0, 96, 0, 64, 0, 96, 0, 64, 0, 32, 0, 96, 0, 32, 0, 32, 0, 32, 0, 48, 0, 32, 0, 16, 0, 32, 0, 8, 0, 32, 0, 4, 0, 96, 0, 2, 0, 64, 0, 2, 0, 64, 0, 6, 0, 128, 0, 28, 0, 128, 0, 224, 0, 192, 31, 0, 0, 127, 224, 0, 0, 8, 32, 0, 0, 8, 32, 0, 0, 12, 96, 0, 0, 7, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 3, 248, 0, 0, 12, 12, 0, 0, 24, 2, 0, 0, 48, 1, 0, 0, 32, 1, 0, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 192, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 32, 0, 64, 0, 32, 0, 64, 0, 48, 0, 64, 0, 24, 0, 64, 0, 12, 0, 128, 0, 6, 1, 128, 0, 4, 1, 0, 0, 8, 1, 0, 0, 112, 1, 128, 31, 128, 0, 127, 243, 0, 0, 0, 131, 0, 0, 0, 194, 0, 0, 0, 102, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 24, 0, 0, 48, 4, 0, 0, 96, 2, 0, 0, 64, 3, 0, 0, 192, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 128, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 1, 128, 0, 192, 1, 0, 0, 64, 3, 0, 0, 32, 2, 0, 0, 48, 4, 0, 0, 16, 4, 0, 0, 16, 6, 0, 0, 48, 3, 224, 15, 192, 0, 127, 248, 64, 0, 0, 16, 64, 0, 0, 16, 192, 0, 0, 15, 128, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 6, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 3, 0, 2, 0, 3, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 16, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 64, 14, 0, 0, 64, 3, 252, 1, 192, 0, 31, 254, 0, 0, 0, 130, 0, 0, 0, 130, 0, 0, 0, 196, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 15, 192, 0, 0, 48, 48, 0, 0, 96, 24, 0, 0, 128, 12, 0, 0, 128, 4, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 0, 2, 0, 4, 0, 2, 0, 12, 0, 2, 0, 24, 0, 2, 0, 48, 0, 3, 0, 32, 0, 1, 0, 32, 0, 1, 128, 24, 0, 0, 128, 15, 0, 0, 192, 1, 252, 1, 128, 0, 63, 254, 0, 0, 32, 192, 0, 0, 48, 128, 0, 0, 17, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 56, 48, 0, 0, 96, 8, 0, 0, 192, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 1, 128, 2, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 3, 0, 1, 0, 3, 0, 3, 0, 3, 0, 2, 0, 3, 0, 2, 0, 1, 0, 6, 0, 1, 0, 4, 0, 1, 0, 8, 0, 1, 128, 16, 0, 0, 128, 16, 0, 0, 64, 24, 0, 0, 64, 14, 0, 0, 64, 3, 252, 1, 192, 1, 159, 254, 0, 1, 6, 0, 0, 0, 132, 0, 0, 0, 236, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 2, 0, 0, 64, 3, 0, 0, 192, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 128, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 1, 128, 0, 128, 1, 0, 0, 192, 1, 0, 0, 64, 3, 0, 0, 96, 6, 0, 0, 48, 12, 0, 0, 16, 12, 0, 0, 16, 6, 0, 0, 48, 3, 240, 15, 192, 0, 127, 248, 0, 0, 32, 128, 0, 0, 33, 128, 0, 0, 49, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 240, 0, 0, 12, 28, 0, 0, 16, 6, 0, 0, 32, 3, 0, 0, 64, 1, 0, 0, 64, 1, 0, 0, 64, 1, 128, 0, 64, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 128, 0, 192, 0, 64, 0, 128, 0, 64, 0, 128, 0, 96, 0, 128, 0, 32, 1, 128, 0, 16, 1, 0, 0, 8, 2, 0, 0, 8, 6, 0, 0, 24, 2, 0, 0, 112, 1, 192, 31, 128, 0, 127, 252, 0, 0, 2, 8, 0, 0, 2, 8, 0, 0, 3, 24, 0, 0, 0, 240, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 12, 24, 0, 0, 48, 4, 0, 0, 32, 2, 0, 0, 64, 3, 0, 0, 64, 1, 0, 0, 192, 1, 0, 0, 128, 1, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 192, 0, 128, 0, 64, 1, 128, 0, 96, 1, 0, 0, 32, 3, 0, 0, 16, 6, 0, 0, 8, 4, 0, 0, 24, 6, 0, 0, 48, 3, 224, 31, 192, 0, 127, 251, 0, 0, 0, 130, 0, 0, 0, 194, 0, 0, 0, 102, 0, 0, 0, 56, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 1, 4, 0, 0, 1, 4, 0, 0, 1, 136, 0, 0, 0, 112, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 192, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 4, 0, 0, 128, 2, 0, 0, 128, 2, 0, 0, 128, 3, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 1, 128, 2, 0, 0, 128, 4, 0, 0, 128, 12, 0, 0, 64, 24, 0, 0, 32, 8, 0, 0, 32, 14, 0, 0, 96, 3, 248, 3, 192, 0, 31, 252, 0, 0, 8, 32, 0, 0, 8, 32, 0, 0, 4, 96, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 32, 12, 0, 0, 64, 6, 0, 0, 192, 2, 0, 0, 128, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 0, 128, 2, 0, 0, 128, 6, 0, 0, 192, 12, 0, 0, 64, 24, 0, 0, 32, 8, 0, 0, 48, 14, 0, 0, 96, 3, 248, 7, 192, 0, 63, 252, 0, 0, 16, 64, 0, 0, 16, 64, 0, 0, 24, 128, 0, 0, 15, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 24, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 1, 0, 1, 128, 1, 0, 1, 0, 1, 0, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 6, 0, 0, 64, 12, 0, 0, 96, 8, 0, 0, 48, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 24, 32, 0, 0, 8, 96, 0, 0, 12, 64, 0, 0, 7, 128, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 2, 64, 0, 0, 7, 224, 0, 0, 28, 56, 0, 0, 48, 4, 0, 0, 96, 6, 0, 0, 192, 2, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0, 1, 128, 0, 128, 1, 0, 0, 128, 1, 0, 0, 128, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 0, 0, 16, 8, 0, 0, 16, 6, 0, 0, 32, 3, 240, 7, 192, 0, 63, 252, 0, 0, 8, 16, 0, 0, 4, 48, 0, 0, 4, 32, 0, 0, 3, 192, 0, 0, 0, 0, 0 }
};
void displaytask(void *prameters) {
int frame;
int old_count;
//Start Screen
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("SSD1306 allocation failed");
for (;;)
; // Don't proceed, loop forever
}
display.display();
display.clearDisplay();
old_count = count;
while (true) {
display.fillRect(0, 0, 32, 32, 0);
display.drawFastVLine(36, 0, 32, 255);
if (failed) {
display.clearDisplay();
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 1); // Start at top-left corner
display.print("FAILED");
display.display();
vTaskDelay(2000 / portTICK_PERIOD_MS);
failed = false;
} else if (!connected) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
if (WiFi.status() != WL_CONNECTED) {
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 1); // Start at top-left corner
display.print("Connect");
display.setCursor(42, 10); // Start at top-left corner
display.print("Phone");
} else {
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 15); // Start at top-left corner
display.print(WiFi.localIP());
}
for (int i = 0; i < FRAME_COUNT_WIFI; i++) {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[i], 32, 32, 1);
display.display();
vTaskDelay(42 / portTICK_PERIOD_MS);
}
} else if (tone_on) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 2); // Start at top-left corner
display.print("Alarm");
display.setCursor(42, 15); // Start at top-left corner
display.print("Sent");
for (int i = 0; i < FRAME_COUNT_ALARM; i++) {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_alarm[i], 32, 32, 1);
display.display();
vTaskDelay(21 / portTICK_PERIOD_MS);
}
tone_on = false;
} else if (gotmessage) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 2); // Start at top-left corner
display.print("They are");
display.setCursor(42, 15); // Start at top-left corner
display.print("Comming Back");
gotmessage = false;
tone_on = false;
} else if (cancel) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 2); // Start at top-left corner
display.print("Canceled");
cancel = false;
} else if (sermon_over) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setTextSize(1); // Normal 1:1 pixel scale
display.setCursor(42, 1); // Start at top-left corner
display.print("Sermon Over");
display.setCursor(42, 12); // Start at top-left corner
display.print("Worship");
display.setCursor(42, 24); // Start at top-left corner
display.print("Started");
sermon_over = false;
} else if (count != old_count) {
display.fillRect(37, 0, 128, 32, 0);
display.setTextSize(2); // Normal 1:1 pixel scale
if (count == -2) {
display.setTextSize(2); // Normal 1:1 pixel scale
display.setCursor(55, 0); // Start at top-left corner
display.print("OK");
display.setCursor(55, 17); // Start at top-left corner
display.print(old_count);
count = 0;
} else {
display.setCursor(55, 0); // Start at top-left corner
display.print("Count");
display.setCursor(70, 17); // Start at top-left corner
display.print(count);
}
old_count = count;
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[23], 32, 32, 1);
} else {
display.fillRect(0, 0, 35, 32, 0);
display.drawBitmap(0, 0, frames_wifi[23], 32, 32, 1);
}
display.display();
vTaskDelay(50 / portTICK_PERIOD_MS);
}
}
#define BUTTON1 33
#define BUTTON2 32
#define BUTTON3 5
#define BUTTON4 0
void setup() {
Serial.begin(9600);
xTaskCreate(
displaytask, // Funcction name
"Task for Display", // Task Name
4000, // stack size
NULL, // task parameters
1, // task priority
NULL // task handel
);
//buttons
pinMode(BUTTON1, INPUT_PULLUP);
pinMode(BUTTON2, INPUT_PULLUP);
pinMode(BUTTON3, INPUT_PULLUP);
pinMode(BUTTON4, INPUT_PULLUP);
prefs.begin("kam_alarm");
ip_address = prefs.getString("IPADDRESS");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
ssid = prefs.getString("SSID");
pass = prefs.getString("PASS");
ssid.toCharArray(ssid_char, 20);
pass.toCharArray(pass_char, 20);
WiFi.begin(ssid_char, pass_char);
// Allow Time for Wifi Connection 10 seconds
delay(10000);
// Check if connected to wifi
if (WiFi.status() != WL_CONNECTED) {
WiFi.mode(WIFI_MODE_AP);
WiFi.softAP("KamAlarm", "KAMisFun!");
WiFi.softAPIP();
}
// Send web page with input fields to client
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
if (!request->authenticate("admin", "KAM_alarm"))
return request->requestAuthentication();
if (request->hasParam("pass") && request->hasParam("ssid")) {
request->send_P(200, "text/html", index_html);
ssid = request->getParam("ssid")->value();
pass = request->getParam("pass")->value();
Serial.print("New Password is:\t");
Serial.println(pass);
Serial.print("New SSID is:\t");
Serial.println(ssid);
prefs.putString("SSID", ssid);
prefs.putString("PASS", pass);
Serial.println("Done");
} else if (request->hasParam("data")) {
ssid = prefs.getString("SSID");
pass = prefs.getString("PASS");
request->send(200, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Current WIFI Settings</h1><hr><br/>SSID: \"" + ssid + "\"<br/>Password: \"" + pass + "\"<br/><br/><br/><hr><button onclick=\"window.location.href='/';\">Back</button></body></html>");
} else if (request->hasParam("logout")) {
request->send(401, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Success</h1><hr><br/><br/><br/><button onclick=\"window.location.href='/';\">Login</button></body></html>");
} else if (request->hasParam("ipaddress")) {
request->send_P(200, "text/html", index_html);
ip_address = request->getParam("ipaddress")->value();
prefs.putString("IPADDRESS", ip_address);
} else if (request->hasParam("ipget")) {
ip_address = prefs.getString("IPADDRESS");
request->send(200, "text/html", "<!DOCTYPE HTML><html><head><title>ESP Kid's Alarm</title><meta name='viewport' content='width=device-width, initial-scale=1'></head><body><h1>Current IP Settings</h1><hr>Remote IP Address: \"" + ip_address + "\"<br/><br/><br/><hr><button onclick=\"window.location.href='/';\">Back</button></body></html>");
} else if (request->hasParam("count")) {
request->send_P(200, "text/html", index_html);
count = request->getParam("count")->value().toInt();
} else if (request->hasParam("got_message")) {
request->send_P(200, "text/html", "");
gotmessage = true;
} else {
request->send_P(200, "text/html", index_html);
}
});
// Start Server
server.begin();
}
void loop() {
getconnection();
if (!digitalRead(BUTTON1) && !tone_on) {
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?comeback=1");
Serial.println(httpResponseCode);
if (httpResponseCode != 200) {
failed = true;
} else {
tone_on = true;
}
while (!digitalRead(BUTTON1))
;
}
if (!digitalRead(BUTTON2)) {
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?cancel=1");
Serial.println(httpResponseCode);
cancel = true;
if (httpResponseCode != 200) {
failed = true;
} else {
cancel = true;
}
while (!digitalRead(BUTTON2))
;
}
if (!digitalRead(BUTTON3)) {
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?sermonover=1");
Serial.println(httpResponseCode);
if (httpResponseCode != 200) {
failed = true;
} else {
sermon_over = true;
}
while (!digitalRead(BUTTON3))
;
}
if (!digitalRead(BUTTON4) && count > 0) {
int httpResponseCode = GETRequest("http://admin:KAM_alarm@" + ip_address + "/?receivedcount=1");
count = -2;
while (!digitalRead(BUTTON4))
;
}
}
void getconnection() {
currentMillis = millis();
if (currentMillis - previousMillis > 10000) {
int response = GETRequest("http://admin:KAM_alarm@" + ip_address);
if (response == 200) {
connected = true;
Serial.println("Connected");
} else {
connected = false;
Serial.println("Not Connected");
}
previousMillis = currentMillis;
}
}
int GETRequest(String URL) {
int response;
HTTPClient http;
http.begin(URL.c_str());
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.setTimeout(5000);
response = http.GET();
http.end();
Serial.println(URL);
return response;
}
int POSTRequest(String URL) {
int response;
HTTPClient http;
http.begin(URL.c_str());
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.setTimeout(5000);
response = http.POST("");
http.end();
Serial.println(URL);
return response;
}

View File

@ -0,0 +1,149 @@
(footprint "OLED Screen"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -9 -4 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "5dcf6000-928b-4d9d-b1a3-ef8cdd9039f9")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "OLED Screen"
(at -9 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "47548e53-24d7-4925-bf54-dd8634c07291")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" "OLED Screen"
(at -9 2.5 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "7a4af19e-ff99-43f2-bfba-b44edbc127b4")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at -9 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "5b8aa28c-bd0b-4ab4-a131-7f24606dae6c")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" ""
(at -9 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "f8a010c3-abca-44c6-94fd-1c1387ce18ed")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_rect
(start -19 -6)
(end 19 6)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "3a50a72b-80cd-4ebc-8d4f-b9db8134d700")
)
(fp_rect
(start -20 -7)
(end 20 7)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "5dbca073-5c84-4c87-a7c5-ea244599822c")
)
(fp_text user "0.91\" OLED Screen"
(at -2 0.5 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "116666bb-e550-41e7-8a9a-74ae15546ed4")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left bottom)
)
)
(fp_text user "${REFERENCE}"
(at -9 -2 0)
(unlocked yes)
(layer "F.Fab")
(uuid "383dfe11-b009-4c04-b76a-690d7c54db19")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" thru_hole circle
(at -17 3.81)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "77ef6465-565e-47ec-9156-cb0b2e045702")
)
(pad "2" thru_hole circle
(at -17 1.27)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "b8c78e63-9cb3-4f23-8388-f3d257f180cb")
)
(pad "3" thru_hole circle
(at -17 -1.27)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "f22217e4-05b3-4542-90a3-3c28876763ac")
)
(pad "4" thru_hole circle
(at -17 -3.81)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "961ff472-3c4a-44a4-aa43-47b323307e97")
)
)

View File

@ -0,0 +1,141 @@
(footprint "buzzer"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -8 -2 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "5354a10a-e450-4db7-9ca8-151a6d80c480")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "buzzer"
(at -8 -0.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "566c82e1-d522-45ce-8cf3-6b82cd298566")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" "buzzer"
(at -8 1.5 0)
(unlocked yes)
(layer "F.SilkS")
(hide yes)
(uuid "09e194c7-334e-44d6-a3f1-7a2992da6545")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at -8 -0.5 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "bcd3d36d-2fcb-4528-a325-872afd597d2f")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" ""
(at -8 -0.5 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "017d17ab-3e29-4590-9dd5-47a520d50e8e")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_rect
(start -16.25 -6.5)
(end 16.25 6.5)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "fb9c396b-4f4f-4561-947b-ca27694712f0")
)
(fp_rect
(start -17.25 -7.5)
(end 17.25 7.5)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "3c366ac6-19d6-495e-8c83-b0e34fcc96f0")
)
(fp_text user "Buzzer Board"
(at -3 0.5 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "7c29356c-df2d-40fe-a8f0-4e4d636b7f36")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left bottom)
)
)
(fp_text user "${REFERENCE}"
(at -8 3.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "149ec2d4-eb4b-4c0c-8775-eac858544844")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" thru_hole circle
(at -14 2.54)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "e0b17b19-53db-466b-a684-846d55c12a0a")
)
(pad "2" thru_hole circle
(at -14 0)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "c4f2171f-f5ba-4cae-917f-55c5ff3b1bb9")
)
(pad "3" thru_hole circle
(at -14 -2.54)
(size 1.524 1.524)
(drill 0.762)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "1b6c2d49-38fc-433d-ae26-4cf3fe370aff")
)
)

View File

@ -0,0 +1,888 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "ESP32-DEVKITC-32D"
(pin_names
(offset 1.016)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at -15.2572 26.0643 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Value" "ESP32-DEVKITC-32D"
(at -15.2563 -27.9698 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Footprint" "ESP32-DEVKITC-32D:MODULE_ESP32-DEVKITC-32D"
(at 3.81 38.1 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MF" "Espressif Systems"
(at 5.08 52.07 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MAXIMUM_PACKAGE_HEIGHT" "N/A"
(at 3.81 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Package" "None"
(at 12.7 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Price" "None"
(at 3.81 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Check_prices" "https://www.snapeda.com/parts/ESP32-DEVKITC-32D/Espressif+Systems/view-part/?ref=eda"
(at 7.62 33.02 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "STANDARD" "Manufacturer Recommendations"
(at 5.08 43.18 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "PARTREV" "V4"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "SnapEDA_Link" "https://www.snapeda.com/parts/ESP32-DEVKITC-32D/Espressif+Systems/view-part/?ref=snap"
(at 7.62 30.48 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MP" "ESP32-DEVKITC-32D"
(at 5.08 45.72 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Description_1" "\nWiFi Development Tools (802.11) ESP32 General Development Kit, ESP32-WROOM-32D on the board\n"
(at 6.35 29.21 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MANUFACTURER" "Espressif Systems"
(at 5.08 54.61 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Availability" "In Stock"
(at 22.86 48.26 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "SNAPEDA_PN" "ESP32-DEVKITC-32D"
(at 5.08 49.53 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(symbol "ESP32-DEVKITC-32D_0_0"
(rectangle
(start -15.24 25.4)
(end 15.24 -25.4)
(stroke
(width 0.254)
(type default)
)
(fill
(type background)
)
)
)
(symbol "ESP32-DEVKITC-32D_1_0"
(pin bidirectional clock
(at -20.32 22.86 0)
(length 5.08)
(name "CLK"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-1"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 0 0)
(length 5.08)
(name "IO05"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-10"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -2.54 0)
(length 5.08)
(name "IO18"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-11"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -5.08 0)
(length 5.08)
(name "IO19"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-12"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at -20.32 -7.62 0)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-13"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -10.16 0)
(length 5.08)
(name "IO21"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-14"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -12.7 0)
(length 5.08)
(name "RX"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-15"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -15.24 0)
(length 5.08)
(name "TX"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-16"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -17.78 0)
(length 5.08)
(name "IO22"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-17"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -20.32 0)
(length 5.08)
(name "IO23"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-18"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at -20.32 -22.86 0)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-19"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 20.32 0)
(length 5.08)
(name "SD0"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-2"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 17.78 0)
(length 5.08)
(name "SD1"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-3"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 15.24 0)
(length 5.08)
(name "IO15"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-4"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 12.7 0)
(length 5.08)
(name "IO02"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-5"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 10.16 0)
(length 5.08)
(name "IO00"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-6"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 7.62 0)
(length 5.08)
(name "IO04"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-7"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 5.08 0)
(length 5.08)
(name "IO16"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-8"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 2.54 0)
(length 5.08)
(name "IO17"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-9"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 22.86 180)
(length 5.08)
(name "5V"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-1"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 0 180)
(length 5.08)
(name "IO26"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-10"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -2.54 180)
(length 5.08)
(name "IO25"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-11"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -5.08 180)
(length 5.08)
(name "IO33"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-12"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -7.62 180)
(length 5.08)
(name "IO32"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-13"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -10.16 180)
(length 5.08)
(name "IO35"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-14"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -12.7 180)
(length 5.08)
(name "IO34"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-15"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -15.24 180)
(length 5.08)
(name "SVN"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-16"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -17.78 180)
(length 5.08)
(name "SVP"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-17"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -20.32 180)
(length 5.08)
(name "EN"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-18"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 -22.86 180)
(length 5.08)
(name "3V3"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-19"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 20.32 180)
(length 5.08)
(name "CMD"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-2"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 17.78 180)
(length 5.08)
(name "SD3"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-3"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 15.24 180)
(length 5.08)
(name "SD2"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-4"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 12.7 180)
(length 5.08)
(name "IO13"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-5"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 10.16 180)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-6"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 7.62 180)
(length 5.08)
(name "IO12"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-7"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 5.08 180)
(length 5.08)
(name "IO14"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-8"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 2.54 180)
(length 5.08)
(name "IO27"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-9"
(effects
(font
(size 1.016 1.016)
)
)
)
)
)
)
)

View File

@ -0,0 +1,926 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "ESP32-DEVKITC-32D"
(pin_names
(offset 1.016)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at -15.2572 26.0643 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Value" "ESP32-DEVKITC-32D"
(at -10.16 0 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Footprint" "ESP32-DEVKITC-32D:MODULE_ESP32-DEVKITC-32D"
(at 3.81 38.1 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MF" "Espressif Systems"
(at 5.08 52.07 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MAXIMUM_PACKAGE_HEIGHT" "N/A"
(at 3.81 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Package" "None"
(at 12.7 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Price" "None"
(at 3.81 40.64 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Check_prices" "https://www.snapeda.com/parts/ESP32-DEVKITC-32D/Espressif+Systems/view-part/?ref=eda"
(at 7.62 33.02 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "STANDARD" "Manufacturer Recommendations"
(at 5.08 43.18 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "PARTREV" "V4"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "SnapEDA_Link" "https://www.snapeda.com/parts/ESP32-DEVKITC-32D/Espressif+Systems/view-part/?ref=snap"
(at 7.62 30.48 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MP" "ESP32-DEVKITC-32D"
(at 5.08 45.72 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Description_1" "\nWiFi Development Tools (802.11) ESP32 General Development Kit, ESP32-WROOM-32D on the board\n"
(at 6.35 29.21 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "MANUFACTURER" "Espressif Systems"
(at 5.08 54.61 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "Availability" "In Stock"
(at 22.86 48.26 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(property "SNAPEDA_PN" "ESP32-DEVKITC-32D"
(at 5.08 49.53 0)
(effects
(font
(size 1.27 1.27)
)
(justify bottom)
(hide yes)
)
)
(symbol "ESP32-DEVKITC-32D_0_0"
(rectangle
(start -15.24 25.4)
(end 15.24 -25.4)
(stroke
(width 0.254)
(type default)
)
(fill
(type background)
)
)
)
(symbol "ESP32-DEVKITC-32D_0_1"
(rectangle
(start -10.16 -25.4)
(end 11.43 -30.48)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(rectangle
(start -5.08 29.21)
(end 5.08 25.4)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -7.62 -25.4) (xy -7.62 -29.21) (xy -5.08 -29.21) (xy -5.08 -26.67) (xy -2.54 -26.67) (xy -2.54 -29.21)
(xy 0 -29.21) (xy 0 -26.67) (xy 2.54 -26.67) (xy 2.54 -29.21) (xy 5.08 -29.21) (xy 5.08 -26.67)
(xy 7.62 -26.67) (xy 7.62 -29.21) (xy 10.16 -29.21) (xy 10.16 -29.21) (xy 10.16 -29.21)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
)
(symbol "ESP32-DEVKITC-32D_1_0"
(pin bidirectional clock
(at -20.32 22.86 0)
(length 5.08)
(name "CLK"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-1"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 0 0)
(length 5.08)
(name "IO05"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-10"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -2.54 0)
(length 5.08)
(name "IO18"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-11"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -5.08 0)
(length 5.08)
(name "IO19"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-12"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at -20.32 -7.62 0)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-13"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -10.16 0)
(length 5.08)
(name "IO21"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-14"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -12.7 0)
(length 5.08)
(name "RX"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-15"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -15.24 0)
(length 5.08)
(name "TX"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-16"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -17.78 0)
(length 5.08)
(name "IO22"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-17"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 -20.32 0)
(length 5.08)
(name "IO23"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-18"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at -20.32 -22.86 0)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-19"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 20.32 0)
(length 5.08)
(name "SD0"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-2"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 17.78 0)
(length 5.08)
(name "SD1"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-3"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 15.24 0)
(length 5.08)
(name "IO15"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-4"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 12.7 0)
(length 5.08)
(name "IO02"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-5"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 10.16 0)
(length 5.08)
(name "IO00"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-6"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 7.62 0)
(length 5.08)
(name "IO04"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-7"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 5.08 0)
(length 5.08)
(name "IO16"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-8"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at -20.32 2.54 0)
(length 5.08)
(name "IO17"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J2-9"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 22.86 180)
(length 5.08)
(name "5V"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-1"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 0 180)
(length 5.08)
(name "IO26"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-10"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -2.54 180)
(length 5.08)
(name "IO25"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-11"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -5.08 180)
(length 5.08)
(name "IO33"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-12"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -7.62 180)
(length 5.08)
(name "IO32"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-13"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -10.16 180)
(length 5.08)
(name "IO35"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-14"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 -12.7 180)
(length 5.08)
(name "IO34"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-15"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -15.24 180)
(length 5.08)
(name "SVN"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-16"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -17.78 180)
(length 5.08)
(name "SVP"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-17"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin input line
(at 20.32 -20.32 180)
(length 5.08)
(name "EN"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-18"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 -22.86 180)
(length 5.08)
(name "3V3"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-19"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 20.32 180)
(length 5.08)
(name "CMD"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-2"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 17.78 180)
(length 5.08)
(name "SD3"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-3"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 15.24 180)
(length 5.08)
(name "SD2"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-4"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 12.7 180)
(length 5.08)
(name "IO13"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-5"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin power_in line
(at 20.32 10.16 180)
(length 5.08)
(name "GND"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-6"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 7.62 180)
(length 5.08)
(name "IO12"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-7"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 5.08 180)
(length 5.08)
(name "IO14"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-8"
(effects
(font
(size 1.016 1.016)
)
)
)
)
(pin bidirectional line
(at 20.32 2.54 180)
(length 5.08)
(name "IO27"
(effects
(font
(size 1.016 1.016)
)
)
)
(number "J3-9"
(effects
(font
(size 1.016 1.016)
)
)
)
)
)
)
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,478 @@
(footprint "MODULE_ESP32-DEVKITC-32D"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -6.985 0 90)
(layer "F.SilkS")
(hide yes)
(uuid "2bad6ee2-d3d4-4921-bb5d-333659bec3b7")
(effects
(font
(size 1.000386 1.000386)
(thickness 0.15)
)
)
)
(property "Value" "MODULE_ESP32-DEVKITC-32D"
(at -4 0 90)
(layer "F.Fab")
(uuid "c8ef14d3-b37e-4f25-ad07-cb6e53a084ff")
(effects
(font
(size 1.001047 1.001047)
(thickness 0.15)
)
)
)
(property "Footprint" "MODULE_ESP32-DEVKITC-32D"
(at 0 0 90)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "8aa48191-0366-46ac-a04b-abc752248bb0")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "77483604-2ee2-4d56-841d-d68977280645")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "f68a1d5a-f605-4a53-bbdc-a6794fbef497")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_line
(start 97.65 27.25)
(end 69.75 27.25)
(stroke
(width 0.15)
(type solid)
)
(layer "B.SilkS")
(uuid "e84208e6-e54a-4ceb-90d7-5a15791ce65a")
)
(fp_rect
(start -3.81 -25.4)
(end 3.81 -20.32)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "293a7c8f-4f84-4b55-becb-72d0aac51564")
)
(fp_rect
(start 12.9 25.75)
(end -12.9 -25.75)
(stroke
(width 0.1)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "1c5e9d29-ccd3-4d34-a81f-aae3d9e1e2eb")
)
(fp_circle
(center -13.33 -22.86)
(end -13.23 -22.86)
(stroke
(width 0.2)
(type solid)
)
(fill none)
(layer "F.SilkS")
(uuid "7d2c7af8-8b37-49d0-bd87-f97659f539b2")
)
(fp_circle
(center -13.33 -22.86)
(end -13.23 -22.86)
(stroke
(width 0.2)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "d02b8c54-0ada-440e-9023-40dd45e6a52a")
)
(fp_text user "ESP32 Dev Board"
(at 5.08 7.62 90)
(unlocked yes)
(layer "F.SilkS")
(uuid "288478cd-ecdc-4c1d-bbd5-6d7b0e29faa7")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left bottom)
)
)
(pad "J2-1" thru_hole rect
(at -11.43 -22.86)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "ac9240a1-ca86-4b18-9d12-5a924455bc82")
)
(pad "J2-2" thru_hole circle
(at -11.43 -20.32)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "01ba540c-2e73-404a-9fd7-0bc6866e0717")
)
(pad "J2-3" thru_hole circle
(at -11.43 -17.78)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "e3a0e033-eba7-4990-aab0-f897cadf5441")
)
(pad "J2-4" thru_hole circle
(at -11.43 -15.24)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "e017e0af-5a8e-4f21-9326-1e9f4611dcc0")
)
(pad "J2-5" thru_hole circle
(at -11.43 -12.7)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "c5ebefb5-265e-485b-9200-5b56c83a33f6")
)
(pad "J2-6" thru_hole circle
(at -11.43 -10.16)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "eca96b23-bab0-4001-89fa-7e38a6d87392")
)
(pad "J2-7" thru_hole circle
(at -11.43 -7.62)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "c4122e79-9fe3-4e95-8585-81211106e7ca")
)
(pad "J2-8" thru_hole circle
(at -11.43 -5.08)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "fba01a09-3eb8-4109-a741-fcd115d2de2a")
)
(pad "J2-9" thru_hole circle
(at -11.43 -2.54)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5911ec8f-0704-440c-a1dc-fb44a3815d6a")
)
(pad "J2-10" thru_hole circle
(at -11.43 0)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "6d26a5f0-5d3e-4e60-8909-cfbb27b8088b")
)
(pad "J2-11" thru_hole circle
(at -11.43 2.54)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "34251366-74ae-41d5-8a04-d53ad4f7b0fd")
)
(pad "J2-12" thru_hole circle
(at -11.43 5.08)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5db836e0-adb9-4195-a9f3-f8140ca7e365")
)
(pad "J2-13" thru_hole circle
(at -11.43 7.62)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "478f2581-db26-4384-807b-4161110d1f7e")
)
(pad "J2-14" thru_hole circle
(at -11.43 10.16)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "4cc81f3a-5e90-4d81-be59-9b37b076e773")
)
(pad "J2-15" thru_hole circle
(at -11.43 12.7)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "7caaeeec-458c-4d94-a6e4-0b54a023f541")
)
(pad "J2-16" thru_hole circle
(at -11.43 15.24)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "6dd32cd0-ba23-4502-bba7-e3a0d439ff6f")
)
(pad "J2-17" thru_hole circle
(at -11.43 17.78)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "b7ee06e7-8b3a-4477-ac23-a152b5648cc1")
)
(pad "J2-18" thru_hole circle
(at -11.43 20.32)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "dcfd797e-0b3e-44da-8bde-fd5e9ef1060a")
)
(pad "J2-19" thru_hole circle
(at -11.43 22.86)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "2ea96bce-9893-4eec-b5de-9630819235b6")
)
(pad "J3-1" thru_hole circle
(at 11.43 -22.86)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "871efedb-e332-4a3a-85e2-cc4c0d4c65cd")
)
(pad "J3-2" thru_hole circle
(at 11.43 -20.32)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "883d60a9-72d3-422c-9294-d58f76266390")
)
(pad "J3-3" thru_hole circle
(at 11.43 -17.78)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "647f2363-cc41-48b3-809f-33e8619f039f")
)
(pad "J3-4" thru_hole circle
(at 11.43 -15.24)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "772dd5ff-8b26-4ea7-a86a-e0fe80854b0f")
)
(pad "J3-5" thru_hole circle
(at 11.43 -12.7)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5a8b050b-45dd-417e-a2d0-067f62aa73a6")
)
(pad "J3-6" thru_hole circle
(at 11.43 -10.16)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5a52333b-2e1c-43ae-9514-66f12cdf4833")
)
(pad "J3-7" thru_hole circle
(at 11.43 -7.62)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "98983018-f2fb-45c6-b93d-5b863525c249")
)
(pad "J3-8" thru_hole circle
(at 11.43 -5.08)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "dfc6c355-6244-4389-99aa-4cdb59241f21")
)
(pad "J3-9" thru_hole circle
(at 11.43 -2.54)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "a5085d6d-92b0-46fe-ae6a-52713bc80b99")
)
(pad "J3-10" thru_hole circle
(at 11.43 0)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "0396aa5f-457e-4caa-b7c4-06e40fb9e808")
)
(pad "J3-11" thru_hole circle
(at 11.43 2.54)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5c618744-4164-4901-bc6a-f2906067aedd")
)
(pad "J3-12" thru_hole circle
(at 11.43 5.08)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "ceffdfc0-52de-41ac-b2b6-ad84e7de8695")
)
(pad "J3-13" thru_hole circle
(at 11.43 7.62)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "5610339f-475f-4699-b850-ca8fdf6e1ca3")
)
(pad "J3-14" thru_hole circle
(at 11.43 10.16)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "fad06d42-8d63-45c4-8f6e-5a5b70e678f5")
)
(pad "J3-15" thru_hole circle
(at 11.43 12.7)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "dd677b28-1d6f-4a16-b23d-1747a9090061")
)
(pad "J3-16" thru_hole circle
(at 11.43 15.24)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "b2b62931-f1ce-4275-a15e-42bbc41e6ff1")
)
(pad "J3-17" thru_hole circle
(at 11.43 17.78)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "c9c85973-19aa-4a3d-b3a9-3bc49ecb362d")
)
(pad "J3-18" thru_hole circle
(at 11.43 20.32)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "51fe31c2-11a9-46a3-ba60-e4b2f771326a")
)
(pad "J3-19" thru_hole circle
(at 11.43 22.86)
(size 1.56 1.56)
(drill 1.04)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(solder_mask_margin 0.102)
(uuid "fdcc150d-2ff6-426c-9e30-c58b8d3e5ab4")
)
)

View File

@ -0,0 +1 @@
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>

BIN
PCB/Gerber/Gerber.zip Normal file

Binary file not shown.

146
PCB/button.bak Executable file
View File

@ -0,0 +1,146 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "TWS4417-250AT"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 10.16 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "TWS4417-250AT_1_1"
(rectangle
(start -3.81 3.81)
(end 3.81 -3.81)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "SMD Button"
(at 0 6.35 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -6.35 2.54 0)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at 6.35 2.54 180)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -6.35 -2.54 0)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at 6.35 -2.54 180)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

146
PCB/button.kicad_sym Executable file
View File

@ -0,0 +1,146 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "TWS4417-250AT"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 11.43 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "TWS4417-250AT_1_1"
(rectangle
(start -3.81 3.81)
(end 3.81 -3.81)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "SMD Button"
(at 0 6.35 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -6.35 2.54 0)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at 6.35 2.54 180)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -6.35 -2.54 0)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at 6.35 -2.54 180)
(length 2.54)
(name ""
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

View File

@ -0,0 +1,149 @@
(footprint "TWS4417-250AT"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 -4 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "1af38da6-a815-4a6d-b027-f2892a709d63")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "TWS4417-250AT"
(at 0 2.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "fddb58d4-3c05-46ef-8776-2eeff4c64653")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" "TWS4417-250AT"
(at 0 -2 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "9ac2449a-cbfd-4a74-9c3d-aa753fe8daef")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 -2 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "0bd96643-f2b3-4788-98a1-01355ef398b6")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 -2 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "eaf8ce91-2641-4585-8bd0-771fa7cc38c1")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr smd)
(fp_rect
(start -5 -2.9)
(end 5 2.9)
(stroke
(width 0.15)
(type default)
)
(fill none)
(layer "F.SilkS")
(uuid "94bae4e4-9bed-4c69-85d4-39bf18f3984e")
)
(fp_rect
(start -5.25 -3)
(end 5.25 3)
(stroke
(width 0.05)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "bbe72dcf-a1a8-498b-9992-bef9ca4d5adb")
)
(fp_text user "Button"
(at -2.5 0.5 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "7e70be57-5a1a-4337-8bf9-d17237da936a")
(effects
(font
(size 1 1)
(thickness 0.15)
)
(justify left bottom)
)
)
(fp_text user "${REFERENCE}"
(at 0 0.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "e5b468b6-f1db-45bb-8953-7138dda5abce")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -3.2 -1.85)
(size 2.286 1.524)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "f8c27cc2-e9ee-4397-8ba7-a036ad76204a")
)
(pad "2" smd roundrect
(at 3.2 -1.85)
(size 2.286 1.524)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "d3d2402c-23e4-46fd-a45c-441b1a096258")
)
(pad "3" smd roundrect
(at -3.2 1.85)
(size 2.286 1.524)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "f25b93a1-2c36-4dd2-a5f4-e0ad9788e3fe")
)
(pad "4" smd roundrect
(at 3.2 1.85)
(size 2.286 1.524)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "f17c31be-2c6a-4b08-9970-2ccc3980dfab")
)
)

128
PCB/buzzer.bak Executable file
View File

@ -0,0 +1,128 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "buzzer_board"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 10.16 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "buzzer_board_1_1"
(rectangle
(start 31.75 -7.62)
(end -17.78 7.62)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "BUZZER"
(at 7.62 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -20.32 5.08 0)
(length 2.54)
(name "Vcc"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -20.32 0 0)
(length 2.54)
(name "I/O"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -20.32 -5.08 0)
(length 2.54)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

128
PCB/buzzer.kicad_sym Executable file
View File

@ -0,0 +1,128 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "buzzer_board"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 10.16 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at -10.16 3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "buzzer_board_1_1"
(rectangle
(start 31.75 -7.62)
(end -17.78 7.62)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "BUZZER"
(at 7.62 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -20.32 -5.08 0)
(length 2.54)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -20.32 0 0)
(length 2.54)
(name "I/O"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -20.32 5.08 0)
(length 2.54)
(name "Vcc"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

94004
PCB/fp-info-cache Executable file

File diff suppressed because it is too large Load Diff

6
PCB/fp-lib-table Executable file
View File

@ -0,0 +1,6 @@
(fp_lib_table
(version 7)
(lib (name "button")(type "KiCad")(uri "${KIPRJMOD}/button.pretty")(options "")(descr ""))
(lib (name "AliExpress")(type "KiCad")(uri "${KIPRJMOD}/AliExpress.pretty")(options "")(descr ""))
(lib (name "ESP32-DEVKITC-32D")(type "KiCad")(uri "${KIPRJMOD}/ESP32-DEVKITC-32D")(options "")(descr ""))
)

5842
PCB/kam_alarm.kicad_pcb Executable file

File diff suppressed because it is too large Load Diff

123
PCB/kam_alarm.kicad_prl Executable file
View File

@ -0,0 +1,123 @@
{
"board": {
"active_layer": 31,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [
"Default",
"Signal"
],
"hidden_nets": [
"",
"B1",
"B2",
"B3",
"B4",
"unconnected-(U8-SD0-PadJ2-2)",
"unconnected-(U8-SVN-PadJ3-16)",
"unconnected-(U8-SD2-PadJ3-4)",
"unconnected-(U8-CLK-PadJ2-1)",
"unconnected-(U8-SVP-PadJ3-17)",
"unconnected-(U8-SD1-PadJ2-3)",
"unconnected-(U8-IO02-PadJ2-5)",
"unconnected-(U8-IO34-PadJ3-15)",
"/SCK_Wire",
"unconnected-(U8-RX-PadJ2-15)",
"unconnected-(U8-IO17-PadJ2-9)",
"unconnected-(U8-IO12-PadJ3-7)",
"/Buzzer I{slash}O 1",
"unconnected-(U8-IO26-PadJ3-10)",
"unconnected-(U8-SD3-PadJ3-3)",
"unconnected-(U8-3V3-PadJ3-19)",
"unconnected-(U8-EN-PadJ3-18)",
"unconnected-(U8-IO25-PadJ3-11)",
"unconnected-(U8-IO19-PadJ2-12)",
"unconnected-(U8-IO23-PadJ2-18)",
"unconnected-(U8-IO18-PadJ2-11)",
"unconnected-(U8-IO13-PadJ3-5)",
"unconnected-(U8-IO04-PadJ2-7)",
"unconnected-(U8-IO15-PadJ2-4)",
"unconnected-(U8-TX-PadJ2-16)",
"/Buzzer I{slash}O 2",
"unconnected-(U8-IO16-PadJ2-8)",
"unconnected-(U8-IO35-PadJ3-14)",
"/SDA_Wire",
"unconnected-(U8-CMD-PadJ3-2)"
],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "kam_alarm.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

793
PCB/kam_alarm.kicad_pro Executable file
View File

@ -0,0 +1,793 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.15,
"min_connection": 0.15,
"min_copper_edge_clearance": 0.25,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.15,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.15,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.3,
5.0
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_label_syntax": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "kam_alarm.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.5,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 10
},
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Signal",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.3,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "Signal",
"pattern": "/Buzzer I{slash}O"
},
{
"netclass": "Power",
"pattern": "GND"
},
{
"netclass": "Signal",
"pattern": "/SCK_Wire"
},
{
"netclass": "Signal",
"pattern": "/SDA_Wire"
},
{
"netclass": "Power",
"pattern": "+5V"
},
{
"netclass": "Signal",
"pattern": "/Data"
},
{
"netclass": "Signal",
"pattern": "/Data3"
},
{
"netclass": "Signal",
"pattern": "/Data2"
},
{
"netclass": "Signal",
"pattern": "/Button 4"
},
{
"netclass": "Signal",
"pattern": "/Data1"
},
{
"netclass": "Signal",
"pattern": "/Button 2"
},
{
"netclass": "Signal",
"pattern": "/Button 1"
},
{
"netclass": "Signal",
"pattern": "/Button 3"
},
{
"netclass": "Signal",
"pattern": "/Buzzer I{slash}O 2"
},
{
"netclass": "Signal",
"pattern": "/Buzzer I{slash}O 1"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "Gerber/",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "Availability",
"name": "Availability",
"show": false
},
{
"group_by": false,
"label": "Check_prices",
"name": "Check_prices",
"show": false
},
{
"group_by": false,
"label": "Description_1",
"name": "Description_1",
"show": false
},
{
"group_by": false,
"label": "MANUFACTURER",
"name": "MANUFACTURER",
"show": false
},
{
"group_by": false,
"label": "MAXIMUM_PACKAGE_HEIGHT",
"name": "MAXIMUM_PACKAGE_HEIGHT",
"show": false
},
{
"group_by": false,
"label": "MF",
"name": "MF",
"show": false
},
{
"group_by": false,
"label": "MP",
"name": "MP",
"show": false
},
{
"group_by": false,
"label": "PARTREV",
"name": "PARTREV",
"show": false
},
{
"group_by": false,
"label": "Package",
"name": "Package",
"show": false
},
{
"group_by": false,
"label": "Price",
"name": "Price",
"show": false
},
{
"group_by": false,
"label": "SNAPEDA_PN",
"name": "SNAPEDA_PN",
"show": false
},
{
"group_by": false,
"label": "STANDARD",
"name": "STANDARD",
"show": false
},
{
"group_by": false,
"label": "SnapEDA_Link",
"name": "SnapEDA_Link",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"1244303f-706e-4466-bcc0-70ea34d1f4ad",
"Root"
]
],
"text_variables": {}
}

4398
PCB/kam_alarm.kicad_sch Executable file

File diff suppressed because it is too large Load Diff

146
PCB/oled_screen.bak Executable file
View File

@ -0,0 +1,146 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "OLED_screen"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 12.7 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "OLED_screen_1_1"
(rectangle
(start -20.32 6.35)
(end 19.05 -6.35)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "0.91\" OLED I2C Screen"
(at -1.27 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -22.86 -3.81 0)
(length 2.54)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -22.86 -1.27 0)
(length 2.54)
(name "Vcc"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -22.86 1.27 0)
(length 2.54)
(name "SCK"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -22.86 3.81 0)
(length 2.54)
(name "SDA"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

146
PCB/oled_screen.kicad_sym Executable file
View File

@ -0,0 +1,146 @@
(kicad_symbol_lib
(version 20231120)
(generator "kicad_symbol_editor")
(generator_version "8.0")
(symbol "OLED_screen"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 0 3.81 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" ""
(at -20.32 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "OLED_screen_1_1"
(rectangle
(start -20.32 6.35)
(end 19.05 -6.35)
(stroke
(width 0)
(type default)
)
(fill
(type background)
)
)
(text "0.91\" OLED I2C Screen"
(at -1.27 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(pin input line
(at -22.86 -3.81 0)
(length 2.54)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -22.86 -1.27 0)
(length 2.54)
(name "Vcc"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -22.86 1.27 0)
(length 2.54)
(name "SCK"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at -22.86 3.81 0)
(length 2.54)
(name "SDA"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
)
)

7
PCB/sym-lib-table Executable file
View File

@ -0,0 +1,7 @@
(sym_lib_table
(version 7)
(lib (name "oled_screen")(type "KiCad")(uri "${KIPRJMOD}/oled_screen.kicad_sym")(options "")(descr ""))
(lib (name "buzzer")(type "KiCad")(uri "${KIPRJMOD}/buzzer.kicad_sym")(options "")(descr ""))
(lib (name "button")(type "KiCad")(uri "${KIPRJMOD}/button.kicad_sym")(options "")(descr ""))
(lib (name "ESP32-DEVKITC-32D")(type "KiCad")(uri "${KIPRJMOD}/ESP32-DEVKITC-32D/ESP32-DEVKITC-32D.kicad_sym")(options "")(descr ""))
)

1
README.md Normal file
View File

@ -0,0 +1 @@