Stap 4: De Hardware en Software
Hardware
Ik moe om te houden met de standaard set van Grove componenten. Dit verminderde variabiliteit in de programmering en de mate van inspanning op het krijgen van iets aangesloten vrij snel verminderd. De elektronische componenten bestond uit:
- Intel Edison
- Arduino breakout board
- Grove basis schild
- Grove knoppen
- Grove LCD RGB-achtergrondverlichting
- Grove I2C motor stuurprogramma
- Stappenmotor
- LED
- Grove EL Driver
Het basis schild gemaakt alles triviale aansluiten. Er is zeer weinig werk te doen met de hardware. Het grootste deel van het werk was in de software probeert te krijgen van dingen om te praten met elkaar.
Software
Aangezien beide bieden de mogelijkheid voor zeer snelle code iteratie, die er een heleboel was, gebruikte ik Node.js en JavaScript te gebruiken. Plus, ik weet dat Javascript en Node.js zo tijdens het programmeren ik kon de grootste deel van mijn energie gestoken in het gedrag. Ik gebruikte ook beloften. Dit hielp met de asynchrone aard van sommige van de componenten. Natuurlijk, gebruikte ik MRAA en UPM. En hoewel ik echt Johnny-vijf of Cylon.js gebruiken wilde, ik bleef weg van hen omdat ik dacht niet dat ik had genoeg tijd om te leren van hen. Tot slot, Pushbullet werd gebruikt als de bus van de kennisgeving.
Laatste wijzigingen hier: GitHub: Thinking of You
Node.js
Node.js is zeer eenvoudig te gebruiken en te begrijpen. Start, sommige init-code uitvoert, en maak vervolgens een lange lopende lus, vergelijkbaar met de Windows bericht pomp van weleer, en u bent klaar. Vanaf hier op uit de systeem reageert op gebeurtenissen.
Beloften
Ik gebruikte een snelle en efficiënte implementatie van beloften Bluebird genoemd. De code leek een beetje minder rommelig dan als ik het standaard terugbellen idioom had gebruikt. Edison lijken niet te hebben eventuele problemen met deze bibliotheek, hoewel ik deed niets echt ingewikkeld of esoterische. Ik gebruikte gewoon de fundamentele dingen en het werkte gewoon. De voornaamste reden waarom ik beloften gebruikte is omdat ik iets zoals de Arduino delay() functie moest. Vertragingen met name geholpen met LED fading waar om te zien de verandering die een vertraging moet plaatsvinden tussen de helderheid wijzigen.
Pushbullet
Pushbullet is een systeem waar meldingen naar uw apparaat naar uw andere apparaten of computer kunnen worden uitgezonden. Zij bieden een API waarmee kan, onder andere mogelijkheden, van een persoon apparaat om te communiceren met het apparaat of de computer van een andere persoon gewoon door te verwijzen naar hun e-mail via een oproep van de REST. Met behulp van dit systeem, moet elke persoon hun eigen API-sleutel te kunnen verzenden en ontvangen van berichten. Tot slot is er een Node.js pakket dat een makkelijk te gebruiken interface van de programmering tot Pushbullet biedt.
Onderdelen
LCD-Display
UPM I2C LCD biedt een eenvoudige klas te gebruiken om te rijden het LCD-scherm. Standaard toont het display de datum en tijd. Het doet dit door het weergeven van de datum en tijd eenmaal per minuut via een interval methode. Als een stuk speelgoed bericht het gaat, wordt deze weergegeven op het LCD-scherm. Om aandacht dat een bericht is aangekomen, wijzigt de achtergrond u willekeurig kleur om de paar seconden.
Stappenmotor
De Grove I2C motor bestuurder bepaalt de stappenmotor. UPM biedt grovemd, een makkelijk te gebruiken klasse om de motor naar voren of achtergrond te verplaatsen.
LED
De LED is niets bijzonders. Het verbindt direct met een PWM-pin. Hoewel een weerstand moet worden gebruikt, heb ik ervoor gekozen niet om één te gebruiken omdat het zelden volledig wordt aangedreven. Wanneer een bericht binnen komt, de LED zal in-en uitfaden. Het wordt in de buurt van de high-end alleen voor een fractie van een seconde.
Knoppen
Ik had succes met de Grove knoppen gevarieerd. Van de vijf niet twee. Het lijkt erop dat ze een ingebouwde pull-down circuit hebben. Dat was leuk. Ik gebruikte standaard MRAA GPIO in plaats van UPM Grove knop. De laatste hoefde niet een ISR callbackmechanisme die in Javascript werkte (ten minste op nooit gehanteerd voor mij). Ik had gehoopt dat ze zouden hebben ook behandeld het bouncing effect in de GPIO bibliotheek. Om dit te compenseren, mij uitsluitend tweedehands een vertraging die als er waren klikt u op gebeurtenissen met de vertragingsperiode van de, ze werden genegeerd.
EL Panel
EL is vrij eenvoudig om mee te werken. Met panelen, kunnen zij worden gesneden aan shapes net zo lang als voldoende stroom naar het deelvenster vloeit. Alles wat moest ik gewoon een eenvoudige rechthoek.