Skip to the content
4 layers38 × 65 mmFelineWatchdog, the printed circuit board in 3D

An ESP32-based system to alert you when your cat goes missing. Monitors Wi-Fi connection between your cat's collar-mounted ESP32 device and an embedded system. Notifications sent to your iOS or Android device using ntfy and Docker. Peace of mind for cat owners.

Size
38 × 65 mm
Copper layers
4
Thickness
1.6 mm
Parts
33
Nets
58
Pads
126
Tracks, vias
149, 25
Pours
4
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
3 May 2024
Updated
17 Jan 2025

Overview

FelineWatchdog is an open-source printed circuit board by Paschalis, from the Paschalis/FelineWatchdog repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 38 × 65 mm with 33 parts on 58 nets, routed with 149 tracks and 25 vias.

It is built around the ESP32-S3, AMS1117-3.3 and DW01A, with the TP4056, SS14 and FS8205A among its other parts. Its parts include 10 resistors, 5 capacitors, 5 diodes, 4 ICs and 4 connectors. It belongs with the radio and wireless boards and the ESP32 boards of this library.

Main components

6

README

README.md

🐱 Feline Watchdog: Missing Cat Alert System

ProjectImage

Feline Watchdog is an ESP32-based system designed to monitor the Wi-Fi connection between your cat's collar-mounted ESP32 device and your home network. If the Wi-Fi connection is lost, indicating that your cat may have wandered out of range, the system sends a notification to your iOS or Android device using the ntfy Linux tool.

Overview

Have you ever worried about your cat wandering too far from home? Feline Watchdog provides peace of mind by alerting you when your cat goes missing. By monitoring the Wi-Fi connection between your cat's collar-mounted ESP32 device and your home network, Feline Watchdog can detect when your cat is out of range and send you an alert notification on your mobile device.

🔧 Prerequisites

  • ESP32 microcontroller
  • Raspberry Pi (Optional)
  • Docker (if using Raspberry Pi)
  • Router (if not using Raspberry Pi)

Embedded System Configuration

Alt Text

Two implementations of Embedded System Configuration

Option 1: With Raspberry Pi

  1. Setting Up a Wi-Fi Hotspot on Embedded System

    • For detailed instructions on setting up a Wi-Fi hotspot on your embedded system, please refer to the Wi-Fi Hotspot Setup Instructions.

    • Use the provided bash script using the nmcli tool to create a Wi-Fi hotspot on the Raspberry Pi.

    bash
    bash create_hotspot.sh

    or

    bash
    ./create_hotspot.sh
  2. Install Docker on your Raspberry Pi

bash
sudo docker --version
Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3
bash
docker run \
  -v /var/cache/ntfy:/var/cache/ntfy \
  -v /etc/ntfy:/etc/ntfy \
  -p 80:80 \
  -itd \
  binwiederhier/ntfy \
    serve \
    --cache-file /var/cache/ntfy/cache.db

📡 ESP32 Configuration and Notification Setup

Option 1: Using Raspberry Pi as a Wi-Fi Hotspot

  1. ESP32 Configuration

    • Upload the cat.ino code to your ESP32.
    • The ESP32 will connect to the Wi-Fi hotspot created by the Raspberry Pi.
    • Once connected, the assigned IP address will be printed to the serial monitor.
  2. Raspberry Pi Monitoring and Notification

    • The Raspberry Pi continuously monitors the connection status of the ESP32.
    • If the connection is lost, it triggers a notification using ntfy.

Option 2: Direct Connection to Router

For a basic example of using NTFY with ESP boards, check out the ntfy_on_a_chip repository. It provides a foundational setup for communicating with the NTFY server and can be adapted for various projects, including this.

  1. Connect ESP32 Directly to Router

    • Configure your ESP32 to connect directly to your home Wi-Fi network (router).
  2. ESP32 Configuration

    • Upload the cat.ino code to your ESP32.
    • The ESP32 will connect to the specified Wi-Fi network and print the assigned IP address to the serial monitor.
  3. Notification Setup

    • Set up ntfy or another notification service on a server or computer within your home network.
    • This service will monitor the connection status of the ESP32.
    • If the connection is lost, it triggers a notification using ntfy or a similar service.

Notes

  • Ensure that your network's firewall settings allow communication between the ESP32 and the notification service.
  • Configure ntfy or your chosen notification service according to the service's documentation for optimal performance.

🔩 PCB Design

Dual Power Sources: Li-ion Battery and USB

This setup allows the ESP32 to be powered either by a Li-ion battery or directly from a USB source via a voltage regulator.

Li-ion Battery Connection

  • The Li-ion battery is connected to the BATT+ and BATT- terminals of the charger module.
  • BATT+ from the charger module is connected to the 3.3V input of the ESP32 through a Schottky diode.
  • BATT- is connected to the GND of the ESP32.

USB Power Connection (For Re-programming)

  • The 5V line from the USB is connected to the VIN of the voltage regulator.
  • GND from the USB is connected to the GND of the voltage regulator.
  • The 3.3V output of the voltage regulator is connected to the 3.3V input of the ESP32 through a Schottky diode.

Screenshots from KiCad:

Alt Text

Screenshots from Fusion 360:

Important Notes

  • Schottky diodes are used to prevent backfeeding between the battery and USB power sources.

🏗️ 3D Design

Screenshots from Fusion 360: Alt Text

3D Printed Case

Screenshots of the printed 3D case: Alt Text

To Do

  • Implement notification functionality using ntfy for sending alerts to iOS or Android devices.
  • Implementation without a middle point such as Raspberry Pi, but directly with a router and ESP32.
  • Lower power consumption.
  • Implement HTTP communication method for sending alerts to a designated endpoint.
  • Implement MQTT communication method for publishing messages to a specific topic on an MQTT broker.
  • Ensure seamless integration of these functionalities within a Docker container on the Raspberry Pi.
  • Document setup and configuration steps for each notification method.
  • Test and validate the system's functionality across different scenarios.
  • Gather feedback and suggestions from users for further enhancements.

🧑‍💻 Authors

  • Katerina Antoniou

  • Paschalis M.

👥 Contributors

Contributions are welcome! Feel free to submit pull requests or open issues if you encounter any problems.

🙏 Acknowledgements

  • A special thanks to the ntfy_on_a_chip repository by Gerge. The example code and documentation provided were instrumental in implementing the direct connection option for the Feline Watchdog project. The guidance on using NTFY with ESP boards and the detailed explanation of HTTPS communication enabled us to streamline our setup by connecting the ESP32 directly to a router without needing an intermediate server like a Raspberry Pi. Your work greatly facilitated our development process and contributed to the success of the Feline Watchdog system. Thank you!

  • We would also like to acknowledge the creators of the ntfy app. The app’s simplicity and functionality made it easy to send and receive notifications, which is a core feature of the Feline Watchdog system. The ability to integrate it seamlessly into our project greatly enhanced its effectiveness.

📜 License

This project is licensed under the GPLv3 License - see the LICENSE file for details.

  • License: GPLv3

Thank you for visiting FelineWatchdog! ✨

Parts

33
QtyValueFootprintReferences
310uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3, C4
210kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R12
21kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR10, R11
25k1Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2, R3
2LOGOcat:catG***, G1
2SS14Diode_SMD:D_SMA_HandsolderingD1, D2
10.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC6
10.1ufCapacitor_Tantalum_SMD:CP_EIA-1608-08_AVX-JC1
1100Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR13
11MResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7
11kResistor_SMD:R_0805_2012MetricR14
1220Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR9
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1Conn_01x02_PinConnector_PinHeader_1.00mm:PinHeader_1x02_P1.00mm_HorizontalJ3
1Conn_01x02_SocketConnector_JST:JST_EH_S2B-EH_1x02_P2.50mm_HorizontalJ2
1Conn_01x04_SocketConnector_PinHeader_1.00mm:PinHeader_1x04_P1.00mm_HorizontalJ12
1DW01ADW01A:SOT95P280X145-6NU4
1ESP-32Sul_ESP-32S:ESP-32S_AITU5
1FS8205Aul_FS8205A:SOT-23-6L_TCP-LQ2
1GREENLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD5
1LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD3
1LOGOQRcat:QRcatG2
1REDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD4
1RESETVeisLibrary:MySwitch_SW_SPST_PTS647_Sx50SW1
1TP4056TP4056:SOP127P600X175-9NU3
1USB_C_Receptacle_PowerOnly_6PConnector_USB:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_HorizontalJ1

Similar boards

  • 2 layers96.2 × 62.4 mmHearingAid ESP, the printed circuit board in 3D

    HearingAid ESP

    AveryLion03/HearingAid

    Plan II Thesis - Avery Atchley

    108 parts3
  • 4 layers62 × 46.9 mm4LayerLabProject, the printed circuit board in 3D

    4LayerLabProject

    ZharbolatDinmukhamed/Haptic-Glove-PCB

    A wrist-mounted PCB for a haptic feedback glove, developed as part of my Research Assistantship at the Tactile Laboratory, Nazarbayev University.

    122 parts
  • 2 layers61 × 61 mmESP32 FC, the printed circuit board in 3D

    ESP32 FC

    MAATHES-THILAK-K/ESP32-S3_FLIGHT_CONTROLLER

    A custom-designed flight controller based on the ESP32-S3 module, built for compatibility with the esp-fc firmware and Betaflight-like configuration.

    69 parts7Apache-2.0
  • 2 layers150 × 40 mmBicopter, the printed circuit board in 3D

    Bicopter

    InputBlackBoxOutput/Bicopter

    Design files for a PCB Bicopter

    79 parts1MIT
  • 4 layers90 × 98 mmConvention badge pcb v2, the printed circuit board in 3D

    Convention badge pcb v2

    BrandonFors/convention_pcb_badge

    Design for a custom pcb badge for opensauce convention and maybe other conventions in the future.

    57 parts
  • 2 layers78 × 37 mmAkku 3V3 Versorgung, the printed circuit board in 3D

    Akku 3V3 Versorgung

    yvolodym/18650-3v3-supply

    KiCad: stabile 3,3-V-Versorgung aus 18650-Li-Ion-Akku – TP4056-Ladung, DW01A/FS8205A-Schutz, MT3608-Boost, AP2112K-LDO

    32 partsCERN-OHL-S-2.0
  • 4 layers32.3 × 23.3 mmSmart Watch, the printed circuit board in 3D

    Smart Watch

    dharahaas23/ESP32-Smart-Watch

    A round, wrist-worn smart watch built around the ESP32-WROOM-32, with heart-rate sensing, a circular color display, USB-C charging, and a custom PCB antenna — designed as part of the #30DaysOfPCB progression from…

    46 parts
  • 2 layers61 × 61 mmVael, the printed circuit board in 3D

    Vael

    dialgorithm/vael

    esp32s3 flight controller

    66 parts

Questions

How big is the FelineWatchdog PCB?

It measures 38 × 65 mm and has 4 copper layers, 1.6 mm thick.

What parts does the FelineWatchdog use?

33 parts, built around the ESP32-S3, AMS1117-3.3, DW01A and TP4056. 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 FelineWatchdog KiCad files?

From the Paschalis/FelineWatchdog repository on GitHub, at the commit this page was made from: the board is Step 2: PCB Design/FelineWatchdog.kicad_pcb and its schematic Step 2: PCB Design/FelineWatchdog.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the FelineWatchdog design in my own project?

Its repository publishes it under the GPL-3.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).