Table des matières:
- Étape 1: Pièces que j'ai utilisées:
- Étape 2: Configurer Raspberry Pi:
- Étape 3: Schéma de circuit:
- Étape 4: Le corps:
- Étape 5: Le logiciel (code source):
- Étape 6: Terminez:
Vidéo: Tracker COVID19 de bureau avec horloge ! Tracker alimenté par Raspberry Pi : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Nous savons que nous pouvons mourir à tout moment, même moi je peux mourir en écrivant ce post, après tout, moi, vous, nous sommes tous des mortels. Le monde entier a tremblé à cause de la pandémie de COVID19. Nous savons comment empêcher cela, mais bon ! nous savons comment prier et pourquoi prier, le faisons-nous quotidiennement ? Non!! En fait, nous oublions la cause profonde de pourquoi nous devrions faire les choses. Ainsi, nous savons qu'un mode de vie hygiénique peut nous sauver, mais nous ne le faisons pas correctement. Prenons le cas de mon jeune frère, il veut sortir et jouer même en ce moment. Je devais faire quelque chose pour informer systématiquement tout le monde des derniers cas de COVID19. J'ai donc créé un écran de bureau numérique qui montre les derniers cas de COVID19 en temps réel. Comme cela a une horloge, je peux la mettre dans un endroit où tout le monde se rassemble ou vient. Ils verront les chiffres s'additionner, ce qui déclenchera une prise de conscience en eux et j'espère que tout le monde sera conscient. De plus, comme je suis un fabricant et un amateur, cela s'est avéré être un bon projet sur lequel travailler pendant cette session de verrouillage.
Étape 1: Pièces que j'ai utilisées:
- Raspberry Pi 3 modèle B (démarré à l'aide d'une carte SD)
- Module UPS Raspberry Pi (en option)
- Écran LCD HDMI 7 pouces
- Câble HDMI vers HDMI (fourni avec l'écran)
- Câbles USB
- Adaptateur secteur 5v 2A (pour alimenter le pi)
- Feuille de PVC [couleur bois] (pour faire le corps)
Étape 2: Configurer Raspberry Pi:
Je suppose que vous avez parfaitement configuré le pi, à moins que vous ne l'ayez pas -
- obtenir une carte SD - plus de 8 Go
- téléchargez le dernier fichier iso raspbian à partir d'ici.
- Gravez la carte SD avec Etcher
(Notez que les gens peuvent parler d'un autre logiciel qui vous oblige à faire des choses de configuration, mais Etcher est super facile à utiliser et simple mais efficace aussi.)
Branchez simplement votre carte SD sur votre PC, lancez Etcher, vous verrez que la carte SD est automatiquement sélectionnée par Etcher, puis cliquez pour sélectionner le fichier iso ou l'image téléchargé, puis gravez-le. Après une écriture et un traitement réussis, débranchez la carte SD et connectez-la à votre pi, allumez-la et VOILA !! C'est vivant.
Étape 3: Schéma de circuit:
Connectez tout et allumez le raspbery pi, il s'agit juste de se connecter, rien d'autre.
Vous verrez le pi démarrer.
Étape 4: Le corps:
J'ai découpé une feuille de PVC en fonction de la taille de l'écran, puis je l'ai ajoutée à l'aide de vis. Après, j'ai tout câblé. Enfin ajouté une autre feuille à l'arrière pour l'empêcher de tomber (feuille bleue). Si tout va bien, vous devriez voir le pi booter (dernière photo)
Étape 5: Le logiciel (code source):
Le programme est écrit en python3. Pour l'interface graphique (Graphical User Interface), j'ai utilisé PyQt5 et pour extraire les données COVID19 en temps réel, j'ai utilisé la bibliothèque COVID19Py. Merci aux gars qui ont rendu l'API disponible pour nous
C'est à peu près tout, ouvrez maintenant Terminal sur raspberry pi et installez les bibliothèques (copiez chacune d'entre elles et collez-les sur le terminal rpi).
Ignorer le signe $ lors de la copie
$ pip3 installer pyqt5
$ demandes d'installation pip3$ pip3 installer covid19py
Ça y est, maintenant téléchargez le code d'ici, j'ai fourni le code ci-dessous:
"""* Traqueur international et local Covid19 en temps réel avec horloge *""" """ ************** Restez à la maison Restez en sécurité. Vivre, laisser vivre ******** ***** """
"""
auteur: ashraf minhaj courrier: [email protected] site: ashrafminhajfb.blogspot.com """
#importer les bibliothèques nécessaires
import PyQt5 #QT GUI Library for python3 from PyQt5. QtCore import Qt, QTimer #timer pour mettre à jour depuis PyQt5. QtWidgets import * #importe tout de PyQt5. QtGui import QFont #for fonts import sys #nécessaire pour les applications QT #import os import COVID19Py #covid19 information -api import datetime #vous savez à quoi cela sert
classe CoronaTracker (QWidget):
"""classe principale qui contient tout""" def _init_(self): """initialiser les choses""" super()._init_() self.covid = COVID19Py. COVID19() #initialize self.timer = QTimer() #initialize self.timer.timeout.connect(self.update) #si la minuterie atteint le seuil - appelez la mise à jour self.ui() #interface utilisateur
def ui(soi):
"""Section Interface utilisateur""" self.setWindowTitle("Covid19 International and Local Tracker") #self.setWindowFlags(Qt. CustomizeWindowHint) #hide title bar self.setStyleSheet("Background-color: black") self.setFixedSize(640, 480) #selon ma résolution d'affichage (x, y) /rpi
#étiquette principale
self.banner_label = QLabel(self) self.banner_label.setGeometry(50, 5, 560, 50) #(x_origin, y_origin, till_x, till_y) self.banner_label.setText("CORONA Pandemic - COVID19 TRACKER") self.banner_label. setFont(QFont('SansSerif', 20)) self.banner_label.setStyleSheet(""" background-color: black; color: white; border-style: outset; border-width: 1px """)
"""_dernières données mondiales_"""
#world label self.w = QLabel(self) self.w.setGeometry(200, 55, 400, 40) self.w.setText("World at a Glance") self.w.setFont(QFont('SansSerif', 18)) self.w.setStyleSheet(""" background-color: noir; couleur: bleu; border-style: outset; border-width: 1px """)
#cas confirmés dans le monde
self.w_cases = QLabel(self) self.w_cases.setGeometry(5, 90, 100, 40) self.w_cases.setText("Cases:") self.w_cases.setFont(QFont('SansSerif', 18)) self. w_cases.setStyleSheet(""" background-color: noir; couleur: orange; border-style: outset; border-width: 1px """) #cases number self.w_cases_num = QLabel(self) self.w_cases_num.setGeometry(110, 90, 100, 40) self.w_cases_num.setFont(QFont('SansSerif', 18)) self.w_cases_num.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """)
#décès dans le monde
self.w_death = QLabel(self) self.w_death.setGeometry(350, 90, 100, 40) self.w_death.setText("Deaths:") self.w_death.setFont(QFont('SansSerif', 18)) self. w_death.setStyleSheet(""" background-color: noir; couleur: rouge; border-style: outset; border-width: 1px """) #death number self.w_death_num = QLabel(self) self.w_death_num.setGeometry(460, 90, 100, 40) self.w_death_num.setFont(QFont('SansSerif', 18)) self.w_death_num.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """)
#mondial guéri
self.w_cured = QLabel(self) self.w_cured.setGeometry(5, 140, 100, 40) self.w_cured.setText("Cured:") self.w_cured.setFont(QFont('SansSerif', 18)) self. w_cured.setStyleSheet(""" background-color: noir; couleur: cyan; border-style: outset; border-width: 1px """)
#nombre guéri dans le monde
self.w_cured_num = QLabel(self) self.w_cured_num.setGeometry(110, 140, 100, 40) self.w_cured_num.setFont(QFont('SansSerif', 18)) self.w_cured_num.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """)
"""_Code local par pays_"""
#local - Pays self.c = QLabel(self) self.c.setGeometry(170, 200, 400, 40) self.c.setText("Mon pays: Bangladesh") self.c.setFont(QFont('SansSerif', 18)) self.c.setStyleSheet(""" background-color: black; color: white; border-style: outset; border-width: 1px """) #local confirm cases self.c_cases = QLabel(self) self.c_cases.setGeometry(5, 240, 400, 40) self.c_cases.setText("Cases:") self.c_cases.setFont(QFont('SansSerif', 18)) self.c_cases.setStyleSheet(""" background -color: noir; couleur: orange; border-style: outset; border-width: 1px """) #local cases number self.c_cases_num = QLabel(self) self.c_cases_num.setGeometry(110, 240, 100, 40) self.c_cases_num.setFont(QFont('SansSerif', 18)) self.c_cases_num.setStyleSheet(""" background-color: black; color: white; border-style: outset; border-width: 1px """)
#décès locaux
self.c_death = QLabel(self) self.c_death.setGeometry(350, 240, 100, 40) self.c_death.setText("Deaths:") self.c_death.setFont(QFont('SansSerif', 18)) self. c_death.setStyleSheet(""" background-color: noir; couleur: rouge; border-style: outset; border-width: 1px """)
#nombre de décès locaux
self.c_death_num = QLabel(self) self.c_death_num.setGeometry(460, 240, 100, 40) self.c_death_num.setFont(QFont('SansSerif', 18)) self.c_death_num.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """) #local guéri self.c_cured = QLabel(self) self.c_cured.setGeometry(5, 280, 100, 40) self.c_cured. setText("Cured:") self.c_cured.setFont(QFont('SansSerif', 18)) self.c_cured.setStyleSheet(""" background-color: black; color: cyan; border-style: outset; border-width: 1px """) #local guéri nombre self.c_cured_num = QLabel(self) self.c_cured_num.setGeometry(110, 280, 100, 40) self.c_cured_num.setFont(QFont('SansSerif', 18)) self.c_cured_num.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """)
"""_Heure, date, horloge_"""
#clock self.clock = QLabel(self) self.clock.setGeometry(115, 340, 400, 70) self.clock.setFont(QFont('SansSerif', 60)) self.clock.setStyleSheet(""" background- color: black; color: white; border-style: outset; border-width: 1px """) #label for weekday self.weekday = QLabel(self) self.weekday.setGeometry(5, 360, 110, 20) self.weekday.setFont(QFont('SansSerif', 13)) self.weekday.setStyleSheet(""" background-color: black; color: white; border-style: outset; border-width: 1px """) #date label self.date = QLabel(self) self.date.setGeometry(510, 360, 110, 20) #self.clock.setText("22:49:00") self.date.setFont(QFont('SansSerif', 13)) self.date.setStyleSheet(""" background-color: noir; couleur: blanc; border-style: outset; border-width: 1px """)
#check the timer if not self.timer.isActive(): #si timer est arrêté (seuil atteint) #Après 1 seconde (environ) ou 1000ms
essayer:
"""essayez d'obtenir des données, sinon exécutez le code quand même""" self.latest = self.covid.getLatest() #gte covid19 dernières données
#obtenir les dernières données par code de pays 'BD'-Bangladesh, 'IN'-Inde, etc.
self.local = self.covid.getLocationByCountryCode('BD', timelines=False) #print(self.local) #print(self.latest)
sauf:
"""Impossible d'obtenir les données""" print("Erreur Internet !!")
passer #ignorer, courir quand même
self.timer.start(1000) #démarrer le minuteur
self.show() #afficher notre interface utilisateur
def update(self):
"""mettre à jour les étiquettes avec les informations"""
"""_Extraire les informations sur l'heure et la date de mise à jour de l'annonce_"""
#configurer l'horloge et la date (mettre à jour les valeurs) #obtenir et mettre à jour les valeurs #pour en savoir plus, lisez la documentation python datetime
self.dt = datetime.datetime.now() #obtenir les données datetime
self.clock.setText(self.dt.strftime('%X')) self.weekday.setText(self.dt.strftime('%A')) self.date.setText(self.dt.strftime('% x')) """_mettre à jour les données covid19_""" #dernières données mondiales self.w_cases_num.setText(str(self.latest['confirmed'])) self.w_death_num.setText(str(self.latest['deaths'])) self.w_cured_num.setText(str(self.latest['récupéré'])) #local dernières données self.c_cured_num.setText(str(self.local[0]['latest']['récupéré'])) self.c_death_num.setText(str(self.local[0]['latest']['deaths'])) self.c_cases_num.setText(str(self.local[0]['latest']['confirmed']))
print("mise à jour")
revenir
def main(): app = QApplication(sys.argv) win = CoronaTracker() #instancier sys.exit(app.exec()) #exécuter l'application si _name_ == '_main_': main()
Étape 6: Terminez:
Après avoir testé le code, je l'ai mis dans le bureau et lui ai dédié une source d'alimentation. Pour qu'il puisse fonctionner pendant la charge. En utilisant les ups, cela peut également fonctionner même en délestage de charge, cela donne également à votre carte SD pi une protection appropriée.
Peu importe comment ou qui nous sommes, nous devons mourir. Ne pensons pas à toi, pensons au monde. Nous ne pouvons vivre éternellement que par nos actes, qu'il en soit ainsi.
Conseillé:
Bureau alimenté par batterie. Système solaire avec panneaux solaires à commutation automatique est/ouest et éolienne : 11 étapes (avec photos)
Bureau alimenté par batterie. Système solaire avec panneaux solaires à commutation automatique est/ouest et éolienne : Le projet : Un bureau de 200 pieds carrés doit être alimenté par batterie. Le bureau doit également contenir tous les contrôleurs, batteries et composants nécessaires à ce système. L'énergie solaire et éolienne chargera les batteries. Il y a un léger problème de seulement
Horloge à bulles d'air rougeoyante; Alimenté par ESP8266 : 7 étapes (avec photos)
Horloge à bulles d'air rougeoyante; Alimenté par ESP8266 : « Glow Air-Bubble Clock » affiche l'heure et certains graphiques par des bulles d'air illuminées dans un liquide. Contrairement à l'affichage matriciel à LED, les bulles d'air incandescentes qui dérivent lentement me donnent quelque chose pour me détendre. Au début des années 90, j'ai imaginé "l'affichage à bulles". Unfo
Movie Tracker - Tracker de sortie en salles alimenté par Raspberry Pi : 15 étapes (avec photos)
Movie Tracker - Tracker de sortie en salles alimenté par Raspberry Pi : Movie Tracker est un tracker de sortie alimenté par Raspberry Pi en forme de clap. Il utilise l'API TMDb pour imprimer l'affiche, le titre, la date de sortie et un aperçu des films à venir dans votre région, dans un intervalle de temps spécifié (par exemple, les sorties de films cette semaine) le
Fer à souder alimenté par batterie au lithium construit par l'utilisateur : 8 étapes (avec photos)
Fer à souder alimenté par batterie au lithium construit par l'utilisateur : récemment, j'ai trouvé une source excédentaire de pannes à souder alimentées par batterie Weller(r) BP1. Le soudage électronique nécessite parfois une visite de réparation sur site et les outils de terrain peuvent être un défi. Je construis souvent mes propres outils, trouvant des solutions sur étagère trop coûteuses
Ventilateur de bureau alimenté par USB de JUNK : 6 étapes
Ventilateur de bureau alimenté par USB de JUNK : il s'agit d'un petit ventilateur que vous pouvez mettre sur votre bureau et qui est alimenté uniquement par le port USB de votre ordinateur. Cela peut être entièrement fabriqué à partir de déchets et constitue un excellent premier projet pour l'USB et la soudure. C'est relativement facile, mais certaines parties prendront