Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 251f7ed376 | |||
| 23fae3e290 | |||
| b0ba83ca4b | |||
| 9c805359e8 | |||
| 64da9b5010 |
125
README.md
125
README.md
@ -1,116 +1,47 @@
|
||||
# ToGo-Lab FireFly Morse Blinker
|
||||
# FireFly Solar / 日輪蛍
|
||||
|
||||
**DIY kit**: ATtiny-based Morse blinker. Through-hole. No mains. Simple on purpose.
|
||||
**Default license**: [CC-BY-NC-4.0](https://creativecommons.org/licenses/by-nc/4.0/)
|
||||
**Nichirin Hotaru**
|
||||
*A small solar-powered Morse firefly for the outdoors.*
|
||||
|
||||
---
|
||||
**太陽を宿し、夜にモールスを灯す蛍。**
|
||||
*Taiyō o yadoshi, yoru ni Mōrusu o tomosu hotaru.*
|
||||
*A firefly carrying the sun, lighting Morse in the night.*
|
||||
|
||||
## Intro
|
||||
## Overview
|
||||
|
||||
This is my “Hello World” hardware project on the new ToGo-Lab server.
|
||||
FireFly Solar is a small outdoor LED blinker inspired by the idea of an LED throwie, but powered by sunlight instead of a disposable coin cell.
|
||||
|
||||
Years ago I built a tiny Morse throwie: ATtiny + one LED + one resistor, plus firmware. This version adds a supercapacitor and small solar cells. It uses the LED as a light detector, so it only blinks in the dark.
|
||||
During the day, the solar cell charges the energy storage.
|
||||
At night, the circuit wakes up and sends a simple Morse-style light signal.
|
||||
|
||||
It's not a throwie anymore. Hang it anywhere with decent light (for charging) and dry conditions and let it blink Morse on its own during night.
|
||||
The project is partly a small garden object, partly a low-power electronics experiment, and partly a design exercise for future DIY kits.
|
||||
|
||||
Goal: a beginner-friendly DIY kit with clear docs and hackable firmware.
|
||||
## Project Goals
|
||||
|
||||
Checkout also the [blog about this project](https://https://togo-lab.io/?p=82).
|
||||
ToGo-Lab Cloud [link](https://nextcloud.togo-lab.io/index.php/f/1176), actual internal link only.
|
||||
Suggestions welcome. Open an issue or email [tgohle@togo-lab.io](mailto:tgohle@togo-lab.io).
|
||||
- Build a solar-powered outdoor Morse blinker
|
||||
- Keep the hardware simple and robust
|
||||
- Improve practical low-power design skills
|
||||
- Test mechanical concepts for outdoor 3D-printed parts
|
||||
- Learn what is needed to turn a small electronics project into a possible DIY kit
|
||||
|
||||
---
|
||||
## Naming
|
||||
|
||||
## Repo layout
|
||||
```
|
||||
├── doc
|
||||
│ ├── assets // pictures, diagrams..
|
||||
│ └── logs // lab logs
|
||||
├── firmware
|
||||
│ ├── archive // archive, derived from...
|
||||
│ │ └── ATTINY45_2014_MorseThrowie
|
||||
│ │ ├── ATTINY45_2014_MorseThrowie.ino
|
||||
│ │ └── pitches.h
|
||||
│ ├── include
|
||||
│ ├── FireFly_MorseBlinker // arduino IDE file
|
||||
│ └── src
|
||||
├── hardware
|
||||
│ ├── CAD // CAD files for mechanical work
|
||||
│ │ └── ToGo-Lab_FireFly_MorseThrowie.dxf
|
||||
│ └── KiCad // KiCad project files
|
||||
│ └── 0001-FireFly
|
||||
│ ├── 0001-FireFly-backups
|
||||
│ │ ├── 0001-FireFly-2025-09-07_180819.zip
|
||||
│ │ └── 0001-FireFly-2025-09-07_181506.zip
|
||||
│ ├── 0001-FireFly.kicad_pcb
|
||||
│ ├── 0001-FireFly.kicad_prl
|
||||
│ ├── 0001-FireFly.kicad_pro
|
||||
│ └── 0001-FireFly.kicad_sch
|
||||
├── License_-_CC_BY-NC_4.0.md
|
||||
└── README.md
|
||||
```
|
||||
The English project name remains:
|
||||
|
||||
---
|
||||
**FireFly Solar**
|
||||
|
||||
## Hardware
|
||||
- **MCU**: ATtiny45/85 (internal RC clock, no crystal).
|
||||
- **I/O**: 1× LED + series resistor. Unused pins broken out to breadboard-style pads.
|
||||
- **Burning Attiny**: external ISP programmer via Arduino IDE; PDIP-8 ATtiny45/85 footprint.
|
||||
- **Power**: 3V DC (coin cell & & solar cell + supercapacitor with Schottky diodes to extend battery power).
|
||||
- **Safety**: low voltage only. Observe polarity.
|
||||
- **PCB**: hackable; access to unused ATtiny pins. (big pads for beginners, clear silks, LED polarity marks)
|
||||
For blog posts, documentation, and presentation, the project also uses the Japanese name:
|
||||
|
||||
---
|
||||
**日輪蛍 / Nichirin Hotaru**
|
||||
|
||||
## Firmware / Arduino IDE
|
||||
- Follow `Documentation/ToGo-Lab_FireFly_ArduinoIDE_Program_Guide.md`.
|
||||
- Board core: any stable ATtiny45/85 core.
|
||||
- Clock: **internal**. No fuse change required for first tests.
|
||||
- Programmer: USBasp / AVRISPmkII / Arduino-as-ISP.
|
||||
- Open the sketch in `0001_FireFly/Program/`.
|
||||
|
||||
---
|
||||
|
||||
## Assembly
|
||||
- Follow `Documentation/ToGo-Lab_FireFly_Assembly_Guide.md`.
|
||||
- First power-up: LED should blink test pattern. If not, recheck polarity and bridges.
|
||||
|
||||
---
|
||||
|
||||
## Test / Bring-up
|
||||
1. Visual check; no shorts.
|
||||
2. Power at 3–5 V. Current < 10 mA idle.
|
||||
3. Program firmware over ISP.
|
||||
4. Verify Morse timing; adjust WPM in `config.h` if needed.
|
||||
5. Optional: measure current.
|
||||
|
||||
---
|
||||
|
||||
## BOM
|
||||
- Follow `Documentation/ToGo-Lab_FireFly_BOM.csv` as source of truth.
|
||||
|
||||
---
|
||||
|
||||
## Files to fabricate
|
||||
- Gerbers and drill files from `KiCad/fab/` (board house-ready).
|
||||
- Project file: `0001_FireFly/KiCad/ToGo-Lab_FireFly.kicad_pro`.
|
||||
|
||||
---
|
||||
|
||||
## Known constraints
|
||||
- Through-hole only. No reflow.
|
||||
- Minimal I/O to keep it beginner-friendly.
|
||||
- Low power is nice but optional; optimize after the basic release.
|
||||
|
||||
---
|
||||
|
||||
## Roadmap (tech only)
|
||||
- v0.1-proto: breadboard + first PCB, single message, speed presets.
|
||||
- v1.0: build guide, BOM with alternates, pilot 10 units.
|
||||
- v1.1: docs polish, optional brightness setting, minor PCB tweaks.
|
||||
The name roughly means **sun-disc firefly**. It keeps the solar theme, adds a slightly mythic tone, and still fits a small piece of outdoor hardware.
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
PRs and issues welcome. Keep it simple.
|
||||
Photos of your build you send me go in `Documentation/gallery/` with a short caption and license notice.
|
||||
Photos of your build you send me go in `Documentation/gallery/` with a short caption and license notice.
|
||||
|
||||
---
|
||||
|
||||
## Default license**: [CC-BY-NC-4.0](https://creativecommons.org/licenses/by-nc/4.0/)
|
||||
@ -0,0 +1,544 @@
|
||||
/*
|
||||
=============================================================================
|
||||
FireFly Morse Throwie
|
||||
- a light controled (LED as Sensor) morseblinker throwie with ATTiny45/85
|
||||
=============================================================================
|
||||
|
||||
Project definitions, sources
|
||||
-----------------------------------------------------------------------------
|
||||
Version: 0.1 - Attiny85 Version
|
||||
Date : 25.05.2026
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Inspired by Karl Lunt's FireFly project I wrote some code to make this
|
||||
Throwie lasting longer, blinking only at low light levels and morse also
|
||||
some text.
|
||||
http://www.seanet.com/~karllunt/fireflyLED.html
|
||||
|
||||
How it works (only the Morsethrowy part):
|
||||
LED detects light level, using bleeding out time of LED pn-capacitor.
|
||||
If dark enough blink a text in morsecode (ATTiny45 = 22 Chars, text will
|
||||
be defined in line 191/192 of this file)
|
||||
To save energy go to powersave mode after blinking or light level is
|
||||
over threshold. Tests this every 8s (maximum time for watchdog timer
|
||||
possible for ATTiny). Repeat this endless
|
||||
|
||||
|
||||
The wiring, it's very simple, see also HW part of the Project.
|
||||
|
||||
+---+ +------\/------+
|
||||
| | ATTINY45 /85 |
|
||||
> | -+1=PB5 VCC=8+-> to SuperCap / DC-DC 3V/5V
|
||||
xxx Ohm < | | |
|
||||
> +------+2=PB3 PB2=7+-
|
||||
| | |
|
||||
----- +------+3=PB4 PB1=6+-
|
||||
LED / \ | | |
|
||||
----- | +--+4=GND PB0=5+-
|
||||
| | | | |
|
||||
+---+ | +--------------+
|
||||
|
|
||||
+---------------------> to battery GND
|
||||
|
||||
You can use other pins if necessary, theoretical up to 3 LEDs, as example I
|
||||
tried out to connect another one at PB2&PB1. working fine. Basic wiring:
|
||||
|
||||
+ LED_N_Side), wired to a digital pin, NOT Vcc
|
||||
|
|
||||
<
|
||||
> 100 - 460 ohm resistor depending Voltage
|
||||
<
|
||||
|
|
||||
|
|
||||
-----
|
||||
/ \ LED, maybe a 5mm, clear plastic is good
|
||||
-----
|
||||
|
|
||||
|
|
||||
+ LED_P_Side), wired to a digital pin, NOT Gnd
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Im just a newbe in ATTiny / Arduino programming, so many thanks to:
|
||||
|
||||
Programming ATTiny with Arduino IDE:
|
||||
http://highlowtech.org/?p=1695
|
||||
|
||||
LED Lightsensor, Arduino Playground:
|
||||
http://playground.arduino.cc/Learning/LEDSensor
|
||||
|
||||
Powersaving Mode for Attiny45/85:
|
||||
A good description by Martin Nawrath nawrath@khm.de and the folks at
|
||||
http://www.insidegadgets.com/2011/02/05/reduce-attiny-power-consumption-by-sleeping-with-the-watchdog-timer/
|
||||
|
||||
With this description I got ~5uA during sleep mode.
|
||||
in Morse-Mode with LED OFF: 1.7mA
|
||||
LED ON: 6.9mA
|
||||
--> I hope to run this throwies ~40days with one CR2032.
|
||||
|
||||
Morsecode
|
||||
To translate a text into morsecode, there are several ways. You can use
|
||||
this fine online translator:
|
||||
http://morsecode.scphillips.com/jtranslator.html
|
||||
|
||||
There is also a great morse coder / encoder from Matthias Esterl aka madc.
|
||||
Works fine for Arduino, but not for ATTiny because of RAM limitations. But
|
||||
maybe this is helpful if your project works with an Arduino.
|
||||
https://gist.github.com/madc/4474559
|
||||
|
||||
For this project I use a simple case structur. Looks arkward, but the
|
||||
ATTiny45 has only 256byte RAM but 4kFlash. A data structure is better programming
|
||||
but needs a lot of RAM we not have. Therefore this ugly case structure.
|
||||
This will waste the flash memory but we have enough and saving RAM for
|
||||
our payload - the ASCII-string with the morsetext.
|
||||
|
||||
BTW - Morsecode itself:
|
||||
|
||||
'A', ".-" 'B', "-..." 'C', "-.-."
|
||||
'D', "-.." 'E', "." 'F', "..-."
|
||||
'G', "--." 'H', "...." 'I', ".."
|
||||
'J', ".---" 'K', ".-.-" 'L', ".-.."
|
||||
'M', "--" 'N', "-." 'O', "---"
|
||||
'P', ".--." 'Q', "--.-" 'R', ".-."
|
||||
'S', "..." 'T', "-" 'U', "..-"
|
||||
'V', "...-" 'W', ".--" 'X', "-..-"
|
||||
'Y', "-.--" 'Z', "--.."
|
||||
|
||||
'1', ".----" '2', "..---" '3', "...--"
|
||||
'4', "....-" '5', "....." '6', "-...."
|
||||
'7', "--..." '8', "---.." '9', "----."
|
||||
'0', "-----"
|
||||
|
||||
'.', ".-.-.-" ',', "--..--" '?', "..--.."
|
||||
'!', "-.-.--" ':', "---..." ';', "-.-.-."
|
||||
'(', "-.--." ')', "-.--.-" '"', ".-..-."
|
||||
'@', ".--.-." '&', ".-..."
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Legal stuff / Copyright:
|
||||
Creative Commons Attribution ShareAlike 3.0.:
|
||||
http://creativecommons.org/licenses/by-sa/3.0/legalcode
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
// ===========================================================================
|
||||
// Ok folks, let's start
|
||||
// ===========================================================================
|
||||
// for sleep Mode / Powersave we need some additional stuff. Its alredy there,
|
||||
// if you installed the Attiny extension for Arduino IDE, no additional
|
||||
// installing needed.
|
||||
#include <avr/sleep.h>
|
||||
#include <avr/wdt.h>
|
||||
|
||||
// ===========================================================================
|
||||
// Some definitions for powersave depending of ATTiny type.
|
||||
#ifndef cbi
|
||||
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
|
||||
#endif
|
||||
#ifndef sbi
|
||||
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
|
||||
#endif
|
||||
|
||||
// ===========================================================================
|
||||
// for ATTiny85
|
||||
// Unit length < 150 will hard to be read for optical morse code
|
||||
// > 300 are too slow in my feeling for longer text
|
||||
//
|
||||
// for ATTiny85 at 8MHz (for 1MHz see ATTiny45)
|
||||
// Unit length < 5 will hard to be read for optical morse code
|
||||
// > 10 are too slow in my feeling for longer text
|
||||
//
|
||||
//
|
||||
|
||||
#define unitLength 100
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// LED Pin definitions,
|
||||
// theoretical you can use up to 3 LED. For example you can use it for a
|
||||
// landmark beacon. So if you point this LEDs to different directions you can
|
||||
// detect the position in dependence of your location to the bacon.
|
||||
#define LED1_N_SIDE 3
|
||||
#define LED1_P_SIDE 4
|
||||
|
||||
// ===========================================================================
|
||||
// Variables
|
||||
// ===========================================================================
|
||||
// ###########################################################################
|
||||
// # and now the text, but be aware, only 256Byte RAM for Attiny45 #
|
||||
// # so there are only 22 Chars left for your message. #
|
||||
// # BTW with an Attiny85 you will have additional 256byte #
|
||||
// # => more than for twitter :-) #
|
||||
// # => for FireFly with SuperCap: less ist better, charge last longer #
|
||||
|
||||
String morseText =
|
||||
"TOGO LAB";
|
||||
// # "....5....1....5....2.."; just a ruler, remember 22 Chars for ATTiny #
|
||||
// IT IS USELESS
|
||||
// HAIL GLOW CLOUD
|
||||
// ###########################################################################
|
||||
|
||||
// Define light trigger threshold. best way to set it on dusk / dawn level
|
||||
// diffuse red ones are less sensitive than clear green ones...
|
||||
int darknessThreshold = 17000;
|
||||
|
||||
// Interrupt Flag, should be volatile, means: read from RAM, not register
|
||||
// because registers are used for interrupt handling, it have to be volatile.
|
||||
volatile boolean f_wdt = 1;
|
||||
|
||||
// ===========================================================================
|
||||
// Setup watchdog
|
||||
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
|
||||
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
|
||||
// ===========================================================================
|
||||
void setup()
|
||||
{
|
||||
setup_watchdog(9);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// Main
|
||||
// ===========================================================================
|
||||
|
||||
void loop(){
|
||||
|
||||
if (f_wdt==1) { // wait for timed out watchdog
|
||||
// flag is set when a watchdog timeout occurs
|
||||
f_wdt=0; // reset flag
|
||||
|
||||
// if it's dark enough [>darknesThreshold] morse
|
||||
if (sensDarkness(LED1_N_SIDE, LED1_P_SIDE) > darknessThreshold){
|
||||
// looks like it's dark, so do your job
|
||||
morse(LED1_N_SIDE, LED1_P_SIDE);
|
||||
}
|
||||
}
|
||||
// set all used port to intput to save power
|
||||
pinMode(LED1_N_SIDE,INPUT);
|
||||
pinMode(LED1_P_SIDE,INPUT);
|
||||
system_sleep();
|
||||
f_wdt=0; // 2nd time sleep
|
||||
system_sleep();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// Subroutines for Sleeping
|
||||
// ===========================================================================
|
||||
// set system into the sleep state
|
||||
// system wakes up when wtchdog is timed out
|
||||
void system_sleep() {
|
||||
cbi(ADCSRA,ADEN); // switch Analog to
|
||||
// Digitalconverter OFF
|
||||
|
||||
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
|
||||
sleep_enable();
|
||||
|
||||
sleep_mode(); // System sleeps here
|
||||
|
||||
sleep_disable(); // System continues execution here when
|
||||
// watchdog timed out
|
||||
sbi(ADCSRA,ADEN); // switch Analog to Digitalconverter ON
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Setup for watchdog. Parameter ii for sleeping time:
|
||||
// 0 = 16ms, 1 = 32ms, 2 = 64ms,
|
||||
// 3 = 128ms, 4 = 250ms, 5 = 500ms
|
||||
// 6 = 1 sec, 7 = 2 sec, 8 = 4 sec,
|
||||
// 9 = 8 sec
|
||||
void setup_watchdog(int ii) {
|
||||
|
||||
byte bb;
|
||||
int ww;
|
||||
if (ii > 9 ) ii=9;
|
||||
bb=ii & 7;
|
||||
if (ii > 7) bb|= (1<<5);
|
||||
bb|= (1<<WDCE);
|
||||
ww=bb;
|
||||
|
||||
MCUSR &= ~(1<<WDRF);
|
||||
|
||||
WDTCR |= (1<<WDCE) | (1<<WDE); // start timed sequence
|
||||
|
||||
WDTCR = bb; // set new watchdog timeout value
|
||||
WDTCR |= _BV(WDIE);
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
// Watchdog Interrupt Service / is executed when watchdog timed out
|
||||
ISR(WDT_vect) {
|
||||
f_wdt=1; // set global flag
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Subroutines for light sensor
|
||||
// =============================================================================
|
||||
// Function sensDarkness
|
||||
// Usage: sensDarkness(Pin-No. N-Side of LED, Pin-No. P-Side of LED):
|
||||
// will result "darkness-level" - the higher the darker:
|
||||
// 30000 = pitch black
|
||||
// 0 = sunshine
|
||||
int sensDarkness(int LED_N, int LED_P){
|
||||
|
||||
unsigned int i; //Parameter bleed-out LED capacitor
|
||||
|
||||
// charge the capacitor of LED
|
||||
pinMode(LED_N,OUTPUT);
|
||||
pinMode(LED_P,OUTPUT);
|
||||
digitalWrite(LED_N,HIGH);
|
||||
digitalWrite(LED_P,LOW);
|
||||
|
||||
// Isolate the N end of the diode and turn off internal pull-up resistor
|
||||
pinMode(LED_N,INPUT);
|
||||
digitalWrite(LED_N,LOW);
|
||||
|
||||
// Count how long it takes the diode to bleed back down to a logic zero
|
||||
for ( i = 0; i < 30000; i++) {
|
||||
if ( digitalRead(LED_N)==0) break;
|
||||
}
|
||||
// thats it, return result
|
||||
return i;
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Subroutines for morse text
|
||||
// =============================================================================
|
||||
// -----------------------------------------------------------------------------
|
||||
// Function dit = ".", a dit is as long as a unitLength, used in morse()
|
||||
//
|
||||
void dit(int LED_P){
|
||||
digitalWrite( LED_P, HIGH ); delay( unitLength );
|
||||
digitalWrite( LED_P, LOW ); delay( unitLength );
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Function dah = "-", a dah is as long as a 3*unitLength
|
||||
//
|
||||
void dah(int LED_P){
|
||||
digitalWrite( LED_P, HIGH ); delay( unitLength*3 );
|
||||
digitalWrite( LED_P, LOW ); delay( unitLength );
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Function morse:
|
||||
// hand over text and LED Pins
|
||||
// because you want to use more than one LED hand over also LED Pins
|
||||
|
||||
void morse(int LED_N, int LED_P){
|
||||
|
||||
// Because I have more Flash than RAM I decided to use a case structure.
|
||||
// Its not so pretty, but I can use the RAM to hold my morseText.
|
||||
//
|
||||
// set N-Side of LED Low, so you can set P-side high to let them flash
|
||||
|
||||
pinMode( LED_N, OUTPUT);
|
||||
pinMode( LED_P, OUTPUT);
|
||||
|
||||
digitalWrite( LED_N, LOW);
|
||||
|
||||
// send it to defined LED
|
||||
for(int i=0; i<=morseText.length(); i++)
|
||||
{
|
||||
switch( morseText[i] )
|
||||
{
|
||||
|
||||
// Chars A-Z
|
||||
case 'A': // .-
|
||||
dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'B': // -...
|
||||
dah(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'C': // -.-.
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'D': // -..
|
||||
dah(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'E': // .
|
||||
dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'F': // ..-.
|
||||
dit(LED_P); dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'G': // --.
|
||||
dah(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'H': // ....
|
||||
dit(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'I': // ..
|
||||
dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'J': // .---
|
||||
dit(LED_P); dah(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'K': // .-.-
|
||||
dit(LED_P); dah(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'L': // .-..
|
||||
dit(LED_P); dah(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'M': // --
|
||||
dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'N': // -.
|
||||
dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'O': // ---
|
||||
dah(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'P': // .--.
|
||||
dit(LED_P); dah(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'Q': // --.-
|
||||
dah(LED_P); dah(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'R': // .-.
|
||||
dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'S': // ...
|
||||
dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case 'T': // -
|
||||
dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'U': // ..-
|
||||
dit(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'V': // ...-
|
||||
dit(LED_P); dit(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'W': // .--
|
||||
dit(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'X': // -..-
|
||||
dah(LED_P); dit(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'Y': // -.--
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case 'Z': // --..
|
||||
dah(LED_P);dah(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
// Numbers
|
||||
case '1': // .----
|
||||
dit(LED_P); dah(LED_P); dah(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '2': // ..---
|
||||
dit(LED_P); dit(LED_P); dah(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '3': // ...--
|
||||
dit(LED_P); dit(LED_P); dit(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '4': // ....-
|
||||
dit(LED_P); dit(LED_P); dit(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '5': // .....
|
||||
dit(LED_P); dit(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '6': // -....
|
||||
dah(LED_P); dit(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '7': // --...
|
||||
dah(LED_P); dah(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '8': // ---..
|
||||
dah(LED_P); dah(LED_P); dah(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '9': // ----.
|
||||
dah(LED_P); dah(LED_P); dah(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '0': // -----
|
||||
dah(LED_P); dah(LED_P); dah(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
// Special Signs
|
||||
case ' ': // Gap
|
||||
delay( unitLength*5 );
|
||||
break;
|
||||
|
||||
case '.': // .-.-.-
|
||||
dit(LED_P); dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case ',': // --..--
|
||||
dah(LED_P); dah(LED_P); dit(LED_P); dit(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '?': // ..--..
|
||||
dit(LED_P); dit(LED_P); dah(LED_P); dah(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '!': // -.-.--
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P); dah(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case ':': // ---...
|
||||
dah(LED_P); dah(LED_P); dah(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case ';': // -.-.-.
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '(': // -.--.
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case ')': // -.--.-
|
||||
dah(LED_P); dit(LED_P); dah(LED_P); dah(LED_P); dit(LED_P); dah(LED_P);
|
||||
break;
|
||||
|
||||
case '"': // .-..-.
|
||||
dit(LED_P); dah(LED_P); dit(LED_P); dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '@': // .--.-.
|
||||
dit(LED_P); dah(LED_P); dah(LED_P); dit(LED_P); dah(LED_P); dit(LED_P);
|
||||
break;
|
||||
|
||||
case '&': // .-...
|
||||
dit(LED_P); dah(LED_P); dit(LED_P); dit(LED_P); dit(LED_P);
|
||||
}
|
||||
// wait at end of sign
|
||||
delay( unitLength*3 );
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// That's all, folks :-)
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -183,8 +183,8 @@
|
||||
// theoretical you can use up to 3 LED. For example you can use it for a
|
||||
// landmark beacon. So if you point this LEDs to different directions you can
|
||||
// detect the position in dependence of your location to the bacon.
|
||||
#define LED1_N_SIDE 4
|
||||
#define LED1_P_SIDE 3
|
||||
#define LED1_N_SIDE 3
|
||||
#define LED1_P_SIDE 4
|
||||
|
||||
// ===========================================================================
|
||||
// Variables
|
||||
|
||||
1
hardware/0001_FireFly-Solar/.history
Submodule
1
hardware/0001_FireFly-Solar/.history
Submodule
Submodule hardware/0001_FireFly-Solar/.history added at 1c8d4d7c5c
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_dru
Normal file
5
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_dru
Normal file
@ -0,0 +1,5 @@
|
||||
(version 1)
|
||||
(rule Minimum_text_height_and_thickness_1
|
||||
(constraint text_height (min 0.6mm))
|
||||
(constraint text_thickness (min 0.1mm))
|
||||
)
|
||||
13578
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_pcb
Normal file
13578
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
127
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_prl
Normal file
127
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_prl
Normal file
@ -0,0 +1,127 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 5,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"prototype_zone_fills": false,
|
||||
"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": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"grid",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"footprint_references",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"drc_exclusions",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes",
|
||||
"board_outline_area",
|
||||
"ly_points"
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"integration_disabled": false,
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "0001_FireFly-Solar.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_time_domain_details": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"hierarchy_collapsed": [],
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"ruleAreas": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
778
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_pro
Normal file
778
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_pro
Normal file
@ -0,0 +1,778 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_barcodes": false,
|
||||
"apply_defaults_to_fp_dimensions": false,
|
||||
"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": true,
|
||||
"text_position": 0,
|
||||
"units_format": 0
|
||||
},
|
||||
"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.7,
|
||||
"height": 1.4,
|
||||
"width": 1.4
|
||||
},
|
||||
"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": {
|
||||
"border_display_style": 2,
|
||||
"border_hatch_pitch": 0.5,
|
||||
"corner_radius": 0.0,
|
||||
"corner_smoothing": 0,
|
||||
"fill_mode": 0,
|
||||
"hatch_gap": 1.5,
|
||||
"hatch_orientation": 0.0,
|
||||
"hatch_smoothing_level": 0,
|
||||
"hatch_smoothing_value": 0.1,
|
||||
"hatch_thickness": 1.0,
|
||||
"min_clearance": 0.5,
|
||||
"min_island_area": 10.0,
|
||||
"min_thickness": 0.25,
|
||||
"pad_connection": 1,
|
||||
"remove_islands": 0,
|
||||
"thermal_relief_gap": 0.5,
|
||||
"thermal_relief_spoke_width": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [
|
||||
[
|
||||
"copper_edge_clearance|131952996|49276030|d5a8d279-1277-4128-8111-479753d97832|74ba0eb0-a42b-49db-8990-e7e337244d89",
|
||||
""
|
||||
],
|
||||
[
|
||||
"copper_edge_clearance|135254996|49276021|d5a8d279-1277-4128-8111-479753d97832|6760cf2b-9d51-44e9-8541-9b08cc6bed3a",
|
||||
""
|
||||
],
|
||||
[
|
||||
"copper_edge_clearance|138556996|49276011|d5a8d279-1277-4128-8111-479753d97832|5b16be99-1a09-4cc0-a4d6-0e5fae921e96",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_height|141224000|109999000|18cc7c24-1e1e-47b4-bd81-2abaec8c3831|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|119126000|be078bc2-b3be-4c33-abfe-930461332b78|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|122936000|57275588-b94d-44a7-b263-ab2e942abbb9|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|126746000|ac73bb6c-6b4c-4683-bc6b-c539afa6834f|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|130556000|dfc1c2d5-221c-45bf-8f4f-92d8a3ddf04a|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|134366000|e9026731-8c2e-491a-9b73-4cda2fa80a02|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|138176000|cf4eeb69-e06f-463f-be45-22626ac2c2b4|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129032000|141986000|c29774df-bdb9-44e2-a17d-cfa3cd693d71|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|129184400|150241000|88401ad0-1dea-4344-ab33-329fd06bd493|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|135148000|106152000|7c4ccd6a-1b52-4734-bd95-092ada163852|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|135382000|84709000|88b0a397-e4a2-4145-86f6-0fa60b4a4bd9|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141224000|109999000|18cc7c24-1e1e-47b4-bd81-2abaec8c3831|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141325600|150144800|5da7a07f-f063-43b3-a149-e672965b459b|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|119126000|40b0fefb-8b86-43f7-b24d-e20c4677b223|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|122936000|77ee43fb-9700-42ab-8702-560042b5edd3|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|126746000|833d2a60-9010-4cb2-8045-b8050c8ee771|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|130556000|5a756363-e24d-4c12-82cf-59fc84a986ae|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|134366000|685c5797-de13-4bd0-a3b9-5fb75b4b9dad|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|138176000|15931c23-e5f6-4be3-ba3e-7a720c730e9b|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
],
|
||||
[
|
||||
"text_thickness|141478000|141986000|e240b788-8dbb-43c9-8c9f-717e069201be|00000000-0000-0000-0000-000000000000",
|
||||
""
|
||||
]
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "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_filters_mismatch": "ignore",
|
||||
"footprint_symbol_field_mismatch": "warning",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"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",
|
||||
"mirrored_text_on_front_layer": "warning",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"missing_tuning_profile": "warning",
|
||||
"net_conflict": "warning",
|
||||
"nonmirrored_text_on_back_layer": "warning",
|
||||
"npth_inside_courtyard": "error",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "error",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "ignore",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "ignore",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "ignore",
|
||||
"text_height": "warning",
|
||||
"text_on_edge_cuts": "error",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_not_centered_on_via": "ignore",
|
||||
"track_on_post_machined_layer": "error",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"tuning_profile_track_geometries": "ignore",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_groove_width": 0.0,
|
||||
"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.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.2,
|
||||
"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_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onvia": 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.127,
|
||||
0.254,
|
||||
0.508,
|
||||
0.635,
|
||||
1.27
|
||||
],
|
||||
"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": {
|
||||
"bom_rev": "",
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": "",
|
||||
"sch_revision": "1"
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"component_class_settings": {
|
||||
"assignments": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"sheet_component_classes": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"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_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"field_name_whitespace": "warning",
|
||||
"footprint_filter": "warning",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "warning",
|
||||
"ground_pin_not_ground": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"isolated_pin_label": "warning",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "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": "error",
|
||||
"power_pin_not_driven": "error",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "warning",
|
||||
"single_global_label": "warning",
|
||||
"stacked_pin_name": "warning",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"undefined_netclass": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "0001_FireFly-Solar.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"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)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"tuning_profile": "",
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 5
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"specctra_dsn": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"annotation": {
|
||||
"method": 0,
|
||||
"sort_order": 0
|
||||
},
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"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": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from BOM",
|
||||
"name": "${EXCLUDE_FROM_BOM}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from Board",
|
||||
"name": "${EXCLUDE_FROM_BOARD}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": true,
|
||||
"name": "Default Editing",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"bus_aliases": {},
|
||||
"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": [],
|
||||
"hop_over_size_choice": 0,
|
||||
"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
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"reuse_designators": true,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0,
|
||||
"top_level_sheets": [
|
||||
{
|
||||
"filename": "0001_FireFly-Solar.kicad_sch",
|
||||
"name": "Root",
|
||||
"uuid": "d6486f66-f0ec-4484-bce4-0ec6b0e57e1d"
|
||||
}
|
||||
],
|
||||
"used_designators": "J1-2",
|
||||
"variants": []
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"d6486f66-f0ec-4484-bce4-0ec6b0e57e1d",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {},
|
||||
"tuning_profiles": {
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"tuning_profiles_impedance_geometric": []
|
||||
}
|
||||
}
|
||||
5235
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_sch
Normal file
5235
hardware/0001_FireFly-Solar/0001_FireFly-Solar.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
2166
hardware/0001_FireFly-Solar/0001_FireFly-Solar.net
Normal file
2166
hardware/0001_FireFly-Solar/0001_FireFly-Solar.net
Normal file
File diff suppressed because it is too large
Load Diff
BIN
hardware/0001_FireFly-Solar/0001_FireFly-Solar.pdf
Normal file
BIN
hardware/0001_FireFly-Solar/0001_FireFly-Solar.pdf
Normal file
Binary file not shown.
26
hardware/0001_FireFly-Solar/Spice Netlist.txt
Normal file
26
hardware/0001_FireFly-Solar/Spice Netlist.txt
Normal file
@ -0,0 +1,26 @@
|
||||
*
|
||||
|
||||
.subckt 0001_FireFly-Solar
|
||||
|
||||
|
||||
J2 __J2
|
||||
D2 __D2
|
||||
D3 __D3
|
||||
J3 __J3
|
||||
R1 Net-_D1-K_ Net-_D4-K_ 33
|
||||
D1 __D1
|
||||
J1 __J1
|
||||
J4 __J4
|
||||
D5 __D5
|
||||
U1 __U1
|
||||
L1 Net-_D4-K_ Net-_D5-A_ 22u
|
||||
D4 __D4
|
||||
C1 Net-_D4-K_ GND 50F SuperCap
|
||||
C2 Net-_D4-K_ GND 150u
|
||||
C3 Net-_D5-K_ GND 100u
|
||||
C4 Net-_U1-REF_ GND 0.1u
|
||||
U2 __U2
|
||||
D6 Net-_D6-K_ Net-_D6-A_ LED
|
||||
R2 Net-_U2-XTAL1/PB3_ Net-_D6-K_ R
|
||||
|
||||
.ends
|
||||
7960
hardware/CAD/ToGo-Lab_FireFly_MorseThrowie - LaserCut.dxf
Normal file
7960
hardware/CAD/ToGo-Lab_FireFly_MorseThrowie - LaserCut.dxf
Normal file
File diff suppressed because it is too large
Load Diff
7410
hardware/CAD/ToGo-Lab_FireFly_MorseThrowie - LaserCut_Upload.dxf
Normal file
7410
hardware/CAD/ToGo-Lab_FireFly_MorseThrowie - LaserCut_Upload.dxf
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
(kicad_pcb (version 20240108) (generator "pcbnew") (generator_version "8.0")
|
||||
)
|
||||
@ -1,83 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"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": "0001-FireFly.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
@ -1,392 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"rules": {},
|
||||
"track_widths": [],
|
||||
"via_dimensions": []
|
||||
},
|
||||
"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_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": "0001-FireFly.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.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "Grouped By Value",
|
||||
"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": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"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": [
|
||||
[
|
||||
"f227a2cd-5cbd-41a5-87f8-a5c1515170aa",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
(kicad_sch
|
||||
(version 20231120)
|
||||
(generator "eeschema")
|
||||
(generator_version "8.0")
|
||||
(uuid "f227a2cd-5cbd-41a5-87f8-a5c1515170aa")
|
||||
(paper "A4")
|
||||
(title_block
|
||||
(title "ToGo Lab FireFly Morse Throwie")
|
||||
(rev "#001")
|
||||
(company "ToGo-Lab")
|
||||
(comment 1 "- https://togo-lab.io/")
|
||||
(comment 2 "- Email: tgohle@togo-lab.io")
|
||||
(comment 3 "Thomas Gohle")
|
||||
)
|
||||
(lib_symbols)
|
||||
(sheet_instances
|
||||
(path "/"
|
||||
(page "1")
|
||||
)
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user