epelpad

Raspberry Pi + Python [Raspinga] Propio

Raspberry Pi + Python [Raspinga] Propio

python

Buenas! Quería quería compartir un pequeño proyecto en el cual estuve trabajando estos días. Con esto podés visualizar los Top Post de T! sin entrar al sitio Web para ver si hay algo interesante. Me sirvió para aprender Python y mezclarlo con algo de domótica.


Primero les muestro algunas imágenes del resultado final:


taringa


raspberry

iot


Raspberry Pi + Python [Raspinga] Propio

python

taringa

raspberry

En el post no pretendo hacer un paso a paso, sino mas bien orientar un poco quienes estén interesados en utilizar estas herramientas, pero no tienen mucha práctica en el tema (Como es mi caso)

iot

#1 Instalar WiringPi

WiringPi es una librería hecha en C, pero está disponible tanto para usuarios de Ruby como de Python. El objetivo es tener una única plataforma común y set de funciones para acceder a los GPIO's de la Rasberry Pi en distintos lenguajes.
Para instalarlo nada más simple que escribir lo siguiente en consola:


Raspberry Pi + Python [Raspinga] Propio

Es importante que recuerden que WiringPi enumera de forma distinta los pines GPIO de la Raspberry Pi, acá dejo una imagen:

python

Esta librería me pareció interesante porque vamos a poder controlar los LCD Display HD44780 y los registros de desplazamiento 74HC595N usando unas funciones bastante simples (Lo vemos más adelante).

taringa

#2 Entender los tags del lenguaje HTML (Un poco, no es necesario saber 100% HTML)

Como dijimos, vamos a sacar información (web scraping) del sitio web Taringa!, pero para eso primero necesitamos entender cómo están almacenadas las variables que queremos obtener (Título del post, autor y puntos obtenidos).

raspberry

Como se aprecia en la imagen podemos sacar algunas conclusiones rápidamente:

1.<u1 style class=PERIODO> nos indicará qué período se está mostrando en la página. Más arriba pueden ver los distintos períodos en el modo display:none
2.<div class=”count>PUNTOS</div> nos indica los puntos del post.
3.<h3>TITULO</h3> nos indica el título del post.
4.Por último <p class= “icon-usuarios”>::before AUTOR </p> nos indica el autor del post.


Sabiendo los tags que contienen cada variable que queremos obtener, podemos empezar a programar un poquito con Python. ¿Pero cómo extraemos esos valores?

iot

#3 BeautifulSoup

Beautiful Soup es una biblioteca de Python para analizar documentos HTML (incluyendo los que tienen un marcado incorrecto). Esta biblioteca crea un árbol con todos los elementos del documento y puede ser utilizado para extraer información.
Los pasos de instalación + ejemplos los pueden ver acá:
(Hacé las pruebas!)


Raspberry Pi + Python [Raspinga] Propio

#4 Entender los registros de desplazamiento 74HC595N

Son Circuitos Integrados que sirven para almacenar un número binario de tantos bits como biestables contenga el Circuito (En nuestro caso: 8). Se construyen a partir de biestables de tipo D.

A nosotros nos interesan los registros del tipo serie-paralelo (Entrada Serie -> Salida Paralelo), con esto podremos ahorrar la cantidad de pines que utilizamos en nuestro Raspberry Pi para conectar los LCD Display HD44780.


Pines relevantes del 74HC595N:

python

Importante: de los 8 pines destinados a la salida en paralelo que tiene el 74HC595N, solamente utilizaremos 6 (QA, QB, QC, QD, QE, QF) que corresponden respectivamente a los pines de CUALQUIER (16x2, 20x4) LCD Display HD44780 (RS, E, DB4, DB5, DB6, DB7)


Aprender a usar este integrado me pareció interesante porque en vez de tener que conectar 12 pines a nuestra RPI solamente utilizaremos 6.


taringa

#5 Hacer las conexiones de cableado

Esta parte es todo un tema, porque son muchos cables y si no tenés mucha idea de dónde va conectada cada cosa podés llegar a estar bastante tiempo hasta que te des cuenta lo que está mal. Por eso dejo una imagen de cómo quedaría todo conectado:

raspberry

Utilizando siempre la notación de los pines de WiringPi para la RPI, usamos los pines enumerados 0, 1 y 2 para el primer 74HC595N (el de la izquierda en la imagen) y los pines 3, 4 y 5 para el segundo 74HC595N.

Como ven en la imagen, si quieren puede usar un potenciómetro (10K) para cada LCD pero no es algo que se necesite si o si.

iot

#6 Escribir el código completo en Python

Les dejo una "foto-receta oficial (?" con los pasos que seguí, igual dejo a mano los archivos fuentes escritos en python:

Raspberry Pi + Python [Raspinga] Propio

Dejo el código fuente acá

El código no es de lo mejorcito que hay, teniendo en cuenta que no sabía nada de Python, puede mejorarse muchiiisimo. (Pero funciona 100%)


python

#7 Programar tareas con Cron

Hay excelentes guías en internet sobre cómo usar Cron para programar tareas en Linux. En esencia es indicarle a tu Raspberry PI en qué momento del día/s querés que tu script en Python se ejecute. Este enlace me sirvió a mí.

taringa

Video



link: https://www.youtube.com/watch?v=sTJOeWLRtWo&feature=youtu.be

Edit: en el video algunos top no se muestran en el orden correcto (despues del décimo), cuando termine de corregirlo subo un nuevo video.

raspberry

Fin del post

13 comentarios - Raspberry Pi + Python [Raspinga] Propio

Aler1953 +2
estaria bueno programarlo para que cree cuentas con geolocalizacion en venezuela y cree post programados para ganar bits.
Anysenpai +3
No avives giles
Lincemon +1
Si esto no es top los moderadores son maricas.
NiggaFuck +3
De ante mano se sabe que los moderadores son maricas.
Lincemon
@NiggaFuck Iba a decir que me suicido con gif porno pero no soy capaz
NiggaFuck
@Lincemon HAHAHAHAHHA
chatodarksoul +2
Inteligencis colectiva ¿Eres tú?
akak92 +1
Gracias man!
CUSENIER +1
No entiendo una m**rda pero te dejo +10 por tu trabajo.
akak92
jaajajaj gracias man!
cbastian1 +3
hoy me enseñaron recien microcontroladores, no entiendo un choto de hacer placas y eso
FYRD_FYRD
donde estudias y que estudias? me parece muy interesante.
cbastian1 +1
@FYRD_FYRD Profesorado en Informatica en Tucuman
FYRD_FYRD
@cbastian1 Gracias por la respuesta. Saludos!
kenjikun +1
Inteligencia colectiva, salen 10
akak92
Gracias!
Blacklash099
Buenisimo, no sabes si hay alguna libreria o algo por el estilo para hacer web scraping en JAVA? +10
akak92 +1
JSoup https://jarroba.com/scraping-java-jsoup-ejemplos/
Blacklash099
@akak92 Gracias, me habia olvidado de eso!
Marcoc_sc +1
si lo hubieses hecho con PORINGA. te dejaba puntos.
akak92 +1
JAJA estaba pensando en hacer el port
Marcoc_sc
@akak92 QUIERO ver las tetas en esas pantallitas!
A7XC3L +1
sería bueno algo así con el clima, últimos sismos, titulares importantes etc

gran trabajo
akak92
Gracias!
bluesandrnr +1
Una genialidad.. Para mi que lo hiciste para probarlo con este post, que deberia llegar al top.. jajaj +10!!!!
akak92
gracias man!
todomenosface +1
estaría bueno un video tutorial desde cero, buenisimo capo