I finally got around to put together a new quad video! Check it out :)
noise dept.

pixel skylines
ojovivo

No title available

izzy's playlists!

blake kathryn
we're not kids anymore.
Keni
macklin celebrini has autism
Stranger Things
Cosimo Galluzzi
d e v o n
will byers stan first human second
let's talk about Bridgerton tea, my ask is open
2025 on Tumblr: Trends That Defined the Year

if i look back, i am lost
DEAR READER

Andulka
Alisa U Zemlji Chuda
"I'm Dorothy Gale from Kansas"

seen from Germany
seen from Italy
seen from Vietnam
seen from Bangladesh
seen from Brazil

seen from United Kingdom
seen from Switzerland
seen from United States

seen from United States
seen from United States

seen from Malaysia
seen from United States

seen from United States
seen from United States
seen from United States
seen from United States

seen from United States

seen from France

seen from Türkiye

seen from Malaysia
@pseudoberries
I finally got around to put together a new quad video! Check it out :)
**Winter Fields** Flying the quad over snowy fields :) Music: Soup by Ben Jensen (http://soundcloud.com/bladlus) Created with OpenShot: http://www.openshot.org/
Alarm Clock 0.3.3 “Squish” released!
This release includes minor improvements and various bug fixes: * Set app indicator title Bugs fixed: 290733 - Automatically detect daylight savings time 800635 - Let the WM decide the initial position of the list window 823585 - Check that media player was created successfully 908636 - Don't show notifications when alarms are stopped/snoozed 885059 - Update timestamp when type is changed for active alarms 977110 - Use segment seeks to prevent playback delays when looping 824337 - Enable alarm when closing the Edit alarm dialog Please see the [Alarm Clock website](http://alarm-clock.pseudoberries.com/) for details on [how to get it](http://alarm-clock.pseudoberries.com/#download)!
My first PCB! on Flickr.
AVR debugWire on Linux
Here's a mini-howto on how to debug 8-bit AVRs with [debugWire](http://en.wikipedia.org/wiki/DebugWIRE) on Linux. The examples below apply to the [AVR Dragon](http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891) programmer and ATtiny85 microcontroller, but should work with other supported hardware as well. *NB: target must be powered off an external supply, not from the AVR Dragon! See [this post](http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=71040).* **Enter debugWire mode** $ avrdude -c dragon_isp -p attiny85 -P usb -U hfuse:w:0x9f:m Now power-cycle the target. **Do some debugging** $ avarice -g -w -P attiny85 :4242 ... Preparing the target device for On Chip Debugging. Waiting for connection on port 4242. $ avr-gdb hello.elf ... (gdb) target remote :4242 Remote debugging using :4242 0x00000000 in __vectors () (gdb) **Enter ISP mode** $ avrdude -c dragon_isp -P usb -p t85 avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_FAILED avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire avrdude: Target prepared for ISP, signed off. avrdude: Please restart avrdude without power-cycling the target. Target is now temporarily in ISP mode until it is power-cycled again. $ avrdude -c dragon_isp -P usb -p t85 -v ... avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.15s avrdude: Device signature = 0x1e930b avrdude: safemode: lfuse reads as 62 avrdude: safemode: hfuse reads as 9F avrdude: safemode: efuse reads as FF ... You can now reprogram the fuses to disable debugWire.
I have graduated!
It's been over four months since my last post. A lot has happened since then, but most importantly: I have graduated and now proudly hold a Master's degree in Computer Science!
Needless to say, I have been quite busy working on my thesis these past months. Titled Evolutionary Music Composition - A Quantitative Approach, it explores the use of Artificial Evolution for the automatic generation of novel music. Here are two sample melodies: "Zelda" (evolved from scratch) and "Let It Be" (inspired by The Beatles' song).
It has been quite a journey and I can't help but feel a bit sad that my time as a student is over. But who knows, I might return to academia one day...
Apart from graduating, I have also...
Spent the Easter holidays in Tanzania on Safari. Photos will eventually appear on Flickr.
Attended GECCO 2011 in Dublin, where I presented a poster related to my thesis.
Traveled the north-western coast of Norway, camping along the way.
At the time of writing, I'm in Berlin attending The Desktop Summit 2011 :)
After that an exciting job at ARM awaits!
Alarm Clock 0.3.2 "Indicate this" released!
This release adds support for application indicators and includes various bug fixes:
Add support for application indicators
Countdown label for application indicator
New status icon indicating triggered alarms
Bugs fixed:
565302 - Add countdown label (for application indicator) 610632 - Create ~/.config/autostart if it doesn't exist 671962 - Add support for libnotify 0.7 682999 - Properly stop triggered alarms that are not playing sound 704956 - Add support for application indicators 706832 - Clicking on status icon should bring up list instead of snoozing
Please see the Alarm Clock website for details on how to get it!
Game of Life on the Blinken Button wearable 8x8 LED Matrix.
World is bounded instead of infinite. Random initialization, hours of fun!
Code at GitHub.
Building the Nimbus Mk I
After posting my Nimbus video, people have asked if I could provide more details on the robot's design and components. This post attempts to give a more thorough overview than the video does, in case you'd like to build your own :-)
Arduino based
The robot is based on the Arduino platform which sports an ATmega328 microcontroller running at 16MHz. The Arduino was chosen not only for its ease of use, but also because of the numerous expansion shields available. Nimbus Mk I has one such shield, the Ardumoto Motor Driver Shield, which controls the two DC motors. Other shields can be added as needed, and they stack on top of each other. For instance, I'm currently experimenting with the XBee shield which adds wireless communication.
Motors & wheels
Nimbus can move around thanks to two Micro Metal Gearmotors from Pololu. The motors come in a variety of power and gear ratios which determines the speed and torque of the robot. Early prototypes used the 30:1 motors, but I found that they were be a bit too fast, giving Nimbus a hard time to react quickly enough to sensor input. Instead I settled on the 50:1 variant, which are a bit slower and allows for more fine-grained control.
The motors are mounted on the chassis with a pair of Micro Metal Gearmotor Brackets. The wheels attached to the motors are the 32x7mm Pololu wheels and a 3/8" ball caster is mounted in the front for easy maneuvering.
Sensors - Sharp GP2Y0A21YK
Three infrared proximity sensors serve as Nimbus' eyes into the world. They are the popular Sharp GP2Y0A21YK which can sense distances between 10mm and 80mm. Other models are also available with different range configurations. Care must be taken when using these sensors though, as their output is non-linear. Acroname Robotics has an excellent article which explains how these sensors work, and how to make sense of their output.
Chassis
The round chassis is one of the few custom made parts on Nimbus. The disc is 128mm in diameter, with slots cut out for the two wheels on each side. It was designed using Inkscape, which allowed me to test out the placement of the components in the correct scale. Early prototypes used a cardboard version of the chassis, which helped discover any mechanical issues early on.
The complete design can be downloaded here (SVG) or as PDF.
When I was satisfied with the design, I printed it out and headed over to the Cybernetics workshop at my university. The friendly fellows there were happy to cut it out for me in super-strong Polycarbonate and drill out the holes.
I'm in the process of making the chassis available for manufacturing through Ponoko - the personal factory. I'll make a new post soonish :-)
Battery & power supply
The battery is a standard 2-cell 800mAh LiPo with a nominal voltage of 7.4V. These can be purchased from most RC hobby shops. Any battery pack will work though, as long as it supplies a voltage between 7 and 12 volts.
Since LiPos should not be charged below 3.0V per cell, the voltage is continuously monitored. A simple voltage divider halves the voltage so it can be read by one of the analog inputs of the Arduino. When the analog reading is below a 3.2V threshold, the robot stops and blinks its LED to indicate that it's out of power and needs to be recharged. The power supply also includes a power switch, a status LED and Vcc/GND outputs. Everything is put together on a round 1" protoboard.
Here are the schematics.
RGB LED
Mounted through a hole in the center of the chassis is an RGB LED. It serves both as a great debugging tool and as Nimbus' aura :-) The LED is controlled by three PWM outputs of the Arduino, allowing to display any color. As with the power supply, the circuit is mounted on a round 1" protoboard with three appropriate current-limiting resistors.
List of components
Here's the full list of the major components, excluding common stuff like wires, screws, resistors and such.
1x Arduino
1x Ardumoto - Motor Driver Shield
2x 50:1 Micro Metal Gearmotor
1x Pololu Micro Metal Gearmotor Bracket Pair - Black
1x Pololu Wheel 32x7mm Pair - White
1x Pololu Ball Caster with 3/8" Plastic Ball
3x Infrared Proximity Sensor - Sharp GP2Y0A21YK
3x Infrared Sensor Jumper Wire - 3-Pin JST
1x Triple Output LED RGB - Clear
1x Red LED
1x SPDT Slide Switch
1x ProtoBoard - Round 1" (pack of 2)
1x LiPo 2-cell battery
1x Chassis - clear (polycarbonate / acrylic)
The Code
Finally, the code is up at GitHub for your forking pleasure.
Feel free to post any questions in the comments :-)
Based on my earlier prototypes, I am proud to present...
Nimbus, the wall-following robot!
The video pretty much sums it up, and there are more nice pictures in my photostream.
Video created with OpenShot.
Blinken Button meets SPI
At the 27C3, Gabe and I met Marcus from Interactive Matter, who sold these nifty Blinken Button kits. Basically it's a wearable 8x8 LED display:
The button displays a series of random animations, which comes programmed into the ATmega168 microcontroller. Now we thought it would be cool if we could use the button as a more general purpose display device. That would allow us to hook up some sensors and set the display according to the sensor input. To do this, we needed some way of communicating with the button from another microcontroller.
Enter SPI - the Serial Peripheral Interface Bus. SPI is a full duplex bus which allows two or more microcontrollers to communicate. Basically the bus is controlled by the bus master, who is decide which slave is allowed to send data, and when. Each slave then waits for its Slave Select (SS) pin to become low, before it can send and receive any data.
On AVRs, the ISP pins are used for SPI, which were already broken out on the Blinken Button. Since the SPI master decides when data is sent over the bus, it made sense that the Blinken Button should be configured as a slave and update its display whenever data was sent to it. Unfortunately the SS pin (PB2) was not broken out on the button, and was not used. At the congress we worked around this issue by having the button act as a master, and continuously poll the slave for new frames to display. Although this worked, it wasn't an good solution and required extra book-keeping on the other end as well as consuming more power.
In order to improve on the design, I decided to attempt to bring out the SS pin and make it accessible through a wire. Being SMD and all, this was easier said than done. After tinkering for a while and probing the tiny pins making sure there were no shorts, I succeeded in soldering a tiny wire to the pin. Some glue was added to make sure any tension didn't break the connection. Below is the result:
Although it might have worked to just short the pin to ground, limiting the bus to a single slave, I decided to bring it out instead.
Then it was fairly straightforward to adapt our previous code to the new slave configuration, and merge it with the original display code. The code for the SPI-enabled Blinken Button can be found on GitHub. It also includes example code for an SPI master controller. It works perfectly from my STK500 with an ATmega8535 as master :-) And with a logic level converter (or 3.3V Arduino), it should work with an Arduino as well.
It would be awesome to see future versions of the button with the SS pin brought out on the PCB, even as an optional feature :)
That's all, happy hacking!
Christmas and 27C3
Been a while since last post, so this is me trying to catch up.
Last semester I had my last exam ever(!), and delivering my 40-page report on my specialization project was a great relief. Now "all" that is left is to build on this work and write a master's thesis... :P
I had a nice Christmas celebration with my family in Oslo, after which I travelled to Berlin for four days of the super-geeky congress that is 27C3! I was meeting my French-American friend Gabe, who I knew from my semester in India. We had a great time at the congress, mostly hacking away on hardware stuff and catching many great talks.
I celebrated New Years eve with my girlfriend in Oslo. We had a great view at midnight, and we could marvel at the fireworks and fire lanterns in the sky. Come to think of it, how awesome would it be to attach a camera to one of those lanterns and take photos of the fireworks from above? Hmm, sounds like a project for next years celebrations...
Unluckily my girlfriend got the flu a few days after New Years, and we didn't get the chance to do all the great things we had planned. And to top it off, after we finally got back to Trondheim, I start feeling the same symptoms. Damn it, stupid flu, I hate you...
Now we've both finally recovered, and a new year awaits... My final semester at NTNU, writing a master's thesis. And after the summer, I'll start in a regular job. It seems much change awaits me in life, and I feel rather excited :-)
Every time we're drying clothes, our apartment turns into a monsoon-moist hellhole. Now during the winter with -18°C outside, keeping the windows open to let out the moisture is not an option. We could dry the clothes in the bathroom, which has a fan. The only catch is that this fan only keeps running for 15 minutes, after which it has to be started again by pushing the button.
Not wishing to end up like the cast of a certain TV-series, I figured there must be a better way. Sure I could open up the switch and tinker with the electronics inside, but I'm hardly qualified to mess around with high voltage electricity. Plus I doubt the landlord will approve of my handiwork.
Browsing through my Box-o-fun for possible solutions, I found a small servo and an an Arduino. And so the Click-o-matic was born!
The Click-o-matic autonomously pushes the button every 20 minutes, keeping the fan running and moisture out.
Using some thin thread and double-sided tape, the servo pushes itself towards the button. The Arduino keeps track of time and controls the servo appropriately. All powered by six 1.5V batteries.
A future version might include a count-down display and a knob to adjust the click interval :)
Photos from Amsterdam 2010
We finally got around to edit the photos from our trip to Amsterdam this summer. They'll be available shortly at flickr.
This is the new version of my Arduino based Robot prototype featured earlier. This version has a new slightly bigger chassis (12.8 mm diameter) for a lower profile and better space. Some very helpful guys at my university cut it out for me in Polycarbonate! It's super strong :D
Look, pictures!
I've also attached a Sharp IR GP2Y0A21YK proximity sensor for very limited object avoidance. The plan is to mount it on a servo later so the robot can "turn its head" and better perceive its environment. I also have a few Optical Phototransistors which should come in handy :) Also, the 9V consumer battery is something I plan to replace at some point.
Acroname Robotics have a very helpful article on linearizing the output of the Sharp IR sensor.
Simple cardboard prototype of my robot. The chassis is really hackish - I'm using a paperclip for collecting the motor wires! Next step is to start on a better chassis in plexiglass :-)
Ardumoto assembled and tested on a simple cardboard chassis :-) Next up: designing a proper chassis and planning sensors!