Friday, December 25, 2015

Making Carbon Dioxide At Home

Vinegar + baking soda

Thursday, December 10, 2015

webapp with database

view (html) + controller (ruby/php) + model (mysql)

ruby on rails tutorial

Tuesday, October 13, 2015

Programming blog/YouTube series with simple games

Programming blog/YouTube series with simple games (see Max Wihlborg for HTML5 games). Aim: There are lots of challenges that help becoming a better programmer and it is more fun coding games, i.e. it is more probable that I will keep my motivation and have a working product in the end.
  • Snake
    • Difference between real world snake and game snake: Real world snake's body segements persist while the snake moves. Game snake segments are modeled as a list and whenever the snake moves, a new segment is added to the end of list and the first segment is deleted from list, which makes it easier to code. If we want to code the real world snake, we have to keep the segments and update positions of each snake segment when a motion occurs (which is harder to code).
  • Flappy Bird
  • Pong
  • Space Invaders
  • Tetris
  • Asteroids
  • Lunar Lander
    • C# code
    • Assembly code
    • Scrolling map
    • Zoom when close to terrain
    • Change gravity (Moon, Mars, Earth, Saturn)
    • Show minimap at the top (like Defender)
    • Autpilot
  • PacMan

Friday, October 9, 2015

Sunday, October 4, 2015

Garage door opener

Attach the garage door remote control to car dashboard and make it open the door automatically when the car is close to and facing towards the garage door.

Update 26.01.2017: Hack garage door opener. Watch Sammy Kamkar.

Thursday, October 1, 2015

Network simulation with threads

  • One live master, two standby masters listening if there is a live master.
  • Live master broadcasts every second that he is alive (hearbeat)
  • If standby masters do not get heartbeat for 10 seconds, one of them randomly becomes new live master
  • Optional: Gossip protocol: One standby might get the heartbear while the other can't. In that case the one that gets the hearbeat refuses the request of the other to become live master.
  • Master distributes jobs to worker nodes.
  • Worker nodes tell master every second that they are alive
  • Worker nodes return with an answer when their job finishes. Note that job might take more than 1 second. We need one thread for heartbeat and one thread for job processing.
  • GUI: Show live master, standby masters, working nodes, idle nodes, offline nodes.


Friday, September 25, 2015

Car vibration simulator for putting babies to sleep

Record car sound and vibration, replay the sound and regenerate vibration.

Fisher Price Cruisin Motion Soother
Baby Bouncer
Bouncing cradles & rockers

Wednesday, August 26, 2015

Fitness bike activated computer

A friend told me about a project where kids can only use the computer when they are pedalling the connected fitness bike.

How to do it: Attach a dynamo to the bike, connect it to Arduino which sends signals to computer. On the computer a program checks if the bike is active and if not, turns off display or locks the computer.

For tablets we could write an app that communicates with the RaspberryPi on the bike. We could use the same wireless design for PC.

Friday, July 17, 2015

Watermelon ripeness detector

Can be made into a smartphone app.

Correlation between sound decay rate or fundamental frequency/amplitude and ripeness.

Melon Meter

https://www.youtube.com/watch?v=LxC67dnyVGU

ppt: http://www.me.udel.edu/meeg447/98/serffiles/fall4-design-reviews/dr-ppt/dr-02.ppt

http://www.researchgate.net/publication/257798409_An_intelligent_procedure_for_watermelon_ripeness_detection_based_on_vibration_signals

Equipment:
  1. Microphone
  2. FFT and filtering on the Arduino
  3. Ripe and unripe watermelons

Sunday, July 12, 2015

Tuesday, June 23, 2015

Add delay to window alarm

Can I do it with analog electronics, e.g. with a capacitor? How do I discharge the capacitor? Does it discharge "slowly" by itself or do I need a resistor/LED? I probably will need a transistor too. Capacitor will be used to control the current flow via the transistor. When capacitor is fully charged, it will let current flow through the transistor which in turn activates the alarm circuit.

If I want a 10 second delay, I can achieve it with a resistance of 100K and capacitor of 100uF [see RC time constant]: tau = 100e3 * 100e-6 = 10 seconds.

https://www.youtube.com/watch?v=GeveeSTyvGs
  • Capacitor: 470mF, 100mF
  • Resistance: 47K, 22K
  • Diode: 1N4001, 
  • Transistor: 2N???
https://www.youtube.com/watch?v=LQji9_O9-aI

http://www.the12volt.com/installbay/forum_posts.asp?tid=91691

https://answers.yahoo.com/question/index?qid=20100910203520AAoZUtq

https://en.wikipedia.org/wiki/RC_circuit

Thursday, April 16, 2015

Monday, April 13, 2015

Argun'un itfaiye aracının sesini kısma

Potansiyometre bağlı, sesi uygun miktarda düşürecek şekilde ayarla.

Saturday, April 11, 2015

Lamba düğmesine LED

LED'in direnci R2 ve gerilimi V2 ise akım i=V2/R2 olur. 220V'yi V2'ye düşürmek için gerekli direnç R1 = 220V/i olur.

Yani önce LED'i seç, sonra LED'e uygun direnci seç. Lamba düğmesine monte et.

Argun'un oyuncaklarıdaki LED'ler AC ile çalışır mı? Sanırım hayır. Çözüm için link.

Deneme için fiş gerekiyor.

Köpek kovucusu

Mikrofon ile test et

Tuesday, March 31, 2015

Electric Grid

Yesterday there was power outage in many cities in Turkey. Build an electrical grid project with load balancing and also demonstrate cascading failure. Do this first as computer simulation and then use real parts.

Simple design with a DC relay demonstrating load balancing:

When a second resistance is connected in parallel, current increases to 2i. This increases the voltage in the relay to 2*Vr1 which closes the relay. When thre releay is closed, the second battery becomes part of the circuit (parallel to the first one). Both resistances will have a current of i. If these were light bulbs they would have the same amount of light output.

If we didn't have a second battery and the relay, adding the second resistance would decrease the resistance by half and cause the current to double which would empty the battery in half the time. What we achieved with our design is having the same electric output time.

Note that if we added the second battery in series, i2 would be 2*V/(R/2) = 4*i. Each resistance would have a current of 2i which could damage the appliance represented by the resistance (in our case, light bulbs).

Implementing the system with real parts would look like this:


Monday, March 2, 2015

Tracker free video analysis and modeling tool

https://www.cabrillo.edu/~dbrown/tracker/

https://www.youtube.com/watch?v=La3H7JywgX0

Friday, February 13, 2015

Using Freelance

To get an idea about how useful a freelancer might be, do the following:
* The initial stage should be a prototype that can be finished in two weeks. It will be used to update requirements/design and decide on GO/NOGO
* You can specify the job as cloning an existing app. It should be doable in two weeks. Example: The puzzle game in Android. You could use the code produced to learn new things. Or you could ask them to clone Save My Cheese. It might give you fresh ideas about how to solve the problem.

Thursday, February 12, 2015

ISS Globe

http://sciencehackday.org/project/iss-globe/:
"...the ISS Globe continuously shows you where the ISS is overhead. The team of sciencehackers used a translucent globe, two hobby servos, a MakerBot for 3D printing a few gears, a Teensy microcontroller and a laser that was mounted inside of the globe. Firmware controlled interaction between a laptop and the servos and a Python client controlled interaction between the microcontroller and the servos. The end product was a globe with a glowing red dot that would show you where the ISS currently was throughout the day."

Monday, January 26, 2015

Game: Save My Cheese


GitHub repository
Concept document
Class diagram
Sequence diagram

Royalty free mouse clipart

Description: Mice try to reach cheese. User prevents mice from reaching cheese by blocking their path with puzzle pieces. End condition: A mouse reaches the cheese (FAIL) OR all pieces are in place (SUCCESS).

Welcome screen:
* Start game button --> Game screen
** Exit button --> Quits game
** Pause button (after mice are added)
** 3-2-1 counter (after mice are added)
* Help button --> Help screen
** Help text and image
** Back button
* Settings button (after mice are added)
** Back button
** Mouse number
** Mouse speed
** Map size
* About button --> About screen
** About text: Şamil Korkmaz, copyright 2015, link to blog
** Back button
* Advert banner on top
** Third party library
** Bank account --> PayPal account?

* Puzzle:
** Piece = Filled polygon
** Construct pieces
** Breakdown of pieces into cells.
*** The smaller the cells, the closer the mice can get to the piece but the slower the pathfinding.
*** For each cell on grid check if piece contains the center of that cell. If it contains, mark the cell as belonging to that piece.
** Move pieces with mouse:
*** On mouse left click, detect piece that contains mouse cursor location.
*** On mouse drag: Update detected piece location with mouse location.
*** On mouse release, calculate distance between piece and its snap location.
**** If distance is smaller than tolerance AND there is no mice inside that snap area
***** Set piece location = snap location
***** Set cells that belong to this piece as blocking

* Pathfinding:
** Use A* algorithm
** Do we need two separate threads (one for GUI, one for calculations)
** Must be able to find path within one game loop cycle.
** Draw mouse and cheese. Mouse orientation = movement direction. Make orientation changes smooth using linear interpolation.
** Create game loop:
*** Mice are moving at preset time intervals along their path with preset distance intervals (speed).
*** End condition: A mouse reaches the cheese OR all pieces are in place.
** The screen is a two dimensional grid with each cell being a node.
** Mice cannot pass through blocking cells.
** Mice update their path to cheese each time the user adds a new piece.

* Android & Google Play Store
** Download development environment, code puzzle with Nexus 10 screen size in mind. Mapping of mouser press/drag/release to touch controls. End condition: All pieces are in place.
** How do you claim copyright and handle disputes?
** Subscribe (25?)
** Upload puzzle with one level (v1) to Play Store, verify that you can find it and install it on tablet and phone.
** Update (v2-)


Test Cases:
* Puzzle: Three pieces
* Pathfinding:
** One mouse, no blocking cells.
** One mouse, simple wall.
** One mouse, dead end case (path has to U turn after initial trial).
** Two mice start from
*** top/bottom.
*** left/right.
* Is advert banner working? Does it deposit money to my account?

"Save my cheese" version plan:
v0.1: Puzzle level1 with Java on Windows8
v0.2: Mice with pathfinding on win8 attacking cheese + Level2
v0.3: sound effects (Argun'un sesleri - "buudan gidiyoo") music (midi of classical pieces, VogelHochzeit)
v0.4: Flash bomb causes mice to go in random directions for a couple of seconds.
v1: Nexus 10,  Samsung Galaxy S4 screen size
v2: Advertorial integration (small banner on top of welcome screen)
v3: New levels + blog dedicated to game (update link in About screen)
v6: dificulty settings:
* mice number
* mice speed
* mice intelligence: Stupid mice will mimic the path algorithm exactly, smart mice use the final path.
* map size
v7: blinding flash (causes mice to move on last direction) & stun bomb (causes mice to stay in place for dt)
v8: new levels
v9: better graphics/soundFX/music (mice move their tails, squeeking increases as they get closer to cheese)
v10: Mice wander randomly until they detect cheese smell and home in on smell. Pieces prevent smell from escaping
v11: Support other screen sizes/resolutions
v12: Cats that hunt mice. Proportional control.
v13: Mice avoid cat.

UML Diagrams: Initial design must be easily extensible to cover the capabilities outlined in version plan. Discuss how that will be done with examples.