
Bmx-18650
arcadien/tinySensor
Firmware and generic board for low-power environment sensors

Firmware and generic board for low-power environment sensors
TinySensorv1 is an open-source printed circuit board by arcadien, from the arcadien/tinySensor repository on GitHub, published under the MIT licence. It is a 2-layer board of 94 × 63.8 mm with 45 parts on 25 nets, routed with 218 tracks and 11 vias.
It is built around the ATTINY84A-PU and AO3401A. Its parts include 11 connectors, 8 capacitors, 8 resistors, 3 diodes and 1 IC. It belongs with the sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.
TinySensor aims to provide a customisable firmware and a hardware design for low-power environment sensors using wireless communication.
In the complete system, data is processed by a Domoticz/RFlink couple. Data decoding is also tested using RTL_433 decoder. Large part of the code, especially wireless encoders, are unit-tested.
feat/328p_hal, not mergedLACROSSE_ID is required whenever the BH1750 is fitted.Various libraries are used here, and some where tweaked to remove any Arduino dependencies, making the whole firmware more compact:
The firmware is built with PlatformIO and configured entirely at build time: each physical sensor is one PlatformIO environment (S_02…S_05, robot, devmodule, SOLAR_TEST) whose build_flags select protocol, sensors and calibration. See docs/environments.md to calibrate or add a board.
pio test -e native_debug # encoder and library unit tests, on the host
pio test -e native_cycle_oregon # one measurement cycle (runCycle) per build variant;
# also native_cycle_oregon_vcc, _lacrosse, _x10
pio run -e S_02 # firmware for one board
pio run -e S_02 -t upload # flash itCI runs the native tests, compile-fail checks for invalid flag combinations (test/compile_fail/), sensor-variant checks (test/build_variants/), clang-format and a build of every board.
requirements/*.md (requirement-based development, see CLAUDE.md)hardware/tinysensor/, with its backlog and a rework guide for v2.2 boards.openscad/, see openscad/README.md.TinySensor can use combination of sensors, the limit comes from amount of flash memory on the ATTiny.
OneWire sensor, cheap and efficient.
The BMP280 and the BME280 share the same library, but the BME provide humidity sensing, and thus use more memory.
Analog sensor can be used for LM35 temperature sensor, or LDR.
On v2.2 and v3.0 boards running from 2×AA/AAA, the LM35 can be powered by an off-board 5 V boost module switched on PB2 only during measurements (USE_SWITCHED_5V), see VARIANTE_LM35.md. The instructions below are for v2.1.
A 0v ground reference is needed. Solder pads 2 and 3 of J4, (rear side) as well JP3.
In the case of a -CAZ version, temperature below 0 can be measured. To allow this, two 1N914 diodes must be placed to put the sensor reference below 0v. This setup is documented in the LM35 datasheet. On TinySensor board v2.1 and up, this can be implemented by:
You can add a filter capacitor C3 to avoid swing if the wire is long. In this case, do not solder JP3. See datasheet for details.
Use the right value for R4 (should match the used LDR) and solder JP3 and, on JP4, middle and 3 pads. This way, there will be no RC filter (no cap because of J3) and Vss analog reference thanks of JP4.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | MountingHole | MountingHole:MountingHole_2.7mm_M2.5 | MH1, MH2, MH3, MH4, MH5, MH6 |
| 3 | 100n | Capacitor_SMD:C_0805_2012Metric | C6, C7, C8 |
| 3 | 4k7 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R2, R3, R6 |
| 2 | 10u | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1, C4 |
| 2 | 1M | Resistor_SMD:R_0805_2012Metric | R7, R8 |
| 2 | 1N914 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D2, D3 |
| 1 | 100n | Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm | C2 |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric | R9 |
| 1 | 18650 | TinySensor lib:BatteryHolder_MPD_BH-18650-PC2 | BT1 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R1 |
| 1 | 1n | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C5 |
| 1 | 1u | Capacitor_THT:CP_Radial_D4.0mm_P1.50mm | C3 |
| 1 | 3V3 module (TPS63020) | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | 75R | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R4 |
| 1 | AO3401A | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | ATtiny84A-PU | Package_DIP:DIP-14_W7.62mm | U1 |
| 1 | Analog ref | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels | JP4 |
| 1 | Analog sensor | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J7 |
| 1 | CR2032 socket | TinySensor lib:BatteryHolder_Keystone_106_1x21mm | J10 |
| 1 | DIRECT Vcc | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP2 |
| 1 | Digital out | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J4 |
| 1 | EXT. INT0 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J8 |
| 1 | I2C 1 (BME280) | Connector_JST:JST_EH_B6B-EH-A_1x06_P2.50mm_Vertical | J3 |
| 1 | I2C 2 | Connector_JST:JST_EH_B6B-EH-A_1x06_P2.50mm_Vertical | J14 |
| 1 | ISP | TinySensor lib:ICSP_SOCKET_MINI_2x3 | J6 |
| 1 | Jumper | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP3 |
| 1 | LED | LED_THT:LED_D1.8mm_W3.3mm_H2.4mm | D1 |
| 1 | LED Jumper | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP1 |
| 1 | OneWire sensor | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
| 1 | RADIO | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J1 |
| 1 | RAW IN | TinySensor lib:TerminalBlock_bornier-2_P5.08mm | J13 |
| 1 | RESET | Button_Switch_THT:SW_PUSH_6mm_H4.3mm | SW1 |
| 1 | SDO | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP6 |
It measures 94 × 63.8 mm and has 2 copper layers, 1.6 mm thick.
45 parts, built around the ATTINY84A-PU and AO3401A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the arcadien/tinySensor repository on GitHub, at the commit this page was made from: the board is hardware/tinysensor/tinySensorv1.kicad_pcb and its schematic hardware/bmx-18650/bmx-18650/bmx-18650.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

arcadien/tinySensor
Firmware and generic board for low-power environment sensors

copperheadhq/copperhead-quiet-orbit
USB-C four-light ambient lamp, 57 mm, ATtiny84A hardware PWM. Designed with copperhead. Never built: do not order expecting it to work.



pddenhar/Volvo_240_Info_Display
OLED dashboard module for the Volvo 240 displaying battery voltage, speed, and RPM.

BryceVandegrift/hot-plate
A DIY PCB hot plate that uses through hole components

AhmedAtefNasr/PCB_Course-IMT_school
Here's the repo for Assignments & projects of PCB course from IMT school

Brawn1/ATTiny-Door-Sensor
Door Sensor Battery based with Attiny84 and HC-12 Sender
