Project Showcase '14


25

Das Logo ist eine Ableitung des Arduino Community-Logos, das unter der Creative Commons-Lizenz CC-SA-BY-NC 3.0 lizenziert ist

Update: Bekanntgabe der Gewinner

Die Gewinner des Wettbewerbs wurden bekannt gegeben. Weitere Informationen finden Sie im Meta-Post .

Anlässlich des 10-jährigen Bestehens von Arduino sind wir stolz darauf, das erste Ereignis an der Arduino Stack Exchange anzukündigen .

Nehmen Sie Ihre Platinen und Lötgeräte heraus, graben Sie die ICs und Widerstände aus. Der erste Arduino Stack Exchange-Wettbewerb steht vor der Tür. Wir werden nach interessanten Projekten suchen, die mit Arduinos erstellt wurden. Der Wettbewerb zielt darauf ab, Projekte, an denen Sie und andere Mitglieder arbeiten, zu teilen, zu diskutieren und Feedback zu geben. Siehe Ankündigungspost

Einzelheiten:

  • Der Preis ist ein offizielles Stack Exchange T-Shirt
  • Beschränken Sie zwei Einträge pro Person. Wenn mehr als zwei angegeben sind, werden nur die ersten beiden berücksichtigt.
  • Klone sind erlaubt.
  • Projekte zur Prüfung werden bis zum 29. März 2014 um 4:00 UTC angenommen. Die Frage bleibt weiterhin offen, falls jemand sein am Arduino Day 2014 erstelltes Projekt vorführen möchte.

Besuchen Sie den Meta-Post, um Informationen zu diesem Ereignis und weitere Informationen zu erhalten.

Antwortformat

Sie können bis zu zwei Projekte (als zwei separate Antworten) als Wettbewerbsbeiträge einstellen. Alle zusätzlichen Einträge werden gelöscht. Beachten Sie folgende Vorlage für Einträge:

Projekttitel

Sehr kurze Beschreibung

Beschreibung

Was ist dein Projekt? Was tut es? Welches Problem löst es?

Design

Dinge, die in diesem Abschnitt enthalten sein sollten:

  • Schaltpläne und andere Konstruktionsunterlagen. Fritzing ist ein gutes Werkzeug zum Zeichnen von Schaltplänen für Steckbretter, wie im obigen Projektlogo gezeigt.
  • Komponenten, die zum Erstellen des Projekts verwendet wurden
  • Bilder oder Videos

Fazit

Abschließende Gedanken. Was haben Sie aus diesem Projekt gelernt? Was würdest du anders machen, wenn du von vorne anfangen müsstest?

Sie können den folgenden Text kopieren / einfügen, wenn Sie diese Vorlage verwenden möchten.

# 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?

Preise

Es gibt zwei Preise! Der Gewinner ist die Einsendung, die die maximale Anzahl von Upvotes erhält (Downvotes zählen nicht) und ein Stack Exchange T-Shirt * erhält! Es wird auch etwas für den Zweitplatzierten geben. Der zweite Platz wird nach Ermessen der Veranstalter festgelegt.

* Möglicherweise gelten bestimmte Einschränkungen. Der internationale Versand kann einige Wochen dauern.

Wo reiche ich meine Projekte ein?

Veröffentlichen Sie Ihre Projekte als Antworten auf diesen Beitrag.


Was genau ist die Qualifikation, um ein "Arduino" -Projekt zu sein? Ich verwende optiboot an vielen Stellen, aber ich kann das nicht als "Arduino" ansehen, da es nur ein Projekt ist, das von der Arduino-Toolchain verwendet wird. Ohne ein Board im Arduino-Formfaktor zu verwenden, sehe ich keine klare Abgrenzung zwischen "Arduino" und "Nicht-Arduino", es sei denn, Sie verlangen ausdrücklich, dass das Projekt mit dem Arduino-Texteditor kompiliert wird. und das wird wahrscheinlich alle anständigen Projekte disqualifizieren, da der Arduino-Editor schrecklich ist und alle guten Programmierer ihn vor langer Zeit nicht mehr verwenden.
Connor Wolf

@FakeName Nehmen wir diese Diskussion auf die Meta Post
Sachleen

Antworten:


14

Stateful Questbox

Eine GPS- Box, mit der Sie vor dem Öffnen einige Orte aufsuchen können

Beschreibung

Es ähnelt questbox , speichert jedoch einen kleinen Informationsstand im EEPROM , sodass Sie zwei oder drei verschiedene Orte besuchen müssen, bevor es geöffnet wird.

Design

Benötigte Hardware:

  • Arduino Uno
  • Reverse Geocache Version 2 (oder ein Protoschild)
  • GlobalSat EM-406A GPS-Modul
  • 2 × 8 blaues LCD mit Steckerleiste und Kabel
  • Hitec HS-55 Servomotor
  • 4-40 Schubstange und Gabelkopf für Riegel (einige Versionen bieten stattdessen eine Z-Bend-Stange)
  • 2 AA Batteriehalter
  • Metalldruckknopf mit eingebetteter blauer LED und 4-poligem Kabel
  • Pololu Niederspannungsschalter
  • Pololu 5 V Boost-Regler
  • JST-Anschluss für das EM-406A GPS-Modul
  • Gerade und rechtwinklige Stiftleisten für die Anzeige-, Servo- und Drucktastenanschlüsse
  • Zwei Widerstände zur Strombegrenzung und Kontrastanpassung
  • Zwei kleine Kondensatoren zur Leistungsglättung
  • größerer Kondensator für Anzeigekontrastschaltung

Hardware-Gesamtkosten: 137 $ + Versand

Zusätzliche Materialien:

  • Eine schöne Schachtel
  • Epoxidkleber, Holz zum Abdecken von Teilen, Werkzeuge

Die Montageanleitung finden Sie auf der Sonnenuhr-Seite (Sie können die meisten Materialien von dort kaufen).

Ich werde Stateful Code hochladen und hier einen Link posten, leider bekomme ich nicht alle benötigten Hardware rechtzeitig, also ist dies nur eine Idee :)

Bisher geschriebener Code :

Inspiration:Ursprüngliche Questbox

Fazit

Ich habe gelernt, wie man viele Komponenten und Bibliotheken zusammenbringt, und muss ein bisschen reisen, um es zu testen :)

Das Budget kann erheblich gekürzt werden, was das Konzept ein wenig verändert:

  • Ändern Sie das GPS mit einer numerischen Tastatur: Der 'Spieler' muss einen Code erraten / erhalten, anstatt zu einem Ort zu reisen
  • Polulu-Schalter und -Regler können gegen ein selbsthaltendes Relais mit Kapazitätskopplung ausgetauscht werden

11

Energiesparen für den geistesabwesenden PC-Nutzer

Dieses Gerät schaltet die Schreibtischbeleuchtung ein / aus, wenn es dunkel ist (ish) und mit meinem PC-Bildschirmschoner synchronisiert ist.

Beschreibung

Das Projekt ist kaum mehr als eine Kombination aus einem lichtempfindlichen Sensor, einem Relais und einem intelligenten Code, der den Bildschirmschoner auf meinem PC überwacht. Wenn es dunkel ist und der Bildschirmschoner nicht aktiv ist, schaltet er die Lichter über meinem Schreibtisch ein. Wenn ich anschließend meinen Schreibtisch verlasse, wird der Bildschirmschoner aktiviert, wodurch das Ausschalten der Schreibtischbeleuchtung ausgelöst wird. Wenn tagsüber genügend Licht vorhanden ist, werden die Lichter überhaupt nicht eingeschaltet. Das gelöste Problem besteht darin, die Energieverschwendung zu reduzieren, die durch das Einschalten der Beleuchtung in meinem Büro entsteht, wenn ich den Raum verlassen habe.

Design

Aufgrund der Leistungsfähigkeit von Mikrocontrollern / Arduino ist nur wenig zusätzliche Hardware erforderlich, um ein nützliches Projekt zu erstellen. Gleiches gilt für dieses Projekt, bei dem die Hardware kaum mehr ist als:

  • Ein Arduino
  • Ein paar Schraubenabschirmungen zum Anschließen der externen Komponenten
  • Ein LDR in Reihe mit einem Widerstand zur Messung des Umgebungslichts
  • Eine Relaiskarte zum Ein- und Ausschalten der netzbetriebenen Lampen
  • Ein 10 μF Kondensator von GND nach RST verhindert, dass die Karte zurückgesetzt und versehentlich programmiert wird.

schematisch

simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab

Fazit

Ich habe gelernt, wie ich den PC über die serielle USB-Verbindung mit Arduino verbinden und den aktuellen Status des Bildschirmschoners auf meinem PC lesen kann. Wenn ich von vorne anfangen würde, würde ich einen viel kleineren Controller verwenden, da ich wirklich nur einen einzigen digitalen Ausgang und einen einzigen analogen Eingang benötige. Basieren Sie das Projekt wahrscheinlich auf V-USB . Arduino eignet sich jedoch hervorragend für den schnellen und einfachen Proof of Concept (PoC). (Der PoC ist bereits seit mindestens zwei Jahren auf meinem Schreibtisch).


Es wäre cool, Bilder von deinem finalen Board und Setup zu sehen. Wie ist die Reaktionszeit? Sofortig? Nach einer Minute?
Sachleen

@sachleen Der Daemon auf meinem PC, der den Bildschirmschoner abfragt, wird alle 30 Sekunden ausgeführt, wenn der Bildschirmschoner ausgeschaltet ist (wenn ich an meinem PC arbeite), und alle 5 Sekunden, wenn er eingeschaltet ist. Ich kann diese Geschwindigkeit erhöhen, aber das beeinflusst die CPU-Last und den Stromverbrauch ... Es ist auch ein Kondensator angebracht, um zu verhindern, dass der Arduino zurückgesetzt und versehentlich programmiert wird.
Hippie

@sachleen Da die Dämmerung mit der Zeit langsam abnimmt, sind diese 30 Sekunden kein wirkliches Problem. Niemand bemerkt den Unterschied in der Dunkelheit über 30 Sekunden. Innerhalb von 5 Sekunden nach dem Bewegen der Maus oder dem Anschlagen der Tastatur, wenn ich das Licht wieder einschalte. Es gibt eine leichte Hysterese zwischen Dunkel und Hell, um zu verhindern, dass das Licht alle paar Sekunden ein- und ausgeschaltet wird, wenn es langsam dunkel genug wird, um aktiviert zu werden.
jippie

Sie sollten es so ändern, dass es 10-15 Sekunden lang auf 50% abgeblendet wird, damit Sie nicht völlig im Dunkeln stehen und eine kleine "Warnung" erhalten
Anonymous Penguin

@AnnonomusPerson Ich schalte die 240-VAC-Seite eines SMPS um, dessen Eingangsspannung zwischen 100 und 250 VAC liegt. Ich fürchte, es wird nicht passieren, da ich nicht die Sekundärseite wechseln möchte. Gute Idee, vielleicht kann ich irgendwie eine kleine weiße LED hinzufügen.
Jippie

8

Ich denke, diese Art von passt kaum in die Regeln, aber es ist interessant genug, dass ich es sowieso posten würde.

Hochpräziser, GPS-synchronisierter Zeitstempelgenerator für Datenerfassungszwecke.

Dies ist ein ziemlich interessantes Projekt, das verwendet werden soll, um auf einfache Weise mehrere unabhängige Datenerfassungssysteme zu synchronisieren.

Grundsätzlich arbeite ich in einem Forschungslabor und wir haben oft Instrumente mit mehreren unabhängigen Datenerfassungssystemen, die physisch um bis zu 50 Fuß voneinander getrennt sein können. Wir müssen in der Lage sein, den Zeitpunkt der Probenahme aus jedem System zu korrelieren. Dies kann schwierig sein, wenn Sie die Probenahmezeiten mit einem hohen Maß an Präzision auflösen möchten. Wenn Sie so etwas wie ein USB-Datenerfassungssystem verwenden, kann nur die USB-Latenz mehrere hundert Millisekunden unbekannte Latenz einleiten, die von Erfassung zu Erfassung variieren kann.

Die vorherige Lösung war ein 24-Bit-Parallelzähler, der einfach über alle Bereiche verteilt war, einen enormen Kabelbaum erforderte und den Hintern quälte.

Dieses System verwendet ein spezielles GPS-Zeitsteuerungsmodul , das beliebige Frequenztakte synthetisieren kann, die mit den Atomuhren in den GPS-Satelliten phasen- und frequenzverriegelt sind.

Die MCU ist für das Zusammenbinden der GPS-Datennachrichten verantwortlich (ich musste einen vorhandenen Protokollparser für die GPS-Daten stark erweitern und optimieren). Das GPS ist für die Verwendung eines proprietären Binärprotokolls konfiguriert und wird vom von mir geschriebenen Parser analysiert.

Das Projekt wurde mehrfach überarbeitet (siehe Abbildung unten).

Design

Revisionen! Bildbeschreibung hier eingeben
Rev. 1: Hat nie funktioniert, da ich ursprünglich gehofft hatte, mit einer Software-dPLL von einem viel günstigeren GPS einen höherfrequenten Takt nur aus dem 1-PPS-Ausgang zu synthetisieren. Es ist wahrscheinlich möglich, es zum Laufen zu bringen, aber die Zeitinvestition hat sich einfach nicht gelohnt. (Und ich bin zu beschissen ein Kodierer)

Benutzte einen Parallaxenpropeller MCU. Das Fehlen anständiger kompilierter Sprachen war ebenfalls ein großes Problem.


Bildbeschreibung hier eingeben
Rev 2: Auf einen ATmega2560 umgestellt. Arbeitete, hatte viele funky Design-Aspekte aus der ersten rev geerbt. In erster Linie die fortgesetzte Verwendung von Schieberegistern für die 32-Bit-Ausgabe, trotz der mehr als ausreichenden Anzahl von E / A auf dem ATmega2560.

Das erste Board, auf dem Optiboot lief und das vollständig mit der Standard-Arduino-Toolchain programmiert wurde, bevor ich mich darüber ärgerte und anfing, die Toolchain zu modifizieren, um sie meinen Zwecken besser anzupassen.


Bildbeschreibung hier eingeben
Rev. 3: Funktionierte auch. Die fehlerhafte Verkabelung ist darauf zurückzuführen, dass diese Karte einen integrierten USB-Hub enthält, um die Anzahl der erforderlichen USB-Anschlüsse zu verringern (die FTDI-Schnittstelle erfordert 1 USB und das GPS verfügt auch über eine USB-Schnittstelle). Leider konnte das GPS nicht richtig aufgezählt werden, obwohl das FTDI-Gerät einwandfrei funktioniert hat und ich diesen Hub ohne Probleme an anderer Stelle verwendet habe. Seltsam.

Ich habe keinen richtigen USB-Debugger, also habe ich den USB-Hub einfach ganz fallen gelassen, anstatt zu versuchen, das Problem zu beheben. Der GPS - USB ist nicht wirklich viel außerhalb von Set-up sowieso verwendet.


Bildbeschreibung hier eingeben
Rev 4: Halbfinale ATmega2560-Version. Es wurde ein LCD für den GPS-Status hinzugefügt, das mit LEDs und so weiter gespielt wird. Bessere Stellfläche für die möglichen Superkondensatoren zur Aufrechterhaltung des GPS-Status im stromlosen Zustand.

Dies ist die letzte Optiboot-Version.

MStimeist die MSTOWoder Millisekunden-Zeit der Woche, die der Name des GPS-Datenwerts ist, der auf dem Zeitstempel-Ausgang ausgegeben wird. Es handelt sich um eine 32-Bit-Variable, die einmal pro Millisekunde inkrementiert und jede Woche aktualisiert wird. Es ist ein undurchsichtigerer Teil des GPS-Standards.

ITOWist ein weiterer GPS-bezogener Wert, der dem 1PPS-Signal entspricht. Die Korrelation zwischen den beiden wird auf dem LCD nicht richtig wiedergegeben, da ich nicht die CPU-Zeit habe, um das LCD mit der von mir gewünschten Geschwindigkeit zu aktualisieren. Dies war tatsächlich eines der wichtigsten Dinge, die beim Upgrade auf die Xmega-Geräte verbessert wurden.


Bildbeschreibung hier eingeben
Rev 5: Vollständiger Architekturwechsel. Verwendet jetzt einen ATxmega128A1U-Prozessor. Nicht mehr wirklich "Arduino", aber die Möglichkeit, mehrere Interrupt-Levels für die xmega-Prozessorserie zu haben, ermöglichte es mir, die Codestruktur erheblich zu verbessern.

Die beiden Drähte von mir haben experimentiert, das Board hat auch ohne funktioniert.

Ich freue mich auf:

Rev 6! Bildbeschreibung hier eingeben
Fügen Sie die Möglichkeit hinzu, unterschiedliche LCD-Größen zu verwenden, den ESD-Schutz beim Anschluss der GPS-Antenne zu erhöhen (das war ein Problem) und die Möglichkeit, anstelle von Superkondensatoren eine CR2032-Batterie zur Aufrechterhaltung der GPS-Uhr zu verwenden.

Auch die Beschriftung von Debug- und Status-LEDs wurde deutlich verbessert.

Bildbeschreibung hier eingeben
Und Bonus Nyan-Cat!

Bildbeschreibung hier eingeben

(Diese Boards werden gerade hergestellt. Wenn ich sie bekomme, füge ich Bilder des echten Boards hinzu.)


Ich habe einige Langzeittests zwischen zwei ATmega2560-Platinen durchgeführt, und über 72 Stunden betrug der RMS-Zeitfehler zwischen den beiden Einheiten ~ 20 us. Dies geschah auch mit zwei völlig unabhängigen Antennen. Mein gestalterisches Ziel war <1 ms, also bin ich ziemlich zufrieden damit.

Insgesamt denke ich, dass dies eine gute Arbeit leistet, um zu veranschaulichen, wie Arduino ein nützliches Werkzeug für das frühe Prototyping von "echten" Produkten / Systemen sein kann. Ich verwende es, um eine erste Testversion mit minimalem Aufwand zum Laufen zu bringen, und wenn ich sicher bin, dass die Idee funktioniert, setze ich die Arbeit tatsächlich ein, um zu einer vollständig benutzerdefinierten, zweckspezifischen Implementierung zu migrieren.


Designdateien:
https://fake-server.no-ip.org/svn/FPGAStuff/DAQ%20systems/
(In der Reihe der Verzeichnisse "GPS Timestamp").
(Hinweis: Dateien stammen aus Altium Designer. Es handelt sich nicht um Eagle-Dateien.)

Quellcode:
https://fake-server.no-ip.org/svn/Programming/Code/AVR/
Wieder in der "gpsTimeStamp" -Verzeichnisreihe.

Entschuldigung für die beschissenen Handybilder.


Könnten Sie bitte die Anzahl der Bilder reduzieren? 3-4 sollten ausreichen, um die Idee zu vermitteln. Das Laden langsamer Verbindungen dauert ziemlich lange.
Asheeshr

7
@AsheeshR - ich stark widersprechen. Ich könnte eines der Bilder aus der letzten Überarbeitung fallen lassen, aber das Fortschreiten des Systemdesigns halte ich für ziemlich wertvoll.
Connor Wolf

1
Spaß mit dem Siebdruck haben?
TheDoctor

Oooh, 3D-Ansicht PCB. Oh, es ist Altium und ziemlich teuer? : $ Ziemlich lustig, um diese Projekte zu sehen, oder um zu sehen, was andere Projekte tun ..
Paul

7

Sonic Ray Gun

Zwei Projekte von Kindern

Ich arbeite mit ein paar zu Hause ausgebildeten Kindern und wir haben viel Spaß mit einem Arduino. Ihr erstes Projekt war eine gefälschte Bombe, wie Sie in den Filmen sehen, mit einem LCD-Countdown-Timer und einem Klassiker "Schneiden Sie den roten oder blauen Draht?" Typ Problem.

Projekt zwei begann damit, ihnen das toneMelody-Beispiel und einen kleinen Sprecher zu zeigen. Das stellte sich schnell heraus, dass es für Teenager ziemlich ärgerlich war, wenn man die Frequenz auf 15kHz drehte. Eine Stunde später hatten sie das Design mit einer Tasse, einer Klopapierrolle und einem Schalter aus einer Büroklammer, aus der eine Schallstrahlpistole mit Richtcharakter bestand, verbessert.

Leider keine Bilder.

Fazit

Lassen Sie Kinder nicht mit einem Arduino unbeaufsichtigt.


3
Kannst du es etwas genauer beschreiben (Code, Fritzing, etc?)?
Anonymous Penguin

7

(Fake) Linux auf Arduino

Vor kurzem habe ich einen kleinen zusammengesetzten LCD-Bildschirm erworben, mit dem ich schnell angefangen habe, mit der Arduino TVout-Bibliothek zu spielen. Was kam als nächstes Linux!

Beschreibung

Während ich mit meinem Fernsehbildschirm und der TVout-Bibliothek herumspielte, stellte ich fest, dass es einen vorgefertigten Terminal-Handler für den Fernseher gibt. Ich begann bald damit zu experimentieren, es als TV-Terminal zu verwenden, das an eine PS / 2-Tastatur angeschlossen war. Es gab einige Probleme mit der von mir verwendeten PS / 2-Bibliothek, daher habe ich sie auf die Verwendung der USB-Bibliothek auf meinem Mega ADK zusammen mit einer USB-Tastatur umgestellt. Das hat viel besser funktioniert. Jetzt zur Aufbewahrung.

Mein SD-Karten-Shield ist nicht mit meinem Mega kompatibel, daher habe ich es etwas willkürlich mit dem SPI am Ende des Boards verbunden. Ich habe die Befehlsbearbeitung geschrieben, um einige Aufgaben wie das Auflisten von Dateien und das Ermitteln der Festplattengröße, des freien Speicherplatzes usw. auszuführen. Die gesamte Baugruppe ist bei weitem nicht fertig, aber ich bin mit den Fortschritten, die ich erzielt habe, zufrieden.

Der Code wird irgendwann nach Github verschoben, siehe die Kommentare.

Design

Bild verkleinert

Bildschirm hochklappen

Herausforderungen

Ich hatte große Probleme, die eingegebenen Zeichen mit der Zeichenfolge zu verknüpfen, in der der aktuelle Befehl gespeichert ist, weil ich nicht richtig gewirkt habe. Nachdem ich das herausgefunden hatte, musste ich auch das Problem beheben, bei dem einige Tasten zufälligen Müll auf den Bildschirm druckten. Dies wurde durch das Lesen des Gedächtnisses vor den Buchstabendefinitionen verursacht, daher haben ein paar ifs das geklärt.

Fazit

Ich bin sehr zufrieden mit dem Code. Sobald ich ein paar weitere Hilfsprogramme hinzugefügt habe, werde ich es auf Github setzen, also schau dir die Kommentare an. Insgesamt war es ein sehr lustiges Projekt. Ich habe gelernt, wie man Stino benutzt.


Das hört sich interessant an. Ich würde wirklich gerne bald Ihren Code sehen!
Asheeshr


Hat das LCD viel gekostet?
Anonymous Penguin


@AnnonomusPerson Ich zerlegte es, weil es zu sperrig war
TheDoctor

5

ShiftLCD

AVR-basiertes, Arduino-kompatibles Board, das auf der Rückseite eines LCD-Bildschirms mit 8x1 bis 20x4 Zeichen montiert wird.

Beschreibung

Ich habe gerade diese Platine und die benutzerdefinierte Bibliothek entworfen, um die Verwendung und das LCD zu vereinfachen. Obwohl sie im Moment ziemlich einfach zu bedienen sind. Dadurch wird die Anzahl der verwendeten Ausgangspins von 6 auf 3 verringert. Außerdem besteht die Möglichkeit, die E / A zu erweitern, indem demjenigen, der die Anzeige steuert, weitere Schieberegister hinzugefügt werden. Der verwendete Prozessor ist ein ATTiny45 oder ATTiny85, der nach Verwendung des Schieberegisters die digitalen Pins 1 (PWM) und 4 und den analogen Pin 2 (derselbe Pin wie der digitale Pin 4) zur Verfügung hat.

Design

Schema OSH Park rendern Ungelötete Platine

Herausforderungen

Eine unvorhergesehene Herausforderung war, als ich anfing, das Schieberegister mit den digitalen Pins 0-2 zu betreiben. Dies waren auch die Programmierpins (MISO, MOSI, SCK). Jedes Mal, wenn ich das Gerät neu programmierte, wurden auf dem LCD-Bildschirm eine Reihe von Kauderwelschmeldungen angezeigt, bei denen die Stromversorgung ausgeschaltet werden musste, um die Anzeige zurückzusetzen. Ich habe dieses Problem gelöst, indem ich den Latch-Pin des Schieberegisters auf den Digital-Pin 3 verschoben habe, der kein Programmier-Pin ist. Das Lösen dieses Problems löste auch ein anderes Problem für mich, denn als ich den Verriegelungsstift bewegte, öffnete sich der digitale Stift 1 mit PWM-Nutzung, sodass mehr Dinge mit der Platine erledigt werden konnten.

Fazit

Zugegeben, dies ist möglicherweise nicht das coolste Produkt oder die coolste Idee, aber es hat immer noch seine Verwendung. Die Frage direkt beantworten: "Was haben Sie aus diesem Projekt gelernt?" Ich habe gelernt, wie man von Anfang bis Ende eine Leiterplatte entwirft. Wenn ich irgendetwas anders machen könnte, wäre es gewesen, oberflächenmontierte Teile anstelle von Durchgangslöchern zu verwenden, dann ist es wiederum nur ein Prototyp, eine Einzelplatine.


Wie haben Sie Ihren ATtiny programmiert? Um welchen Code handelte es sich? IDE? (Bitte kommentieren Sie nur, bearbeiten Sie Ihren Beitrag nicht. )
Anonymous Penguin

@AnnonomusPerson Sieht so aus, als hätte die Person, die das gepostet hat, was ich vorhin getan habe, ihren Kommentar entfernt. Daher habe ich hier die notwendigen Dinge (Arduino IDE-Dateien und Programmierschema), um den ATTiny zu programmieren. highlowtech.org/?p=1695
Jesse Laning

Warum Oberflächenmontage verwenden? Das Durchlöten zu Hause ist viel einfacher? Ich denke, SMD ist nur für Produktionsläufe gedacht, oder gibt es noch etwas anderes?
Paul

5

Knopfdruckroboter.

Ein vierrädriger ferngesteuerter Laser-Schießroboter, der auf Knopfdruck arbeitet.

Beschreibung

Ich habe dieses Projekt im Laufe des letzten Schuljahres gemacht. Ich war im Robotikunterricht und wir entschieden uns für einen Wettbewerb. Jedes Team würde einen Roboter bauen, der einen großen Knopf und eine Möglichkeit zum Drücken anderer Knöpfe hat. Am Ende des Jahres hätten wir den letzten Wettbewerb, bei dem die drei Roboter versuchen würden, sich gegenseitig die Knöpfe zu drücken.

Am Ende des Jahres hat mein Roboter nur teilweise funktioniert. Jeder Teil des Roboters hatte irgendwann funktioniert, aber zwischen einem gebratenen Arduino, gebratenen Kraftfahrern, einer schrecklichen Code-Organisation und mir als der einzigen Person in meinem Team, die insgesamt mehr als fünf Stunden an dem Roboter gearbeitet hatte, war ich konnte es nicht vollständig zum Laufen bringen.

Ich habe meinen Roboter seit fast einem Jahr nicht mehr angefasst. Wenn ich ihn wieder zum Laufen bringen wollte, musste ich den Bot neu verkabeln und den Code neu schreiben. Vielleicht entscheide ich mich dafür, aber im Moment arbeite ich an weniger ehrgeizigen Projekten.

Design

Gesamtkonzept

Bildbeschreibung hier eingeben

Informations- / Stromfluss

+--------------------------+   +-------------------------------------------------+
|         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  |                    |
                               |  +-------------------------+                    |
                               +-------------------------------------------------+

Komponenten

  • Arduino Uno, (gebraten)
  • Transport:
  • Einfacher Knopf
  • Arm:
    • Servo , (kontinuierliche Rotation)
    • Kraftfahrer , (gebraten)
    • Motor (12 V, im Müllhaufen des Lehrers gefunden)
    • Radiergummi
    • Gegengewicht, (selbstgemachte Papiertüte mit Pennys gefüllt)
  • 2 Akkus (12 V, 1300 mAh, Ni-MH-Akku)
  • 2 lötfreie Steckbretter
  • Laser, (5 mW)
  • Bluetooth:
  • Viele Drähte
  • Viel Schrott und Plexiglas (in der Maschinenwerkstatt des Lehrers gefunden)

Code

Ich habe meinen Code nicht sehr gut organisiert und hoffe, dass dies der richtige Code ist.

Mehr Bilder

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Schreckliches Video einer langsamen, armlosen, knopflosen, laserlosen und bluetoothlosen frühen Version des Roboters.

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

Fazit

Ich kann wirklich gut Elektronik braten.

Dies war meine erste Erfahrung in einer tatsächlichen Maschinenwerkstatt. Ich musste eine CNC-Fräsmaschine, eine manuelle Fräsmaschine, eine Drehmaschine und eine Bandsäge benutzen. Wenn ich ein Projekt wie dieses erneut starten würde, würde ich eine viel bessere Dokumentation erstellen, um herauszufinden, was zum Teufel ich ein Jahr später tat.


1
Gute Arbeit! Nichts ist so wertvoll wie Erfahrung und das Wichtigste ist, dass Sie jetzt wissen, wie Sie das nächste Mal einen besseren Job machen können.
Hippie

5

4-stellige LED-Anzeige für Arduino

Kleine Platine mit 4 7-Segment-LED-Ziffern, die über 3 Pins verwaltet werden.

Beschreibung

Als ich anfing, mit Arduino zu arbeiten, wollte ich eine Möglichkeit zum Anzeigen von Werten, die von verschiedenen von mir experimentierten Sensoren erfasst wurden, aber ich wollte diese Werte nicht über Serialeinen PC ausgeben .

Ich wollte ein kleines Board, das ich problemlos von einem Projekt zum anderen wiederverwenden kann, und ich wollte ein Steckbrett ersparen.

Dieses Board ermöglicht zusammen mit seiner kleinen Bibliothek derzeit die Anzeige von 4-stelligen Zahlen und gibt während der Anzeige keinen Arduino-Strom mehr aus (Strom wird nur dann bezogen, wenn der neue Wert, der von nun an angezeigt werden soll, an das Board übermittelt wird).

Anzeigetafel mit Zähler

Design

Das Design ist recht einfach, da ich mich entschlossen habe, einen MAX-7219- Chip für die Ansteuerung meines LED-Displays zu verwenden (ich hatte einige davon zur Hand).

Dank dieses Chips war der Schaltplan sehr einfach, aber es war wichtig zu verstehen, wie man ihn benutzt. Zum Glück war sein Datenblatt ziemlich klar.

Das ursprüngliche Design wurde auf einem Steckbrett erstellt und es wurden 4 einzelne 7-Segment-LED-Ziffern verwendet . Für meinen Geschmack war jedoch zu viel Verkabelung erforderlich (Segmente müssen durch 4er-Gruppen verbunden werden). Auch während meines ersten Experiments mit 7-Segment-LED-Ziffern habe ich eine gebraten: Es hatte 2 Erdungsstifte, aber ich habe nur einen an GND anstatt an beiden angeschlossen :-(

Dann entschied ich mich für ein 4x7-Segment-Display, eine gewöhnliche Kathode , mit bereits 4-stellig angeschlossenen Segmentanoden: das sind nur 4 + 8 Pins!

Board Schema

Während meiner Tests habe ich eine nützliche Arduino-Bibliothek für die Arbeit mit MAX-7219 gefunden, die ich wieder verwenden wollte. Darauf habe ich meine eigene Bibliothek mit einer sehr einfachen API aufgebaut.

Nach dem Breadboarding war es an der Zeit, das Design dauerhafter zu machen. Da ich ein paar Stripboards zur Hand hatte, entschied ich mich dafür.

Ich habe einen einfachen Stripboard-Designer für den PC gesucht und gefunden , mit dem ich mein Board entworfen habe.

Das erste Stripboard-Design wurde nicht in Bezug auf den Platz optimiert und ich habe mich entschieden, es nicht zu implementieren:

STRIPBOARD DESIGN # 1

Dann habe ich das Design überprüft, um die Kosten und die Größe zu optimieren (nur ein kleines 50x75mm-Stripboard); das war einfach mit dem stripboard designer, den ich vorher gefunden habe:

STRIPBOARD DESIGN # 2

Sobald das Board fertig war, entschied ich mich, es mit einem Arduino UNO und einem Ultraschallsensor zu überprüfen:

BILD

Es schien zu funktionieren, außer dass ich oft seltsame, inkonsistente Anzeigewerte hatte; Nach der Untersuchung stellte ich fest, dass das Rauschen durch die Anzeigetafel ausgelöst wurde und den Sensor störte. Ich musste nur eine Entkopplungskappe so nahe wie möglich an den Stromversorgungsstiften des Sensors anbringen, und das funktionierte einwandfrei (beachten Sie, dass die Anzeigetafel bereits Entkopplungskappen für den MAX-7219-Chip hatte).

Liste der Einzelteile:

  • 1 x LN5461AS: gemeinsamer 7-Segment-Kathodenblock mit 4 Stellen
  • 1 x MAX7219: Multiplex-LED-Treiberchip
  • 1 x IC-Unterstützung (24 Pins)
  • 1 x 22K Widerstand
  • 1 x 10uF Elektrolytkappe
  • 1 x 100nF Kappe
  • 1 x Stiftleiste (5 Pins)
  • 1 x 90x50mm Stripboard
  • Drähte, Lötmittel ...

Fazit

30 Jahre nach meinen letzten Elektronik-Experimenten konnte ich den Virus mit Arduino und mit diesem allerersten Projekt wiederbekommen, das mir einige Dinge beibrachte, obwohl es ziemlich einfach war:

  • Datenblätter für die verwendeten Komponenten interpretieren (MAX7219 und LED-Anzeige)
  • Erfahren Sie, wie Sie mit Stripboard-Design umgehen und effektiv arbeiten
  • Alle mit GND oder V + gekennzeichneten Pins sollten verbunden sein: Sie wählen nicht den, den Sie verbinden möchten!
  • Wenn beim Testen Ihres Stromkreises etwas seltsam erscheint und Sie nicht verstehen, warum: Suchen Sie nicht, es muss Rauschen sein, versuchen Sie, eine Entkopplungskappe hinzuzufügen, und das sollte es tun!
  • lernen, wie man eine Arduino-Bibliothek erstellt (nicht nur eine Skizze)

Wenn ich dieses Projekt heute noch einmal starten würde, würde ich:

  • versuche das Stripboard-Design weiter zu optimieren (wahrscheinlich könnte ich die Größe etwas weiter reduzieren)
  • Ersetzen Sie die geraden Stiftleisten auf der Platine durch rechtwinklige Stiftleisten, damit die an Arduino angeschlossenen Drähte vor der Platine hervorstehen

5

Digitale Wanduhr mit Funkfernbedienung

Eine große Wanduhr mit 7 Segmenten (40 x 30 cm / 16 x 12 Zoll) und R / F-Fernbedienung.

Bildbeschreibung hier eingeben

Beschreibung

Dieses Projekt verfügt über eine große digitale Wanduhr mit 7 Segmenten (40 x 30 cm / 16 x 12 Zoll) und R / F-Fernbedienung. Folgende Funktionen stehen zur Verfügung:

  • Es zeigt die aktuelle Uhrzeit und das Datum (Stunden, Minuten, Sekunden, Tag, Monat, Jahr) in zwei Formaten an (Stunden oder Datum in großen Ziffern).
  • Es zeigt die aktuelle Temperatur in ° C.
  • Hat einen benutzerdefinierten Countdown, der einen (ärgerlichen) Alarm auslöst, wenn er Null erreicht.
  • Alle Funktionen ferngesteuert über eine Funkfernbedienung.
  • Verfügt über eine kleine Cursortastatur zur Steuerung der Funktionen (wenn die Fernbedienung nicht verfügbar ist).
  • Helligkeitsregelung für jede Anzeigezeile unabhängig.
  • Dank eines Echtzeituhr-ICs, das von einer Knopfzellenbatterie gespeist wird, wird die aktuelle Uhrzeit auch im ausgeschalteten Zustand genau angezeigt.

Design

Die wichtigsten Aspekte dieses Projekts waren:

  • Es basiert vollständig auf Arduino und AVR ATmega328 Mikrocontroller.
  • Dank DR1307 RTC, der von einer Knopfzellenbatterie gespeist wird, bleibt die aktuelle Uhrzeit auch im ausgeschalteten Zustand erhalten.
  • Die Ziffern werden niemals gemultiplext. Stattdessen verfügt jede Ziffer über einen dedizierten 8-Bit-IC für das serielle Schieberegister (74HC595), der ausgewählte Segmente unabhängig von der Anzeige auf den anderen Ziffern und den Aktionen der MCU aktiviert.
  • Segmente werden von Darlington-Arrays mit Strom versorgt, da der Stromverbrauch den der MCU oder der Schieberegister übersteigt.
  • Die Uhr wird über eine Tastatur auf der Steuerplatine sowie über eine Funkfernbedienung gesteuert. Die Funkkommunikation erfolgt über ein Paar preisgünstiger 434-MHz-Funkempfänger und -sender.
  • Das Projekt ist modular aufgebaut, wobei ein einzelner Controller bis zu 12 einzelne Ziffern verwalten kann. Der Controller akzeptiert auch erweiterbare Module für eine unbegrenzte Anzahl von Ziffern (die maximale Anzahl von Ziffern ist durch die Zeitverzögerung aufgrund der Verkettung von Schieberegistern und der Dämpfung ihres Taktsignals begrenzt).
  • Das Design unterstützt eine Reihe von vorgefertigten Ziffern mit 7 Segmenten oder benutzerdefinierten Ziffern, die mit LEDs erstellt wurden.

Nachfolgend finden Sie die Schaltpläne für den Controller und eine der 7-Segment-Karten:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Hier sind einige Bilder der Boards, die ich entworfen, geätzt und zusammengebaut habe, sowie der Fernbedienung:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Und zum Schluss noch ein Bild von einer anderen Version der Uhr. In diesem Fall mache ich die 7-Segment-Anzeigen selbst mit rechteckigen LEDs und diskreten Komponenten.

Bildbeschreibung hier eingeben

Fazit

Dieses Projekt hat mich viel Zeit, Mühe und Lernen gekostet (es ist, wie ich gelernt habe, nie zu Ende gegangen), aber es hat viel Spaß gemacht. Ein paar Dinge, die ich gelernt habe:

  1. Studieren Sie alle die Libs Sie gehen in Ihrem Projekt verwenden , bevor Sie GPIO - Pins in Ihrem Controller zuweisen , so dass Sie mögliche Konflikte zu vermeiden. Ich hatte Pech, denselben PWM-Pin für die Helligkeitssteuerung zu verwenden, der mit dem VirtualWire-Timer verknüpft ist, und musste daher das Board patchen, damit Helligkeit und HF gleichzeitig funktionieren.

  2. Das Crimpen von KK Molex- und Modu-Steckverbindern dauert VIEL ZEIT !!

  3. Lasergeschnittene Acrylteile sind die Zukunft. Sie verleihen dem Gerät eine Menge Qualität, auch wenn Sie ungeschickt sind.


Wie haben Sie die Leiterplatten hergestellt (Ätzen und Bohren)?
Sachleen

1
@sachleen Ich verwende die Tonerübertragungsmethode beim Bügeln. Ich drucke das Board-Design in einem Laserdrucker in Tintenstrahl-Fotopapier, bügele es dann auf das Board und ätze das Board in FeCl. Es dauert eine Weile, bis die richtigen Papier- und Druckereinstellungen gefunden sind. Zum Bohren benutze ich eine Dremelbohrmaschine , aber ich verwende nur Phenolplatten und Hochgeschwindigkeitsbohrer. Fiberglasplatten sind für die Bohrer viel härter und erfordern normalerweise teurere und spröde Hartmetallbohrer.
Ricardo

Woher hast du diese LEDs? Ich habe einige, die genau so aussehen!
Der Kerl mit dem Hut

1
@TheGuywithTheHat Die grünen rechteckigen? Diese sind hier in Brasilien ziemlich verbreitet. Ich habe diese in einem unserer Online-Shops für elektronische Komponenten erhalten. Hier einige Links: bei DigiKey , bei eBay . Hier habe ich sie bekommen .
Ricardo

5

TV-Antennenrotator

IR ferngesteuerte Antennenrotation

Sie können die Couch nicht verlassen, um die Ausrichtung der TV-Antenne anzupassen? Und selbst wenn Sie dies tun, ändert manchmal Ihre Nähe zur Antenne den Empfang. Es wäre schön, die Antenne von der Couch aus einstellen zu können. Verwenden der TV-Fernbedienung.

Komponenten

Arduino Uno, IR-Empfänger, Schrittmotor mit Treiberplatine, 1 "ID-Lager, Swiffer-Moppgriff, Kunststoffbox,

hinter dem Fernseher Arduino mit IR-Empfänger vorne Schließen Sie oben vom Kasten und vom Lager Swiffer Griff Diese beiden Tasten haben sowieso keine Funktion auf dem Fernseher

Beschreibung

Verwenden Sie einen alten Swiffer-Moppgriff als Antennenpfosten. Ich habe ein 1-Zoll-ID-Lager von meinem bevorzugten Online-Shop erhalten, in das der Moppgriff gerade hineindrückt und anhält. Ich habe ein Loch in die Kunststoffbox gebohrt, das groß genug ist, damit der Moppgriff hindurchpasst, aber nicht für das Lager. Ich habe ein Rechteck gebohrt Loch in das Ende des Moppgriffs, um auf die Welle eines 28BYJ-48-Schrittmotors zu passen, und steckte den Apparat wie gezeigt in die Schachtel. Der Moppgriff ruht tatsächlich auf dem Lager, und das Lager ist super auf die Oberseite der Kunststoffschachtel geklebt .

Verwendete die stepper.h-Bibliothek, um den Motor von einem Uno aus zu drehen.

Ich nahm einen unbenutzten DVD-Player auseinander und holte den IR-Empfänger heraus. Sie können jedes Consumer-Gerät, das über eine Fernbedienung verfügt, zerlegen und den IR-Empfänger verwenden, damit es funktioniert. Der IR-Empfänger verwendet die Bibliothek IRremote.h. Auf dem seriellen Monitor habe ich den Hex-Code ausgedruckt, der den beiden Tasten auf der Fernbedienung des Fernsehgeräts entspricht, mit denen ich den Antennenmotor bedienen möchte. Eine für links drehen, eine für rechts.

Um Energie zu sparen, schalten Sie die Spulen nach jeder Bewegung mit der Funktion small_stepper.motorOff () aus.

Fazit

Dies war ein lustiges Projekt, das auch für meine Frau nützlich war. Ich habe keine Beschleunigung / Verzögerung in die Bewegung implementiert, was sehr schön sein könnte, besonders wenn die Antenne mehr Rotationsträgheit hätte.

Edit: Entschuldigung, dass das Bild seitlich ist! Es ist richtig herum auf meinem Computer. Ich habe keine Ahnung, warum es seitwärts online ist.


5

Die Klopflampe

Eine Lampe, die ein- und ausschaltet, wenn der Schreibtisch angeschlagen wird. Derzeit in der Alpha-Phase, noch Prototyping, aber ich denke, es ist das nützlichste Arduino-Projekt, das es gibt. Eingeschlossener Scherzgenerator ... von zuvor aufgezeichneten Klopf-Klopf-Witzen. Hinweis: Ich weiß, dass ich in den Regeln nicht gewinnen kann, aber es gibt keine Regel für die Teilnahme ... Ich kann auch mein Projekt vorführen.

Beschreibung

Bisher habe ich das meiste ziemlich genau erklärt. Sie klopfen an und das Licht geht an und aus. Ich bin derzeit auf Steckbrett. Ich benutze ein Piezoelement , um die Stöße mit Vibrationen zu erkennen. Parallel dazu habe ich einen 1-Megaohm-Widerstand, um mein Arduino Uno SMD zu schützen.

Ich dachte an diesen Entwurf, nachdem ich beinahe meine Lampe von meinem Schreibtisch gestoßen hatte (haha punny), während ich nach dem kleinen Kippschalter suchte. Ich bin nicht genau ... gut geschickt . Es ist schön, einfach auf den Schreibtisch zu klopfen und dann Licht zu haben. Ich verwende auch ein Power Switch Tail SSR (Halbleiterrelais: kein Rauschen), um es mit zwei Pins meines Arduino zu steuern.

Design

Foto Das Bild wurde mit einer über dem Monitor hängenden Webcam aufgenommen ... eek!

Fritzing-Diagramm

Komponenten, die zum Erstellen des Projekts verwendet wurden:

  • Piezo-Element (3,00 USD)
  • Megaohm-Widerstand (jeweils 0,30 USD in 5 Stück)
  • Arduino Uno SMD (zur Hand)
  • Power Switch Tail SSR (~ $ 25.00 USD mit Schiff, hatte aber so keine Kosten zur Hand)
  • Steckbrett und Jumper / extra Draht (~ $ 5.00 USD, aber zur Hand, also keine Kosten)

Kosten für mich: $ 3.30 USD + $ 0.02 USD (Steuern) == Nur $ 3.32!

Fazit

Insgesamt ist es ein einfaches Projekt, aber es ist tatsächlich nützlich. Das ist ein Kampf mit meinen Arduino-Projekten: Kann ich etwas bauen, das ich tatsächlich nutzen würde ? Das Blinken einer LED hilft Ihnen nicht gerade im Leben. Es macht Spaß, aber das war es auch schon.

Das größte Problem, mit dem ich konfrontiert war (und das ich immer noch tue), ist, dass ich kein ausreichend starkes Signal erhalte. Ich habe viel über elektrische Signale gelernt: Ich habe herausgefunden, wie man die "Spitze" eines Impulses findet und nicht nur den Stift in zufälligen Intervallen liest und die höhere Spannung übersieht. Ich würde versuchen, ein empfindlicheres Piezoelement zu erhalten. Ein größerer würde helfen. Ich versuche, meine Schaltung zu modifizieren, um die Spannung nicht so stark zu begrenzen, aber den Arduino zu schützen. Eine Art Sicherung würde in dieser Situation helfen. Ich spiele auch mit Widerstandswerten herum. Es wäre sehr hilfreich, einen Spielraum dafür zu haben, aber ich denke nicht ...: P

Nachdem ich die Schaltung perfektioniert habe, werde ich daran arbeiten, sie mit einem ATtiny auf eine Leiterplatte zu bringen ... und vielleicht sogar einige Kits zu entwickeln. Ich werde versuchen, meine Erkenntnisse darüber zu veröffentlichen, wie man das Element empfindlicher macht, ohne dabei mein Board zu gefährden.

Status Update: Ich war in letzter Zeit sehr beschäftigt. Ich werde hier in ein oder zwei Wochen eine Zenerdiode (4,3 V) bestellen, um den Megaohm-Widerstand zu entfernen, damit das Signal nicht verwässert wird, während der Chip geschützt wird. Ich kann hier bei Bedarf einen einfachen Spannungsverstärker (neben dem Zener) bauen, um zu versuchen, den Sensor empfindlicher zu machen.


1
Wenn Sie zu etwas mit Differential- und Gain-ADCs wechseln, können Sie den Piezo empfindlicher machen. Und möglicherweise mit einem TVS anstelle eines Widerstands.
Ignacio Vazquez-Abrams

Verwenden Sie ADC zur Erkennung oder für einen Interrupt? Haben Sie eine Vorstellung davon, wie groß die Spannungsspitze ist, die Sie erfassen möchten?
Hippie

@ Jipie ADC für die Erkennung, ich habe ziemlich effizienten Code: Es schleift und findet die Spitze für alle 250 ms. Keine Verspätungen. Für Peak, IIRC ist es ungefähr 14/1024 (zu faul, um das jetzt umzurechnen). Ich sollte auch in den AREF-Pin schauen, aber es könnte Probleme damit geben, wenn er fallen gelassen wird, kann er ~ 9V machen.
Anonymous Penguin

Versuchen Sie dies als Eingabepuffer. Der Transistor wirkt als stromverstärkender Halbwellengleichrichter / Spitzendetektor. Mit dem ADC muss kein einzelner Peak erkannt werden, der Transistor / Kondensator dehnt ihn für Sie. Wie konfiguriert, hat die Ausgangsspannung eine Vorspannung von 2,2 V Gleichstrom. Sie können diese jedoch beliebig ändern, indem Sie den Widerstandsteiler ändern. Auf diese Weise können Sie den Eingang noch empfindlicher machen, indem Sie die 1V1- oder 2V56-Bandlückenreferenz auswählen. Der 10M-Widerstand sorgt dafür, dass sich der Kondensator über eine Sekunde entlädt und war in Wirklichkeit mein DMM.
jippie

4

MySensors

- Erfahren Sie, wie Sie Ihre eigenen kostengünstigen Funksensoren erstellen und mit der Welt verbinden.

http://www.mysensors.org

Wir nennen es "Internet Ihrer Dinge"

Beschreibung

Wir haben die Arduino-Plattform mit einem kleinen Funk-Transceiver zu einer unterhaltsamen, flexiblen Welt kostengünstiger Funksensoren kombiniert.

Alle wichtigen Details zur Sensorkommunikation wurden in einer praktischen Softwarebibliothek zusammengefasst, sodass Sie sich nicht um sie kümmern müssen.

Es ist so einfach wie 1, 2, 3. Arduino + NRF24L01 +

  1. Verbinden Sie die Teile. 2. Laden Sie die bereitgestellten Beispiele herunter. 3. Beginne die Welt zu messen und zu kontrollieren!

Lesen Sie mehr darüber, wie das Sensornetzwerk mithilfe unserer Arduino-Bibliothek auf der Website automatisch aufgebaut wird. Es bildet im Grunde ein Sternennetz und kann Hunderte von Metern erreichen.

Das Sensornetzwerk

In der Mitte platzieren Sie ein Arduion- oder Himbeer-Gateway, das die Informationen von Ihren Sensoren sammelt. Himbeer-Controller

Arduino Gateway

Design und Schaltpläne

Hier ist einer der Prototyp-Bewegungssensoren, die ich erstellt habe, um das Gartenlicht außerhalb meines Hauses zu steuern. Der Bewegungsstatus wird an meinen HA-Controller gesendet, der das Licht (über die Z-Welle) einschaltet, wenn eine Bewegung erkannt wurde. Ein Lichtsensor (nicht im Bild) schaltet das Licht nur nachts ein.
Bildbeschreibung hier eingeben

Alle Bauanleitungen finden Sie hier: http://www.mysensors.org/build/

Ansonsten gibt es auch leicht zu befolgende Bauanleitungen für eine Reihe anderer drahtloser Sensoren und Aktoren. Hier sind einige Beispiele:

Abstandssensor, Bewegungssensor, Relais-Aktor, Luftfeuchtigkeit, Licht, Druck, Regen, Temperatur, ...

Fazit

Das Projekt befindet sich noch in den Startlöchern und wir hoffen, Plugins für eine wachsende Liste von Home Automation-Controllern anbieten zu können. Das erste, was wir derzeit auf unserer Liste haben, ist die Bereitstellung eines DIY-Controllers, der einen kostenlosen Cloud-Speicher für Ihre Sensordaten bietet.

Hallo

Wir sehen uns bei mysensors.org

/ Henrik Ekblad (der Schöpfer der Open Source Arduino Library, die für die Kommunikation zwischen den Sensoren verwendet wird)

  • UPDATE 27/3. Konkretisierte das Beispiel und fügte meine Zugehörigkeit zum Open-Source-Projekt hinzu.

4
Willkommen bei Arduino.SE! Ihre Website entspricht leider nicht den Kriterien unseres Showcases. Wir suchen nach spezifischen Projekten, die eine praktische Anwendung von Arduino demonstrieren (wie in den anderen Beispielen hier gezeigt). Vielleicht könnten Sie ein Beispiel für ein von Ihnen erstelltes Sensorprojekt angeben?
Peter Bloomfield

Ok, vielleicht verpasse ich den Punkt;). Das "spezifische Projekt" hier ist, dass wir Arduinos verwenden, um ein selbstheilendes drahtloses Sensornetzwerk zu erstellen. Um dies zu archivieren, haben wir eine Open Source Arduino-Bibliothek für den NRF24L01 + -Transceiver erstellt.
Hek

4
Das klingt eher nach einer Werbung als nach einem Projekt. Ändern Sie den Ton, um ihn möglicherweise auf eine einzelne Anwendung abzustimmen. Ich vermute, deshalb haben Sie eine Gegenstimme bekommen.
Cybergibbons

Willkommen bei Ard.SE! Basierend auf Ihrer Profil-Website arbeiten Sie auf der oben beworbenen Website oder besitzen diese. Es ist SE-Politik, dass Sie dies in Ihrer Antwort offenlegen . Bitte bearbeiten Sie es, um dies zu berücksichtigen. Können Sie auch ein Beispiel für dessen Verwendung hinzufügen?
Anonymous Penguin

Ich habe diese (Open Source) MySensors-Bibliothek in meiner Freizeit in den letzten 6 Monaten entwickelt. Um anderen Leuten zu helfen, die Bibliothek richtig zu benutzen, haben wir (mehr Leute sind in den letzten Monaten dem Projekt beigetreten) vor nur 3 Tagen die Seite mit den Bauanweisungen gestartet. Ich dachte, es wäre ein gutes Arduino-Projekt, in diesem "Project Showcase" Feedback zu erhalten. Ich glaube nicht, dass ich versucht habe, meine Teilnahme an dem Projekt in irgendeiner Weise zu verbergen, und es tut mir leid, wenn die Beschreibung als Werbung wahrgenommen wird. Wir freuen uns einfach sehr über das Projekt!
Hek

4

Serielle Box

Ein tragbarer serieller Monitor in einer Box

Beschreibung

Manchmal ist es für ein Gerät (Arduino oder anders) nützlich, einige Debug-Informationen über die serielle Schnittstelle auszugeben. Das ist großartig, wenn Sie einen Computer mit einem geeigneten seriellen Eingang zur Hand haben. Dies ist jedoch aus verschiedenen Gründen nicht immer der Fall.

Dieses Projekt ist mein Versuch, dieses Problem zu lösen, indem ich einen tragbaren seriellen Monitor mit Arduino-Stromversorgung erstelle, an den ich andere Geräte im Feld anschließen kann.

Standardmäßig wird nur Text in einem Scrollback-Format angezeigt. Das heißt, in der untersten Zeile wird Text angezeigt und alles rollt nach oben, um Platz zu schaffen, wenn mehr kommt. Dies bedeutet, dass es mit allen Arten von generischen Geräten sehr gut funktionieren sollte. Es ist jedoch auch möglich, die Anzeige mithilfe von Escape-Sequenzen genauer zu steuern, sodass Geräte auch spezifisch programmiert werden können, um ihre Funktionen zu nutzen.

Design

Das Design besteht aus einem Satz von 4 alphanumerischen LCD-Anzeigen (jeweils 16 x 2 Zeichen), die in einem Feld wie folgt angeordnet sind:

Modell 3d des Serienkastendesigns

Bei den Displays handelt es sich um Epson EAX16027AR, die leider nicht mit dem Standardtreiber Hitachi HD44780 kompatibel sind. Als solches musste ich für sie meine eigene Bibliothek schreiben .

Ich entschied mich für diese Displays (anstatt zB eines großen Displays), weil ich sie nur herumliegen hatte und etwas Interessantes mit ihnen machen wollte. Ich dachte auch, dass es sehr praktisch wäre, jedes Display für einige Anwendungen unabhängig steuern zu können (z. B. unterschiedliche Informationen zu jedem einzelnen).

In Bezug auf das Schaltungsdesign sind die Anzeigen parallel geschaltet, wobei Chipauswahlstifte verwendet werden, um Daten / Befehle nach Bedarf zu jedem zu leiten.

Ein ATMega328 ist das Gehirn der letzten Einheit. Die seriellen Daten stammen von einer TTL-Leitung (für den direkten Anschluss an den TX einer ähnlichen MCU) oder optional von einer 9-poligen RS232-D-Sub-Buchse (für den Anschluss an verschiedene andere Systeme). Das Gerät verfügt außerdem über ein Kontrast-Einstellrad, eine Taste zum Löschen der Anzeige und eine Taste zum Starten eines Selbsttest-Modus. Zukünftig möchte ich Schaltflächen hinzufügen, mit denen sich der Benutzer auch durch einen Scrollback-Verlauf bewegen kann.

Unten ist ein sehr vorläufiger Schaltplan (ich hatte aus irgendeinem Grund große Probleme, Fritzing zum Spielen zu bringen!). Es enthält ein 8-Bit-SIPO-Schieberegister zur Ansteuerung der grün dargestellten Datenleitungen der LCDs. Sie können die Chipauswahllinien auch in Orange sehen.

Vorläufiger Schaltplan

Derzeit befindet sich das Projekt noch im Prototypenstadium und wird von einem Uno-Board (Klon) gesteuert. Unten sehen Sie ein Foto davon in Aktion, das Text anzeigt, der von meinem Computer per Seriennummer übertragen wurde.

Der Prototyp in Aktion

Quellcode

Ich stelle meine LCD-Bibliothek auf GitHub unter dem folgenden Link zur Verfügung. Bitte beachten Sie, dass es sich in einem frühen Stadium der Entwicklung befindet. In naher Zukunft beabsichtige ich, es der LiquidCrystal-Kernbibliothek viel ähnlicher zu machen, damit es einfacher ist, zwischen den beiden zu wechseln.

Sie finden einen Basiscode für meinen Serial Box-Prototyp im Ordner "examples".

Fazit

Ich denke, das Projekt läuft sehr gut und ich war sehr erfreut, dass der Prototyp funktioniert. Meine größte Herausforderung wird es sein, das Ganze in eine Kiste zu packen. Ich habe bereits damit begonnen, geeignete Löcher für die Displays herauszuschneiden, aber ich bin nicht sehr erfahren in solchen Dingen und finde es ziemlich schwierig, alles in einer Reihe aufzustellen.

Ich werde es am Ende aber bekommen. Wenn ich fertig bin, sieht es vielleicht gar nicht mehr so ​​hübsch aus! :)


3

Heizungsregler

Sie wissen, wie es ist - Sie stellen die Heizung auf eine bestimmte Zeit ein und wie viele Tage arbeiten Sie zu spät und es ist stundenlang auf Hochtouren, oder Sie gehen für ein paar Tage weg und vergessen, es auszuschalten? Oder die seltene Gelegenheit, dass Sie früh nach Hause kommen und das Haus kalt ist? Ich entschied, dass der einfache Weg, dies zu umgehen, darin bestand, ein Gerät zu bauen, mit dem ich meine Heizung per SMS ein- oder ausschalten konnte. Es würde zusätzlich zu dem bestehenden Kontrollsystem erfolgen, um die Flexibilität, die dies bieten kann, nicht zu verlieren.

Das Projekt besteht aus einigen Hauptteilen: einem Arduino Uno-Klon, einem Seeedstudio-GSM-Shield, einem DHT22-Temperatursensor und einem 25-A-SSR.

Wie es funktioniert:

Die vorhandenen Heizungsregler sind auf "Aus" eingestellt und der neue Regler ist so verdrahtet, dass er sie überschreibt. Das Uno ist so programmiert, dass es auf drei verschiedene Meldungen reagiert - Ein, Aus und Abfrage. In letzterem Fall liest das Gerät den DHT22 und antwortet dem Absender mit der aktuellen Temperatur und dem Status des Geräts (ein oder aus). Wenn der Befehl entweder Ein oder Aus ist, wird er mit einer Bestätigung der ausgeführten Aktion beantwortet. Sobald Nachrichten bearbeitet wurden, werden sie gelöscht. Alle Nachrichten, die nicht der spezifischen Nachrichtenstruktur entsprechen, verbleiben im Speicher der SIM-Karte und können bei Bedarf später überprüft werden.

Die Stromversorgung des Geräts erfolgt über ein Schaltnetzteil mit fünf Volt und drei Ampere. Da die Stromanschlüsse am Arduino lediglich den internen 5-V-Bus des Boards freigeben, habe ich mich entschieden, das Ensemble über diese Anschlüsse mit Strom zu versorgen und die Abschirmung so zu konfigurieren, dass sie Strom vom Arduino bezieht.

Das Gerät verfügt über drei Status-LEDs. Eine grüne zeigt an, dass Strom vorhanden ist, eine blaue zeigt an, dass die GSM-Karte in Betrieb ist, und eine rote zeigt den Status der Heizung an. Dies sind zusätzlich zu den Status-LEDs auf dem Arduino und dem Schild. Es gibt auch einen Druckknopfschalter, der die manuelle Steuerung der Heizung ermöglicht, und einen 100-nF-Kondensator, der die Entprellung handhabt.

Nächster:

Ein Großteil des Codes stützt sich auf gute alte delay (), um dem Schild genügend Zeit zu geben, um seine Aktionen auszuführen. Ich plane, den Code so zu verbessern, dass er auf die Bestätigung durch den Schild wartet, anstatt davon auszugehen, dass er innerhalb der vorgegebenen Zeit das getan hat, was ihm gesagt wurde! Ich werde auch ein "noch am Leben" -Feature hinzufügen - in festgelegten Intervallen die blaue LED ausschalten, den AT-Befehl an den Schild senden und bei Bestätigung die LED wieder einschalten. Der Schild wird von der Software gesteuert. Wenn er nicht reagiert, schalten Sie ihn aus und wieder ein.

Das gesamte Ensemble ist in ein geeignetes Gehäuse einzubauen und neben der vorhandenen Steuerung zu montieren. Ich habe einen intern beleuchteten Druckschalter, den ich anstelle eines separaten Schalters und einer roten LED für die Übersteuerung verwende.

Längerfristig plane ich, eine Echtzeituhr, ein 20 x 4-LCD und zusätzliche Drucktasten hinzuzufügen, damit das Gerät programmiert werden kann und auch als Zeitschaltuhr fungiert.

Das Prototyping hat bereits begonnen!

Fazit.

Es ist etwas Dekadentes, an einem kalten Wintertag aufzuwachen, eine SMS / SMS zu senden, um die Heizung einzuschalten, sich umzudrehen und für eine Stunde wieder einzuschlafen! Und wenn Sie feststellen, dass Sie es an einem Abend nicht ausgeschaltet haben, können Sie dies bequem von Ihrem Bett aus tun!

Controller Image 1 Controller Image 2

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.