Pico Wand
A useful device for physically impaired people
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
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
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!".
The following image shows the 3D printed model that we used.
This is the final product presented at PM Fair.
Bill of Materials
Device | Usage | Price |
---|---|---|
Rapspberry Pi Pico W | The microcontroller | 35 RON |
MPU6050 Accelerometer and Gyroscope Module | Accelerometer sensor | 15,49 lei |
LCD ST7789 | Display | 149,00 lei |
Breadboard | Prototyping | 9,98 lei |
Jumper Wires | Connecting components | 4,99 lei |
Pushbutton switch 12mm | Signals the begining of the data collecting process | 1,99 lei |
Software
Library | Description | Usage |
---|---|---|
ST7789 | Display driver for ST7789 | Used for the display |
embedded-graphics | 2D graphics library | Used for drawing to the display |
MPU6050 | Platform agnostic driver for MPU6050 6-axis IMU | Used for reading the accelerometer and gyroscope |
cyw43 | Rust driver for the CYW43439 wifi chip | Used for the WiFi implementation |
cyw43-pio | Driver for the nonstandard half-duplex SPI used in the PicoW | Used for the WiFi implementation |