Raspberry Pi GPIO Emulator

This Raspberry Pi emulator simulates some of the functions used in the RPi.GPIO library (using python). The intention of this library is educational.

GPIO_Emulator

Installation

The easiest way is to download the zip file and extract the files in the same working environment of your script. To use the emulator just type the following at the beginning of your script.

from EmulatorGUI import GPIO

Simulation

This library simulates the following functions which are used in the RPi.GPIO library.

  • GPIO.setmode()
  • GPIO.setwarnings()
  • GPIO.setup()
  • GPIO.input()
  • GPIO.output()

Test Example


from EmulatorGUI import GPIO
#import RPi.GPIO as GPIO
import time
import traceback

def Main():
    try:
        GPIO.setmode(GPIO.BCM)

        GPIO.setwarnings(False)

        GPIO.setup(4, GPIO.OUT)
        GPIO.setup(17, GPIO.OUT, initial = GPIO.LOW)
        GPIO.setup(18, GPIO.OUT, initial = GPIO.LOW)
        GPIO.setup(21, GPIO.OUT, initial = GPIO.LOW)
        GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)
        GPIO.setup(15, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
        GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
        GPIO.setup(26, GPIO.IN)

        while(True):
            if (GPIO.input(23) == False):
                GPIO.output(4,GPIO.HIGH)
                GPIO.output(17,GPIO.HIGH)
                time.sleep(1)

            if (GPIO.input(15) == True):
                GPIO.output(18,GPIO.HIGH)
                GPIO.output(21,GPIO.HIGH)
                time.sleep(1)

            if (GPIO.input(24) == True):
                GPIO.output(18,GPIO.LOW)
                GPIO.output(21,GPIO.LOW)
                time.sleep(1)

            if (GPIO.input(26) == True):
                GPIO.output(4,GPIO.LOW)
                GPIO.output(17,GPIO.LOW)
                time.sleep(1)

    except Exception as ex:
        traceback.print_exc()
    finally:
        GPIO.cleanup() #this ensures a clean exit

Main()

Download

Click here to download

Advertisements

Christmas Tree Controller

This is a brief explanation how to create a Christmas tree that its LEDs are controlled by the end user from a website. The concept is pretty simple. We need to have a server, a website, a database, a relay, LEDs and of course a Netduino. Obviously this concept can be applied on a RaspberryPi.

Video Demonstration

General Setup

For this project Node.JS was chosen because it has a popular library called Socket.IO and can be easily connected with MongoDB. Socket.IO is a JavaScript library for real time web applications. It enables real-time communication between web clients and servers. MongoDB is a cross-platform document-oriented database which is classified as a NoSQL database. Socket.IO was used to display the Christmas tree’s animation state (controlled by netduino) in real time to all connected users via Node.JS. MongoDB was used to store the user’s LEDs animation.

Here is a step-by-step breakdown structure of what was done:

Step 1 – User enters animation sequence: Selected LED colours with duration in seconds.

Step 2 – Upon submission, the user’s data is stored in MongoDB and emitted via Socket.IO to all connected clients in JSON.

Step 3 – Netduino checks every two seconds with Node.JS if there’s a new animation for playing. If there is, Node.JS gets the data from the database and returns it to Netduino as JSON string. Then Netduino parses the JSON string and plays the animation. Once it finishes, it instructs Node.js to get the next animation.

Step 4 – Another challenging part was how to setup the relay with the batteries, LEDs and Netduino. The following tutorial was followed and implemented: http://www.instructables.com/id/Controlling-AC-light-using-Arduino-with-relay-modu/?ALLSTEPS

 

FrameworkChristmas

 

Digital Game Based Learning – Learn Binary & Hexadecimal Conversions

Capture

Introduction

I created this game using Unity 3D for a teaching course. The game takes place in World War 2 and contains one single mission. A number of planes are inbound to destroy a town and the objective of the player is to stop the enemy. The player has to translate incoming messages by using ASCII encoding and destroy respective enemy planes.

This game supports assessment for:

  • Decimal to ASCII Encoding
  • Binary to ASCII Encoding
  • Hexadecimal to ASCII Encoding

Trailer

Download

Click here to download (Runs only on Windows)

Gameplay

Step 1 – First Screen

Step 1

Learn programming using Call of Duty 4

I’ve been talking with several young programming language students and many of them want to build and develop games. Some of them tried Unity 3D and Unreal Engine on their own but they found the engines very complex to use. I totally understand their situation. These types of engines are used by people that have good understanding in programming and 3D graphics. On the other hand this motivation should not be wasted! I think that at this stage, these students should try to modify high end games and at the same time learn the basics of programming rather than get into detail of how these game engines work.

Call of Duty 4 is the perfect solution for this objective. One can build mods using a programming language that is similar to C# and test the code in an online collaborative environment. I created some notes and decided to share them online. Feel free to use and enjoy 🙂

 

 

Introduction

Mission 1

Learn Bubble and Merge Sort Algorithms by playing a 3D Digital Game

I created this game for my masters dissertation. The game idea is based on the famous game World of Warcraft and supports single player and multiplayer game modes. The single player supports only one student while the multiplayer supports two students working together to solve the same task. Both game modes support spectator mode which can be used by any lecturer to act as a facilitator. The game has been developed using Unity 3D and can be played freely on any PC. One must not make any profit on such content.

Click Here to Download Game.

Technical Details:

  • Runs only on Windows.
  • Open Port TCP843 (if game won’t connect with the online Server)
  • Only 20 concurrent users allowed

LED Controller – Android & Netduino

In today’s tutorial we are going to connect Netduino with Android. It is recommended to first read this tutorial to better understand how Netduino works and can be connected to the LEDs.

Netduino-Android2

Netduino-Android1

The first thing that you need to understand is that Netduino can act as a server that accepts web page requests. Based on the content of the web requests, one can turn on/off LEDs. Therefore we can create an Android application that sends HttpPosts and has full control on our LEDs. It sounds easy right?

In our example we hosted the Netduino server locally by connected the Ethernet cable to the router and connected the Nexus 7 via the Wi-Fi.