Helt enkelt tänker på dig (4 / 5 steg)
Steg 4: Hårdvara och mjukvara
Hårdvara
Jag trött för att hålla med den vanliga uppsättningen av Grove komponenter. Detta minskad variabilitet i programplaneringen och nedsatt för insatsnivån för att få något ansluten ganska snabbt. De elektroniska komponenterna bestod av:
- Intellekten Edison
- Arduino breakout ombord
- Grove bas sköld
- Grove knappar
- Grove RGB LCD-bakgrundsbelysning
- Grove I2C motorn förarens
- Stegmotor
- LED
- Grove EL Driver
Den bas skölden gjorde ansluta allt trivial. Det finns väldigt lite arbete att göra med hårdvaran. Mesta av arbetet var i programvaran att försöka få saker att prata med varandra.
Programvara
Jag använde Node.js och Javascript eftersom både möjliggör mycket snabb kod iteration, som det fanns en hel del. Plus, jag vet att Javascript och Node.js så vid programmering jag kunde sätta de flesta av min energi i beteendet. Jag använde även löften. Detta bidrog med den asynkrona naturen för vissa komponenter. Naturligtvis, använde jag MRAA och UPM. Och även om jag verkligen ville använda Johnny-fem eller Cylon.js, jag stannade ifrån dem. eftersom jag inte trodde jag hade tillräckligt med tid att lära sig dem. Slutligen användes Pushbullet som anmälan bussen.
Senaste ändringar här: GitHub: Thinking of You
Node.js
Node.js är mycket enkel att använda och förstå. Start den, kör några init kod, och sedan skapa en långdragna loop, som liknar Windows meddelande pumpen gamla, och du är klar. Från och med nu ut systemet svarar på händelser.
Löften
Jag använde en snabbt och effektivt genomföras av löften kallas Bluebird. Koden verkade lite mindre rörigt än om jag hade använt den standard motringning idiomet. Edison verkar inte ha några problem med detta bibliotek, även om jag inte gjorde något riktigt komplicerat eller esoteriska. Jag använde bara den grundläggande saker och det fungerade bara. Den främsta anledningen varför jag använde löften är eftersom jag behövde något som Arduino's delay() funktion. Förseningar hjälpte särskilt med LED fading där för att se förändringen en försening måste inträffa mellan ljusstyrka ändringen.
Pushbullet
Pushbullet är ett system där meddelanden till din enhet kan sändas till dina andra enheter eller dator. De ger ett API som kan, bland andra funktioner, tillåta en persons enheten att kommunicera till en annan person eller dator bara genom att hänvisa till sin e-post via ett resten samtal. Med detta system, behöver varje person sina egna API-nyckel för att kunna skicka och ta emot meddelanden. Slutligen finns det ett Node.js paket som ger ett lätt att använda API-gränssnitt till Pushbullet.
Komponenter
LCD-Display
UPM I2C LCD ger en enkel att använda klass för att driva LCD. Som standard visas datum och tid. Det gör detta genom att visa datum och tid en gång varje minut via en intervall metod. När en leksak meddelande kommer det, visas på LCD-skärmen. För att väcka uppmärksamhet på att ett meddelande har anlänt, ändrar bakgrunden slumpmässigt färg efter några sekunder.
Stegmotor
Grove I2C motor föraren styr stegmotor. UPM ger grovemd, en enkel att använda klass att flytta motorn fram eller bakgrund.
LED
Lysdioden är inget speciellt. Ansluter den direkt till en PWM stift. Även om ett motstånd bör användas, valde jag inte för att använda en eftersom den drivs sällan fullt. När ett meddelande kommer in, kommer lysdioden tonas in och ut. Det blir nära hög slutet endast för en bråkdel av en sekund.
Knappar
Jag hade varierande framgång med knapparna Grove. Av fem, två misslyckades. Det visas att de har en inbyggd dra ner krets. Det var skönt. Jag använde standard MRAA GPIO istället för UPM Grove knappen. Den senare hade inte en ISR motringning mekanism som arbetade i Javascript (åtminstone det fungerade aldrig för mig). Jag hade hoppats att de skulle har också behandlat den studsande effekten i GPIO biblioteket. För att kompensera, jag använde bara en försening som om det fanns Klicka på händelser med fördröjning och de ignorerades.
EL Panel
EL är ganska lätt att arbeta med. Med paneler, kan de skäras till former bara så länge tillräckligt med ström flödar till panelen. Allt som behövde jag bara en enkel rektangel.