We had a white Christmas in Komenda this year, even though the weather outside was sunny. Some (over 1000) leds, some AVR control with TLC5925 led controllers and we had a nice snow animation that could be changed to show stars arranged in real constellations. The clouds are made from 5mm white plexiglass and illuminated with leds from begind.
I have been etching my own PCBs for almost 10 years now, but now has come a time, when China is so fast and cheap that making your own PCB just does not make sense.
Read more →
Traffic lights are all around us, and they seem simple enough but are they really? Real traffic lights can be a very complicated system because it requires sophisticated control and coordination for smooth and safe traffic.
The traffic light I made is much simpler. My sister works in a kindergarten where kids needed a simple traffic light for when they are riding their bikes on the playground.
The traffic light uses some cheap LEDs from China, a step-up converter and an Atmel attiny841 microcontroller to change the light from red to green at a programmed interval.
Read more →
Anyone who has ever boiled milk on the stove knows, that it has a nasty habit of overflowing. That is why I created the temperature alarm for boiling milk to be used my mother. It continuously measures the temperature of the milk and sounds an alarm when the temperature is over the preset alarm value.
Temperature alarm uses an Atmel attiny841 microcontroller, DS18B20 high temperature waterproof temperature sensor from adafruit, 2x16 HD44780 LCD and a buzzer to do its job.
Read more →
The nativity scene is a several years project, that I upgrade every year. This year I decided they are complex enough to describe on my website.
First a few pictures of the scene, followed by the description of electronics that run the thing. Control The system is controlled by Raspberry Pi. It provides a web interface for the system. The RPi communicates with all parts of the system via an I2C bus.
Read more →
This summer I was developing a web dashboard on Monkey HTTP server for Raspberry Pi. Monkey is a lightweight and powerful web server and development stack for GNU/Linux. It has been designed to be very scalable with low memory and CPU consumption, the perfect solution for embedded devices. Made for ARM, x86 and x64.
I worked on this project as part of GSoC. Google Summer of Code is a global program that offers students stipends to write code for open source projects.
Read more →
This week I implemented WebSocket support in the dashboard. WebSockets are now used for GPIO updating and serial port receive. If Websocket is unavailable or does not connect, polling is used as fallback.
I’ve also improved GPIO dashboard page a bit and written documentation for WebSocket.
Pencils down is tomorrow. I have released version 0.2.0 of my dashboard today. It contains all the features that I’ve planned to implement in my proposal.
Read more →
This week I first tried implementing WebSockets with RaspberryPi GPIO interrupts. I’ve written some code, but it seems duda’s websockets implementation has some bugs in it, so I did not finish this. The code I’ve written is now under websocket branch in github.
Instead of using websockets I’ve written GPIO updating and serial interface in the dashboard using polling the REST api every second.
I’ve also imporoved several things in dashboard including making the main page modular.
Read more →
This week I added interfaces for GPIO (input, output, PWM and tone), I2C, SPI and shift in/out to the Dashboard. Additionally I have also researched WebSockets that I will use for serial and GPIO updating.
Next week I will try to use WebSockets for serial and GPIO implementations. There are also a few smaller things that need to be fixed/updated.
Code is on github.
Read more →
This week I developed REST api interface for GPIO (input, output, PWM, square wave and shift in/out), I2C (read/write general, 8-bit and 16-bit registers), SPI (duplex send/receive) and serial (send and read input buffer). I’ve used wiringPi library I’ve tested last week.
I’ve written full documentation for those modules and added a POST method to jQuery RPiJS plugin.
Next week I will integrate those modules in the Dashboard and try using WebSockets for GPIO and serial connection.
Read more →
This week I tried 2 different libraries for GPIO on Raspberry Pi: bcm2835 and WiringPi.
I’ve decided to use WiringPi, because it allows consistent pin numbers across different RPi versions, i2c, SPI, serial, software PWM, tone and several extensions. I’ve installed the library, spent some time testing it out and figured out how it is going to fit in the REST api.
Next week I will integrate the GPIO, i2c, SPI and serial in the REST api and the Dashboard.
Read more →