A very simple portable "Sidekick" Bot powered by an IMU(ADXL345) on ESP32 using MicroPython
A simple expressive home-made Open-Source Buddy made with lying-around hobbyist parts, powered by an ESP32 Development Board. Thanks to this, it will be infinitely hackable, allowing end users to install their own firmware or features if they wish.
Loosely inspired by tamagotchi and community-made desk toys, it will react to its surroundings through gyro movement, and expresses itself accordingly through the display and more!
Note
Project state: WIP v0
Project Homepage: https://meetsidekick.tech Project Code: https://github.com/MeetSidekick/code
git clone https://github.com/MeetSidekick/code MeetSidekick-codecd MeetSidekick-codeInstall pixi tool from the official link: https://pixi.sh/latest/#installation
Easy Setup Commands(Subject to change)
-
Linux/MacOS (Close and Reopen shell after it's done installing)
curl -fsSL https://pixi.sh/install.sh | sh -
Windows
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex"
OR
Releases(has installer packages): https://github.com/prefix-dev/pixi/releases/latest
x86_64 Installer: https://github.com/prefix-dev/pixi/releases/latest/download/pixi-x86_64-pc-windows-msvc.msi
pixi installpixi run uploadgit clone https://github.com/MeetSidekick/code MeetSidekick-codecd MeetSidekick-codegit clone https://github.com/stlehmann/micropython-ssd1306 lib/lib/.gitignore
lib/README.md
lib/sdist_upip.py
lib/setup.py
lib/.git
(adjust commands for other systems/shells)
Bash:
rm -rf lib/.git lib/.gitignore lib/README.md lib/sdist_upip.py lib/setup.pyCmd/Powershell:
rmdir /s /q "lib\.git"
del "lib\.gitignore"
del "lib\README.md"
del "lib\sdist_upip.py"
del "lib\setup.py"
Tip
Automating this with mpremote would be prudent. Check out upload-to-esp32.py in this folder, this is done automatically. Here are the steps to do it manually:
- Open Folder in Thonny
- Upload lib folder
- Upload
.pyfiles
Normal Sidekick! It will react to surroundings
This allows the user to:
- Mute/Unmute
- Switch Personality Cores
- Execute User Code
- Enter Dashboard Mode(Starts web server, first seen on first boot and when called)
- Wipe Stuff(User Code, Settings, etc)
With this, any user can place files called custom_code_CodeTitle.py, where the title of the program to be detected in the Code Loader is CodeTitle(change this to your liking). See next section for builtin examples.
- DeviceTemp
- Demo program to output the builtin temp sensor on the chip. NOT ACCURATE!
- Pomodoro Timer
- A simple pomodoro timer to keep breaks.
- Stopwatch
- A simple stopwatch for temporary counting.
- WifiScan
- Scan nearby Wifi SSIDs
- Rhythm Game using two buttons
- Flappy Clone
- Dino
Pin assignment for ESP32 and IMU/Display:
VCC -> 3v3
GND -> GND
SCL -> GPIO 5
SDA -> GPIO 4
Tip
(You can change SCL pin and SDA pin in file main.py line 36)
Pin assignment for ESP32 and Buzzer:
GPIO 8 -> Buzzer Terminal
GND -> Buzzer Terminal
Tip
(You can change buzzer pin in file pin_values.py line 5)
Warning
Touch Pin is disabled for now! This needs more testing and work...
Pin assignment for ESP32 and Touch Pin(For registering hold data):
GND --(Resistor with 10kOhm)--> Pin A3 -> Metal Contact
Tip
(You can change touch pin in file pin_values.py line 4)
Pin assignment for ESP32 to Menu Pin:
GPIO 1 -> GND
Tip
(You can change enable pin in file pin_values.py line 3)
Pin assignment for ESP32 to OK Pin:
GPIO 0 -> GND
Tip
(You can change enable pin in file pin_values.py line 4)