element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Forget Me Not Design Challenge
  • Challenges & Projects
  • Design Challenges
  • Forget Me Not Design Challenge
  • More
  • Cancel
Forget Me Not Design Challenge
Blog [CaTS] ForgetMeNot - Final Project Summary
  • Blog
  • Forum
  • Documents
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: fvan
  • Date Created: 23 Oct 2014 8:34 PM Date Created
  • Views 2782 views
  • Likes 4 likes
  • Comments 7 comments
  • forget_me_not
  • design_challenge
  • openhab
  • tektronix
  • rpisoc
  • iot_pet_care
  • eclipse
  • winners
  • internet_of_things
  • enocean
  • cats
  • raspberrypi
  • smarthome
  • challenge
  • iot
  • enocean_pi
Related
Recommended

[CaTS] ForgetMeNot - Final Project Summary

fvan
fvan
23 Oct 2014

Previous posts for this project:

  • [CaTS] ForgetMeNot - Index
  • [CaTS] ForgetMeNot - Week 0: Project Description
  • [CaTS] ForgetMeNot - Week 1: EnOceanPi and Sensors
  • [CaTS] ForgetMeNot - Week 2: Elro CoCo and Pi Cam with OpenHAB
  • [CaTS] ForgetMeNot - Week 3: Data persistence and charts with OpenHAB
  • [CaTS] ForgetMeNot - Week 4: Arduino-OpenHAB communication
  • [CaTS] ForgetMeNot - Week 5: Getting familiar with EAGLE
  • [CaTS] ForgetMeNot - Week 6: Getting to know the TBS1052B-EDU oscilloscope
  • [CaTS] ForgetMeNot - Week 7: First tests with RPiSoC
  • [CaTS] ForgetMeNot - Week 7 (2): More testing with RPiSoC
  • [CaTS] ForgetMeNot - Week 8: Water dispenser and temperature
  • [CaTS] ForgetMeNot - Week 9: RFID Cat detection and identification
  • [CaTS] ForgetMeNot - Week 10: Peltier cooling experiment
  • [CaTS] ForgetMeNot - Week 11: Starting the build
  • [CaTS] ForgetMeNot - Week 11 (2): Continuing the build
  • [CaTS] ForgetMeNot - Week 12: Finalising a few things
  • [CaTS] ForgetMeNot - Week 12 (2): Finalising even more things
  • [CaTS] ForgetMeNot - 3D Printing: EnOcean sensor bracket
  • [CaTS] ForgetMeNot - 3D Printing: EnOcean rocker switch and magnet holder
  • [CaTS] ForgetMeNot - 3D Printing: Food dispenser prototype
  • [CaTS] ForgetMeNot - 3D Printing: Weighing scale
  • [CaTS] ForgetMeNot - Security: Some basic tips
  • [CaTS] ForgetMeNot - Minion: Dave, the gassy minion
  • [CaTS] ForgetMeNot - Pi Camera: Wide Angle Lens

 

  • Introduction
  • Project Information
    • Hardware Components Overview
      • Raspberry Pi
      • RPiSoC
      • EnOceanPi
      • Arduino UNO
      • ATtiny85
    • Software Components Overview
      • openHAB
      • MySQL Server
      • motion
      • Python
    • DIY Components Overview
      • 3D Printing
      • Circuits
      • Enclosure
    • User Interface Overview
    • The Result
  • Source Files
  • Thank you

 

Introduction

 

This will be my final post in the Forget Me Not Design Challenge. The project is finished and the deadline has been met. *pfiew*

I'll try to illustrate as best as I can what has been achieved over the past 12 weeks and what the final result of all this work has become.

 

Project Information

 

The [CaTS] project aims to solve following issues:

  • easily turn off all appliances when leaving home using a master switch
  • monitor rooms' temperature and ensure the important doors are closed
  • automatically feed the cats and keep track of their habits

 

More information on the original project description can be found here: [CaTS] ForgetMeNot - Week 0: Project Description

 

Hardware Components Overview

 

A lot of different components were used in this project. I have attempted to create a clear overview of how all components are logically interconnected.

 

As visualised below, the Raspberry Pi is at the center of this project. Sensors are connected either directly to the Pi or offloaded to another device which is controlled by the Pi. Various communication types have been used, depending on the device/sensor's capabilities.

 

image

 

 

Raspberry Pi

 

The Raspberry Pi can be considered as the "master controller" of this project. It hosts the software and interfaces with the different subcomponents.

 

Everything is connected to the Pi, making use of the GPIO pins or USB ports.

 

RPiSoC

 

The RPiSoC simplified a lot for my project. Because of the wide variety of functions, all controllable through a Python API, I was able to implement various features easily.

 

The RPiSoC drives the following components:

  • a servo motor for the food dispenser
  • a DC-DC step-up converter's enable pin using a digital output to control a solenoid valve
  • a peltier by means of a PWM signal and a MOSFET
  • two load cells using INA125P instrumentation amplifiers and two onboard SAR ADCs

 

The RPiSoC is an interesting add-on, complementing the Pi's GPIO with a bunch of new features.

 

EnOceanPi

 

The EnOceanPi serves as a gateway between the Raspberry Pi and the EnOcean sensors: rocker switch, temperature, humidity or contact.

It communicates with the Raspberry Pi using the serial interface on the Pi's GPIO.

 

The EnOceanPi and sensors take care of:

  • monitoring doors being closed or not
  • monitoring room temperatures
  • have a master switch, controlling other non-EnOcean hardware

 

At some point during the challenge, we received an EOP 350 board and a TCM 320. Unfortunately, I had not originally counted on this part and hadn't planned it in the project execution.

I do however plan to spend time exploring it, once the challenge is over and more time becomes available.

 

Arduino UNO

 

The Arduino is in charge of two things:

  • reading the status of two RFID readers and pass it to the Raspberry Pi using the serial interface
  • listen to serial commands to turn the camera lighting on or off

 

The good thing about Arduino, is that there is a library for about everything. This simplifies things a lot.

This is why I chose to use the Arduino for the RFID readers: I got both RFID readers up and running in a very short amount of time.

 

Both RFID readers connect to the Arduino via SPI. The Arduino detects if a tag is in front of any (or both) of the readers and passes those results to the Raspberry Pi using a serial connection over USB.

 

For the lighting, I used a NeoPixel ring. Because it is a ring, it is easily installed around the camera lens, resulting in a nice solution.

As with the RFID readers, a library is available to control these.

 

ATtiny85

 

This is a custom circuit I made to control wireless power sockets. It combines an ATtiny85 accessible over I2C, which controls a 433MHz transmitter.

By means of a library, it sends out the proper codes to turn sockets on and off, wirelessly.

 

Software Components Overview

 

On the software side, some major components have been used, which then rely on scripts or subcomponents to get the different functionalities covered.

 

On the Raspberry Pi, 4 core components are used:

  • openHAB
  • MySQL Server
  • motion
  • Python

 

On the Arduino, 3 libraries are used:

  • SPI
  • MFRC522
  • NeoPixel

 

Here's an overview:

image

 

Let's go into more detail on each software component.

 

openHAB

 

Just like the Raspberry Pi is at the center of the hardware components, openHAB is at the center of the software components.

openHAB offers an easy to customise GUI, powerful rules engine and a wide variety of bindings and actions.

 

The installation of openHAB is covered in full detail here: [CaTS] ForgetMeNot - Week 1: EnOceanPi and Sensors

 

A handful of add-ons are used by openHAB in order to perform the required actions and data collection.

 

The add-ons used in this particular project are the following:

  • exec binding: is used to execute python scripts to get or set values from sensors
  • enocean binding: controls all enocean sensors described in the hardware components
  • serial binding: is used to interface with the Arduino UNO
  • mysql persistence: ensures all sensor data is persisted for trending
  • prowl action: takes care of push notifications

 

MySQL Server

 

The MySQL server is used for persistence of data from openHAB. I have selected this database type because it is the one I am most familiar with for deployment and troubleshooting.

Setting up the MySQL server and persistence in openHAB is covered in detailed in following blog post: [CaTS] ForgetMeNot - Week 3: Data persistence and charts with OpenHAB

 

motion

 

The motion application takes the video stream from the Pi camera and converts it to an MJPEG stream, which can then be embedded in openHAB.

 

For more details, see: [CaTS] ForgetMeNot - Week 2: Elro CoCo and Pi Cam with OpenHAB

 

Python

 

Python scripts are used to perform actions for which there is no suitable binding/action in openHAB.

By making use of openHAB's exec binding, the different scripts can be triggered to set or get values, depending on their purpose.

 

I have created following set of scripts:

  • cats_scale.py: read the voltage from the RPiSoC's SAR ADC and convert it to weight
  • cats_foodpy: control a servo via the RPiSoC to actuate the food dispenser
  • cats_water.py: control a DC-DC step-up converter to actuate the water dispenser's solenoid valve
  • cats_cooling.py: control a MOSFET driving the peltier element using a PWM signal generated by the RPiSoC
  • cats_rf433.py: control wireless power sockets by sending commands to an ATtiny85 driving a 433MHz transmitter
  • cats_temperature.py: read the temperature of a 1-wire sensor connected to the Pi's GPIO

 

The full set of scripts can be found on GitHub for reuse: https://github.com/fvdbosch/ForgetMeNot/tree/master/python

 

 

DIY Components Overview

 

Some parts needed to be created in order to be able to combine everything into a single solution.

 

3D Printing

 

3D printing is fun, that's for sure. But in this project, I tried to demonstrate that it can also be very functional.

A lot of parts have been designed and printed, ranging from clips for EnOcean sensors, weighing platforms for load cells or even mounting plates for RFID readers.

 

I've made a small collage of some of the parts.

image

 

Circuits

 

In order to interconnect the different hardware components, I had to create some small circuits.

 

The different circuits are:

  • a power splitter: using a single power supply, up to six devices can be connected either via USB or screw terminal
  • a GPIO splitter: the splitter was required to make certain pins of the GPIO header available to different components
  • a RPiSoC shield: the shield is used to connect two load cells to the RPiSoC using two instrumentation amplifiers. It also provides connection for a servo motor.
  • a NOT gate: to drive the water dispenser's solenoid valve, an inverted pin is required in order to avoid problems in case of reset of the RPiSoC
  • a peltier driver: using a MOSFET and a PWM signal, a high current device such as a peltier can be controlled variably

image

 

Enclosure

 

Every project deserves a nice enclosure/build. This project is no different.

 

I the last weeks, I started building the frame and installing the electronics, using the 3D printed parts.

image

Both home automation and pet care system components have been integrated in the enclosure, resulting in a single solution with many capabilities.

 

User Interface Overview

 

The user interface is created using openHAB. It consists of two main parts: house automation and pet care system.

 

Here are some screens:

imageimage

imageimage

imageimage

 

 

The Result

 

After 12 weeks of coding, building, blogging and figuring things out, I am proud to present the result of all that work:

image

Click on the picture above to get a 360° view of the build!

 

I've also made two little video montages to demonstrate the pet care system's features and the home automation part of the project.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

 

Source Files

 

All files I have created (scripts, config files, 3D models) have been put on GitHub. Feel free to download and reuse them for your own project!

Improvements are obviously welcome too image

 

You can find the full repository here: https://github.com/fvdbosch/ForgetMeNot

 

 

Thank you

 

Finally, I'd like to thank doctorcdf, element14 and all the sponsors for their help and the opportunity to participate in this incredible challenge.

It's been a long but satisfying journey with a lot of experimenting, learning, sharing and even getting married ...


image

 

There were also a few pleasant surprises along the way:

- the challenge within a challenge: the Minion of the week

- the exclusive RPiSoC prototypes giveaway

imageimage

 

I hope you have enjoyed tagging along as I made progress with my project! Thank you, and see you in a new challenge!

  • Sign in to reply

Top Comments

  • mcb1
    mcb1 over 10 years ago +1
    Nice job. Here's me thinking it was for keeping your cats entertained, and in reality it was for your kids ... I think we need those T-Shirts printed. Mark
  • michaelwylie
    michaelwylie over 10 years ago in reply to fvan +1
    Cookie robots, I said cookie robots.
  • shabaz
    shabaz over 10 years ago +1
    Hi Frederick, This is a great summary, and very well polished final solution!! I didn't initially think it would be feasible to monitor cats in such detail, but you've solved so many technical challenges…
  • fvan
    fvan over 10 years ago in reply to shabaz

    Hi shabaz,

     

    thank you very much! It was a bit stressful at the end, but I'm glad I managed to finish everything before the deadline!

     

    Frederick

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 10 years ago

    Hi Frederick,

     

    This is a great summary, and very well polished final solution!! I didn't initially think it would be feasible to monitor cats in such detail, but you've solved so many technical challenges, and made the result function well and look good too, inside the product and outside.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mcb1
    mcb1 over 10 years ago in reply to fvan

    Depends if they complained ....

     

    However your cats may well not like the competition..image

     

    Mark

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • fvan
    fvan over 10 years ago in reply to michaelwylie

    Oh ...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • michaelwylie
    michaelwylie over 10 years ago in reply to fvan

    Cookie robots, I said cookie robots.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube