Skip to the content
2 layers33.5 × 78.3 mmLrima main, the printed circuit board in 3D

All in one smart IoT greenhouse monitoring and managing system

Size
33.5 × 78.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
41
Nets
53
Pads
152
Tracks, vias
323, 48
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 Jun 2023
Updated
16 Oct 2026

Overview

Lrima main is an open-source printed circuit board by LRIMa-Qc, from the LRIMa-Qc/iot_obj-sicro-sensor repository on GitHub, published under the CC-BY-4.0 licence. It is a 2-layer board of 33.5 × 78.3 mm with 41 parts on 53 nets, routed with 323 tracks and 48 vias.

It is built around the STCC4-D-R3, ER10BGFBK and TLC555CD, with the TS-1101-C-W, BS-24-A1AJ008 and NCD0603R1 among its other parts. Its parts include 9 capacitors, 7 resistors, 6 ICs, 2 diodes and 1 connector.

Main components

8

README

README.md

iot_obj-sicro-sensor

Authors : LRIMa (Laboratoire de Recherche Informatique de Maisonneuve)

Repo composition

bash
code/
├── actioneur       (esp32 code)
├── broadcaster     (sensor code [nrf52833])
├── central         (python BLE scanning and ALIVEcode integration)
└── central-nrf     (BLE receiver [nrf52840dongle])
schematic/
├── lrima-main/     (Main board KiCad project)
└── lrima-ground/   (Ground board KiCad project)
models/
└── sensor-casing/  (3D CAD models for enclosure)

Physical device

The schematics and PCB were designed using KiCad EDA software There is a protective layer that needs to be applied on the ground part of the pcb to prevent corrosion

Building

Tools needed
Broadcaster
Preparing the environment

Before building the broadcaster program, you must make sure that you changed the CONFIG_BLE_USER_DEFINED_MAC_ADDR and the CONFIG_BLE_USER_DEFINED_NAME so that they are unique. Note that the CONFIG_BLE_USER_DEFINED_NAME must end with a number (ex : 01). If you need mac address, you can use this mac address generator.

Building

The broadcaster uses the sysbuild system from NCS v3.2.4. To build the program for the nrf52833 using the nRF Connect VS Code extension:

  1. Open the broadcaster folder in VS Code
  2. Use the nRF Connect extension to build using the lrima_greenhouse_nrf52833 board
  3. Flash using the extension flashing options

Note: If flashing fails, use the erase and flash option to perform a full erase first.

J-Link setup

J-Link setup J-Link setup 2 J-Link setup 3

Firmware over the air update (DFU)

The board supports over-the-air firmware updates. To prepare an update:

  1. Build the application as described above
  2. Locate the signed image in the sysbuild app domain: build/broadcaster/zephyr/zephyr.signed.bin
  3. Transfer this file to your phone
  4. Press and hold button1 until the LED is on, then release
  5. You will have up to 60 seconds (configurable via CONFIG_BLE_DFU_ADV_DURATION_SEC) to start the update
  6. Use the nRF Connect mobile app to connect to the device (named with your CONFIG_BLE_USER_DEFINED_NAME)
  7. Go to the DFU tab and select zephyr.signed.bin
  8. Press Upload and monitor the progress

Button1

Device Functionality

The broadcaster uses a single BLE advertising workflow. It sends sensor data uplink and then opens a short scan window to receive a downlink sleep update when needed. The user can wake up the device at any time by pressing button1. There is never a connection established, and all communication is done through advertisements and scan responses.

Broadcaster

The broadcaster collects sensor data and transmits it BLE advertisements:

Supported sensors:

  • Temperature/Humidity (SHT4X)
  • Soil temperature/moisture/conductivity (STCC4)
  • CO2 concentration

Transmission behavior:

  • Sends data at intervals specified by CONFIG_SENSOR_SLEEP_DURATION_SEC
  • Uses BLE advertising for the duration specified in CONFIG_BLE_ADV_DURATION_SEC
  • Publishes a 29-byte service payload containing company ID, node ID, sequence, sleep duration, sensor values, and a presence bitmap
  • Opens an active scan window after uplink to receive sleep updates sent by the central
  • Beacon payload structure is shown below:

Broadcaster data.

Note: The diagram above predates the latest payload format. See the broadcaster documentation for the full 29-byte layout and presence bitmap details.

Central-nrf

The central-nrf firmware runs on the nRF52840 dongle to receive BLE broadcasts from the broadcaster.

Building:

  1. Use the nRF Connect VS Code extension to build for nrf52840dongle_nrf52840 board
  2. Flash using the nRF Connect for Desktop programmer tools
  3. Put the device in DFU mode
  4. Flash the build/zephyr/zephyr.hex file

Central (Python Application)

The central application handles BLE scanning, data collection, and integration with ALIVEcode.

Core modules:

  • core/storage.py - Persistent data management
  • core/payload.py - Sensor data parsing and validation
  • core/aliot_sync.py - ALIVEcode cloud integration
  • core/downlink_advertiser.py - BlueZ D-Bus advertiser for sleep-time downlink frames
  • core/health.py - System health monitoring
  • core/config.py - Configuration management

Setup and running:

  1. Plug the Central-nrf dongle into a computer or Raspberry Pi

  2. Configure the application:

    • Copy config.ini.example to config.ini
    • Set your object_id and auth_token from your ALIVEcode.ca IoT project
  3. Install dependencies:

    bash
    # For Raspberry Pi 4
    pip install -r requirements_pi4.txt
    
    # For Raspberry Pi 5
    pip install -r requirements_pi5.txt

    (Using a Python virtual environment is recommended)

    dbus-next is required because downlink sleep updates are emitted through BlueZ D-Bus advertising APIs.

  4. Run the application:

    bash
    python main.py
  5. Power on the broadcaster devices

The application will automatically scan for broadcaster devices, collecting sensor data and synchronizing with ALIVEcode. It publishes each node under /doc/<device_index> including /doc/<device_index>/sleep_duration_sec, and uses /doc/sleep_time as the desired target for downlink sleep updates.

Parts

41
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
3100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC4, C5, C8
3TS-1101-C-WButton_Switch_SMD:SW-SMD_L6.0-W3.3-LS8.0BTN, RST, SW4
210kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6, R7
212pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10, C11
2470ΩResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5
2BS-24-A1AJ008PCBLIB_BAT-TH_BS-24-A1AJ013_2026-01-08:BAT-TH_BS-24-A1AJ013BT1, BT2
2NCD0603R1LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderLED1, LED2
2~Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP3, JP4
2~Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1, JP2
11.6kΩResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3
1100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1
110kΩResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
110nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2
110uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC9
110uHInductor_SMD:L_0603_1608MetricL1
12.54-1*3P母Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalP1
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
1330ΩResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2
1470pFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3
15-146277-5Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalU4
1ER10BGFBKConnector_PCBEdge:CONN-TH_10P-P2.54_WINGTAT_ER10BGFBKU3
1MSK12C02Button_Switch_SMD:SW_SPDT_PCM12SW3
1NRF_RSTPCBLIB_SMD-43_L18.0-W13.0-P1.27-E73-2G4M08S1E_2026-01-13:SMD-43_L18.0-W13.0-P1.27-E73-2G4M08S1EU2
1SHT4xFootprintsLRIma:SHT4XU5
1STCC4-D-R3Package_LGA:STCC4DR3IC1
1TLC555CDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1

More from LRIMa-Qc/iot_obj-sicro-sensor

1
  • 2 layers31.2 × 96.4 mmLrima ground, the printed circuit board in 3D

    Lrima ground

    LRIMa-Qc/iot_obj-sicro-sensor

    All in one smart IoT greenhouse monitoring and managing system

    10 partsCC-BY-4.0

Similar boards

  • 2 layers86.6 × 56 mmCard env sensor, the printed circuit board in 3D

    Card env sensor

    Liesegang/env_sensor

    Outdoorの開発・検証はファームウェア、 Web受信アプリ、BLE仕様を参照。 Card firmwareはv2基板で毎分測定・BLE送信、 10分ごとのSD一括記録、1時間ごとの電子ペーパー更新を行う。 iPhoneアプリは共通BLEで受信し、バックグラウンド収集・端末内の履歴保存・JSON / CSV書き出しを行う。 資料の一覧はデータシートにある。

    78 parts
  • 6 layers75 × 75 mmMibico RU, the printed circuit board in 3D

    Mibico RU

    mrbutterfly105/masters_thesis

    This is my master’s thesis repo.

    257 parts
  • 4 layers25 × 25 mmEnvironment, the printed circuit board in 3D

    Environment

    brown-studios/minuet

    Minuet upgrades your MAXXAIR Maxxfan with a brushless DC motor, home automation features, and accessories.

    17 parts67MIT
  • 2 layers93.6 × 55 mmNeurolab, the printed circuit board in 3D

    Neurolab

    fossasia/neurolab-hardware

    Neurolab Hardware

    174 parts1.6kApache-2.0
  • 2 layers84 × 89 mm14MHz Accelerator V2 2, the printed circuit board in 3D

    14MHz Accelerator V2 2

    Mathesar/14mhz-accelerator

    14MHz 68000 accelerator with 1MB fast ram for amiga 500

    42 parts78
  • 2 layers100 × 100 mmContact Monitor Board, the printed circuit board in 3D

    Contact Monitor Board

    niwa-yamaguchi/Contact-Monitor-Board

    スキャン出力が H になると、その ch の LED 側と MOSFET 側が同時にアクティブになります。 外部接点が閉じていれば電流が流れて LED が点灯し、開いていれば経路が切れて消灯します。 出力が L の間はゲートも L なので MOSFET が OFF になり、その ch は完全に切り離されます。

    83 partsCERN-OHL-P-2.0
  • 2 layers22 × 109 mmCapacitive soil sensor, the printed circuit board in 3D

    Capacitive soil sensor

    SolderedElectronics/Capacitive-soil-sensor-hardware-design

    Hardware design, BOM, gerbers and 3D files for Capacitive-soil-sensor designed by Soldered Electronics.

    40 parts3
  • 2 layers36.8 × 21.6 mmAudioOx Filter, the printed circuit board in 3D

    AudioOx Filter

    dolson14/k7arx

    Circuit and PCB Designs, anything else related to radio and electronics

    21 parts

Questions

How big is the Lrima main PCB?

It measures 33.5 × 78.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Lrima main use?

41 parts, built around the STCC4-D-R3, ER10BGFBK, TLC555CD and TS-1101-C-W. 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 Lrima main KiCad files?

From the LRIMa-Qc/iot_obj-sicro-sensor repository on GitHub, at the commit this page was made from: the board is schematic/lrima-main/lrima-main.kicad_pcb and its schematic schematic/lrima-ground/lrima-ground.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Lrima main design in my own project?

Its repository publishes it under the CC-BY-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).