Internet of Things
TinkerforgeCode in ActionAbout Me
  • Course Outline
  • 1 - Getting Started
    • Overview
    • Connect to the LED
    • Getting Started
      • Glitch
      • The Application Template
    • Concepts in Programming
      • What is Programming?
      • Variables
      • Functions and Commands
      • Control Structures
      • Loops
      • Objects and Libraries
    • Programming Simple Web Apps
    • Exercises
      • 1.1 Buttons and Inputs
  • 2 - Internet of Things
    • Overview
    • IoT in our Apps
      • Getting Started
        • Hardware Kit
        • Brick Viewer and Daemon
      • Connect to the Devices
        • The Tinkerforge Device Manager
      • Program the Devices
        • RGB LED
        • RGB LED Button
        • OLED Display
        • Sensors
          • Humidity Sensor
          • Ambient Light Sensor
    • Components and Use Cases
    • Exercises
      • 2.1 Lights and Buttons
      • 2.2 Sensors
      • 2.3 Display
  • 3 - Artificial Intelligence
    • Overview
    • AI in our Apps
      • Google's Teachable Machine
      • Face Recognition
      • Training a Custom Model
    • Rules vs. Learning
    • Learning from Data
    • Use Cases
      • Computer Vision
        • Image Classification
        • Handwriting Recognition
    • Machine Learning Algorithms
      • Artificial Neural Networks
      • Decision Trees
      • Logistic Regression
    • Exercises
      • 3.1 Rules vs. Learning
      • 3.2 Fruits and Vegetables
      • 3.3 Face Recognition
      • 3.4 A Classifier for Iris
  • 4 - Cloud & APIs
    • Overview
    • APIs in our Apps
    • Cloud and APIs
      • Weather API
      • NASA Open APIs
      • EDAMAM Nutrition and Recipes API
    • Push Notifications
    • Exercises
  • 5 - App Project
    • Overview
    • Summer 2021
    • Summer 2022
  • Appendix
    • Other Devices
      • Motorized Linear Poti
      • Sound Pressure Sensor
      • NFC Reader
      • Motion Detector
    • UI Features
      • Realtime Charts
      • Countdown Timer
    • Digital Computers
      • Overview
      • The Binary System
      • Code Systems
      • Logic Gates
      • Binary Addition
      • From Analog to Digital
    • Cheat Sheets
    • Projects
      • IoT @ Pickup-Boxes
Powered by GitBook
On this page
  • Smart Blinds Control
  • Epic 1: Control the blinds manually
  • Epic 2: Smart control of the blinds
  • Hints
  • Project template
  • The Blind's API
  • Perform time-based checks
  • Temperature or light?

Was this helpful?

  1. 5 - App Project

Summer 2022

The problem description for the app project in the summer term 2022.

PreviousSummer 2021NextOther Devices

Last updated 3 years ago

Was this helpful?

Smart Blinds Control

For the project of this semester, you are going to build a smart blinds control system that offers gesture recognition as well as control via buttons. The user is presented with a graphical user interface (GUI), which contains the live webcam image, three buttons up, down and stop to control the blinds, as well as an animation of the blinds to show the current position (see below). Aside from the GUI, the user should be able to control the blinds from a hardware button installed next to the blinds. To prevent the room from overheating, the application should automatically close or open the blinds, depending on a preset temperature or light threshold. How far the blinds close should be proportional to the room temperature or the light level.

Epic 1: Control the blinds manually

  • 1.1: The user should be able to move the blinds up and down using buttons on the GUI. A third button should allow the user to stop the blinds at any position in between.

  • 1.2: In addition to the HTLM buttons from 1.1, the user can alternatively use the hardware button to control the blinds. The first time the user presses the button, the blinds close. The next time, the blinds stop. The third push of the button causes the blinds to go up, and the circle repeats.

  • 1.3: At any time, the user can check the current position of the blinds as a number between 0 (up) and 100 (all the way down) shown on the GUI. The value should update every 500 milliseconds. The user can see the same information on the OLED display as well.

  • 1.4: The RGB LED informs the user about the current operation of the blinds. It should blink green when the blinds go up and red when they are closing. The LED should stay lit in the respective color when the blinds are up (green) or down (red).

  • 1.5: The user should be able to use three different gestures captured by the webcam to control the blinds. A first gesture, for example thumbs-up, should make the blinds go up. A second gesture moves the blinds down, and a third stops them.

Epic 2: Smart control of the blinds

  • 2.1: When the light or temperature sensor exceed a threshold, the blinds should automatically close to a certain degree. The degree depends upon how far the threshold has been exceeded and should be proportional to the value. Find an appropriate formula to calculate the position of the blinds depending on the temperature/light value.

  • 2.2: The user should be able to check the current temperature/light value at any given time on both, the GUI and the OLED display.

  • 2.3.: The user should be able to set the temperature/light threshold using an input field and a button.

  • 2.4: The user can program the blinds to close or open at a certain time of the day. Therefore, the user enters a time (e.g., 19:00) and chooses the desired position of the blinds for that time as a value from 0 to 100. When the time comes, the blinds automatically move to the desired position.

Hints

Project template

Use the following Glitch project as a template for your solution. Click on the link and remix the project:

The Blind's API

You can use the blind's API to perform the following operations:

  • blindsUp() - start moving the blinds upwards

  • blindsDown() - start moving the blinds downwards

  • blindsStop() - stop the blinds

  • blindsGetPosition() - get the current position of the blinds (0 - 100)

Perform time-based checks

You can use setInterval() to perform a check every X milliseconds.

Temperature or light?

Depending on the sensor you have at hand, you can either use the temperature or the ambient light sensor. Make sure you find appropriate ranges for the automatic control via the sensor's values in both cases.

Glitch: The friendly community where everyone builds the webglitch
Logo
The animated blinds in the app template.