Obtener número de serial y número de versión de Raspberry Pi con Python

Posted on mié 06 febrero 2013 in Tutorial de Python • 3 min read

El Raspberry Pi tiene información de número del número de revisión del PCB, este número indica que se tiene pequeños cambios en el PCB. Estos cambios pueden afectar en el funcionamiento de los programas Python e incluso como está distribuido los pines (alimentación, entrada/salida, etc) en la placa.

Está información se puede obtener desde el archivo /proc/cpuinfo como se indica a continuación:

ernesto@raspberrypi ~ $ cat /proc/cpuinfo 

Processor   : ARMv6-compatible processor rev 7 (v6l)

BogoMIPS    : 697.95

Features    : swp half thumb fastmult vfp edsp java tls 

CPU implementer : 0x41

CPU architecture: 7

CPU variant : 0x0

CPU part    : 0xb76

CPU revision    : 7



Hardware    : BCM2708

Revision    : 000f

Serial      : 00000000bcd34f5e

El número de Revisión es 00f y el serial es 00000000bcd34f5e. Las variantes del Raspberry Pi según número versión se tiene a continuación (tomado de acá):

  • Modelo B Revisión 1.0: El valor de cpuinfo es 0002.
  • Modelo B Revisión 1.0+ECN001(sin fusible, D14 se removió): El valor de cpuinfo es 0003.
  • Modelo B Revisión 2.0: El valor de cpuinfo es 0004,0005, 0006...

El sitio Raspberrypi spy tiene un par de scripts para obtener el número de revisión y el serial de la placa.

A continuación se muestra el script (con una pequeña corrección):

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""
Script que busca la informacion del serial y numero de revision en el Raspberry Pi.
Este script se obtiene de los siguientes enlaces:
Numero de Revision:
http://www.raspberrypi-spy.co.uk/2012/09/getting-your-raspberry-pi-revision-number-using-python/#more-574
Numero de Serial:
http://www.raspberrypi-spy.co.uk/2012/09/getting-your-raspberry-pi-serial-number-using-python/#more-570

"""python

def getrevision():
    # Extrae la informacion del numero de revision del raspberry pi
    #Se asigna a revision un string de 4 ceros.
    revision = "0000"
    #Se abre el archivo cpuinfo
    #Se 
    try:
        f = open('/proc/cpuinfo','r')
        #Se recorre el archivo
        for linea in f:
            #Si existe el contenido Revision en una linea
            if linea[0:8]=='Revision':
                #Se toma la longitud de la linea
                longitud =len(linea)
                #Se agrega la informacion completa de la revision
                revision = linea[11:longitud-1]
        #Se cierra el archivo
        f.close()
#Si no abre el archivo se asigna 4 ceros a revision
    except IOError:
        revision = "0000"
    #Se retorna el valor de revision
    return revision
def getserial():
    # Extrae la informacion del serial desde cpuinfo
    #Se asigna un string con ceros a cpuserial
    cpuserial = "00000000"
    #Se intenta a capturar la informacion del archivo cpuinfo,
    #si no se tiene un mensaje de error.
    try:
        f = open('/proc/cpuinfo','r')
        #se recorre el archivo linea a linea
        for linea in f:
            #Si existe el contenido Serial en la linea
            if linea[0:6]=='Serial':
                #Se agrega la informacion completa del serial del cpu
                cpuserial = linea[10:-1]
        #Se cierra el archivo
        f.close()
    #Si no abre el archivo se asigna el valor de error al serial
    except IOError:
        cpuserial = "ERROR000000000"
    #retorna el valor del serial del cpu
    return cpuserial

if __name__ == '__main__':
    print u"El número de Serial del Raspberry Pi es: %s " %getserial()
    print u"El número de Revision del Raspberry Pi es: %s" %getrevision()

Al ejecutar el script se obtiene lo siguiente:

ernesto@raspberrypi ~ $ ./versionSerial.py 

El número de Serial del Raspberry Pi es: 00000000bcd34f5e 

El número de Revision del Raspberry Pi es: 000f

Ya con esta información se tiene que el Raspberry Pi es de la revisón 2.0.

A continuación se muestra la organización de los pines de la revisión 1.0:

Y la organización de los pines de la revisión 2.0:

Con esta información ya se conoce como realizar las conexiones de los circuitos con el Rasberry Pi.

¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV

O Escaneando el código QR desde la billetera:

17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV