Skip to the content
PCBKitNew board
2 layers94 × 63.8 mmTinySensorv1, the printed circuit board in 3D

Firmware and generic board for low-power environment sensors

Size
94 × 63.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
45
Nets
25
Pads
119
Tracks, vias
218, 11
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
15 Oct 2018
Updated
7 Nov 2026

Overview

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.

Main components

2

README

README.md

TinySensor

CI

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.

Supported MCUs

  • ATTiny84a
  • ATMega328p: started on branch feat/328p_hal, not merged

Supported sensors

Wireless technology

  • "one pin" emitters. Tested with low-cost 433 MHz emitters.

Wireless protocols

  • Environment frame (temperature, humidity, pressure): Oregon Scientific v3 or Lacrosse WS7000, at most one per build. A build without either sends no environment frame.
  • Luminosity: always a dedicated Lacrosse WS7000 frame (Oregon has no light frame), so LACROSSE_ID is required whenever the BH1750 is fitted.
  • Battery level and analog input: optional X10 RFXmeter frames, not sent when the battery is low.

Used libraries

Various libraries are used here, and some where tweaked to remove any Arduino dependencies, making the whole firmware more compact:

Useful documentation about low power AVR

Development

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.

bash
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 it

CI 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.

Hardware and enclosure

Hardware options

TinySensor can use combination of sensors, the limit comes from amount of flash memory on the ATTiny.

DS18B20

OneWire sensor, cheap and efficient.

BMP/BME 280 environment sensor

The BMP280 and the BME280 share the same library, but the BME provide humidity sensing, and thus use more memory.

Analog sensor

Analog sensor can be used for LM35 temperature sensor, or LDR.

LM35 temperature sensor

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.

Without negative temperature support

A 0v ground reference is needed. Solder pads 2 and 3 of J4, (rear side) as well JP3.

With negative temperature support

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:

  • solding D2 and D3 diodes
  • solding R4 with a value of 18k
  • solding JP3 to bypass C3 capacitor
  • solding pads 1 and 2 of J4 (rear side) to set ground reference.
Notes about swing

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.

LDR

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.

Parts

45
QtyValueFootprintReferences
6MountingHoleMountingHole:MountingHole_2.7mm_M2.5MH1, MH2, MH3, MH4, MH5, MH6
3100nCapacitor_SMD:C_0805_2012MetricC6, C7, C8
34k7Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR2, R3, R6
210uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1, C4
21MResistor_SMD:R_0805_2012MetricR7, R8
21N914Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD2, D3
1100nCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC2
110kResistor_SMD:R_0805_2012MetricR9
118650TinySensor lib:BatteryHolder_MPD_BH-18650-PC2BT1
11kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1
11nCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC5
11uCapacitor_THT:CP_Radial_D4.0mm_P1.50mmC3
13V3 module (TPS63020)Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
175RResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR4
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1ATtiny84A-PUPackage_DIP:DIP-14_W7.62mmU1
1Analog refJumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabelsJP4
1Analog sensorConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
1CR2032 socketTinySensor lib:BatteryHolder_Keystone_106_1x21mmJ10
1DIRECT VccJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP2
1Digital outConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1EXT. INT0Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ8
1I2C 1 (BME280)Connector_JST:JST_EH_B6B-EH-A_1x06_P2.50mm_VerticalJ3
1I2C 2Connector_JST:JST_EH_B6B-EH-A_1x06_P2.50mm_VerticalJ14
1ISPTinySensor lib:ICSP_SOCKET_MINI_2x3J6
1JumperJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP3
1LEDLED_THT:LED_D1.8mm_W3.3mm_H2.4mmD1
1LED JumperConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1OneWire sensorConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1RADIOConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1RAW INTinySensor lib:TerminalBlock_bornier-2_P5.08mmJ13
1RESETButton_Switch_THT:SW_PUSH_6mm_H4.3mmSW1
1SDOJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP6

Questions

How big is the TinySensorv1 PCB?

It measures 94 × 63.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TinySensorv1 use?

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.

Where can I download the TinySensorv1 KiCad files?

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.

Can I use the TinySensorv1 design in my own project?

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).

More from arcadien/tinySensor

1
  • 2 layersBmx-18650, the printed circuit board in 3D

    Bmx-18650

    arcadien/tinySensor

    Firmware and generic board for low-power environment sensors

    30 parts2MIT

Similar boards

  • 2 layers96.5 × 25.4 mmLed game, the printed circuit board in 3D

    Led game

    agalakhov/led-game

    Simple LED game for learning soldering.

    20 parts2MIT
  • 2 layers55.2 × 40.6 mmSpectrum, the printed circuit board in 3D

    Spectrum

    jblang/ATtiny84A_spectrum

    ATtiny Spectrum Analyzer

    24 parts2
  • 2 layers35 × 28 mmVolvo240pcb, the printed circuit board in 3D

    Volvo240pcb

    pddenhar/Volvo_240_Info_Display

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

    18 parts2
  • 2 layers90 × 40 mmPlate, the printed circuit board in 3D

    Plate

    BryceVandegrift/hot-plate

    A DIY PCB hot plate that uses through hole components

    30 parts1CERN-OHL-W-2.0
  • 2 layers92 × 45 mmL6 - P2, the printed circuit board in 3D

    L6 - P2

    AhmedAtefNasr/PCB_Course-IMT_school

    Here's the repo for Assignments & projects of PCB course from IMT school

    49 parts
  • 2 layers46 × 66 mmDoor sensor schaltplan, the printed circuit board in 3D

    Door sensor schaltplan

    Brawn1/ATTiny-Door-Sensor

    Door Sensor Battery based with Attiny84 and HC-12 Sender

    19 parts
  • 2 layersBattlecar pcb, the printed circuit board in 3D

    Battlecar pcb

    eirbot/eirbot_league

    Rocket League inspired robots

    26 partsGPL-3.0