Sommario:

Campanello della scuola per studenti a distanza: 6 passaggi
Campanello della scuola per studenti a distanza: 6 passaggi

Video: Campanello della scuola per studenti a distanza: 6 passaggi

Video: Campanello della scuola per studenti a distanza: 6 passaggi
Video: 🔥🔥Fine scuola 🔥🔥 alunni impazziti 😅😅 2024, Dicembre
Anonim
Campanello della scuola per studenti a distanza
Campanello della scuola per studenti a distanza

Con la pandemia di COVID-19, molte scuole per bambini sono passate alla consegna a distanza. Questo campanello per la scuola a casa è un modo divertente per rispettare i tempi che utilizza un Raspberry Pi e un altoparlante USB. Puoi farlo con tuo figlio e loro possono imparare a programmare e possono "suonare il campanello". L'ho costruito per mia figlia che sta andando in seconda media (attualmente tramite consegna a distanza) e sta funzionando bene per tenerci in orario.

Forniture

Per questo progetto avrai bisogno di:

  • Un computer Raspberry Pi: funziona meglio se hai il WiFi, ho usato un RPi 3B da un kit Kano
  • Un altoparlante -- ho usato un altoparlante USB

Il codice potrebbe essere facilmente eseguito sul computer Linux del tuo studente o anche su un microcontrollore che esegue micropython, purché il microcontrollore disponga di un meccanismo per ottenere la data e l'ora correnti. Può essere utilizzato anche qualsiasi altoparlante amplificato, o anche più fresco un relè/campanello analogico.

Passaggio 1: configura il tuo Raspberry Pi

Configura il tuo Raspberry Pi
Configura il tuo Raspberry Pi

Ci sono un gran numero di risorse per configurare un computer Raspberry Pi, quindi ti rimando a quello che trova Google. L'importante è che il tuo computer abbia un modo per ottenere la data e l'ora corrette. La maggior parte dei moderni computer Raspberry Pi abilitati WiFi utilizza il protocollo NTP per impostare l'ora da Internet, che è il modo in cui ho ottenuto l'ora corretta. Ho impostato il mio RPi in modo che sia "senza testa", il che significa che non ha tastiera o monitor, ma è accessibile tramite Secure Shell (SSH) su Internet. Se sei bravo con RPi, puoi eseguire questa configurazione senza tastiera / video / mouse, ma è più semplice impostare il pi con quegli accessori.

Nota che non avevo bisogno di usare l'interfaccia grafica, quindi ho appena scaricato "Raspberry Pi OS (32-bit) Lite", che è più piccolo e veloce da scaricare e si avvia più velocemente.

Configura la rete e le opzioni di interfaccia del Raspberry Pi

$ sudo raspi-config

Nella configurazione, procedi come segue:

  • Cambia la password: fallo prima, si spera prima di andare online!
  • In "Opzioni di rete",

    • Cambia il nome dell'host. Ho usato il nome host: "schoolbell".
    • Connettiti alla tua LAN wireless (se non l'hai fatto durante la configurazione)
  • In "Opzioni di interfaccia", attiva l'accesso SSH
  • È sempre bene eseguire l'opzione "Aggiorna"

Dopo averlo fatto e riavviato, dovresti essere in grado di connetterti al Raspberry Pi da un altro computer sulla stessa rete locale utilizzando un client SSH. Collegati ad esso utilizzando le seguenti credenziali:

nome host: schoolbell.local

utente: pi password: qualunque cosayousetitas

Da una macchina Linux, è semplice come digitare questa riga di comando al prompt $:

$ ssh [email protected]

… inserisci la password al prompt

Questo ti consentirà di accedere e puoi verificare che l'ora sul Raspberry Pi sia corretta. Alla riga di comando, digita il comando date e controlla la risposta:

pi@schoolbell:~ $ data

gio 3 set 20:44:34 AKDT 2020

Speriamo che questa sia l'ora attuale. Se non è corretto, cerca su Google come configurare NTP sul Raspberry Pi.

Passaggio 2: fai funzionare il tuo sistema audio

Fai funzionare il tuo sistema audio
Fai funzionare il tuo sistema audio

Stiamo per riprodurre file MP3 per le campane, quindi abbiamo bisogno di scaricare un software per decodificare questi file audio. Ho ottenuto il pacchetto mpg321 digitando questo comando:

pi@schoolbell:~ $ sudo apt-get install mpg321

Segui le istruzioni per installare questo software.

Ho usato un vecchio altoparlante USB, che aveva uno strano driver e non si configurava completamente automaticamente come scheda audio predefinita, quindi ho scoperto che potevo "hackerare" l'altoparlante per farlo funzionare utilizzando il suo indirizzo hardware. Dopo aver collegato l'altoparlante, ho usato il comando 'aplay -l' per elencare i dispositivi audio:

pi@schoolbell:~ $ aplay -l

**** Elenco dei dispositivi hardware di RIPRODUZIONE **** scheda 0: Cuffie [Cuffie bcm2835], dispositivo 0: Cuffie bcm2835 [Cuffie bcm2835] Sottodispositivi: Sottodispositivo #0: sottodispositivo #0 Sottodispositivo #1: sottodispositivo #1 Sottodispositivo #2: sottodispositivo #2 Sottodispositivo #3: sottodispositivo #3 Sottodispositivo #4: sottodispositivo #4 Sottodispositivo #5: sottodispositivo #5 Sottodispositivo #6: sottodispositivo #6 Sottodispositivo #7: sottodispositivo #7 scheda 1: CODEC [USB Audio CODEC], dispositivo 0: Audio USB [Audio USB] Sottodispositivi: Sottodispositivo #0: Sottodispositivo #0

Il dispositivo che voglio è quello inferiore, scheda 1, dispositivo 0.

Ho testato l'altoparlante con "speaker-test", utilizzando il dispositivo "hw:1, 0", ovvero scheda hardware 1, dispositivo 0

pi@schoolbell:~ $ speaker-test -D hw:1, 0

Questo programma emette rumore dagli altoparlanti. Goditi il rumore, quindi digita control-C quando sei infastidito. Se non senti alcun rumore, prova con Google.

Ora hai il suono!

Passaggio 3: prova la riproduzione dei suoni della campana e/o crea nuovi suoni

Prova la riproduzione dei suoni della campana e/o crea nuovi suoni
Prova la riproduzione dei suoni della campana e/o crea nuovi suoni

Per il mio campanello, ho scaricato il suono "bing-bong" da "freesound.org". Grazie a Benboncan per aver reso disponibile questo suono:

freesound.org/people/Benboncan/sounds/93646/

Puoi riprodurre il suono direttamente. Potrei scaricare direttamente una versione mp3 di questo file digitando questo comando sul computer Raspberry Pi (supponendo che sia su WiFi):

pi@schoolbell:~ $ wget

Ho quindi rinominato questo file:

pi@schoolbell:~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3

Ho quindi verificato che potevo suonare il campanello con questo comando (mostrando l'output):

pi@schoolbell:~ $ mpg321 -a hw:1, 0 bing-bong-chime-hq.mp3

Lettore audio MPEG 1.0/2.0/2.5 ad alte prestazioni per Layer 1, 2 e 3. Versione 0.3.2-1 (2012/03/25). Scritto e copyright di Joe Drew, ora gestito da Nanakos Chrysostomos e altri. Utilizza il codice di varie persone. Vedi 'README' per saperne di più! QUESTO SOFTWARE VIENE ASSOLUTAMENTE SENZA GARANZIA! UTILIZZARE A PROPRIO RISCHIO! Riproduzione del flusso MPEG da bing-bong-chime-hq.mp3 … MPEG 1.0 layer III, 128 kbit/s, 44100 Hz mono [0:02] Decodifica di bing-bong-chime-hq.mp3 terminata.

Congratulazioni! Hai l'audio.

Usando il codice di modifica del suono "audacity" sul mio laptop, ho diviso il file in "bing" e "bong" per divertirmi di più. Puoi usare qualsiasi file audio mp3 o forse altro formato (non ne ho testati altri).

Passaggio 4: installa il codice e imposta il tuo programma

Installa il codice e imposta il tuo programma
Installa il codice e imposta il tuo programma

Il codice è uno script Python che ottiene la data/ora corrente e se la data è un giorno feriale e non festivo, controlla se l'ora corrisponde all'ora della campana, suonando se necessario.

Prima lo farai funzionare, quindi lo automatizzerai per eseguirlo ogni minuto.

Scarica il codice da Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Trovo facile farlo salvando il file su un computer locale, quindi utilizzando la copia sicura (scp) per inserirlo nel Raspberry pi.

Sul tuo computer locale, copia il codice dal tuo browser, quindi incollalo in un file di testo e salvalo con il nome file "schoolbell.py". Quindi scp il file su:

local-machine:~ $ scp schoolbell.py [email protected]:~/

Ti verrà richiesto di inserire la password per l'utente pi su schoolbell.local: inserisci la password e il file verrà copiato in modo sicuro. Questo comando dovrebbe essere eseguito nella stessa directory in cui è stato salvato lo script python e lo copia nella home directory dell'utente pi. Puoi ssh su schoolbell.local e il codice dovrebbe essere lì:

local-machine:~ $ ssh [email protected]

Quindi su schoolbell.local, elenca i file (potresti vedere più file):

pi@schoolbell:~ $ ls

bing-bong-chime-hq.mp3 schoolbell.py

Ora modifica il codice per fare in modo che abbia il tuo programma di campanello usando un editor come pico:

pi@schoolbell:~ $ pico schoolbell.py

Il codice ha tre "dizionari" che definiscono i toni della campana da riprodurre, gli orari per riprodurli e le festività da evitare, le campane nei fine settimana vengono automaticamente saltate.

Ad esempio, il dizionario dei campanelli è:

campanelli = {

'warn': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3' }

Questo definisce tre tipi di campanelli, un campanello d'avvertimento, un inizio della lezione e una fine. Poiché abbiamo solo un tono di campanello, puntano tutti allo stesso file, ma se crei toni diversi, puoi cambiarli. Puoi anche aggiungere altri tipi di toni di campane. Ho anche giocato con l'uso di un sintetizzatore vocale per parlare le campane, ma questo non è stato visto favorevolmente dagli altri in casa.

Il dizionario del bellschedule è simile, ma la "chiave" è ora il momento per il campanello. è necessario utilizzare il formato HH:MM con zeri iniziali e l'orario di 24 ore (orario militare).

campanello = {

'09:00': 'start', # 'Bus' campanello per essere pronti '09:28': 'warn', ….. '13:58': 'warn', # per il periodo 4 '14:00 ': 'inizio', '15:00': 'fine' }

Il valore in questa coppia chiave:valore è il tipo di campanello da utilizzare e deve corrispondere a uno dei campanelli definiti sopra.

Infine, il dizionario delle festività elenca le date delle festività. Il formato è AAAA-mm-gg, con zeri iniziali come mostrato.

vacanze = {

'2020-09-07', …. '2021-03-11', '2021-03-12' }

Una volta che hai finito di modificare, salva il file uscendo dall'editor, digitando ctrl-X se stai usando pico.

Rendi eseguibile il codice Python:

pi@schoolbell:~ $ chmod a+x schoolbell.py

Ciò consente a tutti gli utenti di eseguire il codice, "a" per tutti, "+" per aggiungere l'autorizzazione e "x" per eseguire.

Ora prova a eseguire il codice e osserva l'output. Nota che puoi eseguire il file digitando il nome del file ma devi specificare che si trova nella directory corrente digitando "./" prima del nome del file:

pi@schoolbell:~ $./schoolbell.py

È un giorno di scuola, controllo dell'ora 21:35

Il codice ti dirà se è un giorno di scuola (ad esempio non è una vacanza o un fine settimana) e vede se l'ora corrisponde all'ora della campanella. In questo caso, non era l'ora della campanella, quindi è semplicemente uscito in modo pulito. Se fosse stata l'ora della campanella, avrebbe suonato.

Per verificare che il tuo codice possa suonare le campane, usa l'opzione della riga di comando di un file da riprodurre. Useremo il nostro file bing-bong:

pi@schoolbell:~/schoolbell $./schoolbell.py bing-bong-chime-hq.mp3

È un giorno di scuola, ora di controllo 21:38 Lettore audio MPEG 1.0/2.0/2.5 ad alte prestazioni per Layer 1, 2 e 3. Versione 0.3.2-1 (2012/03/25). Scritto e copyright di Joe Drew, ora gestito da Nanakos Chrysostomos e altri. …. più uscita….

Avresti dovuto sentire il campanello.

Ora prova il codice usando un tempo come argomento. Ricordarsi di inserire l'ora con gli zeri iniziali. Ad esempio, per testare il campanello dello "scuolabus" alle 9 del mattino, scrivo:

pi@schoolbell:~ $./schoolbell.py 09:00

Questo dovrebbe far suonare il campanello! Puoi anche verificare che non suoni in orari diversi dalla campanella.

Passaggio 5: automatizza la corsa con Crond

Automatizza la corsa con Crond
Automatizza la corsa con Crond

Il 'daemon' cron è uno scheduler che esegue attività ripetitive su un sistema Linux. Controlla se la data/ora corrisponde a un modello nella tabella cron (crontab) e quindi esegue il codice se lo fa. Puoi modificarlo usando il comando "crontab -e":

pi@schoolbell:~ $ crontab -e

Questo aprirà un editor di file e in fondo a questo file aggiungerai la seguente riga:

* * * * * python3 /home/pi/schoolbell.py

Questo comando dice a cron di eseguire python3 eseguendo il tuo script nella normale home directory (/home/pi). I cinque * dicono che dovrebbe essere eseguito ogni minuto (primo *), ogni ora (successivo * …), ogni giorno del mese, ogni mese e ogni giorno della settimana.

Ora, ogni minuto verrà eseguito lo script schoolbell.py. Durante la maggior parte dei minuti, il codice verrà eseguito e scoprirà che dovrebbe semplicemente chiudersi senza suonare, ma se si scopre che suona un campanello, suonerà.

Nota che poiché cron viene eseguito solo ogni minuto, non puoi rendere le campane più granulari rispetto al minuto. Penso che sia teoricamente possibile che se il tuo sistema si impantana, cron potrebbe non funzionare per alcuni secondi dopo l'inizio del minuto, rendendo la campana in ritardo. Se in qualche modo cron non avesse funzionato per l'intero minuto, la campanella sarebbe stata persa.

Suggerimento: per le vacanze prolungate (ad es. estate), puoi aggiungere un hashtag (#) al primo carattere di questa riga, che lo trasforma in un commento e quindi ne ignora l'esecuzione. Quando la scuola torna in sessione, rimuovi il # e ricomincerà a funzionare.

Passaggio 6: personalizza e divertiti

Ora, dovresti avere un campanello della scuola funzionante e il tuo studente non dovrebbe mai essere in ritardo per la lezione.

Puoi personalizzare questo progetto modificando i toni della campana.

  • Potresti far suonare il Big Ben, con rintocchi ogni quarto d'ora e suonare le ore.
  • Puoi provare lo stile libero del tuo rapper preferito.
  • Potresti fare messaggi subliminali per concentrarti sullo studio.

Stai al sicuro in questo periodo di COVID.

Immagine
Immagine
Immagine
Immagine

Secondo classificato al concorso per famiglie "Non posso toccare questo"

Consigliato: