Skip to main content

Pico Wand

A useful device for physically impaired people

info

Author: Chiorean Rebeca
My GitHub Project Link: Chiorean Rebeca
Coleague GitHub Link: Naomi Lita

Description

Pico wand is useful device for physically impaired people. It uses a MPU6050 gyroscope that detects hand movements and interacts with the objects in the house.
When pressing a push button it starts collecting the movement of your wand.
It collects movements such as:

  • moving the wand and pressing the button raises the curtain
  • holding the wand still and pressing the button lowers the curtains
    All this information is then shown on a ST7789 display.
    This device could be used in relation to common use objects for people with disabilities.
    Example of usage:
    Let’s imagine someone that is bed bound and needs to adjust their smart curtains. They will pick up the Pico Wand, press the button and move the wand, then PicoW connected to an adjusted curtain will pick up the signal and move up the curtain. This sort of implementation could be done on other objects as well: a door, a light bulb and so on.
    My project is made in colaboration with my coleague Naomi Lita. Link to her GitHub

Example of usage

Let’s imagine someone that is bed bound and needs to adjust their smart curtains. They will pick up the Pico Wand, press the button and motion the wand. Our curtain will pick up the signal and adjust accordingly.
For adjusting the intensity of a lightbulb we could implement our Pico Wand to collect circular movement. If they make a circular movement to the left the light will dim and if it is to the right we could raise the intensity.
This sort of implementation could be done on other objects as well: a door, the room temperature and so on.

Motivation

This project aims to help people with disabilities gain some of their autonomy by being able to interact with objects around them. It optimizes a normal remote by using fewer buttons with multiple functionalities, thus making a fully automated home's remote control more practical and comfortable to hold. My motivation comes from knowing that my work has directly improved someone’s ability to live independently.

Architecture

architecture

Log

Week 6 - 12 May

I created the documentation of the project. I prototyped the hardware and the software and I experimented with the MPU6050 sensor module. I also looked for any additional components that were needed.

Week 7 - 19 May

I completed the hardware connections and the KiCad schematic. In addition, I revised the project documentation (the architecture schematic and its content). I trained an Edge Impulse model for the MPU6050 and exported it as a C++ library and tested it in C++ code.

Week 20 - 26 May

I made changes to the final project. I substituted the SSD1306 for a ST7789 display, and I excluded the Edge Impulse model and instead used the get_motion_detected(&mut self) function of the MPU6050 crate. This week we also finished setting up the WiFi connection and the 3D printed scale model of the roller blinds.

Hardware

The MPU6050 Accelerometer and Gyroscope sensor takes the wand movement input. When the pushbutton is pressed, our PicoW takes the provided input and it detects movement. The PicoW also sends the movement information to another PicoW connected to it by wifi. If movement is detected then it sends the message for the roller blinds to roll upwards. If there is no movement detected when the button is pressed then my PicoW sends the message for the roller blinds to roll down. The second PicoW is the one connected to smart devices and will interact with them.

The pushbutton signals the start of the data reading process from the MPU6050 sensor. It uses a simple GPIO connection, as follows:

  • not pressed -> GP20 is HIGH
  • pressed -> GP20 is LOW
    It is connected using a pull-up resistor(of 10kΩ) between the input pin and Vcc to keep the voltage HIGH when the button is not pressed.

The MPU6050 sends data to the first PicoW. It uses a I2C connection as follows:

  • SDA -> GP0
  • SCL -> GP1
    The data sent is then interpretetd by our PicoW with the help of the get_motion_detected(&mut self) function of the MPU6050 crate.

The ST7789 shows the direction of the roller blinds after it has been interpreted by our PicoW. It uses SPI connection as follows:

  • MISO -> GP4
  • MOSI -> GP19
  • CLK -> GP18
  • CS -> GP17
  • rst -> GP0
  • dc -> GP16
    The information is then sent through WiFi connection to a second PicoW (Naomi's project).

Schematics

KiCad schematic

Pictures of hardware

This shows the finished hardware as presented at PM Fair. The display shows an "Welcome" message when it starts up and finishes connecting to WiFi. It also displays messages such as "Rolling Up" and "Rolled Up!" and the pair of "Rolling Down" and "Rolled Down!".

PicoWand hardware picture


The following image shows the 3D printed model that we used.


3D printed design


This is the final product presented at PM Fair.


Full project

Bill of Materials

DeviceUsagePrice
Rapspberry Pi Pico WThe microcontroller35 RON
MPU6050 Accelerometer and Gyroscope ModuleAccelerometer sensor15,49 lei
LCD ST7789Display149,00 lei
BreadboardPrototyping9,98 lei
Jumper WiresConnecting components4,99 lei
Pushbutton switch 12mmSignals the begining of the data collecting process1,99 lei

Software

LibraryDescriptionUsage
ST7789Display driver for ST7789Used for the display
embedded-graphics2D graphics libraryUsed for drawing to the display
MPU6050Platform agnostic driver for MPU6050 6-axis IMUUsed for reading the accelerometer and gyroscope
cyw43Rust driver for the CYW43439 wifi chipUsed for the WiFi implementation
cyw43-pioDriver for the nonstandard half-duplex SPI used in the PicoWUsed for the WiFi implementation
  1. Hand Gesture Recognition for Numbers using TinyML
  2. Motion Recognition Using Raspberry Pi Pico
  3. Raspberry Pi Pico and Edge Impulse
  4. Using a screen display to output the movement