Sommario:

Costruisci Machine Watch: 9 passaggi
Costruisci Machine Watch: 9 passaggi

Video: Costruisci Machine Watch: 9 passaggi

Video: Costruisci Machine Watch: 9 passaggi
Video: My Geometry Dash Difficulty Faces! (Original) 2024, Dicembre
Anonim
Costruisci l'osservatore della macchina
Costruisci l'osservatore della macchina
Costruisci l'osservatore della macchina
Costruisci l'osservatore della macchina

Il punto di partenza di questo progetto è stato lavorare su un progetto concreto per imparare alcune cose sulle schede microcontrollore.

L'idea iniziale era quella di creare un oggetto fisico in grado di monitorare un sistema di integrazione continua (VSTS|Azure DevOps) e segnalare errori di build del software. A causa di problemi di sicurezza da parte del reparto IT, mi è stato rifiutato di connettere un dispositivo "non standard" direttamente alla rete aziendale.

Ho finito con l'architettura mostrata nella foto sopra. Il flusso di lavoro di esecuzione può essere riassunto come:

Un'applicazione desktop di Windows esegue la scansione (pull) delle definizioni di build VSTS. Analizza i risultati della build, quindi invia un comando al dispositivo fisico che esegue una piccola sequenza animata prima di mostrare la bandiera rossa o verde.

Passaggio 1: parti necessarie

Il seguente elenco riassume tutti gli elementi necessari:

  • 1 Arduino UNO R3 (https://store.arduino.cc/usa/arduino-uno-rev3).
  • 1 Scudo espansione (https://www.dfrobot.com/wiki/index.php/IO_Expansion_Shield_for_Arduino_V7_SKU:DFR0265).
  • 2 moduli XBee S1 (https://www.adafruit.com/product/128).
  • 1 dongle XBee explorer (https://www.sparkfun.com/products/11697).
  • 2 servomotori continui 5VDC con accessori di fissaggio (https://www.parallax.com/sites/default/files/downloads/900-00008-Continuous-Rotation-Servo-Documentation-v2.2.pdf).
  • 1 alimentatore 9VDC.
  • 3 LED.
  • 3 resistenze 220 Ohm.
  • manica termoretraibile.
  • 1 pulsante.
  • Resistenza di pull da 10KΩ per il pull up.
  • Condensatore da 100nF.
  • cavi elettrici.
  • strip-board (per il montaggio del pulsante)
  • Legno 5mm (50x50cm).
  • bastone di legno sezione quadrata 5x5 mm (1m).
  • cartone.
  • 10 viti x 2 mm di diametro.
  • 4 viti diametro 5mm.
  • forte magnete.
  • modulo di tornitura. Ho riutilizzato la parte mobile interna di una luce lampeggiante. puoi mettere quello che vuoi. Dovrai solo fare attenzione che le 2 parti mobili possano muoversi liberamente senza toccarsi.

Passaggio 2: costruire la scatola

Costruire la scatola
Costruire la scatola

In realtà puoi avere una scatola di qualsiasi forma tu voglia. La cosa principale a cui pensare prima di iniziare è dove saranno le parti mobili e per assicurarsi che possano muoversi liberamente senza toccarsi. Un altro punto è dove metterai il dispositivo? Ho finito con un magnete (forte) per attaccarlo a qualsiasi supporto metallico. se vuoi costruire lo stesso box, puoi seguire le istruzioni nel file box_drawings.pdf.

In tal caso devi solo tagliare tutti i diversi pezzi, fare i fori per i servomotori, i led, il pulsante e le viti e infine incollare tutte le parti insieme. Una volta asciutto, un po' di carteggiatura e un po' di colore.

Le due bandiere sono state realizzate utilizzando del cartoncino rosso e verde. Per fissare l'asta portabandiera sui servomotori è possibile utilizzare le parti di montaggio fornite al momento dell'acquisto.

Passaggio 3: configurazione di Arduino

Configurazione Arduino
Configurazione Arduino

Gli elementi collegati alla scheda di estensione Arduino sono:

  • PIN D2: il pulsante.
  • PIN D4: il LED indica che il sistema è ON.
  • PIN D5: il LED per dire che eseguiamo un ciclo.
  • D6 PIN: il LED indica che il dispositivo ha ricevuto un nuovo messaggio.
  • PIN D9: il segnale di impulso PWM per il servomotore che gestisce il giroscopio.
  • PIN D10: il segnale di impulso PWM per il servomotore che gestisce il flag.
  • Presa XBee: un modulo ZigBee.

Lo schema sopra mostra come tutti gli elementi sono collegati alla scheda.

Per i LED, la resistenza ed i fili sono direttamente saldati su di esso (attenzione alla polarità). Il tutto viene poi confezionato all'interno di una custodia termoretraibile.

Per il pulsante, tutte le parti (pulsante, resistenza e condensatore) sono direttamente saldate su una piccola strip-board satellitare. Il listello viene poi fissato direttamente con due viti (2mm)

I servomotori funzionano con alimentazione a 5V possono quindi essere collegati direttamente ad Arduino. Se usi quelli con voltaggio più alto (12V) dovrai aggiungere un altro strato per l'alimentatore.

Per i moduli XBee, una volta configurati per parlare tra loro (vedi sezione successiva), possono essere collegati direttamente alle prese.

Note: I LED e il pulsante potrebbero essere stati collegati direttamente ai pin Arduino in quanto potrebbe implementare internamente le sicurezze necessarie. Ho solo fatto alla vecchia maniera perché questo aspetto non mi era molto chiaro.

Passaggio 4: Software - XCTU

Software - XCTU
Software - XCTU

Come accennato in precedenza i due dispositivi XBee devono essere configurati per parlare insieme. Per fare ciò è necessario utilizzare il software X-CTU dedicato di DIGI. È necessario eseguire questo passaggio di configurazione solo una volta. si prega di seguire la procedura descritta nel file xbee_configuration.pdf.

Una volta terminata la configurazione è possibile collegare ogni modulo al proprio socket. Uno sul convertitore USB/Seriale e uno sulla scheda di estensione Arduino.

Il convertitore USB/Seriale dovrebbe essere riconosciuto automaticamente da Windows 10. In caso contrario potrebbe essere necessario installare manualmente il driver

Nota:

Usare i moduli XBee per fare una comunicazione seriale di base è un po' eccessivo. Al momento dell'avvio del progetto non riuscivo a trovare semplici dispositivi di comunicazione seriale facilmente utilizzabili su Windows 10 (problemi di driver). È stata anche un'opportunità per imparare alcune cose su

Passaggio 5: software - Arduino Sketch

Software - Arduino Sketch
Software - Arduino Sketch

Per programmare Arduino utilizziamo l'IDE accessibile dal sito web ufficiale.

La logica del programma è piuttosto semplice, si limita ad ascoltare sulla porta seriale di default della scheda singole lettere ('a', 'b', …). Se il carattere ricevuto corrisponde a un comando noto, una funzione secondaria riproduce la sequenza corrispondente.

I 2 principali comandi utili sono l'animazione del successo ("a") e l'animazione degli errori ("b").

Per poter giocare (o eseguire il debug) un po' di più con la scatola ci sono alcuni comandi extra che possono essere eseguiti. Loro sono:

  • ‘o’: forza l'accensione del LED ON
  • ‘p’: forza lo spegnimento del LED ON
  • 'q': forza l'accensione del LED Nuovo messaggio
  • ‘r’: forza lo spegnimento del LED Nuovo Messaggio
  • 's': forza l'accensione del LED Cycle
  • ‘t’: forza lo spegnimento del LED Cycle
  • ‘u’: attiva il servomotore del giroscopio
  • ‘v’: attiva il servomotore del flag.

Oltre al comando seriale è presente una subroutine (handlePushButton) che si attiva quando si preme il pulsante del dispositivo. In tal caso, l'animazione dell'errore o del successo viene riprodotta automaticamente. Questa caratteristica permette di verificare che il dispositivo fisico sia stato montato correttamente.

Il codice dello sketch di Arduino è nel singolo file bsldevice.ino. Puoi caricarlo direttamente usando l'IDE.

Passaggio 6: Software - Applicazione desktop

Software - Applicazione desktop
Software - Applicazione desktop

Lo scopo dell'applicazione desktop è monitorare il sito Web Microsoft Azure DevOps (in precedenza VSTS) e rilevare se una definizione di build ha esito positivo o è errata. Ogni volta che una build è terminata, l'applicazione desktop determina lo stato della build e invia il comando corrispondente ('a' o 'b') alla porta seriale (COMx).

Dopo aver lanciato l'applicazione la prima azione è quella di selezionare la porta com giusta su cui è connesso il modulo ZigBee. Per determinare la porta è possibile utilizzare Gestione dispositivi di Windows (sotto Porte (sezione COM e LPT)). La connessione ad Azure DevOps viene eseguita automaticamente all'avvio utilizzando le credenziali dell'utente corrente. Puoi anche inviare manualmente qualsiasi comando predefinito utilizzando la casella combinata a destra.

Tutti i sorgenti sono stati generati con l'edizione professionale di Visual Studio 2017. Richiede. NET Framework 4.6.1. Questa versione di Framework è preferibile per facilitare la connessione/autenticazione al sito web VSTS.

usare:

  • scarica l'archivio bslwatcher_sources.zip.
  • Estrailo sul tuo disco.
  • Leggi il file how_to_build.txt per i dettagli della build.

Passaggio 7: primo avvio

Ci sono due cose principali da tenere a mente quando si avvia la scatola:

1- Non c'è modo per il sistema di sapere da solo dove sono le bandiere. Il sistema presuppone che all'avvio la bandiera verde sia alzata.

2- Quando accendi la scheda Arduino nulla dovrebbe muoversi. Poiché abbiamo usato servi continui, la posizione zero è impostata a 90 per impostazione predefinita nel file di schizzo. Se un servomotore inizia a girare o fa rumore. potrebbe essere necessario ridefinire la sua posizione zero. Per farlo è sufficiente sintonizzare il potenziometro all'interno del piccolo foro sul lato del servomotore.

www.arduino.cc/en/Reference/ServoWrite

cmra.rec.ri.cmu.edu/content/electronics/boe…

Passaggio 8: conclusione

Questo piccolo dispositivo riporterà fisicamente lo stato del tuo sistema di integrazione continua.

Poiché l'"intelligenza" è nell'applicazione desktop, è possibile utilizzare la scatola per monitorare qualsiasi altro software o processo (posta, un sensore di temperatura…). Devi solo avere accesso a un'altra API e decidere cosa è "buono" o cosa è "cattivo". Se non usi i colori convenzionali rosso e verde puoi anche cambiare il significato del "messaggio".

I miglioramenti potrebbero essere apportati anche alla scatola stessa:

  • Usa una batteria.
  • Utilizzare un altro protocollo di comunicazione.
  • Aggiungi sensori per sapere quale bandiera è in alto.

Spero che tu abbia trovato questo progetto interessante.

Grazie per leggere fino a qui.

Passaggio 9: allegato

Alcuni dei link utilizzati per creare questo progetto:

Sito web Arduino:

Sito web DIGI:

Software XCTU:

Alcune informazioni utilizzate da altri:

arduino.stackexchange.com/questions/1321/se…

stackoverflow.com/questions/10399400/best-w…

www.mon-club-elec.fr/pmwiki_reference_ardui… (in francese)

jeromeabel.net/

Sito Web MSDN in generale:

docs.microsoft.com/en-us/dotnet/framework/…

Consigliato: