Project Showcase '14


25

Il logo è un derivato del logo della community Arduino concesso in licenza con licenza Creative Commons CC-SA-BY-NC 3.0

Aggiornamento: Annunciati i vincitori

I vincitori del concorso sono stati annunciati. Si prega di consultare il post Meta per i dettagli .

Per celebrare i 10 anni di Arduino , siamo orgogliosi di annunciare il primo evento in assoluto su Arduino Stack Exchange.

Porta fuori le schede e le apparecchiature di saldatura, scava i circuiti integrati e le resistenze. Il primo contest di Arduino Stack Exchange è proprio dietro l'angolo. Cercheremo progetti interessanti che vengono creati usando Arduinos. Il concorso ha lo scopo di condividere, discutere e fornire feedback sui progetti a cui tu e altri membri state lavorando. Vedi il post dell'annuncio

Dettagli:

  • Il premio è una maglietta ufficiale Stack Exchange
  • Limitare due voci per persona. Se ne vengono fornite più di due, verranno prese in considerazione solo le prime due.
  • I cloni sono ammessi.
  • I progetti da prendere in considerazione saranno accettati fino al 29 marzo 2014 alle 4:00 UTC. La domanda rimarrà aperta nel caso in cui qualcuno volesse mostrare il proprio progetto realizzato in occasione del Arduino Day 2014.

Visita il post Meta per la discussione su questo evento e ulteriori informazioni.

Formato di risposta

Puoi pubblicare fino a due progetti (come due risposte separate) come voci per il concorso. Tutte le voci extra verranno eliminate. Prendi in considerazione il seguente modello per le voci:

titolo del progetto

Descrizione molto breve

Descrizione

Qual è il tuo progetto? Che cosa fa? Che problema risolve?

Design

Cose da includere in questa sezione:

  • Schemi e altra documentazione di progettazione. Fritzing è un buon strumento per disegnare schemi di breadboard come quello mostrato nel logo del progetto sopra.
  • Componenti utilizzati per costruire il progetto
  • Immagini o video

Conclusione

Pensieri finali. Cosa hai imparato facendo questo progetto? Cosa faresti diversamente se dovessi ricominciare da capo?

È possibile copiare / incollare il seguente testo se si desidera utilizzare questo modello.

# Project Title
**Very Brief Description**

# Description
What is your project? What does it do? What problem does it solve?

# Design
Things to include in this section:

- Schematics and other design documentation. [Fritzing][8] is a good tool for drawing breadboard schematics like the one shown in the project logo above.
- Components used to build the project
- Pictures or video

# Conclusion
Final thoughts. What did you learn from doing this project? What would you do differently if you had to start over?

I premi

Ci sono due premi! Il vincitore sarà l'invio ottenendo il numero massimo di voti positivi (i voti negativi non contano) e riceverà una maglietta Stack Exchange *! Ci sarà qualcosa anche per il secondo classificato. Il secondo classificato verrà deciso a discrezione degli organizzatori dell'evento.

* Potrebbero essere applicate alcune restrizioni. La spedizione internazionale potrebbe richiedere alcune settimane.

Dove posso inviare i miei progetti?

Pubblica i tuoi progetti come risposte a questo post.


Qual è esattamente la qualifica per essere un progetto "arduino"? Uso optiboot in molti punti, ma non lo vedo come "arduino", dato che è solo un progetto che utilizza la toolchain di arduino. A parte l'uso di una scheda nel fattore di forma arduino, non riesco a vedere un modo chiaro di delineare tra "arduino" e "non arduino", a meno che tu non richieda esplicitamente che il progetto sia compilato usando l'editor di testo arduino, e questo probabilmente squalificherà tutti i progetti decenti poiché l'editor di Arduino è orribile e tutti i bravi programmatori hanno smesso di usarlo molto tempo fa.
Connor Wolf,

@FakeName portiamo questa discussione al Meta Post
sachleen il

Risposte:


14

Questbox con stato

Una scatola con GPS che ti fa visitare alcuni punti prima dell'apertura

Descrizione

È simile a questbox , ma memorizza una piccola quantità di informazioni in EEPROM , quindi devi visitare due o tre luoghi diversi prima che si apra.

Design

Hardware necessario:

  • Arduino Uno
  • Reverse Geocache Version 2 (o un protoshield)
  • Modulo GPS GlobalSat EM-406A
  • LCD blu 2 × 8 con connettore e cavo
  • Servomotore Hitec HS-55
  • 4-40 asta di spinta e cavallotto per fermo (alcune versioni prevedono invece un'asta a Z)
  • 2 portabatterie AA
  • Pulsante metallico con LED blu incorporato e cavo a 4 pin
  • Interruttore a bassa tensione Pololu
  • Regolatore boost 5 V Pololu
  • Connettore JST per modulo GPS EM-406A
  • Perni di intestazione dritti e ad angolo retto per i connettori display, servo e pulsante
  • Due resistori per la limitazione della corrente e la regolazione del contrasto del display
  • Due piccoli condensatori per il livellamento della potenza
  • condensatore più grande per il circuito di contrasto del display

Costo hardware totale: 137 $ + spese di spedizione

Materiali aggiuntivi:

  • Una bella scatola
  • Colla epossidica, legno per coprire pezzi, attrezzi

Puoi trovare le istruzioni di montaggio nella pagina meridiana (puoi acquistare la maggior parte dei materiali da loro)

Caricherò il codice stateful e posterò un link qui, sfortunatamente non avrò tutto l'hardware necessario in tempo, quindi questa è solo un'idea :)

Codice scritto finora :

Ispirazione:Questbox originale

Conclusione

Ho imparato come integrare molti componenti e librerie tutti insieme, dovrò viaggiare un po 'per testarlo :)

Il budget può essere ridotto abbastanza cambiando un po 'il concetto:

  • Cambia GPS con un tastierino numerico: il "giocatore" deve indovinare / ottenere un codice invece di viaggiare verso una posizione
  • L'interruttore e il regolatore Polulu possono essere scambiati con un relè di ritenuta con accoppiamento di capacità

11

Risparmio energetico per l'utente di PC distratto

Questo dispositivo accende / spegne le luci della mia scrivania quando è buio (ish) e in sincronia con lo screensaver del mio PC.

Descrizione

Il progetto è poco più di una combinazione di un sensore sensibile alla luce, un relè e un codice intelligente che monitora lo screensaver sul mio PC. Quando è il crepuscolo e quando lo screen saver non è attivo, accende le luci sulla mia scrivania. Quando successivamente lascerò la mia scrivania, lo screensaver si attiverà, il che a sua volta farà scattare la luce della scrivania. Quando c'è abbastanza luce durante il giorno, le luci non si accendono affatto. Il problema risolto è ridurre lo spreco di energia dovuto all'accensione dell'illuminazione nel mio ufficio quando ho lasciato la stanza.

Design

Perché la potenza dei microcontrollori / Arduino richiede solo un po 'di hardware aggiuntivo per creare un progetto utile. Lo stesso vale per questo progetto in cui l'hardware è poco più di:

  • Un Arduino
  • Un paio di schermi a vite per collegare i componenti esterni
  • Un LDR in serie con un resistore per misurare la luce ambientale
  • Una scheda relè per accendere e spegnere le luci alimentate dalla rete
  • Un condensatore da 10 μF da GND a RST per impedire il reset e la programmazione accidentale della scheda.

schematico

simula questo circuito - Schema creato usando CircuitLab

Conclusione

Ho imparato come interfacciare il PC tramite il collegamento seriale USB con Arduino e come leggere lo stato attuale dello screensaver sul mio PC. Se dovessi ricominciare da capo, utilizzerei un controller molto più piccolo poiché ho davvero bisogno solo di una singola uscita digitale e di un singolo ingresso analogico. Probabilmente basare il progetto su V-USB . Arduino è comunque eccellente per la prova di concetto (PoC) semplice e veloce. (Il PoC è sulla mia scrivania da almeno due anni).


Sarebbe bello vedere le foto della tua tavola finale e configurazione. Qual è il tempo di risposta? Immediato? Dopo un minuto?
sachleen,

@sachleen Il demone sul mio PC che esegue il polling dello screensaver viene eseguito ogni 30 secondi quando lo screensaver è spento (quando sto lavorando sul mio PC) e ogni 5 secondi quando è acceso. Posso aumentare quella velocità, ma ciò influenza il carico della CPU e con quel consumo di energia ... C'è anche un condensatore collegato per impedire il ripristino e la programmazione accidentale dell'Arduino.
jippie,

@sachleen come il crepuscolo cade lentamente nel tempo, questi 30 secondi non sono davvero un problema. Nessuno nota la differenza nell'oscurità per oltre 30 secondi. Entro 5 secondi dallo spostamento del mouse o dalla pressione della tastiera quando torno le luci si accendono. Vi è una leggera isteresi tra ciò che è considerato buio e luce, per evitare che le luci si accendano / si spengano ogni tanti secondi quando è buio e si fa buio abbastanza per attivarsi.
jippie,

Dovresti modificarlo per oscurarlo al 50% per 10-15 secondi, quindi non sei completamente al buio e ti dà un po 'di "avvertimento"
Anonimo Penguin

@AnnonomusPerson Sto cambiando il lato 240VAC di un SMPS con ingresso 100-250VAC specificato. Non accadrà, temo perché non voglio cambiare lato secondario. Bella idea però, forse posso aggiungere in qualche modo un piccolo LED bianco intelligente.
jippie,

8

Penso che questo tipo si adatti a malapena alle regole, ma è abbastanza interessante che immagino di pubblicarlo comunque.

Generatore di timestamp sincronizzato GPS di alta precisione per scopi di acquisizione dati.

Questo è un progetto piuttosto interessante che deve essere utilizzato per fornire un modo semplice per sincronizzare più sistemi indipendenti di acquisizione dati.

Fondamentalmente, lavoro in un laboratorio di ricerca e spesso abbiamo strumenti che hanno più sistemi indipendenti di acquisizione dati, che possono essere separati fisicamente fino a 50 piedi. Dobbiamo essere in grado di correlare il momento in cui sono stati prelevati i campioni da ciascun sistema, il che può essere difficile se si desidera risolvere i tempi di campionamento con un grande grado di precisione. Utilizzando qualcosa come un sistema di acquisizione dati USB, solo la latenza USB può introdurre diverse centinaia di millisecondi di latenza sconosciuta, che può variare da acquisizione a acquisizione.

La soluzione precedente era un contatore parallelo a 24 bit che era semplicemente busato ovunque, che richiedeva un enorme cablaggio, ed era una specie di dolore nel sedere.

Questo sistema utilizza un modulo GPS di temporizzazione specializzato in grado di sintetizzare clock di frequenza arbitrari, che sono fase e frequenza bloccati agli orologi atomici nei satelliti GPS.

L'MCU è responsabile del collegamento dei messaggi di dati GPS (ho dovuto estendere e ottimizzare pesantemente un parser di protocollo esistente per i dati GPS). Il GPS è configurato per utilizzare un protocollo binario proprietario ed è tutto analizzato dal parser che ho scritto.

Il progetto ha subito una serie di revisioni (nella foto sotto).

Design

Revisioni! inserisci qui la descrizione dell'immagine
Rev 1: Non ho mai funzionato, perché inizialmente speravo di usare un software dPLL su un GPS molto meno costoso, per sintetizzare un clock a frequenza più alta solo dall'uscita 1 PPS. Probabilmente è possibile farlo funzionare, ma l'investimento in termini di tempo non lo ha reso utile. (e sono un programmatore troppo schifoso)

Utilizzato un MCU elica parallasse. Anche la mancanza di decenti lingue compilate è stata un grosso problema.


inserisci qui la descrizione dell'immagine
Rev 2: spostato su un ATmega2560. Ha funzionato, ha avuto molti aspetti del design funky ereditati dal primo giro. In primo luogo, l'uso continuo dei registri a scorrimento per l'uscita a 32 bit, nonostante il numero più che sufficiente di IO sull'ATmega2560.

La prima scheda che utilizzava Optiboot ed era effettivamente programmata interamente utilizzando la toolchain Arduino standard, prima che mi irritassi e iniziassi a modificare la toolchain per adattarla meglio ai miei scopi.


inserisci qui la descrizione dell'immagine
Rev 3: Funzionava anche. Il cablaggio è dovuto al fatto che questa scheda incorporava un hub USB incorporato per ridurre il numero di porte USB richieste (l'interfaccia FTDI richiede 1 USB e anche il GPS ha un'interfaccia USB). Sfortunatamente, il GPS non sarebbe stato correttamente elencato, anche se il dispositivo FTDI ha funzionato bene e ho usato questo hub altrove senza problemi. Strano.

Non ho un debugger USB adeguato, quindi ho lasciato cadere completamente l'hub USB, invece di provare a risolvere il problema. L'USB GPS non è comunque molto utilizzato al di fuori del set-up.


inserisci qui la descrizione dell'immagine
Rev 4: versione semifinale ATmega2560. Aggiunto un display LCD per lo stato GPS, armeggiato con LED e così via. Inoltre, migliori impronte per i possibili supercondensatori per mantenere lo stato GPS quando non alimentato.

Questa è l'ultima versione di Optiboot.

MStimeè il MSTOW, o Millisecond-Time-Of-Week, che è il nome del valore dei dati GPS che viene emesso sul timestamp out. È una variabile a 32 bit che si incrementa una volta per millisecondo e si ripete ogni settimana. È una parte più oscura dello standard GPS.

ITOWè un altro valore relativo al GPS, essendo un valore che corrisponde al segnale 1PPS. La correlazione tra i due non si riflette correttamente sull'LCD, poiché non ho il tempo di CPU per aggiornare l'LCD alla velocità che mi piacerebbe. Questa è stata in realtà una delle principali cose che sono migliorate nell'aggiornamento ai dispositivi Xmega.


inserisci qui la descrizione dell'immagine
Rev 5: interruttore di architettura completo. Ora utilizza un processore ATxmega128A1U. Non proprio più "Arduino", ma la possibilità di avere più livelli di interrupt sulla serie di processori xmega mi ha permesso di migliorare considerevolmente la struttura del codice.

I due fili del bodge provengono da me facendo qualche sperimentazione, anche la scheda ha funzionato bene senza di loro.

In attesa:

Rev 6! inserisci qui la descrizione dell'immagine
Aggiungi la possibilità di utilizzare diverse dimensioni di LCD, maggiore protezione ESD sulla connessione dell'antenna GPS (che era un problema), capacità di utilizzare una batteria CR2032 per mantenere l'orologio GPS anziché i supercondensatori.

Inoltre, etichettatura molto migliore dei LED di debug e di stato.

inserisci qui la descrizione dell'immagine
E bonus Nyan-Cat!

inserisci qui la descrizione dell'immagine

(Queste schede sono ora disponibili per la fabbricazione. Quando le avrò, aggiungerò le immagini della scheda reale.)


Ho fatto dei test di lunga durata tra due delle schede ATmega2560 e per oltre 72 ore, l'errore di tempo RMS tra le due unità era di ~ 20 uS. Questo era anche con due antenne completamente indipendenti. Il mio obiettivo di progettazione era <1 ms, quindi sono abbastanza soddisfatto.

Nel complesso, penso che questo faccia un buon lavoro illustrando come Arduino può essere uno strumento utile per la prototipazione precoce di prodotti / sistemi "reali". Lo uso per ottenere una versione di prova iniziale in esecuzione con il minimo sforzo e quando sono sicuro che l' idea funzionerà, in realtà metto il lavoro a migrare verso un'implementazione completamente personalizzata e specifica per lo scopo.


File di progettazione:
https://fake-server.no-ip.org/svn/FPGAStuff/DAQ%20systems/
(Nella serie di directory "GPS Timestamp").
(Nota: i file sono da Altium Designer The sono. Non file in formato eagle).

Codice sorgente:
https://fake-server.no-ip.org/svn/Programming/Code/AVR/
Ancora una volta, nella serie di directory "gpsTimeStamp".

Ci scusiamo per le pessime foto del cellulare.


Potresti per favore ridurre il numero di immagini? 3-4 dovrebbe essere sufficiente per far passare l'idea. Il caricamento su connessioni lente richiede molto tempo.
asheeshr,

7
@AsheeshR - ho fortemente in disaccordo. Potrei abbandonare una delle foto dell'ultimo giro, ma avere la progressione della progettazione del sistema penso sia abbastanza prezioso.
Connor Wolf,

1
Ti diverti con la serigrafia?
TheDoctor

Oooh, PCB vista 3D. Aww, è Altium ed è piuttosto costoso? : $ Abbastanza divertente vedere questi progetti o vedere qualunque altro progetto stiano facendo.
Paul,

7

Sonic Ray Gun

Due progetti per bambini

Sto lavorando con un paio di bambini istruiti a casa e ci stiamo divertendo molto con un arduino. Il loro primo progetto fu una bomba finta, come vedi nei film, con un conto alla rovescia LCD e un classico "tagli il filo rosso o blu?" tipo di problema.

Il secondo progetto è iniziato mostrando loro il tonoMelody esempio e un piccolo oratore. Lo scoprirono rapidamente che se aumentavi la frequenza fino a 15kHz, era piuttosto fastidioso per gli adolescenti. Un'ora dopo avevano migliorato il design con una tazza, un rotolo di carta igienica e un interruttore ricavato da una graffetta che produceva una pistola a raggi sonori direzionale.

Purtroppo nessuna foto.

Conclusione

Non lasciare i bambini incustoditi con un arduino.


3
Puoi descriverlo un po 'di più (codice, fritz, ecc?)?
Pinguino anonimo il

7

(falso) Linux su Arduino

Di recente ho acquisito un piccolo schermo LCD composito, con il quale ho iniziato rapidamente a giocare con la libreria TVout di Arduino. Cosa è venuto dopo? Linux!

Descrizione

Mentre giocavo con il mio schermo TV e la libreria TVout, ho scoperto che esiste un gestore terminale premade per la TV. Presto ho iniziato a sperimentare come usarlo come un terminale TV collegato a una tastiera PS / 2. Ci sono stati alcuni problemi con la libreria PS / 2 che ho usato, quindi l'ho trasferito per utilizzare la libreria USB sul mio Mega ADK insieme a una tastiera USB. Funzionò molto meglio. Ora per l'archiviazione.

Lo scudo della mia scheda SD non è compatibile con il mio Mega, quindi l'ho collegato un po 'a casaccio all'SPI alla fine della scheda. Ho scritto la gestione dei comandi per preformare alcune attività come elencare i file e trovare dimensioni del disco, spazio libero, ecc. L'intero assembly non è affatto finito, ma sono contento dei progressi che ho fatto.

Alla fine il codice verrà trasferito su Github, guarda i commenti.

Design

ingrandita la foto

schermata di blocco

Le sfide

Ho avuto molti problemi a concatenare i caratteri immessi alla stringa che memorizza il comando corrente perché non stavo eseguendo correttamente il casting. Una volta capito, ho anche dovuto risolvere il problema in cui alcuni tasti stampavano la spazzatura casuale sullo schermo. Ciò è stato causato dalla lettura della memoria prima delle definizioni delle lettere, quindi alcuni ifs lo hanno chiarito.

Conclusione

Sono molto soddisfatto del codice. Una volta aggiunto qualche altra utility, lo inserirò su Github, quindi guarda i commenti. Nel complesso, è stato un progetto molto divertente. Ho imparato a usare Stino nel processo.


Sembra interessante. Mi piacerebbe molto vedere presto il tuo codice!
asheeshr,


Il display LCD è costato molto?
Pinguino anonimo


@AnnonomusPerson l'ho smontato perché era troppo ingombrante
TheDoctor

5

ShiftLCD

Scheda basata su AVR, compatibile con Arduino, che si monta sul retro di uno schermo LCD da 8x1 a 20x4 caratteri.

Descrizione

Ho appena progettato questa scheda e la libreria personalizzata per semplificarne l'uso e l'LCD. Anche se sono abbastanza facili da usare al momento. Riduce il numero di pin di uscita utilizzati da 6 a 3. Ha anche la possibilità di espandere l'I / O aggiungendo più registri di scorrimento a quello che guida il display. Il processore utilizzato è un ATTiny45 o ATTiny85 che ha, dopo aver usato il registro a scorrimento, i pin digitali 1 (PWM) e 4 disponibili e il pin analogico 2 (stesso pin del pin 4 digitale) disponibile.

Design

schematico Rendering OSH Park Tavola non dissaldata

Le sfide

Una sfida imprevista che ho dovuto affrontare è stata quando ho iniziato a utilizzare i pin digitali 0-2 per eseguire il registro a scorrimento, anche questi sono stati i pin di programmazione (MISO, MOSI, SCK). Quindi, ogni volta che riprogrammavo il dispositivo, il display LCD veniva inviato un sacco di messaggi incomprensibili in cui si doveva spegnere l'alimentazione per ripristinare il display. Ho risolto questo problema spostando il perno di chiusura dei registri del cambio sul pin 3 digitale che non è un pin di programmazione. Risolvendo questo ho risolto anche un altro problema per me perché quando ho spostato il perno di chiusura si è aperto il pin 1 digitale che aveva un utilizzo PWM, consentendo di fare più cose con la scheda.

Conclusione

Concesso, questo potrebbe non essere il prodotto o l'idea più interessante, ha ancora i suoi usi. La risposta direttamente alla domanda "Cosa hai imparato facendo questo progetto" Ho imparato a progettare dall'inizio alla fine una scheda PCB. Se avessi potuto fare qualcosa di diverso sarebbe stato usare parti di montaggio superficiale anziché un foro passante, quindi di nuovo è solo un prototipo, una scheda unica.


Come hai programmato il tuo ATtiny? Quale codice è stato coinvolto? IDE? (Per favore basta commentare, non modificare il tuo post. )
Anonimo Penguin

@AnnonomusPerson Sembra che la persona che ha pubblicato ciò che ho fatto prima abbia rimosso il proprio commento, quindi è qui che ho ottenuto le cose necessarie (file IDE Arduino e schema di programmazione) per programmare ATTiny. highlowtech.org/?p=1695
Jesse Laning

Perché usare il montaggio superficiale? Saldare il foro passante a casa è molto più semplice? Penso che SMD sia solo per cicli di produzione o c'è qualcos'altro?
Paolo,

5

Robot a pulsante.

Un robot sparatutto a quattro ruote da quattro libbre con telecomando che spinge i pulsanti.

Descrizione

Ho realizzato questo progetto nel corso dell'ultimo anno scolastico. Ero in classe di robotica e abbiamo deciso di fare una gara. Ogni squadra creerebbe un robot che ha un pulsante grande e un modo per spingere altri pulsanti. Alla fine dell'anno, avremmo avuto il concorso finale, in cui i tre robot avrebbero provato a spingere i pulsanti a vicenda.

Entro la fine dell'anno, il mio robot ha funzionato solo parzialmente. Ogni parte del robot aveva funzionato a un certo punto, ma tra un Arduino fritto, i conducenti di motori fritti, una terribile organizzazione del codice e io ero l'unica persona del mio team a lavorare sul robot per un totale di più di cinque ore, io non riuscivo a farlo funzionare completamente.

Non tocco il mio robot da quasi un anno, quindi so che se volessi farlo funzionare di nuovo avrei dovuto ricollegare il robot e riscrivere il codice. Potrei decidere di farlo un giorno, ma per ora lavorerò su progetti meno ambiziosi.

Design

Design generale

inserisci qui la descrizione dell'immagine

Flusso di informazioni / elettricità

+--------------------------+   +-------------------------------------------------+
|         Computer         |   |      Robot                                      |
|--------------------------|   |-------------------------------------------------|
|                          |   |                                                 |
| Keyboard +--> Processing |   |  Button +-------------+        Motor    Motor   |
|                          |   |                       |          ^       ^      |
|                    +     |   |                       |          |       |      |
|                    |     |   |  Batteries +-----+    |          +       +      |
|                    v     |   |                  |    |   +----> Motor Driver   |
|                          |   |                  v    v   +                     |
|               Bluetooth +-----> Bluetooth +--> Arduino Uno +--> Motor driver   |
|                          |   |                  +    +  +       +       +      |
+--------------------------+   |                  |    |  |       |       |      |
                               |                  |    |  |       v       v      |
                               |                  |    |  |    Motor     Motor   |
                               |                  |    |  |                      |
                               |                  |    |  |                      |
                               |                  |    |  +-----> Laser          |
                               |  +---------------|----|----+                    |
                               |  |       Arm     |    |    |                    |
                               |  |---------------|----|----|                    |
                               |  |     +---------+    v    |                    |
                               |  |     |      Motor Driver |                    |
                               |  |     v              +    |                    |
                               |  |  Servo             |    |                    |
                               |  |                    v    |                    |
                               |  |                  Motor  |                    |
                               |  +-------------------------+                    |
                               +-------------------------------------------------+

componenti

  • Arduino Uno, (fritto)
  • Trasporti:
  • Pulsante facile
  • Braccio:
    • Servo (rotazione continua)
    • Motor driver , (fritto)
    • Motor, (12v, trovato nella pila di rifiuti dell'insegnante)
    • Gomma per cancellare
    • Contrappeso (sacchetto di carta fatto in casa pieno di penny)
  • 2 pacchi batteria , (12V, 1300mAh, ricaricabile Ni-MH)
  • 2 taglieri senza saldatura
  • Laser, (5mW)
  • Bluetooth:
  • Molti fili
  • Un sacco di rottami metallici e plexiglass, (trovati nell'officina meccanica dell'insegnante)

Codice

Non ho organizzato molto bene il mio codice, quindi spero che sia il codice giusto.

Più immagini

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Video terribile di una versione iniziale lenta, senza braccia, senza pulsanti, senza laser e senza bluetooth del robot.

https://www.youtube.com/watch?v=Q7MvE7-Xb0E

Conclusione

Sono davvero bravo a friggere l'elettronica.

Questa è stata la mia prima esperienza in una vera officina meccanica. Devo usare una fresatrice CNC, una fresatrice manuale, un tornio e una sega a nastro. Se avessi di nuovo avviato un progetto come questo, avrei prodotto una documentazione molto migliore, in modo da poter capire che diamine stavo facendo un anno dopo.


1
Bel lavoro! Niente è più prezioso dell'esperienza e l'importante è che ora saprai come fare un lavoro migliore la prossima volta.
jippie,

5

Display a LED a 4 cifre per Arduino

Scheda piccola con 4 cifre LED a 7 segmenti, gestita tramite 3 pin.

Descrizione

Quando ho iniziato a lavorare con Arduino, volevo un modo per visualizzare i valori raccolti da vari sensori che ho sperimentato, ma non volevo trasmettere questi valori Serialsu un PC.

Volevo una piccola scheda che potessi facilmente riutilizzare da un progetto all'altro e volevo risparmiare una breadboard.

Questa scheda, insieme alla sua piccola libreria, attualmente consente la visualizzazione di numeri a 4 cifre e non genera alcuna corrente Arduino durante la visualizzazione (la corrente viene fornita solo quando si comunica alla scheda il nuovo valore da visualizzare d'ora in poi).

tabellone con contatore

Design

Il design è piuttosto semplice in quanto ho deciso di riutilizzare un chip MAX-7219 per guidare il mio display a LED (ne avevo alcuni a portata di mano).

Grazie a questo chip, lo schema era molto semplice, ma era importante capire correttamente come usarlo; fortunatamente, la sua scheda tecnica era abbastanza chiara.

Il design originale era fatto su una breadboard e utilizzava 4 cifre LED singole a 7 segmenti ; ma ha richiesto troppo cablaggio per i miei gusti (necessità di collegare segmenti per gruppi di 4). Inoltre, durante il mio primo esperimento con cifre LED a 7 segmenti, ne ho fritto uno: aveva 2 pin di massa, ma ne ho collegato solo uno a GND anziché entrambi :-(

Poi ho deciso di optare per un display a segmenti 4x7, catodo comune , con anodi a segmenti già collegati per 4 cifre: sono solo 4 + 8 pin!

Schema del consiglio di amministrazione

Durante i miei test, ho trovato un'utile libreria Arduino per lavorare con MAX-7219 che ho deciso di riutilizzare. Ho costruito la mia libreria su di essa, con un'API molto semplice.

Dopo il breadboard, era tempo di rendere il design più permanente; dato che avevo a disposizione un sacco di stripboard, ho deciso di provarci.

Ho cercato e trovato un facile designer Stripboard per PC che ho usato per progettare la mia tavola.

Il primo progetto di stripboard non è stato ottimizzato in termini di spazio e ho deciso di non implementarlo:

DESIGN STRIPBOARD # 1

Quindi ho rivisto il design per ottimizzare costi e dimensioni (solo un piccolo listello 50x75mm); è stato facile con il designer di stripboard che ho trovato prima:

DESIGN STRIPBOARD # 2

Una volta che la scheda era pronta, ho deciso di controllarla con un Arduino UNO e un sensore a ultrasuoni:

IMMAGINE

Sembrava funzionare, tranne che spesso avevo valori visualizzati strani e incoerenti; dopo le indagini, ho scoperto che era dovuto al rumore attivato dal tabellone , rumore che interferiva con il sensore. Avevo solo bisogno di aggiungere un tappo di disaccoppiamento il più vicino possibile agli attuali pin di alimentazione del sensore e che funzionasse perfettamente (si noti che il tabellone aveva già tappi di disaccoppiamento per il chip MAX-7219).

Elenco delle parti:

  • 1 x LN5461AS: blocco a 7 segmenti catodico comune di 4 cifre
  • 1 x MAX7219: chip driver LED multiplexato
  • 1 supporto IC (24 pin)
  • 1 resistenza da 22K
  • 1 cappuccio elettrolitico da 10uF
  • 1 cappuccio da 100nF
  • 1 x connettore maschio (5 pin)
  • 1 listello 90x50mm
  • fili, saldatura ...

Conclusione

30 anni dopo i miei ultimi esperimenti di elettronica, ho potuto riprendere il virus con Arduino e con questo primissimo progetto che, sebbene piuttosto semplice, mi ha insegnato diverse cose:

  • interpretare i fogli dati per i componenti utilizzati (MAX7219 e display a LED)
  • impara come usare ed essere efficace con il design del tabellone
  • tutti i pin contrassegnati GND o V + devono essere collegati: non scegli quello che desideri connettere!
  • se c'è qualcosa che sembra strano quando provi il tuo circuito e non capisci perché: non cercare, deve essere un rumore, prova ad aggiungere un tappo di disaccoppiamento e questo dovrebbe farlo!
  • scopri come creare una libreria Arduino (non solo uno schizzo)

Se dovessi ricominciare questo progetto oggi, vorrei:

  • prova a ottimizzare ulteriormente il design del listello (probabilmente potrei ridurre ulteriormente le dimensioni)
  • sostituire le intestazioni dei pin dritti sulla scheda con le intestazioni ad angolo retto in modo che i fili che si collegano ad Arduino siano più sporgenti davanti alla scheda

5

Orologio da parete digitale con telecomando a radiofrequenza (RF)

Un grande orologio da parete con display a 7 segmenti (40x30cm / 16x12 ") con telecomando R / F.

inserisci qui la descrizione dell'immagine

Descrizione

Questo progetto presenta un grande orologio da parete digitale con display a 7 segmenti (40x30cm / 16x12 ") con telecomando R / F. Ha le seguenti caratteristiche:

  • Mostra l'ora e la data correnti (ore, minuti, secondi, giorno, mese, anno) in due formati (ore o data con cifre grandi).
  • Mostra la temperatura attuale in ° C.
  • Ha un conto alla rovescia definito dall'utente che emette un allarme (fastidioso) quando raggiunge lo zero.
  • Tutte le funzioni sono controllate a distanza da un telecomando RF.
  • Ha una piccola tastiera cursore per il controllo delle sue funzioni (quando il telecomando non è disponibile).
  • Controllo della luminosità indipendente per ciascuna riga del display.
  • Continua a mantenere l'ora corrente con precisione anche quando è spenta, grazie a un orologio IC in tempo reale alimentato da una batteria a bottone.

Design

Gli aspetti chiave di questo progetto sono stati i seguenti:

  • È completamente basato sul microcontrollore Arduino e AVR ATmega328.
  • Mantiene l'ora corrente anche quando è spento, grazie al DR1307 RTC alimentato da una batteria a bottone.
  • Le cifre non sono mai multiplexate. Invece, ogni cifra ha un IC del registro a scorrimento seriale dedicato a 8 bit (74HC595) che mantiene i segmenti selezionati indipendentemente da ciò che viene visualizzato sulle altre cifre e da ciò che l'MCU sta facendo.
  • I segmenti sono alimentati da array Darlington a causa di un consumo di corrente superiore a quello dell'MCU o dei registri di spostamento.
  • L'orologio è controllato da una tastiera sulla scheda controller e anche da un telecomando RF. La comunicazione radio viene eseguita da una coppia di ricevitori e trasmettitori radio 434 MHz economici.
  • Il progetto ha un design modulare in cui un singolo controller può gestire fino a 12 cifre singole. Il controller accetta anche moduli espandibili per un numero illimitato di cifre (il numero massimo di cifre è limitato dal ritardo temporale dovuto al concatenamento a margherita dei registri a scorrimento e all'attenuazione del loro segnale di clock).
  • Il design supporta una serie di cifre del display a 7 segmenti già pronte o cifre personalizzate realizzate con LED.

Di seguito sono riportati gli schemi per il controller e una delle schede a 7 segmenti:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Ecco alcune immagini delle schede che ho progettato, inciso e assemblato e del telecomando:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

E infine, ecco una foto di un'altra versione dell'orologio. In questo, realizzo personalmente i display a 7 segmenti usando LED rettangolari e componenti discreti.

inserisci qui la descrizione dell'immagine

Conclusione

Questo progetto mi ha richiesto molto tempo, sforzi e imparare ad arrivare a questo stadio (non è mai finito, come ho imparato), ma è stato molto divertente. Alcune cose che ho imparato:

  1. Studia tutte le librerie che utilizzerai nel tuo progetto prima di assegnare i pin GPIO nel controller in modo da evitare potenziali conflitti. Sono stato sfortunato a usare lo stesso pin PWM per il controllo della luminosità associato al timer VirtualWire, quindi ho dovuto patchare la scheda per far funzionare contemporaneamente luminosità e RF.

  2. Crimpare i connettori KK molex e modu richiede MOLTO TEMPO !!

  3. I pezzi in acrilico tagliati al laser sono il futuro. Aggiungono molta qualità al dispositivo anche se sei maldestro.


Come hai realizzato i PCB (attacco e perforazione)?
sachleen,

1
@sachleen Uso il metodo di trasferimento del toner durante la stiratura. Stampo il design della scheda su carta fotografica a getto d'inchiostro in una stampante laser, quindi lo stiro sulla scheda, quindi incido la scheda in FeCl. Ci vuole un po 'per trovare le giuste impostazioni di carta e stampante. Uso un trapano a colonna Dremel per la perforazione, ma utilizzo solo pannelli fenolici e punte ad alta velocità. I pannelli in fibra di vetro sono molto più duri sulle punte, in genere richiedono le punte in metallo duro più costose e fragili.
Ricardo,

Dove hai preso quei LED? Ne ho alcuni che sembrano esattamente così!
The Guy with The Hat

1
@TheGuywithTheHat Quelli rettangolari verdi? Sono abbastanza comuni qui in Brasile. Li ho acquistati in uno dei nostri negozi di componenti elettronici online. Ecco alcuni link: su DigiKey , su eBay . Ecco dove li ho presi .
Ricardo,

5

Rotatore di antenna TV

Rotazione dell'antenna telecomandata IR

Non riesci a scendere dal divano per regolare la direzione dell'antenna TV? E anche se lo fai, a volte la tua vicinanza all'antenna cambia la ricezione. Sarebbe bello poter regolare l'antenna dal divano. Utilizzando il telecomando della TV.

componenti

Arduino Uno, ricevitore IR, motore passo-passo con scheda driver, 1 "cuscinetto ID, impugnatura scopa Swiffer, scatola di plastica,

dietro la tv Arduino con ricevitore IR frontale Primo piano di scatola e cuscinetto Manico Swiffer Questi due pulsanti non fanno comunque nulla sulla TV

Descrizione

Utilizzare un vecchio manico per spazzolone Swiffer come palo per antenna. Ho ottenuto un cuscinetto ID da 1 "dal mio negozio online preferito, in cui la maniglia del mocio si stringe e si ferma. Ho praticato un foro nella scatola di plastica abbastanza grande da far passare la maniglia del mop, ma non per il cuscinetto. Ho perforato un rettangolo foro nell'estremità dell'impugnatura del mocio per adattarsi all'albero di un motore passo-passo 28BYJ-48, e bloccato il dispositivo di aggancio nella scatola come mostrato. L'impugnatura del mop poggia effettivamente sul cuscinetto e il cuscinetto è super incollato sulla parte superiore della scatola di plastica .

Utilizzato la libreria stepper.h per ruotare il motore da uno.

Ho smontato un lettore DVD inutilizzato e ho recuperato il ricevitore IR da esso. Puoi smontare qualsiasi apparecchio di consumo che ha un telecomando e utilizzare il ricevitore IR da esso, funzionerà. Il ricevitore IR utilizza la libreria IRremote.h. Usando il monitor seriale, ho stampato il codice esadecimale corrispondente ai due pulsanti sul telecomando del televisore che desidero utilizzare per far funzionare il motore dell'antenna. Uno per ruotare a sinistra, uno per destra.

Per risparmiare energia, utilizzare la funzione small_stepper.motorOff () per spegnere le bobine dopo ogni movimento.

Conclusione

Questo è stato un progetto divertente che è stato utile anche per mia moglie. Non ho implementato alcuna accelerazione / decelerazione nel movimento, il che potrebbe essere piacevole, soprattutto se l'antenna avesse più inerzia rotazionale.

Modifica: scusate se l'immagine è lateralmente! È sul lato destro del mio computer, non ho idea del perché sia ​​lateralmente online.


5

La lampada Knock-knock

Una lampada che si accende / spegne quando la scrivania viene accesa. Attualmente in fase alfa, ancora prototipo, ma penso che sia il progetto Arduino più utile esistente. Generatore di scherzi banali incluso ... da battute knock-knock precedentemente registrate. Nota: so che non posso vincere nelle regole, ma non c'è alcuna regola sull'iscrizione ... Posso mostrare anche il mio progetto.

Descrizione

Finora ho praticamente spiegato la maggior parte. Bussate e la luce si accende e si spegne. Attualmente sono sulla breadboard. Sto usando un elemento piezoelettrico per rilevare i colpi con le vibrazioni. In parallelo, ho una resistenza da 1 megaohm per proteggere il mio SMD Arduino Uno.

Ho pensato a questo design dopo aver quasi buttato via (haha punny) la mia lampada dalla mia scrivania mentre cercavo l'interruttore a levetta. Non sono esattamente ... bene abile . È bello solo bussare alla scrivania e poi avere la luce. Sto anche usando un SSR di coda dell'interruttore di alimentazione (relè a stato solido: nessun rumore) per controllarlo con due pin del mio Arduino.

Design

Foto Immagine scattata con la webcam sospesa sul monitor ... eek!

Schema Fritzing

Componenti utilizzati per costruire il progetto:

  • Elemento piezoelettrico ($ 3,00 USD)
  • Resistenza Megaohm ($ 0,30 USD ciascuno in 5pk)
  • Arduino Uno SMD (a portata di mano)
  • Power Switch Tail SSR (~ $ 25,00 USD con nave, ma a portata di mano quindi nessun costo)
  • Tagliere e ponticelli / filo extra (~ $ 5,00 USD, ma a portata di mano quindi nessun costo)

Costo per me: $ 3,30 USD + $ 0,02 USD (tasse) == Solo $ 3,32!

Conclusione

Nel complesso, è un progetto semplice ma in realtà è utile. Questa è una lotta con i miei progetti Arduino: posso costruire qualcosa che mi sarebbe effettivamente usare ? Lampeggiare un LED non ti aiuterà esattamente nella vita. È divertente, ma questo è tutto.

Il problema più grande che ho affrontato (e in qualche modo lo faccio ancora) non è ottenere un segnale abbastanza forte. Ho imparato molto sui segnali elettrici: ho capito come trovare il "picco" di un impulso e non solo leggere il pin a intervalli casuali e perdere la tensione più alta. Vorrei provare a ottenere un elemento piezoelettrico più sensibile. Uno più grande sarebbe di aiuto. Sto cercando di modificare il mio circuito per non limitare troppo la tensione, ma per proteggere l'Arduino. Una sorta di miccia potrebbe aiutare in questa situazione. Sto anche giocando con i valori della resistenza. Sarebbe molto utile avere una portata per questo, ma immagino di no ...: P

Dopo aver perfezionato il circuito, lavorerò su un PCB con un ATtiny ... e magari svilupperò anche alcuni kit. Proverò a pubblicare i miei risultati su come rendere l'elemento più sensibile senza rischiare la mia scheda nel processo.

Aggiornamento dello stato: sono stato molto impegnato di recente. Ordinerò un diodo zener (4.3 V) qui tra una settimana o due per rimuovere il resistore megaohm per evitare di diluire il segnale mentre si protegge il chip. Potrei costruire un semplice amplificatore di tensione qui, se necessario (insieme allo zener) per provare a rendere il sensore più sensibile.


1
Passare a qualcosa con differenziale e ottenere ADC ti aiuterebbe a ottenere una maggiore sensibilità dal piezo. E possibilmente usando un TVS invece di un resistore.
Ignacio Vazquez-Abrams,

Stai utilizzando ADC per il rilevamento o un interrupt? Hai idea di quanto grande vuoi rilevare il picco di tensione?
jippie,

@jipie ADC per il rilevamento, ho un codice abbastanza efficiente: passa in loop e trova il picco per ogni 250 ms. Nessun ritardo. Per il picco, IIRC è intorno al 14/1024 (troppo pigro per convertirlo adesso). Dovrei esaminare anche il pin AREF, ma potrebbero esserci problemi con la caduta che può fare ~ 9V.
Anonimo Penguin,

Prova questo come buffer di input. Il transistor funge da raddrizzatore / rivelatore di picco a mezza onda che amplifica la corrente. Non è necessario rilevare un singolo picco con l'ADC, il transistor / condensatore lo strecherà per te. Come configurato, la tensione di uscita ha una polarizzazione di 2,2 V CC, ma puoi cambiarla in qualsiasi cosa tu preferisca cambiando il divisore resistivo. In questo modo è possibile rendere l'ingresso ancora più sensibile selezionando il riferimento di banda 1V1 o 2V56. Il resistore da 10 M assicura che il condensatore si scarichi per circa un secondo ed era in realtà il mio DMM.
jippie,

4

MySensors

- Scopri come creare i tuoi sensori wireless a basso costo e collegarli al mondo.

http://www.mysensors.org

Lo chiamiamo "Internet delle tue cose"

Descrizione

Abbiamo combinato la piattaforma Arduino con un piccolo ricetrasmettitore radio in un mondo divertente e flessibile di sensori wireless a basso costo.

Tutti i dettagli chiacchieroni sulla comunicazione del sensore sono stati raggruppati in una comoda libreria di software, quindi non devi preoccuparti di loro.

È facile come 1, 2, 3. Arduino + NRF24L01 +

  1. Collegare le parti. 2. Scarica gli esempi forniti. 3. Inizia a misurare e controllare il mondo!

Maggiori informazioni su come si sta formando automaticamente la rete di sensori utilizzando la nostra libreria Arduino sul sito. Fondamentalmente forma una rete a stella e può raggiungere centinaia di metri.

La rete di sensori

Nel mezzo si posiziona un gateway Arduion o Raspberry che raccoglie le informazioni dai sensori. Raspberry Controller

Arduino Gateway

Design e schemi

Ecco uno dei prototipi di sensori di movimento che ho creato per controllare la luce del giardino all'esterno della mia casa. Lo stato dei movimenti viene inviato al mio controller HA che accende la luce (tramite l'onda z) quando viene rilevato un movimento. Un sensore di luce (non nell'immagine) si accerta solo di accendere le luci di notte.
inserisci qui la descrizione dell'immagine

Troverai tutte le istruzioni per la compilazione qui: http://www.mysensors.org/build/

Sul sito ci sono anche istruzioni di costruzione facili da seguire per un gruppo di altri sensori e attuatori wireless. Ecco alcuni esempi:

Sensore di distanza, sensore di movimento, attuatore relè, umidità, luce, pressione, pioggia, temperatura, ...

Conclusione

Il progetto è ancora ai blocchi di partenza e speriamo di fornire plugin per un elenco crescente di controller di domotica. La prima cosa sulla nostra lista in questo momento è fornire un controller fai-da-te che fornisce uno spazio di archiviazione cloud gratuito per i dati del sensore.

Ciao

Ci vediamo @ mysensors.org

/ Henrik Ekblad (il creatore della libreria Arduino Open Source utilizzata per la comunicazione tra i sensori)

  • AGGIORNAMENTO 27/3. Ha reso l'esempio più concreto e ha aggiunto la mia affiliazione al progetto open source.

4
Benvenuto in Arduino.SE! Temo che il tuo sito web non soddisfi i criteri della nostra vetrina. Siamo alla ricerca di progetti specifici che dimostrino un'applicazione pratica di Arduino (come visto negli altri esempi qui). Forse potresti fornire un esempio di un progetto di sensore che hai realizzato?
Peter Bloomfield,

Ok, forse mi manca il punto;). Il "progetto specifico" qui è che usiamo Arduinos per creare una rete di sensori wireless autorigeneranti. Per archiviarlo abbiamo creato una libreria Arduino Open Source per il ricetrasmettitore NRF24L01 +.
saluta il

4
Sembra più una pubblicità che un progetto. Cambia il tono, forse rendilo un po 'più specifico per una singola applicazione. Sospetto che sia per questo che hai ottenuto un voto negativo.
Cybergibbons,

Benvenuti in Ard.SE! Sulla base del sito Web del tuo profilo, lavori o sei il proprietario del sito promosso sopra. È la politica SE che lo divulghi nella tua risposta. Si prega di modificarlo per includerlo. Inoltre, puoi aggiungere un esempio di utilizzo di questo?
Pinguino anonimo

Ho sviluppato questa libreria (Open Source) MySensors negli ultimi 6 mesi nel mio tempo libero. Per aiutare altre persone ad usare correttamente la biblioteca noi (più persone hanno aderito al progetto negli ultimi due mesi) abbiamo lanciato la pagina delle istruzioni di costruzione solo 3 giorni fa. Ho pensato che sarebbe stato un buon progetto Arduino ricevere feedback in questo "Project Showcase". Non credo di aver provato a nascondere la mia partecipazione al progetto in alcun modo e mi dispiace che la descrizione sia percepita come un annuncio pubblicitario. Siamo davvero molto contenti del progetto!
hek

4

Scatola seriale

Un monitor seriale portatile in una scatola

Descrizione

A volte è utile per un dispositivo (Arduino o altro) fornire alcune informazioni di debug via seriale. È fantastico se hai un computer a portata di mano con un input seriale appropriato. Tuttavia, non è sempre così per una serie di motivi.

Questo progetto è il mio tentativo di risolvere questo problema creando un monitor seriale portatile con alimentazione Arduino, che posso collegare ad altri dispositivi sul campo.

Per impostazione predefinita, visualizzerà semplicemente il testo in un formato di scorrimento; cioè il testo appare nella riga inferiore e tutto scorre verso l'alto per fare spazio quando arriva più. Ciò significa che dovrebbe funzionare perfettamente con tutti i tipi di dispositivi generici. Tuttavia, sarà anche possibile utilizzare sequenze di escape per controllare il display in modo più preciso, in modo che i dispositivi possano anche essere programmati in modo specifico per sfruttare le sue capacità.

Design

Il design è costituito da un set di 4 display alfanumerici LCD (16x2 caratteri ciascuno), allineati in una scatola simile a questa:

Mockup 3D del design Serial Box

I display sono Epson EAX16027AR, che purtroppo non sono compatibili con il driver standard Hitachi HD44780. Come tale, ho dovuto scrivere la mia biblioteca per loro.

Ho scelto di usare questi display (piuttosto che ad esempio un display di grandi dimensioni) principalmente perché li avevo solo in giro e volevo fare qualcosa di interessante con loro. Ho anche pensato che sarebbe abbastanza utile poter controllare ogni display in modo indipendente per alcune applicazioni (es. Visualizzare informazioni diverse su ognuna).

In termini di progettazione del circuito, i display sono collegati in parallelo, con pin di selezione chip utilizzati per indirizzare dati / comandi a ciascuno secondo necessità.

Un ATMega328 sarà il cervello dell'unità finale, con i dati seriali provenienti da una linea di livello TTL (per il collegamento diretto al TX di una MCU simile), o facoltativamente da una presa D-sub a 9 pin RS232 (per il collegamento a vari altri sistemi). L'unità avrà anche un quadrante del contrasto, un pulsante per cancellare il display e un pulsante per l'avvio di una modalità di autotest. In futuro, vorrei aggiungere pulsanti che consentano all'utente di spostarsi anche attraverso una cronologia di scorrimento.

Di seguito è riportato un layout del circuito molto preliminare (ho avuto un sacco di problemi a far funzionare bene Fritzing per qualche motivo!). Include un registro a scorrimento SIPO a 8 bit per la guida delle linee dati degli LCD, che sono mostrate in verde. Puoi anche vedere le linee di selezione del chip in arancione.

Schema del circuito preliminare

Al momento, il progetto è ancora in fase di prototipo funzionante, guidato da una scheda Uno (clone). Di seguito, puoi vedere una sua foto in azione, che mostra il testo che è stato passato via seriale dal mio computer.

Il prototipo in azione

Codice sorgente

Sto rendendo disponibile la mia libreria LCD su GitHub al link seguente. Si noti che è in una fase iniziale di sviluppo. Nel prossimo futuro, ho intenzione di renderlo molto più simile alla libreria LiquidCrystal di base in modo che sia più facile la transizione tra i due.

Puoi trovare alcuni codici di base per il mio prototipo di Serial Box nella cartella "esempi".

Conclusione

Penso che il progetto stia procedendo molto bene e sono stato estremamente contento di far funzionare il prototipo. La mia sfida principale sarà montare tutto in una scatola. Ho già iniziato a ritagliare fori adatti per i display, ma non ho molta esperienza in questo genere di cose e trovo abbastanza complicato allineare tutto.

Ci arrivo alla fine però. Potrebbe non sembrare molto carino quando avrò finito! :)


3

Regolatore di riscaldamento

Sai com'è: hai impostato il riscaldamento in modo che si accenda in un determinato momento e per quanti giorni lavori in ritardo ed è stato al completo per ore, oppure vai via per alcuni giorni e dimentichi di spegnerlo? O la rara occasione in cui torni a casa presto e la casa è fredda? Ho deciso che il modo semplice per aggirare il problema era costruire un dispositivo che mi permettesse di accendere o spegnere il mio riscaldamento tramite sms / sms. Sarebbe in aggiunta al sistema di controllo esistente in modo da non perdere la flessibilità che ciò può fornire.

Il progetto consiste in alcune parti principali: un clone di Arduino Uno, uno scudo GSM Seeedstudio, un sensore di temperatura DHT22 e un SSR da 25 amp.

Come funziona:

I controlli di riscaldamento esistenti sono impostati su "Off" e il nuovo controller è cablato per sovrascriverli. Uno è programmato per rispondere a tre diversi messaggi: On, Off e Query. Nel caso di quest'ultimo, l'unità leggerà il DHT22 e risponderà al mittente con la temperatura corrente e lo stato dell'unità (acceso o spento). Se il comando è attivato o disattivato, risponderà con una conferma dell'azione eseguita. Una volta che i messaggi sono stati modificati, vengono eliminati; tutti i messaggi non conformi alla specifica struttura dei messaggi vengono lasciati nella memoria della carta SIM e possono essere esaminati in seguito, se lo si desidera.

L'alimentazione dell'unità è fornita da un alimentatore a tre volt da cinque volt. Dato che i pin di alimentazione dell'Arduino stanno semplicemente esponendo il bus 5v interno della scheda, ho deciso di alimentare l'ensemble attraverso questi e configurare lo scudo per trarre energia dall'Arduino.

L'unità ha tre LED di stato. Uno verde per indicare che c'è energia, uno blu per indicare che la scheda GSM è "attiva" e una rossa per indicare lo stato del riscaldamento. Questi sono in aggiunta ai LED di stato forniti su Arduino e shield. C'è anche un interruttore a pulsante che consente il controllo manuale del riscaldamento, con un condensatore da 100nF per gestire il rimbalzo.

Il prossimo:

Gran parte del codice si basa su un buon vecchio ritardo () per dare allo scudo abbastanza tempo per eseguire le sue azioni. Ho in programma di migliorare il codice in modo che aspetti la conferma dallo scudo piuttosto che supporre che abbia fatto ciò che gli è stato detto entro il tempo assegnato! Aggiungerò anche una funzione 'ancora vivo' - a intervalli fissi spegni il LED blu, invia il comando AT allo scudo e su un riconoscimento riaccendi il LED. Lo scudo è sotto il controllo del software, quindi se non risponde, spegnilo e riaccendilo.

L'intero insieme deve essere montato in un contenitore adatto e montato adiacente al controller esistente. Ho un interruttore a pulsante illuminato internamente che userò invece di interruttore separato e LED rosso per gestire l'override.

A lungo termine sto pianificando di aggiungere un RTC, un LCD 20 x 4 e pulsanti aggiuntivi per consentire all'unità di essere programmata e fungere anche da interruttore orario.

Il prototipo è già iniziato!

Conclusione.

C'è qualcosa di leggermente decadente nel svegliarsi in una fredda giornata di riposo invernale, inviare un sms / sms per accendere il riscaldamento, e rotolarsi e tornare a dormire per un'ora! E quando ti rendi conto di non averlo spento in una notte, puoi farlo comodamente dal tuo letto!

Immagine controller 1 Immagine controller 2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.