Introduction: FSX Boeing 737NG Lights Overhead Panel (Italian Version)

Ho deciso di iniziare questo progetto spinto da mio figlio che ha una grossa passione per il volo e gli aerei, cosa che penso di avergli trasmesso...

Poiché conosce la mia passione anche per l'elettronica e per Arduino in particolare, mi ha chiesto di realizzare un pannello per FSX, iniziando da quello relativo alle luci ed all'avviamento dei motori, presente nell'"overhead". Si tratta di un pannello relativamente semplice in quanto composto solamente da interruttori e commutatori, ma la sfida era cercare di realizzarlo più simile possibile all'originale del Boeing 737 e renderlo funzionante ossia interfacciarlo a Flight Simulator X per implementare i relativi comandi.

Ovviamente l'obiettivo era quello di utilizzare parti componenti di facile reperibilità e basso costo: esistono pannelli per FSX già pronti, ma hanno costi abbastanza elevati soprattutto se molto simili o uguali agli originali. E poi il gusto di progettare e costruire da zero qualcosa di utile non ha prezzo...

Il progetto corrente punta a riprodurre il pannello del 737NG e relativi comandi FSX, chiaramente potete adattarlo a qualsiasi altra variante o velivolo cambiando il numero e tipologia di interruttori oltre ovviamente al layout.

Il passo successivo sarà implementare anche il pannello del pilota automatico del 737, ma essendo abbastanza complesso mi richiederà altro tempo per cui dovete attendere...

Step 1: Il Progetto Base

Chiaramente tutto inizia con uno schizzo a penna su un foglio. Il pannello ha una forma trapezoidale, e una volta trovate su internet le dimensioni di quello reale, ho iniziato a progettarne una versione quasi identica, solo leggermente più piccola per renderla più facilmente installabile.

Per il materiale base ho scelto il legno per la semplicità di costruzione, mentre per il pannello vero e proprio c'era il problema delle serigrafie: come poterle riprodurre in casa? E come poter fare in modo che non si possano deteriorare facilmente? La soluzione che ho adottato è stata il plexiglass: il pannello frontale sarebbe stato costituito da due lastre di plexiglass trasparente, in mezzo alle quali posizionare una semplice stampa!

Dato che si tratta di un pannello "overhead" ossia quello superiore, va posizionato sopra al monitor per cui il progetto prevede un supporto composto da una parte in legno da appoggiare su un ripiano (magari sotto a qualche libro o direttamente avvitato), ed il pannello inclinato verso il basso di 45 gradi. Ovviamente la scelta di dove/come posizionare il pannello può modificare la forma del supporto, ognuno scelga quello più adatto alle proprie esigenze.

Veniamo quindi ai materiali utilizzati nel progetto:

  • 1 listello in legno da 200x4x1.5 cm
  • 1 foglio di plexiglass trasparente 50x25cm spessore 2mm
  • 1 Arduino Nano v3 ATMega328
  • 9 interruttori ON-ON 1 via a leva da pannello
  • 5 interruttori ON-OFF-ON 1 via a leva da pannello
  • 2 selettori rotativi 12 posizioni 1 via
  • 2 manopole per i selettori
  • 1 breadboard mini (o una piastra sperimentale millefori)
  • 2 pin header maschi 12 pin
  • cavo USB, fili di colori vari, colla per legno, viti per legno
  • attrezzi vari: taglierino, righello, trapano, punte da ferro...

Per prima cosa ho realizzato un disegno del pannello, con tutte le relative scritte e indicazioni. Poiché pare che il font utilizzato sia proprietario della Boeing (sic!), ho scelto un font più simile possibile tra quelli disponibili in rete. Come larghezza ho scelto 50 cm non solo perché "cifra tonda" ma anche, come vedremo, per adattare il progetto alla larghezza dei piccoli formati dei pannelli in plexiglass.

Step 2: Telaio in Legno

Per prima cosa dal progetto determiniamo le dimensioni dei pezzi da ricavare dal listello:

  • 1 da 50 cm per la traversa superiore
  • 1 da 28 cm per la traversa inferiore
  • 2 da 5 cm per i due montanti verticali di rinforzo
  • 2 da 11 cm per le sezioni inferiori diagonali
  • 2 da 2 cm come spessore laterale

Prima di assemblare il telaio, stampare la maschera del pannello. Dato che ha dimensioni maggiori di un foglio A4, l'ho divisa in tre parti (file B737lights_OH.zip) che ho poi ritagliato e incollato con nastro adesivo formando una unica maschera di 50cm di larghezza. Sovrapporre quindi la maschera di carta ai listelli per verificare le dimensioni.

Quando tutto combacia, procedere all'assemblaggio: per prima cosa segnare la posizione dei due montanti verticali facendo attenzione a non farli coincidere con nessuno degli interruttori. Per questo scopo durante la progettazione ho anche realizzato uno schema della parte "interna" (che vedete tra le immagini) ossia compresi i montanti, per determinare con precisione la loro posizione. Quindi in corrispondenza dei punti dove andranno i montanti mettere della colla su entrambe le traverse e pressare insieme per qualche minuto.

Fatto questo, usare 4 viti da legno per fissare definitivamente le traverse. Con altre 2 viti da legno fissare anche i due spessori laterali, quindi con la colla a caldo fissare anche le sezioni diagonali inferiori.

Alla fine verificare nuovamente che la maschera di carta combaci correttamente con il telaio in legno.

Step 3: Il Pannello in Plexiglass: Come Tagliarlo E Forarlo

Ora che abbiamo il telaio in legno e la maschera in carta come riferimento possiamo passare alla realizzazione del pannello in plexiglass.

Questa è senz'altro la fase più delicata. Senza togliere la pellicola protettiva presente sulla lastra di plexiglass, riportare con una matita o pennarello due volte la forma della maschera, per realizzare le due parti che conterranno al loro interno la maschera. Consiglio di utilizzare i due bordi superiore ed inferiore per la parte più larga del pannello (quello corrispondente alla traversa da 50 cm, corrispondente alla larghezza del foglio di plexiglass). Ricordare che è molto delicato, anche se con la pellicola protettiva, quindi fare attenzione a non rigarlo né fletterlo durante la lavorazione. Il costo di un foglio di plexiglass 50x25 presso un grande magazzino brico (non faccio nomi per evitare pubblicità, ma io ho trovato tutto -e a prezzi buoni- in uno con nome francese..;-)) è di meno di 3 Euro, se anche doveste danneggiarlo poco male.

Per tagliare il plexiglass si possono usare apposite lame e seghe, ma la cosa più semplice per tagli lineari come nel nostro caso e fogli di piccolo spessore è spezzarlo: basta un righello metallico (o un listello in legno) e un taglierino. Posizionare opportunamente il righello quindi iniziare ad incidere con il taglierino per l'intera larghezza della lastra. Ripetere con pazienza e precisione almeno una decina di volte l'incisione per renderla sempre più profonda, ma senza esagerare con la forza per evitare di rompere il foglio. Fare la stessa cosa dal lato opposto, quindi posizionare il foglio sul bordo di un tavolo e mentre con una mano si preme il righello o un listello posizionato lungo il bordo, con l'altra flettere leggermente il foglio di plexiglass: se avete fatto tutto correttamente, si spaccherà esattamente lungo l'incisione con un bordo netto. Otterrete ora un rettangolo di 50cm per 8cm.

Ripetere l'operazione per ottenere l'altra lastra 50x8. Ora fare la stessa operazione per realizzare i tagli triangolari della parte inferiore. In questo caso l'operazione sarà un poco più critica per via dell'angolo inferiore: se il taglio non dovesse essere perfetto, rifilare col taglierino le parti in eccesso.

Ora avrete i due pannelli in plexiglass pronti per la foratura. Utilizzando un trapano a bassa velocità (vanno benissimo i trapani-avvitatori a batteria) e punte da ferro, iniziate a fare i primi fori guida con una punta piccola (es. da 2.5 o 3 massimo) seguendo i segni presenti sulla maschera in carta. Come per il taglio, anche forare il plexiglass non è difficile ma è delicato, basta poco per formare una pessima crepa: usare BASSA VELOCITA' di rotazione, e soprattutto NON SPINGERE troppo con la punta! Dovete avere pazienza e premere molto leggermente, soprattutto quando la punta sta per uscire dalla parte posteriore, e in questo modo il foro sarà praticamente perfetto.

Vi consiglio di poggiare i fogli uno sull'altro, in mezzo a questi la maschera in carta, il tutto allineato sul telaio in legno e iniziare dai fori delle viti: in questo modo non solo avrete anche fatto i fori guida per il legno, ma potrete inserire le viti e procedere a forare i due pannelli contemporaneamente realizzando fori sempre perfettamente allineati.

Se un foglio dovesse presentare qualche crepa attorno ad un foro non preoccupatevi, quello sarà il pannello interno quindi le crepe non si vedranno.

Una volta fatti tutti i fori guida, passate ad una punta più grande, in base alla dimensione dei vostri interruttori. Nel mio caso la punta da 6 era perfetta. Fate una prova con un interruttore da inserire nel primo foro prima di proseguire con gli altri.

Per i commutatori sarà necessaria una punta più grande, nel mio caso da 10mm ma vi consiglio di fare prima comunque un foro con la punta da 6. In caso di problemi, usate una lima tonda per regolarizzare i bordi.

Step 4: Assemblare Gli Interruttori

Ora che abbiamo il telaio ed il pannello montati e forati, possiamo passare agli interruttori.

Per prima cosa dobbiamo determinare le connessioni. Ho allegato un file in formato Excel ("Connessioni Lights.xlsx") il quale contiene la lista di tutti gli interruttori e commutatori (in ordine da sinistra a destra guardando il pannello frontalmente), il tipo (ON-ON, ON-OFF-ON, e "Rotary" ossia i commutatori), il filo corrispondente (questa colonna ovviamente la modificherete per adattarla alla vostra configurazione). Per ora tralasciate le successive colonne in quanto riguardano Arduino e la connessione con FSX, oggetto di step successivi.

Parliamo ora dello schema elettrico.

Per semplificare il cablaggio, tutti gli ingressi digitali di Arduino li impostiamo con il pullup interno attivo: questo significa che leggeremo sempre valore HIGH (+5V) se il pin non è connesso a nulla, e LOW (0V o GND) quando attiviamo lo switch portando il pin a massa. Tutti gli switch a due posizioni sono quindi connessi a massa da un lato, mentre il centrale va direttamente al pin digitale. In questo modo in posizione "OFF" leggeremo HIGH (o "1") mentre in posizione "ON" il centrale sarà connesso a massa quindi leggeremo LOW (o "0").

Per ridurre il numero di pin necessari su Arduino, per gli switch a tre posizioni ed i due commutatori ho utilizzato pin analogici connessi al centrale, e partitori resistivi per realizzare valori di tensione diversi a seconda della posizione dello switch o commutatore (vedi figure).

In questo modo occuperemo solamente 9 pin digitali e 7 analogici, quindi un Arduino Nano sarà sufficiente in quanto mette a disposizione 8 ingressi analogici rispetto ai 6 della versione UNO.

Dato che internamente il pannello è diviso in tre sezioni delimitate dai due montanti, cablare gli interruttori ed i fili in tre gruppi separati, per facilitare anche il montaggio. Ogni filo è quindi saldato ad un piedino dei due header, connessi a loro volta in parallelo ai piedini dell'Arduino Nano, secondo lo schema indicato nel foglio Excel.

Step 5: Personalizzare Il Programma E Link2FS

Carichiamo quindi l'IDE di Arduino e con questo apriamo il programma di controllo FSX737LightsPanel.ino che trovate linkato in questo step.

Il codice è già predisposto per l'uso dell'aereo PMDG 737NGX quindi se intendete utilizzare questo non sono necessarie modifiche, ma descrivo comunque in questo step tutta la configurazione per consentire di comprendere il funzionamento. Se invece intendete usarlo con altri aerei è necessario personalizzare le impostazioni dell'interfaccia ossia i codici da inviare via seriale a Link2FS e da questo a FSX.

Aprite quindi il file Excel che avrete nel frattempo scaricato dal precedente step, ed osservate le colonne Code, Cmd, e le quattro "SimConnect".

  • La colonna "Code" contiene il codice evento FSX corrispondente al comando (ad esempio l'evento #69749 corrisponde alle luci per il taxing.
  • La colonna "Cmd" contiene il codice che Arduino manda sulla seriale a Link2FS
  • Le 4 colonne SimConnect corrispondono al parametro da aggiungere al Cmd per indicare lo stato

Ad esempio l'accensione delle luci taxi sarà "Y091" mentre per spegnerle "Y090", oppure il commutatore del motore 1 in posizione 3 (FLT) sarà "Y063". E' quindi compito di Link2FS interpretare il comando e mandare a FSX il corrispondente codice evento, seguito dallo stato.

Questo significa che se il vostro aereo ha dei codici custom differenti (ossia non usate il 737NGX) dovete cercare i codici evento corrispondenti ed inserirli nella colonna "Code", quindi programmare Link2FS per associare uno dei comandi "Yxx" presenti nella schermata "SimConnect Inputs" della sezione "Expert", ed annotare nel foglio a quale "Yxx" avete associato il comando. Nell'immagine allegata "SimConnectExpert.png" mostro le impostazioni correnti di Link2FS per il 737NGX, corrispondenti ai comandi del foglio Excel. Per finire, dovete impostare i codici nelle apposite linee di codice ossia:

  1. String S1Cmd[] = { "Y07", "Y08", "Y03", "Y04", "Y09", "Y10", "Y11", "Y12", "Y16" };
  2. String S3Cmd[] = { "Y01", "Y02", "Y05", "Y14", "Y13" };
  3. String R4Cmd[] = { "Y06", "Y15" };

Queste righe corrispondono alle tre tipologie di switch (vedi colonna TYPE del foglio Excel): la prima è relativa agli switch a 2 posizioni, la seconda a quelli a 3 posizioni, la terza ai due commutatori rotativi. L'ordine è da sinistra a destra (vedi anche la numerazione, sempre indicata nel foglio Excel).

Se utilizzate il 737NGX non dovete far altro che impostare i codici mostrati nell'immagine "SimConnectExpert.png", oppure accertandovi di avere Link2FS chiuso, copiare nella directory di Link2FS Expert il file "expertsettings.ini" che trovate in questo step.

Step 6: Configurare Link2FS E... Volare!

Per finire, inseriamo il nostro Arduino Nano nella breadboard, colleghiamo tutti i cavi e siamo quasi pronti, basta installare i driver seriali di Arduino (se non l'avete già fatto), collegare la USB, fare l'upload del programma, lanciare FSX, lanciare Link2FS, e... volare!