Mturk Jobs

Mturk Jobs
Mturk Jobs


Monday, May 27, 2019

New Job Opening at AVELabs - Automotive Software Company in Egypt is now hiring

It's been a long time since we announced a new vacancy on our blog.

Today we proudly announce that AVELabs is hiring

This post is copied from AVELabs page on Facebook:

Avelabs is hiring!
"Back End Software Engineer [BEND-ENG]"
*Job Description:
- Be an active member of the team behind Yonohub (, the first cloud-based system for designing, sharing, and evaluating autonomous vehicle algorithms using just blocks!.
- Design, develop, and test the server-side software components of Yonohub.
- Maintain and improve existing web services.
- Evaluate the technical tradeoffs of every decision.
- Build robust, lasting, and scalable services.
- Iterate quickly without compromising quality.
*Job Requirements:
- Bachelor’s degree in computer engineering, computer science, or a related field.
- Several years of experience in back end web development using Python.
- Hands-on experience developing RESTful microservices and using Docker.
- Experience deploying Python web apps in Gunicorn and uWSGI.
- Strong knowledge of Nginx.
- Strong skills in object-oriented programming, database design, SQL, and caching.
- Knowledge of MongoDB, PostgreSQL, Redis, Kubernetes, AWS highly preferred.
- Experience in C++ highly preferred, but not required.
- Excellent command of English (written and spoken).
- Excellent attitude.
>>To apply, please fill the following form ( and select the job with the code [BEND-ENG].

Sunday, May 19, 2019

How I Made a Virtual Oscilloscope and Won 1000$ on a Worldwide Contest

Yes. This is an old memory, but remembering good old memories can be a positive act to keep you fresh and motivated.

Here is my story of how I managed to win a prize on a worldwide design contest from Renesas.

At the year of 2008 , I found an advertisement in Appliance magazine about a free kit from a Microcontroller company called Renesas.

I really wanted to get this development kit. It was dedicated to motor control. I registered for this kit but unfortunately it was available only in USA and Canada.

However, my email was added in the company's clients database. Next, the company started a design contest at the same year called Renesas HTS Design Contest 2008.

The company invited me to participate in this design contest. It was a world wide contest which included shipment of free development kit to each eligible participant.

First I was admired by the idea itself of receiving a free development kit for the contest. I wanted to have this kit to learn more about Embedded C programming and to learn the Renesas technology which was new to me until that time.

To be eligible to receive the kit, there was a short demo for the company's other educational boards over a Virtual Lab environment. Then you are asked few questions to qualify for receiving the kit.

I passed through the stages of qualification and waited to receive the kit. When I received it I started to develop my design right away.

The company made a very good idea for improving the challenge through the launch of a forum for the challenge.

Each participant posted the idea of his entry and provided some technical details about it . This idea was very helpful and motivational. Any visitor or another participant can see your posted details and get admired with it or comment on it.

My design was a Multichannel Oscilloscope. The idea was very simple. I made the analog signals read by the analog-to-digital converter of the Microcontroller M16C ( on which the board is based )

The M16C has many A/D inputs but and there were 3 of them available in the challenge board.
The signals values were converted into digital in the Microcontroller and they were sent to a PC based client software which incorporated the display of a virtual Multichannel Oscilloscope.


This project is a simple implementation of a 3 input channel oscilloscope. The Neutrino development kit has 3 available A/D inputs (including the photo-resistor).


The A/D inputs are used as analog signals input port; they are converted into the M16C microcontroller in the AD repeat mode. The host PC then reads the digitized number in the three registers of the each AD channel. The host draws the signals on the virtual oscilloscope interface.


The three A/D inputs are:

1- AN1 ( connected to the photo resistor )
2- AN4 ( connected to the kit ‘s I/O connector )
3- AN5 ( connected to the kit ‘s I/O connector )

The Kit I received form Renesas had i/o ports and some of them are analog input.

You can buy another Renesas Development kit from eBay.

I connected pin headers to the analog input ports.


Addresses of the three registers that contain digitized signals are

AN1 3C2h 962
AN4 3C8h 968
AN5 3CAh 970

Here is part of Firmware code:

Description: Initialization of a AD converter on AN1
void InitAD( void )
// adcon0 = 0x09; /* sw trigger, repeat mode, AN1 */ 
// adcon1 = 0x20; /* vref connected, 8 bit mode */
// adcon2 = 0x01; /* P10 group, sample and hold */

adcon0 = 0x09; /* sw trigger, repeat mode, AN1 */ 
adcon1 = 0x20; /* vref connected, 8 bit mode */
adcon2 = 0x01; /* P10 group, sample and hold */

adst = 1; /* start conversion */


The host PC runs a VB express program which read from the mentioned addresses on the user selection of the desired input port and handles this input data to a virtual oscilloscope class which draws the signal in real-time.

The user selects the input channel by a radio box. The result is loading the analog-to-digital control register 0 (adcon0 Address 982) with one of a three inputs according to the desired input port:

AN1 49h
AN4 4Ch
AN5 4Dh

From the PC based client, the user can choose the input channel to be displayed on the virtual oscilloscope and the rate at which it is displayed.

Here is part of Visual code ( Running on PC )

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If Button2.Text = "Run" Then
Button2.Text = "Stop"
Button1.Enabled = False
Button4.Enabled = False

Dim D1(2) As Double
' Dim Db As Double
Dim i As Integer

ScopeStarted = True

D1(0) = 0



hts.GetMemory2(lBegin, lEnd, lDisplayWidth, vMemData)

outValue = vMemData.GetValue(0)

D1(0) = outValue * 0.01953125

TextBox1.Text = outValue
TextBox2.Text = D1(0)


For i = 0 To 10000 Step 1

'Call ExternalNext(scopehandle, Db)
Call ShowNext(scopehandle, D1(0))

Next i

Loop Until (Not ScopeStarted)

Button2.Text = "Run"
Button1.Enabled = True
Button4.Enabled = True
ScopeStarted = False
End If
End Sub

Before the last day of the deadline of the contest I submitted the source code for the Microcontroller side (written in Embedded C ) and the source code of the PC client (written in Visual Basic.Net) .

The results of the contest were announced on Renesas DevCon 2008.

I've got the 4th honorable mention prize for my entry "Multichannel Oscilloscope".

This contest was very challenging and rewarding. Thanks to Renesas who has helped me through all this contest.

Location for the HTS 2008 projects:

Friday, May 17, 2019

How to Connect Arduino UNO to USB Keyboard - The Full Length Story

The actual sit and write is the essence of being a writer. Just as in any other discipline, if you do not invest time, mind and effort in doing it, you are treating it to be just a hobby.

The mind you give to the process of writing comes back to you in a form of the Flow. The process of effortlessly create something valuable with ease and timelessness. It’s well known that whatever habit that you devote yourself to is what you can be finally rewarded for.

That's why I've wanted to make this project to concentrate on the process of writing itself.

Today I’m showing you how I’ve made this new project. Of course, it’s about Arduino and it’s about writing.

For some reason I wanted to connect Arduino to my keyboard.

Because I love writing on the keyboard.

It’s that real physical feeling of switches on my fingertips that makes me feeling creative and alive.

But there’s only a small problem. My favorite keyboard is happened to be a USB keyboard.

Yes that’s the new modern technology is about and it’s something I should be happy with.


But the only problem I was having when I wanted to connect my keyboard to Arduino (as a host to my keyboard) I found that the standard use of Arduino with a keyboard is the PS/2 connection.

Actually there is a good well written Arduino library for this purpose.

So how could I connect my USB keyboard to Arduino? I only remembered back then when I was looking for a keyboard for my notebook (which had no PS/2 ports in it) is that I wanted to figure out some way to use a PS/2 keyboard with a USB port but I couldn’t found this.

And that’s why I bought the USB keyboard for the first place.

But this search has helped me a lot these days when I wanted to connect my USB keyboard to Arduino.


  I only then remembered that although I couldn’t use a normal PS/2 keyboard with a USB port in a notebook because of the different protocol, but the opposite is doable.

I remembered that I’ve found an instructable that described building a USB to PS/2 converter.

The writer mentioned that he has tried it and it worked.

This means that you can use a modern USB keyboard with your old PCs and laptops using only this converter.

It’s just a physical converter for the connection between the keyboard and the host port(not a voltage or protocol converter). That’s because the USB keyboard can be powered from the old PS/2 port, take the CLOCK signal from it and then send DATA signal to it.

And the writer has tried to make this setup and it worked. Now it was my turn. When I looked for some information to connect a USB to an Arduino board I found that in order to do this I need either an Arduino USB shield or an Arduino board with Microcontroller that have the native USB host physical feature. Neither option were available to me.

So I’ve decided to try the physical USB to PS/2 converter - the writer has tried with his PC - between my USB keyboard and Arduino. You know what? This one also worked.

Using the PS/2 Arduino library we can connect the USB keyboard directly to Arduino boards such as Arduino UNO or Arduino Mini.

I had that female USB connector but I had to first test its pin-out with a voltmeter.

Then I made a cross connection between the USB connector and the PS/2 keyboard of the library.

USB Keyboard PS/2 Port

+5 v Vcc +5 v Vcc

Data- Data

Data+ Clock



Arduino UNO 

Female USB port


USB Port Arduino

+5 v Vcc +5 v Vcc

Data- PIN 2

Data+ PIN 3


Download and save the latest Arduino PS/2 library from here.

Open Arduino IDE.

On the sketch menu, select library. Add Zip file.

Point to the Arduino PS/2 library Zip file location and then press Enter.

On the File menu select examples.

From PS2keyboard sub-menu select International.

You find the international.ino sketch loaded into the Arduino IDE.

Edit these two lines of code


const int DataPin = 8 ;

const int IRQpin = 5 ;

In this case, I used

DataPin to be Arduino Pin 2


IRQpin to be Arduino Pin 3

Open the Serial Monitor and watch try the keyboard as you wish.


There will be a different response from some keys on the keyboard.

This is caused by difference of Arduino response to the keyboard than the standard PC.