Tag Archives: raspberry pi

Testing points on a Raspberry Pi

Below is a list of test points which can be found on Raspberry Pi 2, 3 and some are also on b+.

With the use of a multimeter, these test points can help with troubleshooting hardware issues.

I have yet to find any formal documentation about these test points. However, I do know they exist.

PP3 GND
PP4 GND
PP5 GND
PP6 GND
PP7 5V after polyfuse
PP8 3V3
PP9 1V8
PP10 Goes from 3V3 to 2V on brownout
PP11 DAC_2V5 (for composite video DAC)
PP12 AUD_2V5 (for PWM audio drivers)
PP13 Goes from 3V3 to 2V on ACT activity
PP14 SD_CLK
PP15 SD_CMD
PP16 SD_DAT0
PP17 SD_DAT1
PP18 SD_DAT2
PP19 SD_DAT13
PP20 H5V
PP21 RUN signal (reset)
PP22 Goes from 3V3 to 2V on activity of green (link) ethernet jack LED
PP23 Goes from 3V3 to 2V on activity of yellow (speed) ethernet jack LED
PP24 COMPVID
PP25 AUDIO_L
PP26 AUDI_R
PP27 VBUS (USB 5V power)
PP28 ETH_CLK (25.000 MHz)
PP29 VC_TMS
PP30 VC_TRST_N
PP31 VC_CLK
PP32 VC_TDI
PP33 VC_TDO
PP34 GND
PP35 GPIO6 of LAN9514
PP36 GPIO7 of LAN9514
PP37 CAM_GPIO0
PP38 CAM_GPIO1
PP39 SCL0
PP40 SDA0

 

Below is an example of how you can use PP9 to confirm that  the regulator is supplying 1.8v correctly.

Ground can be sourced from the SD card slot;Pi3TestPointsProbs-1000

And the exact location of PP9;

Raspberry Pi test point 9

 

Adafruit has some great information covering the Raspberry Pi power circuitry. link

 

 

How to Check the Software and Hardware Version of a Raspberry Pi

There are a number of commands which can be used to check the hardware and software versions on a Raspberry Pi.

Version of Debian;

cat /etc/debian_version can be used to see what version of Debian you are running.

pi@raspberrypi ~ $ cat /etc/debian_version
7.8

2015-05-05-raspbian-wheezy

pi@raspberrypi ~ $ cat /etc/debian_version
8.0

2016-02-03-raspbian-jessie

OS Release Notes;

cat /etc/os-release can be used to see OS release notes

pi@raspberrypi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

2015-05-05-raspbian-wheezy

pi@raspberrypi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

2016-02-03-raspbian-jessie

Kernel Version;

uname -a can be used to see what kernel version is running

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

2015-05-05-raspbian-wheezy

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

2016-02-03-raspbian-jessie

 

BerryIMU Raspberry Pi Gyroscope Accelerometer

To check the hardware version;

cat /proc/cpuinfo can be used to see what hardware you are using. Take note of the revision number in the second last line and then refer to the table below. The output below is from a Pi 2

pi@raspberrypi ~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5processor : 1
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5processor : 2
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5processor : 3
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5Hardware : BCM2709
Revision : a21041
Serial : 00000000c15e9432
pi@raspberrypi ~ $

 

 

Model and Pi Revision 256MB Hardware Revision Code from cpuinfo
Model B Revision 1.0 256MB 0002
Model B Revision 1.0 + ECN0001 (no fuses, D14 removed) 256MB 0003
Model B Revision 2.0
Mounting holes
256MB 0004
0005
0006
Model A
Mounting holes
256MB 0007
0008
0009
Model B Revision 2.0
Mounting holes
512MB 000d
000e
000f
Model B+ 512MB 0010
Compute Module 512MB 0011
Model A+ 256MB 0012
Pi 2 Model B 1GB a01041 (Sony, UK)
a21041 (Embest, China)
PiZero 512MB 900092(no camera connector)
900093(camera connector)
Pi 3 Model B 1GB a02082 (Sony, UK)
a22082 (Embest, China)
PiZero W 512MB 9000c1

##UPDATED##
The completed list can now be found here  https://elinux.org/RPi_HardwareHistory

Raspberry Pi Digital Spirit Level

 

In this post we show how to create a Digital Spirit Level using a Raspberry Pi and python.

The code moves that bubbles on the display in relation to the angle read from the IMU.
Parts used in this project;

Any IMU or TFT can be used, however the code would need to be updated to accommodate the different devices. It is best to use a 480x320 TFT as the images are scaled to fit this resolution.

This guide assumes that some basic understanding of an IMU(Accelerometer and Gyroscope)  is already known. And you have one already working with your Raspberry Pi.

If you don't, we do have some guides which covers this.

BerryIMU Raspberry Pi Gyroscope Accelerometer

 

We have used our existing python code to read the values from the IMU, however we have removed the code related to the magnetometer as it isn't needed for this project.

Git repository here
The code can be pulled down to your Raspberry Pi with;

pi@raspberrypi ~ $ git clone http://github.com/ozzmaker/BerryIMU.git

 

Placement of IMU

The IMU can be attached anywhere, however it is best to place it in the same orientation as shown below. If you do change the orientation, you will need to update the code accordingly.

spiritLevel1-600

Continue reading Raspberry Pi Digital Spirit Level

BerryIMU Python Code Update - Kalman Filter and More

We have updated to the python code in our git repo.

It now includes;

  • The elusive Kalman filter.
  • Math needed when the IMU is upside down
  • Automatically calculate loop period.
  • A lot more comments.

What is a Kalman filter?  In a nutshell;
A Kalman filter is, it is an algorithm which uses a series of measurements observed over time, in this context an accelerometer and a gyroscope. These measurements will contain noise that will contribute to the error of the measurement. The Kalman filter will then try to estimate the state of the system, based on the current and previous states, that tend to be more precise that than the measurements alone.

A Kalman filter is more precise than a Complementary filter. This can be seen in the image below, which is the output of a complementary filter (CFangleX) and a Kalman filter (kalmanX) from the X axis plotted in a graph.

The red line (KalmanX) is better at filtering out noisep;

Python Kalman filter Raspberry Pi

 

The code can be found here in our Git repository here
And  can be pulled down to your Raspberry Pi with;

pi@raspberrypi ~ $ git clone http://github.com/ozzmaker/BerryIMU.git

BerryIMU Raspberry Pi Gyroscope Accelerometer

A summary of the code;


def kalmanFilterY ( accAngle, gyroRate, DT):
        y=0.0
        S=0.0

        global KFangleY
        global Q_angle
        global Q_gyro
        global y_bias
        global XP_00
        global XP_01
        global XP_10
        global XP_11
        global YP_00
        global YP_01
        global YP_10
        global YP_11

        KFangleY = KFangleY + DT * (gyroRate - y_bias)

        YP_00 = YP_00 + ( - DT * (YP_10 + YP_01) + Q_angle * DT )
        YP_01 = YP_01 + ( - DT * YP_11 )
        YP_10 = YP_10 + ( - DT * YP_11 )
        YP_11 = YP_11 + ( + Q_gyro * DT )

        y = accAngle - KFangleY
        S = YP_00 + R_angle
        K_0 = YP_00 / S
        K_1 = YP_10 / S

        KFangleY = KFangleY + ( K_0 * y )
        y_bias = y_bias + ( K_1 * y )

        YP_00 = YP_00 - ( K_0 * YP_00 )
        YP_01 = YP_01 - ( K_0 * YP_01 )
        YP_10 = YP_10 - ( K_1 * YP_00 )
        YP_11 = YP_11 - ( K_1 * YP_01 )

        return KFangleY

Raspberry Pi 3 + LED Cube + Spectrum Analyzer = Awesome Audio Visualizer!

To create an awesome audio visualizer, using a spectrum analyzer( C.A.V.A:  Console-based Audio Visualizer for ALSA ), all you need is a Raspberry Pi 3 and a RGB LED cube - VoxCube!

Raspberry Pi LED cube

C.A.V.A

CAVA was created by Karl Stavestrand and it is a  great tool to create an audio visualizer in the console.

C.A.V.A spectrum analyzer Raspberry Pi

Continue reading Raspberry Pi 3 + LED Cube + Spectrum Analyzer = Awesome Audio Visualizer!

How to Program an AVR/Arduino using the Raspberry Pi GPIO

In this tutorial I am going to show you how to program an AVR(ATmega328) and an Arduino UNO using the GPIO on the Raspberry Pi.

Adding an Arduino or an AVR to your projects will give you much greater flexibility.

 

Hook up the Raspberry Pi to the Arduino UNO or AVR.

 

The image below shows how to connect a Raspberry Pi 2 and an  Arduino UNO. click the image to make it larger

 

Raspberry Pi AVR BerryIMU

Continue reading How to Program an AVR/Arduino using the Raspberry Pi GPIO

Raspberry Pi controlling a LED cube with Python

The above LED cube [VoxCube] is being controlled via a Raspberry Pi, using python and the official Raspberry Pi display.

Buttons were setup using the Kivy. Kivy is a Python library which makes creating buttons and events with a touchscreen very easy.

Here is a very good guide on how to get Kivy setup on a Raspberry Pi.
Continue reading Raspberry Pi controlling a LED cube with Python

New Kickstarter - VoxCube - 8x8x8 RGB LED Cube for the Raspberry Pi

We have been busy over the last 6 months creating something special!
We have always liked the idea of LED cubes, however there was no easy way to drive these LED cubes with a Raspberry Pi.... until now.

 


VoxCube is an 8x8x8 RGB LED Cube which has been specifically designed for the Raspberry Pi, however it is also compatible with other microcontrollers. E.g. Arduino

Cubes can also be chained together, the image below is four VoxCubes being controller via a Raspberry Pi.

Four VoxCube Raspberry Pi LED

 

Head over to the Kickstarter page for more details.

Kickstarter LED cube

 

 

Super low cost VGA output for the Pi Zero • Hackaday.io

Here is a great post by mincepi which shows how to enable VGA output on a Pi Zero for less than $5

The vga666 by Gert is already a low cost VGA output option for the Pi. But we can do better with the Zero! We'll use 16 bit output instead of 18 bit: this frees up the SPI and I2C ports with little loss in quality. The resistors can be soldered between the Zero and the adapter, making the PCB smaller and eliminating a connector. I've determined that 5% resistors are good enough: no need for higher cost 1% units. By not using the middle row of pins in the HD15 connector, we can straddle-mount it on the PCB edge. Finally, the connector can be male, so the Zero will connect to the monitor ChromeCast style: no VGA cable needed. (This connector could even be scrounged from an old VGA monitor cable for free!) If you order the boards from OSHPark, it will cost $4.95 for three copies. Enough resistors and connectors to build three will cost $5.92 from Digi-Key. That works out to $10.87 to build three, or $3.62 each!

 

Source: Super low cost VGA output for the Pi Zero • Hackaday.io

 

BerryIMU Raspberry Pi Gyroscope Accelerometer