Sommario:

La macchina Godot: 4 passaggi (con immagini)
La macchina Godot: 4 passaggi (con immagini)

Video: La macchina Godot: 4 passaggi (con immagini)

Video: La macchina Godot: 4 passaggi (con immagini)
Video: Godot 4.0: It's Almost a Brand New Engine! Full Breakdown of New Features 2024, Luglio
Anonim
La macchina Godot
La macchina Godot

Cos'è una macchina Godot?

Fa parte dell'esperienza umana che possiamo trovarci in uno stato di attesa per qualcosa che potrebbe eventualmente accadere dopo un lungo periodo di attesa, o non succedere affatto.

The Godot Machine è un pezzo di "arte" elettronica a energia solare che cerca di catturare l'emozione disperata che accompagna l'attesa forse inutile.

Il nome deriva dalla famosa commedia di Samuel Beckett Aspettando Godot, in cui due uomini aspettano l'arrivo di un certo Godot, che potrebbe arrivare domani, dopodomani o mai.

Quindi cosa fa la Godot Machine?

  1. 1. Con un po' di sole, un circuito Joule Thief inizia a caricare un banco di condensatori.
  2. 2. Una volta caricato a circa 5V, Arduino Nano è alimentato.
  3. 3. Arduino genera un vero numero casuale a 20 bit, che viene mostrato su una barra LED a 4 bit.
  4. 4. Questo numero viene confrontato con un altro numero casuale, sconosciuto a tutti, che è stato memorizzato in eeprom al primo avvio del circuito.
  5. 5. Se uguale, l'attesa è finita, la macchina memorizza questo fatto in eeprom e da questo momento in poi si attivano il LED verde e il beeper piezoelettrico (se c'è energia sufficiente).
  6. 6. Se non è uguale, spera, dispera, ripeti.

…inoltre, ogni tanto il numero generato viene reso udibile dal beeper, quindi non dimentichi che hai una Godot Machine.

Dato che la probabilità di ottenere il numero di Godot è 1 su 2^20 o circa uno su un milione, e la macchina non è molto veloce, soprattutto in inverno e in autunno, potrebbero volerci anni per trovarlo. La tua Godot Machine potrebbe persino diventare parte della tua eredità. Mentre aspetti che provi il prossimo numero, puoi fantasticare su come i tuoi lontani pronipoti possano finalmente vederlo arrivare alla sua conclusione. In breve: è il regalo ideale per le prossime festività natalizie!

Passaggio 1: lo schema

Lo schema
Lo schema

La macchina Godot è composta da:

-Un raccoglitore di energia Joule Thief (Q1) che carica condensatori da 9x2200uF. Per coloro che soffrono di elisafobia (un'angoscia irrazionale di induttori, mentre condensatori e resistori non pongono tale problema), non temere poiché non è richiesto l'avvolgimento manuale: l'accoppiamento viene creato posizionando gli induttori coassiali standard l'uno vicino all'altro come mostrato qui nella 2a foto. Fantastico trucco!

-Un interruttore di alimentazione a transistor discreti (Q2, Q3, Q4), che si accende a circa 5V1 e si spegne a circa 3,0V. Potresti voler sintonizzare un po 'R2-R4 se usi diversi tipi di transistor (per usi generici).

-Un generatore di entropia (Q6, Q7, Q8). Questo circuito amplifica il rumore elettronico presente nell'ambiente da microvolt a livelli di volt. Quel segnale viene quindi campionato per generare un generatore di numeri casuali basato sul caos (continua a leggere). Un pezzo di corda di chitarra funge da antenna.

-Una barra LED con 4 LED o 4 LED rossi separati, un cicalino piezoelettrico e un LED verde.

Si noti che l'uscita dell'interruttore di alimentazione (collettore di Q4) è collegata al pin 5V dell'Arduino Nano, NON al pin VIN!

Passaggio 2: costruire la macchina Godot

Costruire la macchina Godot
Costruire la macchina Godot
Costruire la macchina Godot
Costruire la macchina Godot
Costruire la macchina Godot
Costruire la macchina Godot

Ho costruito il circuito su un pezzo di perfboard. Niente di speciale lì. Il pannello solare 2V/200mA è un residuo di un altro progetto. Il marchio è Velleman. È facile aprirlo usando un coltello affilato, praticare fori per viti, ecc. Il circuito stampato e il pannello solare sono avvitati su due pezzi di compensato, come mostrato nell'immagine. L'idea è che il pannello solare possa essere posizionato ancora verso il sole su una finestra.

Fase 3: Il codice: numeri casuali dal caos?

Il codice: numeri casuali dal caos?
Il codice: numeri casuali dal caos?
Il codice: numeri casuali dal caos?
Il codice: numeri casuali dal caos?
Il codice: numeri casuali dal caos?
Il codice: numeri casuali dal caos?

Come sono fatti i numeri casuali? Bene, sono fatti con la matematica!

Invece di utilizzare la funzione generatore di numeri casuali di Arduino random(), ho deciso di scrivere il mio generatore di numeri casuali (RNG), solo per divertimento.

Si basa sulla mappa logistica, che è l'esempio più semplice di caos deterministico. Ecco come funziona:

Supponiamo che x sia un valore reale compreso tra 0 e 1, quindi calcola: x*r*(1-x), dove r=3.9. Il risultato è la tua prossima "x". Ripeti all'infinito. Questo ti darà una serie di numeri tra 0 e 1, come nella prima immagine, dove questo processo viene avviato per il valore iniziale di x=0.1 (rosso) e anche x=0.1001 (blu).

Ora ecco la parte interessante: non importa quanto vicino tu scelga due diverse condizioni iniziali, se non sono esattamente uguali, la serie di numeri risultante alla fine diverge. Questa è chiamata "dipendenza sensibile dalle condizioni iniziali".

Matematicamente, l'equazione della mappa x*r*(1-x) è una parabola. Come mostrato nella seconda figura, puoi determinare graficamente la serie x usando la cosiddetta costruzione a ragnatela: inizia da x sull'asse orizzontale, trova il valore della funzione sull'asse y, quindi rifletti contro una linea retta a 45 angolo di gradi passante per l'origine. Ripetere. Come mostrato per le serie rossa e blu, anche se inizialmente vicine, divergono completamente dopo circa 30 iterazioni.

Ora, da dove viene il numero 'r=3.9'? Si scopre che per valori bassi di r, otteniamo solo due valori x alternati. L'aumento del parametro r passerà poi ad un certo punto a un'oscillazione tra 4, 8, 16 valori ecc. Queste ramificazioni o biforcazioni si verificano sempre più rapidamente man mano che r aumenta, in quella che viene chiamata una "via del raddoppio del periodo verso il caos". Un grafico con r sull'asse orizzontale e molte x-iterazioni sovrapposte verticalmente risulterà in quello che è noto come grafico di biforcazione (terza figura). Per r=3.9, la mappa è completamente caotica.

Quindi se calcoliamo molti x-aggiornamenti e li campioniamo, otteniamo un numero casuale? Ebbene no, a questo punto sarebbe un generatore di Pseudo Random Number (PRNG), poiché se partissimo sempre dallo stesso valore iniziale (dopo essere usciti dal reset), otterremmo sempre la stessa sequenza; alias caos deterministico. È qui che entra in gioco il generatore di entropia, che semina la mappa logistica con un numero creato dal rumore elettrico trovato nell'ambiente.

In parole povere, il codice del generatore di numeri casuali fa questo:

- Misurare la tensione dal generatore di entropia sul pin A0. Conserva solo i 4 bit meno significativi.

- Sposta questi 4 bit in un valore "seme", ripeti 8 volte per ottenere un seme in virgola mobile a 32 bit.

- Riscalare il seme tra 0 e 1.

- Calcola la media di questo seme e x, lo stato attuale della mappa logistica.

- Fai avanzare la mappa logistica di molti (64) passi.

- Estrarre un singolo bit dallo stato della mappa logistica x controllando qualche decimale insignificante.

- Sposta quel bit nel risultato finale.

- Ripetere tutti i passaggi sopra 20 volte.

Nota: nel codice, Serial.println e Serial.begin non sono commentati. Rimuovere // per controllare i numeri casuali generati sul monitor seriale.

Ad essere onesti, non ho verificato statisticamente la qualità dei numeri casuali (ad esempio la suite di test NIST) ma sembrano essere OK.

Passaggio 4: meravigliati della tua macchina Godot

Lasciati stupire dalla tua macchina Godot!
Lasciati stupire dalla tua macchina Godot!

Goditi la tua Godot Machine e per favore condividi, commenta e/o chiedi se qualcosa non è chiaro.

Mentre aspetti che venga trovato il numero di Godot, vota per questo Instructable nel concorso Made With Math! Grazie!

Fatto con il concorso di matematica
Fatto con il concorso di matematica
Fatto con il concorso di matematica
Fatto con il concorso di matematica

Secondo classificato al concorso Made with Math

Consigliato: