Tag Archive: open source


This project refers to an Arduino library implementing a generic, dynamic stack (array version).

The data structure is implemented as a class in C++.

For more information, you can get the project itself ‘StackArray‘.

Hello people! I hope you are well!

In this article I would like to present you a simple C++ 3D vector library. This is just a prototype and I am sure you can find other better and more complete alternatives. So, we are just dealing here with a “Yet Another 3D Vector Library”.

I created this library because I wanted to reuse some 3D vector operations in various OpenGL computer graphics exercise programs (from my M.Sc. studies). Of course, I could use an already existing library. However, I wanted also to understand how some basic 3D vector operations work.

Continue reading

Hello my Arduino fellows! How are you? The summer is hot! 🙂 In this post I would like to share with you two generic C++ template functions for reading from / writing to the Arduino EEPROM internal memory. I have used in the past these functions successfully in a project and I think that might be also useful to you.

It is a fact that just by looking the contents of a single byte in any memory we are not able to say what the data actually mean. The data or the bit pattern that appears has any meaning we want. It is always the context that gives meaning to data. It could be a memory address, an unsigned integer, a two’s complement signed integer, a machine opcode, an opcode operand, an IEEE-754 floating point number, an ASCII character, noise 🙂

Continue reading

In a recent Arduino embedded system I needed to manage an Arduino GSM Shield for some specific use cases. However, I couldn’t use the well-known GSM library due to memory capacity limitations since this library “eats” the Arduino board memory 🙂 I could use an Arduino board with more memory capacity but this was not the case for me. I wrote the library SimpleGSM, which is a simple GSM library for managing the Arduino GSM shield (maybe you can use the library with other GSM cards) and execute some basic operations. I wrote the library to have exactly the operations I wanted. The library uses internally a software serial for the communication.

Continue reading

This project refers to a Security Alarm System implemented with Arduino and various electronics.

Continue reading

In this article I will present to you a dynamic string data structure helper implementation. In C, a string is just an array of characters terminated with the null character (NUL in ASCII). Also, some times we handle a string by using a pointer to a buffer containing sequential characters terminated also with the null character. The C standard liibrary provides various functions for string manipulation but it seems that whenever we want to extend a string by using pointers we have to perform all the time memory reallocation which leads to a bad evolution of replicated code. In a recent project, I needed to create a string and append to it any number of new strings in order to extend it without using strcat, strcpy, strlen and realloc functions all the time. So, I created a simple dynamic string data structure which solved my specific problem and I would like to share it with you people.

Continue reading

In this article I will present to you a useful function for getting the host name and service of a socket.

Continue reading

In this article I will present to you some useful functions for handling the PID file of a background daemon. Most of the background daemons maintain a PID file usually in a well-known path such as the “/var/run”. For example, the GNOME Display Manager which runs as a background daemon (gdm3) maintains the following file “/var/run/gdm3.pid”. A PID file contains the PID number of the daemon process currently running. This information is useful either for validation or for sending various signals to the daemon process. Also, if a background daemon must have a single running instance this can be accomplished by checking if the PID number of the PID file really exists in the system.

Continue reading

In this article I will present to you two useful functions that can be used whenever you want to enable or disable the non-blocking I/O mode of a file descriptor. By using the enable_io_blocking_for_file_descriptor and disable_io_blocking_for_file_descriptor functions you can enable and disable the I/O blocking of a file descriptor.

Continue reading

In this article I will present to you a safe wrapper for freeing memory allocated with *alloc family functions. The standard function “void free (void * pointer)” from stdlib library does not check the given pointer to see whether it is NULL and does not NULL terminate the pointer before it returns either. So, setting a pointer to NULL after freeing is considered a good practice, and can reduce the chances of unpredictable behavior if the memory is later accessed; segmentation faults when the memory is no longer accessible and potential security risks.

Continue reading

In this article I will present to you some macro definitions for handling interruptible system calls.

Continue reading

In this article I will present to you a mechanism written in C for handling efficiently software signals in POSIX operating systems. The first thing you have to do is to create the configuration of the signals you want to support. After you decide the appropriate configuration you have to setup the signals support and register the configuration. Later on, when the various software signals occur a generic signal dispatcher will handle the signals according to the specified configuration.

Continue reading

In this article I will present to you a POSIX function I wrote that can be used to create a server socket to support both IPv4 and IPv6 addresses (IP-Agnostic). Recently, I needed to support this feature in a server application. The implementation uses POSIX system calls and data structures that can be used as generics to support both IPv4 and IPv6.

Continue reading

In a previous article I had shown to you how a typical process in GNU/Linux operating systems can be converted to a background daemon process. The source code from the previous article was taken from an old project I wrote years ago. Nowadays, I have rewritten the daemonizing function in a new project and I think it could be nice to share it. I have simplified the function and now it has a clearer and simpler API.

Continue reading

Zepto Web Server is a tiny open source HTTP web server well-written in C that can handle simple HTTP requests and serve information in HTML format by using dynamic modules that can be loaded at runtime. Also, the HTTP web server runs as a daemon process and is designed according to the MPM (Multi-Processing Module) architecture that allows multiple requests to be processed almost simultaneously. The main server daemon process creates and maintains various server workers which handle incoming requests.

Continue reading

In this article I’ll show you how you can create the abstract syntax tree (AST) of an input stream while parsing it. A parser usually reads various tokens from its input by using a lexer as a helper coroutine and tries to match various grammar rules that specify the syntax of a language (the source language).

Continue reading

In this article I’ll present to you some common conflicts that usually occur in Bison grammars and ways of resolving these. At first, conflicts in Bison context are situations where a sequence of input can be parsed in multiple ways according to the specified BNF grammar rules.

Continue reading

In this article I’ll show you how syntactically similar tokens can be handled in a unified way in order to simplify both lexical and syntactic analysis. The trick is to use one token for several similar operators in order to keep down the size of the grammar in the parser and to simplify the regular expression rules in the lexer.

Continue reading

Sometimes while I exploring the source code of various free software Flex lexers and Bison parsers I see name declarations for single character tokens.

Continue reading

Many programming languages and computer files have a directive, often called “include” (as well as “copy” and “import”), that causes the contents of a second file to be inserted into the original file. These included files are called copybooks or header files. They are often used to define the physical layout of program data, pieces of procedural code and/or forward declarations while promoting encapsulation and the reuse of code.

Continue reading

Below, there are some useful regular expressions for matching C-like primitive data values.

Continue reading

In a previous article I have presented a way for ignoring multiline comments with an old fashion way.

In this article I’ll demonstrate a more elegant Flex-like way for ignoring multiline comments.

Continue reading

Below, is a simple example for counting words, lines and characters by using a Flex lexer.

Continue reading

This project aims to the development of an open-source experimental prototype for solving and generating Sudoku puzzles by using only the strength of Genetic Algorithms. This is not a general purpose GA framework but a specific GA implementation for solving and generating Sudoku puzzles. The mechanics of the GA are based on the theoretical scientific paper “Solving and Rating Sudoku Puzzles with Genetic Algorithms” of Timo Mantere and Janne Koljonen. From the first moment, I liked the paper. So, I implemented it in Python. Also, I have add some variations to the algorithm in order to be more efficient. This project can be used in order to solve or generate new NxN Sudoku puzzles with N sub-boxes (e.g. 4×4, 9×9, etc).

Continue reading

Below, is an Arduino function for reading smoothly an average value from a jumpy or erratic analog input sensor. The function reads repeatedly from an analog input, calculating a running average and returns the value back to the caller.

Continue reading

The project ‘RestApiWrapUtility’ (RESTful API Wrapper Utility) is an open source .NET C# utility which implements a RESTful API wrapper. The utility is created in order to be an intermediate layer between clients that want to communicate with a remote server in order to use its RESTful services.

Continue reading

In this article I’ll show you how you can handle / parse the following RFID Tags from Sparkfun Electronics :

1) RFID Glass Capsule (125kHz) – Product ID: SEN-09416

2) RFID Button – 16mm (125kHz) – Product ID: SEN-09417

3) RFID Tag (125kHz) – Product ID: COM-08310

Continue reading

In this article I’ll show you a simple PHP function that implements email validation.

The function performs two checks :

It checks both if the email has correct syntax and if the domain of the email exists.

Continue reading

The Qt framework supports internationalization (I18N) and you can easily use it to your applications with a little effort. So, in this article I’ll show you how you can make it happen in a simple Qt application. The first thing you should do is making the GUI of the application translation-aware. That means setting all the texts you want of your widgets to be translatable. From the Qt Designer you can make translation-aware all your widgets. Here is an image that shows you how you can make the text of a QPushButton instance to be translation-aware :

Continue reading

In your lexer when lexical analysis is performed you may want to ignore any multiline C-like comments.

Continue reading

Whenever you want to post your email address to the public and don’t want to use a Contact Form which usually hides the address, try to display the address of the email as an image in order to avoid spam.

One way to achieve this is to manually create your email address as an image and embed it to your contact page. Most of the times we want this operation to be automatically. So, I have created a simple example to show you how you can make this possible.

Continue reading

Whenever we create a new source code file for a free software with Emacs we need first to add the short brief of the blessed GNU GPL v3. You can add a LISP function to your “~/.emacs” configuration file and call it whenever you want to add it.

If the file is missing you can create it.

After inserting the function and restarting Emacs you can call the function:

M-x insert-short-gpl (press Alt-x, type insert-short-gpl, press return).

Continue reading

Many text editors create backup files with names ending with “~”.

Most of the times these files are annoying and unnecessary…

So, you can use the following piped commands to remove them :

find / | grep "^.*~$"
       | sed -e 's/\(^.*$\)/"\1"/g'
       | xargs rm -f > /dev/null 2>&1

Please take account that this version handles correctly also filepaths containing space characters.

Within the framework of the course “Operating Systems I – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we were asked to choose one of 25 available projects aiming to implement and then present to the entire class. My choice was project 17, whose goal was the implementation of the external ‘find’ command of the operating system MS-DOS.

Continue reading

This project refers to an Arduino sketch that implements a light indicator with the help of an external sensor (photoresistor) for the recognition of light, and a bar graph of many LEDs used as a rating indicator. Furthermore, if the indicator reaches the last rating which indicates that there is “perfect” light (the maximum light that the sensor can identify) then it plays a melody with a piezo speaker located in the system.

Continue reading

This project refers to an Arduino sketch that implements a simple alarm clock using a light sensor, a piezo speaker, two buttons for functions such as ON, OFF and an LED as the function indicator. When the alarm is in OFF state, then it carries no real operation (just turns off the function indicator), and when in ON state, then it turns on the function indicator and examines whether there is sufficient ambient light (via the light sensor) to produces a musical tune with piezo speaker. This process is repeated continuously if there is sufficient light until the button OFF is pressed.

Continue reading

This project refers to an Arduino sketch that implements an Arduino Web Controller. Basically, the Arduino works as a network device that can be configured either locally or remotely by a special WEB interface. This technology is not new as it exists in other network devices. For example, routers or network printers are configured through a WEB interface.

Continue reading

This project refers to an Arduino sketch which has the capability to send measurements collected by a light sensor to an account at Twitter to be seen by many through the World Wide Web.

Continue reading

This project refers to an Arduino sketch which with the help of a relay (electromechanical switch) and a light sensor can drive an external device (e.g. a household lamp, a car alarm, a home air conditioner). More specifically, the Arduino collects samples from a light sensor at a specific rate and calculates the mean of samples for best accuracy. Then, if the average exceeds a threshold limit, it will activate the device via the relay. Also, the opposite happens where, if the average sensor value drops below the limit mentioned, the device is turned off.

Continue reading

This project refers to an Arduino sketch which is used to produce animations with more than one LED. You can place several LEDs in a row or in any order you wish and enjoy the flow of traffic. Furthermore, if you wish to change the animation you can choose the next in line by pressing a special button. One such application might remind you of the Christmas lights.

Continue reading

Within the framework of the course “Software Engineering I – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we developed as a semester assignment a parking management application.

Both the graphical user interface (GUI) and the application are implemented with Qt in C++. Specifically, with this application, the end user can manage a variety of customers, customer cards, vehicles, transactions, parking, vehicle fees, etc.

Continue reading

The project ‘tct ‘(The Crime Tracer) is an online adventure police game. Of course it has not yet implemented because it is under development. The game is a free software initiative of two volunteers who love and respect science and the freedom of users. Anyone can join the project as a volunteer, provided they are good-willed and have some free time. Also, the game is being developed using the Python programming language and the Pygame framework.

The project ‘shell-library’ (Shell Function Library) is a developers’ effort to develop a free shell library with POSIX general purpose functions. The functions that the library offers can be used within shell scripts developed to automate the work of your operating system.

Continue reading

Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia), I felt the wish to develop a program that produces sound from the BGC-8088’s speaker.

Continue reading

Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia), I felt the wish to develop a program that flashes in a sequential manner the light-emitting diodes of the development platform BGC-8088.

Continue reading

Within the framework of the course “Computer Architecture – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we were asked to choose one of the available projects in order to implement it. My choice was project 1, whose aim was to implement a program that can solve single variable equations of first degree of the form ax + b = 0.

Continue reading

The project ‘nxnes’ (NxN Equalisations Solver) is the implementation of project 5 from the list of selected projects in the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia). The objective of this project was the implementation of the Gauss Elimination Method to solve a NxN system of linear equations.

Continue reading

Within the framework of the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we were asked to choose one of the 20 available projects to achieve. My choice was project 10, whose goal was to implement a birthday and celebrations alert system.

Continue reading

The project ‘OSHACKERS’ (Operating System Hackers) and the website ‘oshackers.org’ refer to a safe, free, friendly and useful to the end-user online web system for visualising information related to the various users of the various free and open operating systems around the world.

Continue reading

It is true that Software Programming is a branch of Computer Science about which I’m pretty enthusiastic. But I’m very excited at the times when I learn something new and innovative on programming. Such a period of learning of new issues on programming was when I began to wonder about the way the Internet works. My questions were related to the client – server architecture model (on whose base the Internet and its services has been designed), how web applications is in practice implemented and how I could implement an Internet service on my own.

Continue reading

The project ‘vs-cms’ (Very Simple Content Management System) is a personal project and a web content management system.

Continue reading

The project ‘www-el‘ (formerly ‘elwebtrans’) serves to translate all the important articles, texts (web pages) of the GNU Project in the Greek language. All members of the project ‘www-el‘ are volunteers who contribute their work to spread the GNU Project and the philosophy of the Free Software Foundation in the Greek public. If you have some free time and want to contribute to the defense of liberty and the further dissemination of Free Software, help our project.

Within the framework of the course “Operating Systems II – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we developed as a semester assignment an application whose aim was to simulate the evolution of a colony of single-celled organisms, namely the creation of the famous game of life.

Continue reading

The project ‘tct‘ (The Crime Tracer) fanned my wish to create a resource manager for the needs of the game. Generally, a resource manager increases efficiency in most cases because it uses internal caching and mapping. The resource manager of the project ‘tct‘ is written in Python and manages graphics, sounds and Pygame fonts.

Continue reading

Fosscomm 2012 (Serres).

A beautiful and dynamic experience that I hope will be repeated again.
Congratulations to the organizers and participants of this conference.
Their contributions to Free Software was invaluable.

This project refers to the development of the procedural programming language YAFL (Yet Another Free Language) as well as its interpreter. The programming language YAFL is a tool for teaching the basic principles of procedural programming to secondary school students and beginners in general.

Continue reading

The GNU Project by Richard Stallman
The original version was published in the book “Open Sources”

The first software-sharing community

When I started working at the MIT Artificial Intelligence Lab in 1971, I became part of a software-sharing community that had existed for many years. Sharing of software was not limited to our particular community; it is as old as computers, just as sharing of recipes is as old as cooking. But we did it more than most.

Continue reading

On 21/12/11 at TheHackerspace we made 3 presentations on game developing by using open hardware and free software. Specifically, the presentations were: a) competitive multiplayer game for reinforcing visual skills and reflexes implemented with Arduino, b) engine for moving various sprites in two-dimensional games implemented with Python and Pygame, c) various games with Arduino and Gameduino.

Continue reading

The project “Steganography System” refers to an open-source steganography system which can be used to hide text in digital media formats (image, audio, video). Generally, steganography is the art of hiding a message in a way that its existence is only known to its recipient.

Continue reading

The project ‘tct‘ (The Crime Tracer) made me wish to create an engine for moving various sprites in two-dimensional games. This engine is a prototype and is continuously optimized. It has also been developed with the help of Pygame and Python. Additionally, you can find a rough example that uses the engine of the project ‘tct‘ (The Crime Tracer).

Continue reading

The project “PGASystem” (Parallel Genetic Algorithms System) is an under development system based on the client / server architecture and can be used to implement and study of parallel genetic algorithms.

Continue reading

The first openSUSE collaboration weekend camp was held in Katerini on 15-17 July 2011. There was also a workshop according to the programme held by TheHackerspace on “Security & Arduino” which included the presentation of two embedded security systems both at hardware and software levels.

Continue reading

TheHackerspace (Thessaloniki’s Hackerspace) is here!

We announce that at 7.00 pm on Thursday 30/6 we organize a kick-off event for the presentation of TheHackerspace at the Art Cafe “Kokini Klosti Demeni” which is the permanent meeting place at 32 Nicosia Street, Kalamaria, Thessaloniki. Come to get to know us, to see you and share ideas!

The TheHackerspace is an open laboratory for research, collaboration, creativity and learning. But above all, it is a vibrant community of people with ideas and concepts stemming from the philosophy of Free Software / Open Hardware. The idea for the project was started a few months ago by people who love Hacking, both software and hardware, and soon was put into practice with passion and desire to contribute to the community.

Our moto is “Love to hack embedded & operating systems!“.

Happy Hacking,

Stergios Kalamopoulos
Efstathios Chatzikyriakidis
Stavros Kalapothas

Dear Readers and Friends of Free Software,

On 5/30/11 (Sunday) there was the fifth seminar, thus completing the circle of free seminars on the ARDUINO open source electronic platform. Specifically, at the fifth seminar I presented my thesis whose subject is the following:

Network implementation of wireless radio communication between two embedded nodes (identification node ​​and control node) for the remote control of devices via digital identification and recognition of physical objects using the Arduino platform.

I feel I must express a very big thank you to the Association of Greek Users and Friends of FS / OSS, especially the living people behind it who are perfectly respectable and cooperative personalities, open minded and with a progressive dynamic potential, giving me the opportunity through this cycle of free workshops to distribute freely my knowledge and my experience on the world of Embedded Systems.

Sincerely,

Efstathios Chatzikyriakidis

The Association of Greek Users and Friends of Free Software / Open Source Software invites you to the new presentation in the new round of free courses and presentations organized with a view to deepening the knowledge and alternative use and exploitation of FS / OSS:

Fifth Seminar on the Open Source Platform ARDUINO about:

Network implementation of wireless radio communication between two embedded nodes (identification and control node) for the remote control of devices via digital identification and recognition of physical objects using the Arduino platform.

Important Notice: It is necessary to attend this seminar for obtaining certifications by those who attended the Arduino seminars organized by the GreekLUG in the year 2010 – 2011.

The presentation will be made by the Informatics Scientist and Communications Engineer as well as Arduino hacker, Efstathios Chatzikyriakidis on what is the first thesis based on the Arduino in Hellas.

The event will take place at 17:00 on Sunday, May 29, 2011 in the Computer Laboratory of the Department of Economics, University of Macedonia.

The Free Software / Open Source Software Association (FS / OSSA) recently organized a conference entitled “Open Source: Opportunity Development” in various cities. Also, last Sunday (22/05/11), I had the opportunity to attend the one-day workshop held at the University of Macedonia in Thessaloniki.

Continue reading

Below, we quote a function for managing a transaction in a hypothetical transaction management system. It is very likely multiple instances of the function to be executed in parallel on a system of symmetric multiprocessing (SMP), on multi-processor platforms or even a multithreaded single processor systems.

Continue reading

Probably sometime you will need to write a program in assembly language. For this reason, in this article we will develop a simple and typical executable “Hello World” program in assembly language to familiarize yourself with the process.

Continue reading

I quote below a personal portable implementation (in C++) of a classic Differential Evolution algorithm used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.

Continue reading

I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x, y) = sin(x) * sin(y) in the domain 0 <= x, y <= 2pi. You can compile the program with the g++ compiler.

Continue reading

I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.

Continue reading

I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.

Continue reading

I quote below a personal portable implementation (in C++) of a classic genetic algorithm (evolutionary algorithm) used to maximize the function f(x) = sin(x) in the domain 0 <= x <= 2pi. You can compile the program with the g++ compiler.

Continue reading

Within the framework of the course “Software Engineering II – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we developed as a semester assignment an application for the management of hotel businesses.

Both the graphical user interface (GUI) and the application were implemented with Qt while the database in SQLite. More specifically, the end user can perform through this application functions such as: processing of customers / rooms, booking rooms, search rooms / customers, inventory of hotel services offered to customers, central management for the correct operation of the hotel, central management of the cost of services provided, as well as adding new users and system administrators to the system.

Continue reading

This project refers to a safe, friendly and useful to the end-user Web Geographic Information Management System which is used for displaying and managing GIS on the Internet. The Geographic Information is located on an exclusive database (MySQL) and the user can browse them by categories. The system also has both front-end for the viewing of GIS as well as back-end for managing the overall system.

This project is free software and you can improve it if you want to.

Continue reading

On Sunday 19th December 2010, there was the fourth seminar on the ARDUINO open source electronic platform in the same place where the previous one was also held.

In the presentation of the fourth seminar, we studied cases of use of wireless communication with ARDUINO. Initially, we discussed the basics and the theoretical aspects of wireless communication, the advantages and disadvantages in radio and infrared communication.

Continue reading

The Association of Greek Users and Friends of Free Software / Open Source Software invites you to the new presentation in the new round of free courses and presentations organized with a view to deepening the knowledge and alternative use and exploitation of FS / OSS:

Fourth Seminar on the Open Source Platform ARDUINO

The presentation will be made by the Informatics Scientist and Communications Engineer as well as Arduino hacker, Efstathios Chatzikyriakidis.

The event will take place at 17:00 on Sunday, December 19, 2010 in the Computer Laboratory of the Department of Economics, University of Macedonia.

On Sunday 05/12/10, there was the third seminar on open source e-platform ARDUINO held at the same place as the previous one.

The presentation was attended by several people whose interest for the ARDUINO was remarkable. The questions during the presentation and especially at break time were numerous as well as interesting.

Continue reading

The Association of Greek Users and Friends of Free Software / Open Source Software invites you to the new presentation in the new round of free courses and presentations organized with a view to deepening the knowledge and alternative use and exploitation of FS / OSS:

Third Seminar on the Open Source Platform ARDUINO

The presentation will be made by the Informatics Scientist and Communications Engineer as well as Arduino hacker, Efstathios Chatzikyriakidis.

The event will take place at 16:00 on Sunday, December 5, 2010 in the Computer Laboratory of the Department of Economics, University of Macedonia.

On Saturday 20th, November 2010 there was the second seminar on open source e-platform ARDUINO held at the same place as the previous one.

The presentation was attended by several people whose interest for the ARDUINO was remarkable. The questions during the presentation and especially at break time were numerous as well as interesting.

It was also wonderful that the event was attended by scientists from different disciplines, such as engineers, artists, programmers, etc.

Continue reading

The Association of Greek Users and Friends of Free Software / Open Source Software invites you to the new presentation in the new round of free courses and presentations organized with a view to deepening the knowledge and alternative use and exploitation of FS / OSS:

Second Seminar on the Open Source Platform ARDUINO

The presentation will be made by the Informatics Scientist and Communications Engineer as well as Arduino hacker, Efstathios Chatzikyriakidis.

The event will take place at 17:00 on Saturday, November 20, 2010 in the Computer Laboratory of the Department of Economics, University of Macedonia.

Dear Readers and Friends of Free Software,

First of all, as a return gift of gratitude, I owe a big thanks to both the FS / OSS Association, who gave me the opportunity to freely share my knowledge and my experiences about the world of ARDUINO with you through the cycle of seminars started on Sunday 24/10/10 as well as to all of you who attended the first seminar filling the hall of the laboratory with your presence and your interest.

Continue reading

The Association of Greek Users and Friends of Free Software / Open Source Software invites you to the new presentation in the new round of free courses and presentations organized with a view to deepening the knowledge and alternative use and exploitation of FS / OSS:

Open Source Electronics Platform ARDUINO

The presentation will be made by the Informatics Scientist and Communications Engineer as well as Arduino hacker, Efstathios Chatzikyriakidis.

The event will take place at 13:00 on Sunday, October 24, 2010 in the Computer Laboratory of the Department of Economics, University of Macedonia.

This project refers to an Arduino library implementing a generic, dynamic queue (array version).

The data structure is implemented as a class in C++.

For more information, you can get the project itself ‘QueueArray‘.

This project refers to an Arduino library for implementing a generic, dynamic queue (linked list version).

The data structure is implemented as a class in C++.

For more information, you can get the project itself ‘QueueList‘.

This project refers to an Arduino library implementing a generic, dynamic stack (linked list version).

The data structure is implemented as a class in C++.

For more information, you can get the project itself ‘StackList‘.

This project refers to a sketch (an Arduino program) in which you have the ability to run applications with the help of an infrared receiver (IR) and a remote control. Also included in this project is a Python script that implements a background service (Daemon) which communicates with the Arduino and initiates the execution of various applications. The program can manage several remote controls following the communication protocols NEC, Sony SIRC, Philips RC5 and Philips RC6. Also, you are given the opportunity to train the software to respond to specific keys from several remotes (the knowledge is recorded in the EEPROM of the Arduino).

Continue reading

This project refers to an Arduino sketch that implements a calculator which valuates infix mathematical expressions using appropriate algorithms and data structures. The mathematical expressions are given through the USB port, while the valuation and presentation of results is done by Arduino. The results are displayed in an appropriate LCD display.

Continue reading

In this article, I quote a personal documentation implementation of the source code of the application “GNU Find String” using the Doxygen system. The source code of the application is written in ANSI C. You’ll find the documentation here: Doxygen documentation of the source code of the application “GNU Find String”.

Continue reading

This project refers to an Arduino sketch that implements a motion detector for driving and controlling other devices using a passive infrared sensor (PIR) and an electromechanical switch (relay). The program examines whether there is movement (the detection range of the detector is about 6 meters) in space (via the sensor PIR) to activate the device via the relay.

Continue reading

This project refers to an Arduino sketch which with the help of a relay (electromechanical switch), the system VRBot and the expansion card for sensors (Sensor Shield) can control (enable or disable) an external device (eg. a lamp, a car alarm, a home air conditioner, etc.) with a double beat of the palm.

Continue reading

This project refers to an Arduino sketch that implements a game for reinforcing visual skills. Basically, it is a reflex game. It can be played by a user (single-player) or multiple users simultaneously (multi-player). Each player holds a button. The system turns on and off the appropriate LED at pseudorandom times. The players have to click their button as fast as possible in order to earn points.

Continue reading

This project refers to an Arduino sketch that implements the logic of a digital indicator of alcohol content. This system can be used as a device for breath test. There is the MQ-3 sensor in the system to detect alcohol. A suitable multi-LED bar graph (which is driven by a 8-bit shift register 74HC595) is used as an indicator rating the alcohol content. If the alcohol content is high, then a tune is produced through a suitable piezo speaker. Finally, there are two buttons in the system for functions such as ON, OFF and a LED which is the operation indicator.

Continue reading

This project refers to an Arduino sketch which with the help of a VRBot system can recognize voice commands, making it possible to run applications. For example, we could  cause the execution of the relevant browser with the voice command «Firefox». Also included in this project is a Python script that implements a background service (Daemon) which communicates with the Arduino and initiates the execution of various applications.

Continue reading

This project refers to an Arduino sketch which, with the help of an RGB LED and a VRBot system, can implement a mood lighting system controlled by voice commands. There are voice commands to activate / deactivate the red, green and blue. The color changes are performed with fade effects.

Continue reading

This project refers to an Arduino sketch which – with the help of a system VRBot, a basic keyboard, an RFID reader and a piezo speaker – can implement a Security Access Control with Multi-Factor Authentication.

The system comprises a security level associated with typing a password (something I know), a security level associated with the use of an RFID tag (something I have) and a security level associated with the recognition of a voice message password (something I am).

Continue reading

This project refers to an Arduino sketch which uses an ultrasonic sensor for calculating the time return of the ultrasonic signal emitted by the sensor and the object reflecting the signal back. Then, with the help of appropriate physicomathematical formulas, it performs calculation of the distance between the sensor and the object causing the reflection signal. The distance is displayed in an appropriate LCD display both in inches and in centimeters. This system could be used in security doors, on cars as a helper to park or anywhere else where distance at close proximity is important.

Continue reading

This project refers to an Arduino sketch which uses an ultrasonic sensor for calculating the time return of the ultrasonic signal emitted by the sensor and the object reflecting the signal back. Then, with the help of appropriate physicomathematical formulas, it performs calculation of the distance between the sensor and the object causing the reflection signal. Also, the system includes a piezo speaker used to produce a tune when an object is detected too close nearby. This system could be used in security doors, on cars as a helper to park or anywhere else where distance at close proximity is important.

Continue reading

This project refers to an Arduino sketch which uses an LCD display (as output device) with in-built elementary Keypad (as input device) to display information from sensors. In this project, there are temperature, light and motion sensors. If we want to check the value of one of the sensors, we can do it via the keypad onto the LCD screen. We can choose the sensor of interest using the keys UP and DOWN.

Continue reading

This project refers to an Arduino sketch that implements a true random number generator with the help of an audio sensor. The sensor measures the sound volume in the nearby environment. The Arduino acts as a network device with an appropriate WEB interface in it from which we can access the random numbers. This technology is not new as it exists in other network devices. For example, routers or network printers have a WEB interface.

The WEB interface is installed in the Arduino itself and is supported with the help of a simple but quite progressive web server (which is also located within the Arduino). The Arduino is connected to the Internet with a special Ethernet card (Ethernet Shield). The Ethernet card is assigned with a static IP (because the Arduino in this case does not work as a client but as a server since the web server is executed there at port 80).

To enable the sound sensor to collect really random values as regards the volume of sound in the environment, it helps to place it in a noisy room or near a radio.

Continue reading

This project refers to an Arduino sketch which with the help of a relay (electromechanical switch) and the VRBot system can drive an external device (eg. a household lamp, a car alarm, a home air conditioner etc.) with voice commands. The system VRBot is properly trained with voice messages and then performs voice recognition.

More specifically, the Arduino detects acoustic sounds and tries to recognize them through the system VRBot. Finally, if acceptable voice messages are identified, the Arduino manages them for the use of the device driven with the help of the relay.

Continue reading

This project refers to an Arduino sketch that implements an online Morse Code web encoder. The Morse Code is until now a global communication system. However, it is now rarely used (it has been previously extensively used in the Navy and the Army in general). In this project, the Arduino works as a server, which remote clients can be connected to with the help of TCP sockets and send occasional messages on a regular alphanumeric form.

For example: “SOS! USA NAVY (12/02/1920, 23:00)”

Continue reading

The presence of errors in software development (and not only) is inevitable. However, over time the programs improve and tend to perfection through various techniques and methods we have developed.

The deterministic problems are easy to spot because they always lead to the same error. There are tools that run through the source code of an application to find possible deterministic errors (these tools are especially useful in applications written with scripting languages such as Python, Bash Scripting, etc).

Continue reading

This project refers to an Arduino sketch that implements a motion detector using a passive infrared sensor (PIR), a piezo speaker, two switches for functions such as ON, OFF and an LED as function indicator. When the detector is in OFF state then it performs no real function (just turns off the function indicator), and when in ON state, then the program turns on the function indicator and checks whether there is motion (the detection range of the detector is about 6 feet) in the area (via the sensor PIR) to produce a tune with piezo speaker. This process is repeated continuously as long as there is movement and until the switch OFF is pressed.

Continue reading

Below I quote a function in C to convert a standard Linux kernel process into background service (Daemon Service). If you wish to develop a server to provide services, it may be helpful. Although there are several manuals on the Internet on how to create background services, most of them don’t show a complete example, while others are barely functioning. The following function converts a standard process into a service taking everything you need into account. Also, this function is the result of a combination of several textbooks and numerous studies about this issue. Finally, it has been tested on personal applications servers and it is performing well.

Continue reading

Below I quote a simple implementation in C that you can use in your applications for the management of software signals in POSIX operating systems (such as the GNU/Linux). Of course, this implementation comes from a personal project of the past, especially where I grappled with system programming. You can modify this implementation to work best with your needs.

Continue reading

Before I mention the function that I have developed for the production of random numbers from the monolithic Linux kernel, I would first like to say something about the issue of random numbers.

The issue of producing truly random numbers is important and had even since the beginning puzzled computer scientists. In mathematics, it is very difficult to define the random and, generally, randomness is very difficult to prove with no assumptions. In the past, many scientists tried to develop mathematical models and algorithms to develop random number generators.

One of the greatest scientists of Computer Science, John von Neumann (the basic idea of the architecture of all computer systems today was his own design) jokingly said: ‘Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin.’.

Continue reading

The QT provides an adorable way to store the settings of a program with a GUI (and not only) by means of the QSettings library. Below, we quote a personal version of the project ‘parkman‘ (Parking Manager).

Continue reading

Below I quote a simple but useful library (implemented in C++) which contains functions for comparing double precision floating point numbers.

Continue reading

This project refers to an Arduino sketch which allows the rotation of three dimensional shapes using appropriate sensors. Essentially, the Arduino collects values from the sensors and corresponds them to the [0, 360] range (rotation angle). Every time we get a pair of values (X, Y) for the rotation of the shape, the pair is sent over the USB serial port to the PC.

The PC runs a Python script which produces three-dimensional shapes with OpenGL. Also, the script obtains the pairs via the USB serial port and renews the current shape of the screen. For performance reasons, the three-dimensional shape is renewed only when there are changes in the pair (X, Y).

Finally, you should know that to run the Python script properly the Arduino should already be running and input sensors should have been calibrated regarding their edges. The calibration is performed automatically in the first 15 seconds (use two potentiometers as an example for both input sensors).

Continue reading

This project refers to an Arduino sketch which implements a POV (Persistence Of Vision) case for the representation of text messages which can contain the visible characters of the character set ASCII.

Continue reading

This project refers to an Arduino sketch that implements a light indicator with the help of an external sensor (photoresistor) for the recognition of light (the sensor acts as input device for the Arduino), and a bar graph of many LEDs used as a rating indicator (the indicator functions as an output device for the Arduino).

In this project we use an 8-bit shift register (namely the 74HC595). This way we can drive 8 different LEDs in the output committing only three PINS of the Arduino.

Continue reading

Within the framework of the course “Programming II – Laboratory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we were asked to implement as homework a program that reads characters from the standard input and then export to standard output a frequency histogram of the characters that appear.

Continue reading

This project refers to an Arduino sketch which with the help of an external temperature sensor (input device) can control the rotation speed of a DC motor (output device). Also, during the execution of the program, there is dynamic calibration as regards the input values of the temperature sensor.

Continue reading

This project refers to an Arduino sketch which is used to produce LEDs animations. So, we use an 8-bit shift register (namely the 74HC595). This way we can drive 8 different LEDs in the output committing only three PINS of the Arduino.

If we want to drive more LEDs, we connect into a cascade form two or more (depending on the number of LEDs we want to support) shift registers and act accordingly.

Continue reading

This project refers to an Arduino sketch which with the help of an external light sensor (e.g: photoresistor) can control the rotation speed of a DC motor.

Continue reading

This project refers to an Arduino sketch which with the help of an external potentiometer (input device) can control a bar graph of many LEDs. Finally, when the sketch starts running, it calibrates the potentiometer (and so there should be a spin at both ends manually).

Continue reading

Within the framework of the course “Numerical Methods in Programming Environments – Theory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we were asked to develop an optional program that implements Müller’s numerical method for finding the root of equations of the form f(x) = 0.

Continue reading

This project refers to an Arduino sketch which with the help of an external potentiometer (input device) can control the rotation speed of a DC motor (output device). Finally, when the sketch starts running, it calibrates the potentiometer.

Continue reading

This project refers to an Arduino sketch that implements a simple fire alarm using a temperature sensor, a piezo speaker and one LED as indicator for deaf-mute cases. The alarm checks every second if there is enough room temperature (via the temperature sensor). If there is enough temperature to consider it a fire burning in that place, then the alarm produces a musical tune with the piezo speaker and lights the LED indicator. Otherwise, both the speaker and the LED indicator remain in state OFF.

Continue reading

This project refers to an Arduino sketch which with the help of an external potentiometer (input device) can move the position of a servo motor (output device) clockwise or counterclockwise. The system also features two LEDs which – each time the value of the potentiometer changes – change their brightness in such a way that it is obvious in which side of the servo motor are.

For example, when the potentiometer is in the extreme left position then the left LED is lit 100% while the right one 0% (or vice versa). Finally, when the sketch starts running, it calibrates first the potentiometer.

Continue reading

This project refers to an Arduino sketch which with the help of an external light sensor, as e.g. a photoresistor, one can move the position of a servo motor clockwise or counterclockwise.

Continue reading

Within the framework of the course “Visual Programming – Theory” (Department of Informatics and Communications, T.E.I. of Central Macedonia) we developed a clinic management application as a semester project.

The database of the application was implemented in Microsoft SQL Server and the graphical user interface in Borland C++ Builder.

More specifically, this application enables the end user to manage different patients, visits, appointments, diagnoses, treatments, prescriptions, tests, links.

Continue reading

This project refers to an Arduino sketch which moves continuously a servo motor but without the help of the pre-developed “Servo” library but by direct communication, sending the appropriate PWM output to the motor. That way you have clearly complete control of the servo motor, saving enough memory and achieving better response times with less delay.

Continue reading

The project ‘dec2bin’ (decimal to binary converter) is the implementation of an idea I had for some time. I have to admit that sometime in the past when studying possible ways of programming embedded systems with the programming language C and C++, I felt the need to be able to produce, through a program, supposed memory addresses in the form of binary numbers.

Continue reading

A beautiful and dynamic experience that I hope will be repeated again.
Congratulations to the organizers and participants of this conference.
Their contributions to Free Software was invaluable.