Implementare il software
Adesso che il cosa è chiaro, vediamo il come, rispondendo alle domande a seguire:
- Quale linguaggio usare per implementare lo scenario che abbiamo descritto all'inizio dell'articolo? Python
- Esiste qualche libreria Python per la costruzione di applicazioni basate su Smart Card? Pyscard
- Quale tipo di database usare per la memorizzazione dei dati? MongoDB (NoSQL database)
- Esiste qualche libreria Python per operare con MongoDB? PyMongo
- Esiste qualche libreria Python per interagire con l'interfaccia GPIO del Raspberry Pi? RPi.GPIO
Da questa lista le cose da fare sono parecchie e lo spazio per vederle tutte nel dettaglio in questo articolo non c'è. Direi quindi di focalizzare la nostra attenzione sui componenti da realizzare rimanendo ad alto livello, senza scendere nello specifico del codice.
Non vi allarmate! Il progetto è già stato sviluppato prima di scrivere questo articolo e disponibile sul mio repository GitHub Smart Card Contactless Raspberry Pi.
Nota su MongoDB. È necessario preparare un'istanza di MongoDB sul proprio Raspberry Pi affinché la soluzione funzioni nel modo corretto. Le scelte sono due: container docker o installazione classica direttamente sul sistema operativo. Personalmente ho scelto la strada di Docker (vedi 6. Requisiti Software), per cui, una volta installato Docker sul proprio Raspberry Pi OS, i passi per tirare su un'istanza MongoDB 4.4.12 sono quelli indicati a seguire.
# 1. Docker pull e run MongoDB 4.4.12
docker pull mongo:4.4.12
docker run -d -p 27017-27019:27017-27019 --name mongodb mongo:4.4.12
# 2. Verifica che l'istanza sia su e accesso alla console bash (task opzionale)
docker exec -it mongodb bash
# 3. Avvio della console MongoDB (task opzionale)
root@0d21da235b0d:/# mongo
Nel caso in cui preferiate perseguire la seconda strada, il blog di MongoDB riporta la procedura completa sull'articolo Install & Configure MongoDB on the Raspberry Pi.