Put Your Raspberry Pi to Work: IoT hub during the day and retro gaming machine during the night!
Raspberry Pi and the Raspberry Pi logo are registered trademarks of the Raspberry Pi Foundation. ANAVI, the ANAVI logo and combinations thereof, are registered trademarks of Leon Anavi. Other product names may be trademarks of others and the rights belong to their respective owners.
The information in this document is provided in connection with Anavi products. No license, express or implied or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Anavi products.
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/.
ANAVI Play pHAT hardware design is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
The software examples are released under MIT and the rest of the software is available under GPLv3.
It is possible that the pictures in this manual differ from the latest revision of the board.
The product described in this document is subject to continuous development and improvements. All particulars of the product and its use contained in this document are given by Anavi in good faith. However all warranties implied or expressed including but not limited to implied warranties of merchantability or fitness for purpose are excluded. This document is intended only to assist the reader in the use of the product. Anavi shall not be liable for any loss or damage arising from the use of any information in this document or any error or omission in such information or any incorrect use of the product.
This evaluation board/kit is intended for use for engineering development, demonstration, or evaluation purposes only and is not considered by Anavi to be a finished end-product fit for general consumer use. People handling the product must have electronics training and observe good engineering practice standards. As such, the goods being provided are not intended to be complete in terms of required design-, marketing-, and/or manufacturing-related protective considerations, including product safety and environmental measures typically found in end products that incorporate such semiconductor components or circuit boards.
There is no warranty for the design materials and the components used to create ANAVI Play pHAT. There are considered suitable only for ANAVI Play pHAT.
ANAVI Play pHAT is an open source hardware Raspberry Pi add-on board with 8 buttons, EEPROM and 3 I2C slots for sensors. ANAVI Play pHAT is useful as a gamepad for low cost retro gaming and/or IoT hub with buttons and sensors. It was started as a hobby project by Leon Anavi in the summer of 2018. It is certified by the Open Source Hardware Association under UID BG000007.
ANAVI Play pHAT is designed with the free and open source electronics design automation suite KiCAD.
Anavi is fully compatible with the Raspbian GNU/Linux distribution and open source sample applications are provided. It is also compatible with RetroPie.
ANAVI Play pHAT Raspberry Pi HAT includes:
- 8 buttons
- Slots for up to 3 plug and play I2C sensors
- EEPROM with device tree binary overlay
ANAVI Play pHAT is compatible with the following Raspberry Pi versions and models:
- Raspberry Pi 5
- Raspberry Pi 400
- Raspberry Pi 4 Model B
- Raspberry Pi 3 Model A+
- Raspberry Pi 3 Model B+
- Raspberry Pi 3 Model B
- Raspberry Pi 2 Model B
- Raspberry Pi Zero
- Raspberry Pi Zero W
- Raspberry Pi Zero 2 W
- Raspberry Pi Model B+
- Raspberry Pi Model A+
ANAVI Play pHAT is NOT compatible with the earlier 26-pin models of Raspberry Pi 1 Model B & A's.
ANAVI Play pHAT is a Raspberry Pi HAT suitable for existing Raspberry Pi customers interested in retro gaming, home automation, software development and Internet of Things. The board is appropriate for embedded programming enthusiasts, GNU/Linux gadget fans, students as well as web and/or mobile app developers. The main usage of the board is gaming and home automation without the urge of understanding perfectly the hardware.
Revision 1.0 of ANAVI Play pHAT was used while writing this document. It is possible that it is outdated so it is always recommended to check the latest sources from the GitHub page of the board.
ANAVI Play pHAT is shipped in a protective antistatic bag. The HAT as well as the Raspberry Pi must NOT be exposed to high electrostatic potentials. A grounding strap or similar protective device should be worn when handling the board. Avoid touching the component pins or any other metallic element.
In order to setup ANAVI Play pHAT the following items are required:
- Compatible Raspberry Pi
- microSD card with compatible image
- USB power supply
Additionally you may attach USB mouse, keyboard, HDMI monitor or addition peripheral devices to your Raspberry Pi. It is recommended to use 2.5A (2500mA) power supply.
ANAVI Play pHAT Raspberry Pi HAT has 8 buttons. Up to 3 I2C sensors can be also easily attached to the pHAT.
The officially supported I2C sensor modules by ANAVI Play pHAT are:
- Temperature and barometric pressure (BMP180)
- Temperature and humidity (HTU21)
- Light (BH1750)
You may also attach any other I2C sensors but you will have to take care of their software integration.
The official temperature sensor for ANAVI Play pHAT is BMP180. This is I2C sensor capable of measuring both temperature and barometric pressure.
Using 4 Dupont jumper wires connect BMP180 to one of the 3 I2C slots on ANAVI Play pHAT as follows:
BMP180 | ANAVI Play pHAT |
---|---|
VIN | 3.3V |
GND | GND |
SCL | SCL |
SDA | SDA |
The official humidity temperature for ANAVI Play pHAT is HTU21 (SHT21). This is I2C sensor capable of measuring both humidity and temperature.
Using 4 Dupont jumper wires connect HTU21 to one of the 3 I2C slots on ANAVI Play pHAT as follows:
HTU21 | ANAVI Play pHAT |
---|---|
VIN | 3.3V |
GND | GND |
SCL | SCL |
SDA | SDA |
The official light I2C sensor for ANAVI Play pHAT is BH1750.
Using 4 Dupont jumper wires connect BH1750 to one of the 3 I2C slots on ANAVI Play pHAT as follows:
BH1750 | ANAVI Play pHAT |
---|---|
VCC | 3.3V |
GND | GND |
SCL | SCL |
SDA | SDA |
You can mount ANAVI Play pHAT on your Raspberry Pi with your bare hands following the steps below:
- Ensure that you Raspberry Pi is compatible with ANAVI Play pHAT.
- Power off your Raspberry Pi.
- Gently mount ANAVI Play pHAT on the 40 pin header of your Raspberry Pi.
- Add sensors to your ANAVI Play pHAT.
- Optionally, you may also mount two or four brass M2.5 standoffs and the acrylic case to keep your Pi HAT snug on your Raspberry Pi while also keeping the two boards separated.
- That's all, now you are ready to go!
ANAVI Play pHAT is Raspberry Pi HAT therefore it is powered through Raspberry Pi. It is recommended to use the official Raspberry Pi Power Supply or another 2.5A USB power supply from reputable retailer.
In order to work correctly, ANAVI Play pHAT requires an up-to-date kernel, I2C to be enabled, and a few libraries to get started. After booting microSD card with Raspbian, open a terminal and follow the steps below:
- Ensure your APT package list is up-to-date:
sudo apt-get update
- Install additional applications, libraries and other tools needed by ANAVI Play pHAT
sudo apt-get install -y git i2c-tools vim
Follow the steps below to enable I2C which is required by the sensors for ANAVI Play pHAT
- Open a terminal or login remotely via SSH to your Raspberry Pi and type in the following command:
sudo raspi-config
-
Select Interfacing Options > I2C and enable it.
-
Reboot the board.
Sample applications written in Python and the C programming language are provided for ANAVI Play pHAT under MIT license in GitHub. All examples have been tested on Raspbian.
Open a terminal and execute the follow the steps by step instructions to install all dependencies and to get the source code:
- Install dependencies:
sudo apt-get update
sudo apt-get install -y git git-core vim python-dev python-rpi.gpio
- Install the GPIO interface library for Raspberry Pi called wiringPi:
cd ~
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
- Download the examples for ANAVI Play pHAT Raspberry Pi HAT
cd ~
git clone https://github.com/AnaviTechnology/anavi-examples.git
cd anavi-examples
It is mandatory to enable I2C to use any of the sensors supported by ANAVI Play pHAT Raspberry Pi HAT.
Follow the steps below to use the BMP180 I2C temperature and barometric pressure sensor with ANAVI Play pHAT:
-
Connect BMP180 to any of the I2C slots on ANAVI Play pHAT using male to female Duport jumper wire.
-
Type in the following command and verify that the address of the sensor is listed:
sudo i2cdetect -y 1
- Type in the following commands to build and run the sample application that display temperature and barometric pressure:
cd ~/anavi-examples/sensors/BMP180/c/
make
./BMP180
- Verify that the output is similar to (the exact values depend on the atmospheric condition):
pi@raspberrypi:~/anavi-examples/sensors/BMP180/c $ ./BMP180
BMP180 Sensor Module
Temperature 28.6 C
Pressure 991.57 hPa
Follow the steps below to use the HTU21D I2C temperature and humidity sensor with ANAVI Play pHAT:
-
Connect HTU21D to any of the I2C slots on ANAVI Play pHAT using male to female Duport jumper wire.
-
Type in the following command and verify that the address of the sensor is listed:
sudo i2cdetect -y 1
- Type in the following commands to build and run the sample application that display temperature and humidity:
cd ~/anavi-examples/sensors/HTU21D/c/
make
./HTU21D
- Verify that the output is similar to (the exact values depend on the atmospheric condition):
pi@raspberrypi:~/anavi-examples/sensors/HTU21D/c $ ./HTU21D
HTU21D Sensor Module
25.64C
118.99%rh
Follow the steps below to use the BH1750 I2C light sensor with ANAVI Play pHAT:
-
Connect BH1750 to any of the I2C slots on ANAVI Play pHAT using male to female Dupont jumper wires.
-
Type in the following command and verify that the address of the sensor is listed:
sudo i2cdetect -y 1
- Type in the following commands to build and run the sample application that display luminous emittance:
cd ~/anavi-examples/sensors/BH1750/c/
make
./BH1750
- Verify that the output is similar to (the exact values depend on the atmospheric condition):
pi@raspberrypi:~/anavi-examples/sensors/BH1750/c $ ./BH1750
BH1750 Sensor Module
Light: 418 Lux
Device Tree (DT) in Linux is a description of the hardware in a system. The DT overlay adds a number of optional elements.
The EEPROM of ANAVI Play pHAT contains DT overlay with description of the peripheral devices on the HAT. After adding Anavi to your Raspberry Pi and booting it you should have some new filesystem nodes at /proc/device-tree/hat:
pi@raspberrypi:~ $ ls -l /proc/device-tree/hat/
total 0
-r--r--r-- 1 root root 4 Feb 15 00:27 name
-r--r--r-- 1 root root 20 Feb 15 00:27 product
-r--r--r-- 1 root root 7 Feb 15 00:27 product_id
-r--r--r-- 1 root root 7 Feb 15 00:27 product_ver
-r--r--r-- 1 root root 37 Feb 15 00:27 uuid
-r--r--r-- 1 root root 6 Feb 15 00:27 vendor
The information provided in these filesystem nodes helps you to identify ANAVI Play pHAT vendor, version, product name, etc. For example:
pi@raspberrypi:~ $ cat /proc/device-tree/hat/product
ANAVI Play pHAT
pi@raspberrypi:~ $ cat /proc/device-tree/hat/vendor
ANAVI
More information about device trees, overlays and parameters are available at the official Raspberry Pi documentation.
RetroPie is a free GNU/Linux distribution that turns Raspberry Pi into a retro-gaming machine. It builds upon popular open source projects such as Raspbian, EmulationStation, RetroArch and many other to enable you to play your favourite Arcade, home-console, and classic PC games with the minimum efforts for setup.
Python script has to be launched to ensure that ANAVI Play pHAT will work with the emulators provided in RetroPie. Follow the steps below to install and configure it:
- Download RetroPie and flash it on microSD card
- Boot RetroPie, login as user pi via SSH or open a terminal to execute the following commands:
sudo apt-get update
sudo apt-get install -y python-pip
sudo pip install evdev
- Download the open source examples from GitHub that bring all needed scripts:
cd ~
git clone https://github.com/AnaviTechnology/anavi-examples.git
- Open file /etc/rc.local (using sudo) with you favorite text editor, for example nano, append the follow line at the end before exit 0:
sudo python /home/pi/anavi-examples/anavi-play-phat/anavi-play-gamepad.py &
- Reboot RetroPie
The components of ANAVI Play pHAT utilize the following pins on Raspberry Pi:
Component | Pins |
---|---|
I2C | 3, 5 |
EEPROM | 27, 28 |
Button UP | 15 |
Button DOWN | 13 |
Button LEFT | 7 |
Button RIGHT | 11 |
Button START | 29 |
Button SELECT | 31 |
Button A | 35 |
Button B | 37 |
For more details have a look at the KiCad project which is available in GitHub.
The sensors that can be connected to ANAVI Play pHAT communicate with a host microcontroller via a communications standard called I2C (Inter-Integrated-Circut). I2C uses two wires, labelled SDA (Serial Data) and SCL (Serial Clock). To function properly, I2C requires a pullup resistor on each of those lines therefore ANAVI Play pHAT includes two 4.7kohm resistors labelled as R6 and R7. If for one reason or another you need to disable the I2C pullup resistors remove R6 and R7.
Yes, you can use ANAVI Play pHAT with other GNU/Linux distributions and even other operating systems but some porting efforts might be required.
Yes, you can use other I2C sensors with ANAVI Play pHAT but you should take care for their drivers and software support.
No.
Yes, the official ANAVI Play pHAT software is free and open source. The examples are available under MIT license and the rest is available under GPLv3. Please contact us if you are working on a commercial product and you would like to use the software under alternative commercial license.
Date | Changes | Modified pages | Author |
---|---|---|---|
28 July 2018 | Initial release | All | Leon Anavi |
Revision | Notable changes |
---|---|
1.0 | First version |
For more information please visit anavi.technology and our GitHub repositories. If you have any questions or enquiries please contact us through Facebook, Twitter or email.