Some of my friends have a garden on their balcony. And I wanted one too, but was worried about watering it when I'm on vacation.
Also wouldn't it be nice if it could work outside the house?
My requirements were:
Water the plants when they need it
Work without a power cable
Allow monitoring online
Here's how I solved them:
Measure soil moisture with sensors.
Use capacitive moisture sensors as opposed to the ones that have metal probes - they erode by electrolysis carrying molecules
from one probe to the other. This contaminates the soil and affects precision.
Use multiple sensors in different parts of the pot.
Take multiple probes over a short time and average them to smooth out anomalies and improve precision.
Calibrate a threshold below which I would water.
Pump water from a 10L container.
Place a 5V water pump at the bottom of the tank.
Buy a watering hose and drippers (10 drippers over 2 long pots).
Place tank near and at the same height as the plants
Use a solar panel to charge a battery to power the system.
Deep sleep the device for half an hour to preserve energy.
Wake it up for 10-15 seconds to water, measure and post data. It spends most of its time sleeping.
A small solar panel supplying 600mA at 5V charges the 650mAh (~3.7V) LiPo battery multiple times over the sunny part of the day.
Use a esp32 chip instead of a whole board as the board's USB chip draws power even if the MCU sleeps. This dropped the
power consumption tremendously during deep sleep: from 25mA to 350uA - less than 2% of the original.
Design a PCB for the esp32 chip.
Regulate power from the battery to 3.3V to power the chip.
Use a MOSFET to allow powering the pump directly from the battery.
Break out pins to connect solar panel, pump, battery, sensors and additional sensors in the future.
Allow PCB to be used with Arduino Mini for other projects.
Connect to the wifi and post a message that will save data in a DB.
Use the esp32 chip to connect to my wifi.
Post a message with all the data using MQTT to AWS IoT.
Process the message using a rule to store the data in DynamoDB
(more on modelling data there in single-table design in DynamoDB).
Put together a simple website to show data on a timeline.
When the website loads it makes a request to the API gateway that will call a Python lambda.
The lambda queries all recent events from DB and formats them in json.
A wooden robot that is an arm on tank tracks. The tracks were 3D printed and the wooden structure is made from glued sticks.
A raspberry controls with Python the 4 servos of the arm and the 2 motors for the tracks.
Global epidemic simulation
_-_modelling
A simulation which allows you to design a disease and different medicine and apply both on the world.
For each country there is information about its: healthcare system, population density, climates, transportation, connectedness.
There are airplanes, boats and land transportation between countries. You can zoom and pan on the vector map and inspect
each country and its current state.
A cyberspace game made using LibGDX and Java 8. Fight against the AI overlord of a system gone rogue, navigate your way in barren
artificial landscapes and try to comprehend where reality bleeds into virtuality. Made together with
Bozhidar Hrusanov.
Java 2D space invaders game, but with a story twist. Captain Manol, a pirate captain, had his ship fleet sunken after a confrontation with the
invading aliens, but managed to get hold of one of their ships. Now his mastery of sailing leads him on a revenge to invade the aliens' space.
I wanted to experiment with user experience: animations, notifications and sounds.
A Java 2D asteroids game with spaceships based on rotating around and having to manage your velocity and acceleration.
It has 5 different enemies which use different attack strategies, various powerups, fast dangerous asteroids. Made together with
Bozhidar Hrusanov.
A tabletop historical role-playing game. The pdfs can be printed on paper and cut into cards. The story takes place in the late 1860s
in the land of the Bulgarian people. The game mechanics are like a soft casual DnD one shot. There are many historically accurate weapons,
fun facts and small doses of history, different places, characters, abilities for the players to choose, riddles and mysteries,
action and combat, calm sceneries of nature's beauty.
Tepeliya pistol
Not just a weapon, but also a jewel, this pistol is lavishly decorated and engraved
with delicate motifs. Occasionally a malfunction causes an explosion that can hurt the shooter's hand.
Ottoman knife
The ancient Persian blacksmiths knew the secret of the Damascus steel.
Their blades had the ultimate qualities: flexible, but also very durable and sharp. A weapon forged from
the material is easily distinguishable with its chaotic motifs. The metal, named after the capital of Syria,
cannot be created nowadays - the secret method of manufacture was lost in the 19th century.
Lefaucheux double barrel pistol
Not just a double-barrel pistol. It has two hammers and triggers.
It is invented by the french gunsmith Casimir Lefaucheux, who strongly influenced the development of
guns and created the first pistol with breech-loading.
Pepperbox pistol
Four-barrel revolver. The idea for the mechanism became popular in the end
of the 18th century in Belgium and England. At that time the barrels were rotated manually by the shooter. After
the industrial revolution they were quite popular during the 1830s in America because they were cheap; the other
revolvers were more complex and expensive to manufacture.
Prussian grenade
A major drawback of the grenades of the 18th century is that usually the enemy has time to throw them back.
Deringer
The word deringer is used to refer to a small personal firearm that is easy to conceal,
usually carried for self-defence. Henry Deringer starts to manufacture the first ones in the 1830s. Abraham Lincoln was
assassinated exactly with such a pistol in 1865.
I wanted to make a fantasy game with a lot of freedom and especially less popular features or activities to do. Things like gambling,
playing minigames, praying to different deities, eating and drinking, ordering said food and beverages, talking with npcs without the
purpose of getting something for it. This combined with the lack of epicness of the setting made it feel more ordinary and calm.
A 2D game written in two and a half days in C++ for a game programming competition. The theme of all games was "bubbles".
In the game you compete with the evil bubble to collect more bathroom bubbles and become the biggest bubble.
2D tiled fantasy game written in C++ with Allegro 4. The game has an inventory system, abilities and cooldowns, multi-layer
map and map editor, character stats, an enormous map that is visibly chunked, npcs to talk to. It taught me basics of OOP,
rendering 2D graphics and using arrays of pointers.
Beyond the next dimension
_-_3DFPS
A 3D shooter. The sprites from Doom made it grim and gory, while the other ripped weapon images made it feel like a violent collage.
The simple geometry of the levels and doors added a good bit of amateurism. Building this game allowed me to apply
knowledge in trigonometry and stereometry. Made with GM7 and Blender after following a book tutorial.
My first C++ game - a text-based fantasy RPG with many different enemies, combat scenarios and outcomes.
Dimension Traveller Pesho
_-_platformerbosses
A platformer with many levels. The last released version is lost, but this one has most of the levels and all of
the bugs. The goal was to have a variety of levels not fitting with each other and not constrained by story. Most bosses have
unique mechanics and theme.