Sono un grande fan dei progetti hobbistici Oltre a distogliere la mente dalle fatiche, dai problemi e dalle tribolazioni del mondo, penso che avere una nuova “cosa” che vuoi fare sia il modo migliore per imparare a farlo.

Prendi l’aggiunta di un nuovo linguaggio di programmazione al tuo repertorio come esempio. Un modo per farlo è leggere il manuale di riferimento della lingua (sbadiglio). Un altro approccio consiste nell’elaborare un algoritmo o un’attività che si desidera codificare in questo nuovo linguaggio e quindi ricercare come raggiungere questo obiettivo. Ovviamente non sto dicendo che leggere il manuale di riferimento in lingua sia una cattiva idea, solo che non è l’unico strumento nella cassetta degli attrezzi.

Di recente, il mio amico Adam Taylor e io abbiamo scritto un trio, una troika o una triade di colonne sotto l’argomento ombrello di “Come ottenere un lavoro di ingegneria e mantenerlo”. Nella parte 1 , ci siamo concentrati sui giorni precedenti al liceo, al college e all’università che hanno portato a una carriera in ingegneria. Nella parte 2 , abbiamo riflettuto sulla creazione di un curriculum (noto anche come curriculum vitae, comunemente indicato come CV) e sulle gioie di essere intervistati. Nella parte 3 , abbiamo riflettuto e riflettuto su come mantenere il proprio lavoro, crescere e far evolvere la propria carriera.

Come parte di questo, abbiamo chiesto ai nostri amici ingegneri di condividere i loro pensieri ed è stato sorprendente quanto spesso l’argomento dei progetti di hobby sia entrato nella conversazione. Se qualcuno sta andando per il suo primo colloquio di lavoro, ad esempio, potrebbe avere un’esperienza lavorativa precedente limitata a cui può indicare, ma può sempre parlare dei progetti di hobby che ha creato e delle cose che ha imparato mentre lo fa . In effetti, uno dei ragazzi ha detto che quando stava iniziando nel corso della giornata (intorno agli anni ’70), scattava un portfolio di fotografie che mostrava le cose che aveva creato, il che lo ha aiutato a differenziarlo dagli altri contendenti per il posizione.

Personalmente, ho abitualmente un certo numero di progetti di hobby in movimento (un giorno, spero di finire effettivamente uno o più dei piccoli mascalzoni). Molte di queste piccole bellezze hanno un aspetto steampunk perché sono un grande fan dell’estetica steampunk retro-futuristica anacronistica (prova a dirlo dieci volte velocemente).

Ad esempio, ho basato il mio Awesome Audio-Reactive Artifact su una piccola valigia decorativa pseudo-antica, economica e allegra, con un accenno di un annusare di un soffio di steampunk su di esso. Per prima cosa, ho preso un mucchio di valvole a vuoto defunte e ho tagliato i perni dal fondo. Successivamente, ho dipinto un pezzo di compensato da 3/16 “di nero opaco, praticato dei fori e fissato i tubi con resina epossidica. Sotto i tubi ho collegato 145 LED tricolori sotto forma di dispositivi WS2812B (noti anche come NeoPixels). Ho quindi aggiunto un microfono, un semplice chip analizzatore di spettro audio e un Arduino Uno. Quando questo artefatto risponde ai suoni ambientali o alla musica, chiunque lanci le sue sfere su questa piccola bellezza invariabilmente dice “Ooh” o “Aah” (a volte entrambi, ma non allo stesso tempo).

Incontra il mio fantastico artefatto audio-reattivo (Fonte immagine: Max Maxfield)

Tutto ciò porta al mio progetto attuale, che si basa – che ci crediate o no – su interpretazioni moderne di schermi a 21 segmenti concepiti ai tempi in cui la regina Vittoria era la sovrana di tutto ciò che ha esaminato.

Tutto questo è avvenuto quando due miei amici – Paul Parry (proprietario di Bad Dog Designs ) e Steve Manley si sono imbattuti in un gruppo chiamato Smartsockets . Come si legge sul sito web del gruppo, “Gli Smartsocket sono un sistema software e hardware per pilotare display alfanumerici multisegmento. Originariamente destinate ai tubi nixie, le versioni sono state adattate anche per tubi VFD e LED. Gli Smartsocket sono controller versatili specifici per dispositivo progettati per rendere semplici le implementazioni di display visivi a più elementi “.

A quanto ho capito, uno dei moderatori del gruppo, John Smout, si è imbattuto in questo brevetto per un display a 21 segmenti che è stato depositato da George Lafayette Mason nel 1898, che è 123 anni fa mentre scrivo queste parole. I display originali utilizzavano 21 piccole lampadine a incandescenza – una per segmento – che erano controllate da un complicato interruttore elettromeccanico che attivava gruppi di segmenti come richiesto per rappresentare i diversi caratteri.

Immagine dalla domanda di brevetto originale di George Lafayette Mason.

Le persone del gruppo Smartsocket hanno in programma di creare le proprie versioni di questi display utilizzando una varietà di tecnologie. Il punto principale per quanto riguarda la loro implementazione è che ogni display avrà il proprio microcontrollore PIC, da cui ha origine la parte “Smart” del moniker Smartsocket. In confronto, Paul, Steve e i tuoi preferiscono davvero pilotare i nostri display utilizzando un singolo microcontrollore compatibile con Arduino. Di conseguenza, i due gruppi si sono discostati dal punto di vista dell’implementazione, sebbene tutti mantengano tutti gli altri in contatto con ciò che sta accadendo.

Steve, in particolare, ha svolto un lavoro eccellente per quanto riguarda la creazione di modelli 3D da cui possiamo utilizzare stampanti 3D per creare “gusci” per ospitare i display, e anche per creare un circuito stampato (PCB) che vanta 35 LED WS2812B tricolori . Ogni carattere è largo 50 mm e alto 64 mm. Un paio di mesi fa, Steve ha creato un video approfondito che illustra vari esperimenti e tutto ciò che aveva realizzato fino a quel momento.

Guscio 3D e circuito stampato (Fonte immagine: Steve Manley)

Steve è stato così gentile da fornirmi 10 dei PCB e i file di progettazione per farmi stampare 10 shell in 3D in modo che io possa costruire il mio display da 10 caratteri. Il motivo per cui ho optato per dieci caratteri è stato che ho visto un articolo e un video interessante del 2007 che mostrava un pezzo di word art creato da Matt Gorbett basato su un’implementazione V1 Smartsocket.

L’idea di Matt era che le persone di passaggio potessero usare i quattro potenziometri per specificare la parola di 4 lettere mancante nella frase “I **** YOU”. Dopo un po ‘, il sistema inizierà a scambiare singole lettere in questa parola di 4 lettere per generare alternative stimolanti.

Amavo questo concetto, ma non volevo limitarmi, quindi ho deciso di associare un potenziometro a ciascuno dei miei personaggi. Inoltre, sia io che Steve piace l’aspetto dei pannelli di ottone, quindi ha creato alcuni modelli 3D come mostrato di seguito.

Modelli 3D di lastre di ottone da utilizzare con i nostri display da 10 caratteri (Fonte immagine: Steve Manley)

Ad essere onesti, non ero sicuro che saremmo stati in grado di implementare questi pannelli perché le strisce tra le facce dei segmenti adiacenti sono larghe solo 0,7 mm. Fortunatamente, il mio amico Kevin McIntosh (proprietario di The Laser Hut ) ha un laser enorme, anche se non è uno di cui vantarsi e, come tutti sappiamo, non è la dimensione del tuo laser, ma il modo in cui lo maneggi che conta. Ad ogni modo, Kevin ha tagliato con successo alcuni pannelli di pseudo-ottone dall’acrilico per noi che sono così audacemente fantastici da portare una piccola lacrima (di gioia) ai miei occhi.

Oltre a visualizzare messaggi di testo, questi display possono essere utilizzati per presentare uno spettacolo di luci accattivante. Potremmo anche fare in modo che il display reagisca al suono in modo simile all’Artefatto Audio-Reattivo di cui abbiamo discusso all’inizio di questa colonna.

Per quanto riguarda il circuito stampato mostrato in precedenza, avete notato che alcuni segmenti vantano due LED tricolori? Bene, questo mi ha fatto pensare che potremmo visualizzare i LED come anelli che formano e usarli per visualizzare increspature di luce che si irradiano o convergono verso il centro. Un tale effetto potrebbe trovare molteplici utilizzi, incluso il passaggio da una frase all’altra. Dopo aver abbozzato questo, ho parlato con Steve, ma si è scoperto che era davanti a me. D’altra parte, abbiamo presto scoperto di aver escogitato implementazioni leggermente diverse come mostrato di seguito.

Metodi alternativi per definire gli anelli dei LED (Fonte immagine: Max Maxfield)

Dato che sono ancora in fase di costruzione del mio display, Steve ha eseguito un rapido test come mostrato in questo video . Steve mi dice che c’è una sottile differenza tra queste implementazioni nel mondo reale che non è immediatamente evidente nel video. Non vedo l’ora di creare i miei test e di vederlo con i miei occhi.

A proposito di vedere le cose con i miei occhi. Uno dei problemi che io e Steve abbiamo incontrato quando abbiamo creato le nostre incarnazioni di progetti simili in passato è che ognuno di noi ha seguito la propria strada per quanto riguarda i microprocessori, gli orologi in tempo reale (RTC), i codec audio, e così via. Lo svantaggio principale di questo è che non siamo stati in grado di condividere facilmente il codice avanti e indietro. Sarebbe molto più efficace se fossimo in grado di creare nuovi effetti e potessimo condividerli e vederli in azione.

Per facilitare questo, stiamo lavorando alla creazione di una scheda controller comune. Quando dico “noi”, Steve ha svolto la maggior parte del lavoro, con me che offre il suggerimento occasionale (si spera utile). Ad esempio, con il suo banco di prova originale, Steve ha iniziato guidando tutte le sue cifre utilizzando un singolo pin con buffer su un Teensy-LC (Arm Cortex-M0 + a 32 bit 48 MHz con 62 KB Flash e 8 KB RAM) di PRJC Electronics . Poiché i nostri display hanno 10 caratteri, ciascuno con 35 NeoPixel, ciò significa un totale di 350 NeoPixel, il che richiede circa 11 ms (millisecondi) per il caricamento. Se assumiamo altri 9 ms per eseguire qualsiasi calcolo, si ottiene un totale di 20 ms per ciclo, il che limita la frequenza di aggiornamento a 50 Hz.

È abbastanza buono? Probabilmente. Siamo soddisfatti di “abbastanza buono”? Certamente no! Pertanto, ho fatto una campagna vigorosa affinché utilizzassimo un microcontrollore Teensy 3.2 (Arm Cortex-M4 a 32 bit 72 MHz con 256 KB Flash e 64 KB RAM) o un microcontrollore Teensy 3.6 (32 bit 180 MHz Arm Cortex-M4 con 1 MB Flash e 256 KB di RAM). Entrambi questi piccoli scamp supportano la libreria Octo di PRJC, che consente di caricare simultaneamente otto stringhe di LED WS2812. Nel mio caso, preferisco Teensy 3.6 perché, oltre alla sua maggiore velocità di clock e memoria più ampia, vanta una cornucopia di pin di input / output (I / O) analogici e digitali.

Se usiamo cinque stringhe, ciascuna che guida due caratteri (70 LED), il tempo di caricamento si riduce a un po ‘più di 2 ms. Ancora meglio, il caricamento utilizzando la libreria Octo viene eseguito utilizzando un motore di accesso diretto alla memoria (DMA) su chip, che funziona in background, lasciando il processore libero di continuare a cogitare i suoi calcoli. Di conseguenza, questo aumenta la nostra frequenza di aggiornamento massima a un enorme (teorico) 500 Hz. Ooh – Shiny! (In pratica, stiamo pianificando di utilizzare una frequenza di aggiornamento di 100 Hz.)

Modello 3D della nuova scheda di controllo (Fonte immagine: Steve Manley)

Inoltre, osserva i cinque interruttori a pulsante momentanei, che utilizzeremo per eseguire attività come l’impostazione dell’orologio in tempo reale e il controllo delle varie modalità di visualizzazione. Sono inoltre presenti pin di intestazione che consentiranno di collegare in parallelo altri cinque interruttori, dove questi interruttori aggiuntivi “rivolti verso l’esterno” possono essere montati sull’armadio.

Come forse ricorderai, ho scritto una serie in 9 parti sulla Guida definitiva per Switch Debounce , quindi ho subito chiesto a Steve come avesse intenzione di rimuovere i suoi interruttori. Eeek! Si scopre che stava usando il vecchio “Aspetta il primo fronte attivo – quindi aspetta 30 ms per vedere se l’interruttore è ancora premuto – in tal caso, fai quello che vogliamo fare – infine, inserisci un loop stretto ( impedendo così a qualsiasi altra cosa di accadere) in attesa del rilascio dell’interruttore ”. Ho immediatamente suggerito di aggiungere un circuito integrato antirimbalzo a 6 canali LS119-S da LogiSwitch . Oltre a rimuovere qualsiasi rimbalzo dell’interruttore, questo dispositivo vanta anche un protocollo di handshake a filo singolo unico, che consente al microcontrollore di cancellare l’evento di commutazione e passare a cose più importanti (vedere ilUltimate Guide to Switch Debounce: Part 6 ).

C’è davvero troppo da approfondire qui. Basti pensare che questa scheda di controllo è progettata per essere montata sul retro del display su tre “slot” di caratteri. Accetterà Teensy 3.2 o 3.6. Vanta un orologio in tempo reale e una batteria di backup e si può opzionalmente aggiungere un chip codec audio per il suono, insieme a un processore Seeeduino XIAO per gestire le comunicazioni da un controller a infrarossi (la posizione per XIAO è sulla destra bordo del tabellone).

Probabilmente è ovvio che le schede che Steve e io usiamo per questo progetto saranno completamente caricate. Il motivo delle varie opzioni è che questa scheda sarà in grado di gestire più progetti in futuro e tali progetti potrebbero non richiedere tutte queste funzionalità. D’altra parte, alcuni progetti futuri potrebbero richiedere caratteristiche e funzioni extra. Pertanto, oltre a una scheda di distribuzione dell’alimentazione separata, Steve sta anche lavorando a una scheda di prototipazione con uno schema di cablaggio / ingombro della breadboard migliorato.

L’immagine sotto mostra i mockup delle tre schede stampate su cartoncino e attaccate al retro di uno dei primi display di Steve. Da sinistra a destra vediamo la scheda di distribuzione dell’alimentazione (che occupa uno “slot”), la scheda di controllo principale (tre “slot”) e la scheda di prototipazione (quattro “slot”). Il motivo per cui dico “prime visualizzazioni” è che questa immagine mostra dieci dei gusci originali stampati in 3D, che sono quelli che ho. Steve ha successivamente creato nuove conchiglie per il suo ultimo display. Questi gusci aggiornati sono un po ‘più larghi, fornendo così un divario leggermente più ampio tra i personaggi, che Steve ritiene esteticamente più gradevole. Questo spiega anche perché alcuni dei fori di fissaggio sulle schede sono presentati come slot allungati, consentendo così alle schede di essere attaccate ai display creati utilizzando i nuovi gusci di Steve e le mie versioni precedenti.

Mockup delle tre schede attaccate al retro di un vecchio display (Fonte immagine: Steve Manley)

Ho già idee per la scheda di prototipazione. Ad esempio, nella mia colonna su Come iniziare con i sensori di movimento e orientamento basati su MEMS , ho introdotto la 9DOF Fusion Breakout Board (BOB) di Adafruit. Questo BOB è dotato del sensore BNO055 di Bosch. Oltre a un accelerometro a 3 assi, un giroscopio a 3 assi e un magnetometro a 3 assi, il BNO055 include anche un Arm Cortex-M0 + a 32 bit, che esegue la fusione dei sensori e ti presenta i dati in una forma che puoi usare senza che il cervello fuoriesca dalle orecchie.

In effetti, come puoi vedere in questo video , ho già aggiunto uno di questi sensori al mio array di palline da ping pong 12 × 12, dove è usato per permettermi di “far rotolare” un pixel attorno all’array semplicemente inclinando l’array. Il motivo per cui lo menziono qui è che ho intenzione di aggiungere uno di questi sensori alla scheda di prototipazione nel mio display vittoriano a 21 segmenti da 10 caratteri, permettendomi così di fare cose come “far scorrere” messaggi di testo dentro e fuori semplicemente inclinando il display.

di Max Maxfield da eejournal.com

Di Fantasy

Lascia un commento