Väder rutnätet (Powered By Intel Edison) (3 / 7 steg)
Steg 3: Programmering Edison (Arduino IDE)
Lysdioderna
Den första komponenten som vi måste få arbeta är LED strip. I det här fallet använder vi en 1 meter remsa av APA102 som har 36 individuellt adresserbara lysdioder. Vi använder dessa i stället för de mer populära WS2811/WS2812 remsorna eftersom de använder separata ledningar för deras clock och data signaler. Olika versioner av Intel Edison firmware har problem som försvårar dem till gräns flat med 3 tråd LED strips, så med WS2811/WS2812 remsorna är problematisk.
För att styra LED strip behöver vi fyra stift på GPIO som visas här:
GND -> GND
DI -> stift 11 (MOSI)
CI -> stift 13 (SPI klocka)
5V -> 5V
Den viktiga frågan här är att identifiera rätt stiften på Edison Arduino styrelsen. Den Intel Edison Kit för Arduino Hardware Guide ( http://download.intel.com/support/edison/sb/ediso... ) identifierar de stift som de som behövs för "SPI skicka data" (PIN 11) och "SPI klocka control" (PIN 13).
Nu när korrekt stiften är identifierade vi skriver lite kod för att driva lysdioderna. Ingen av de befintliga bibliotek som FASTLED eller NeoPixel fungerar med APA102s och Edison så vi behöver lite anpassad kod. Den bästa förklaringen jag har hittat är i Intel gemenskapen forum här: https://communities.intel.com/message/335874#3358... . I grund och botten måste vi skapa en buffert objekt och tilldela sedan RGB-färgvärden genom att passera dem genom bufferten. När du har APA102 remsan ansluten till stiften som beskrivs, kan du köra följande kod för att testa systemet. Observera att eftersom vi bara använder ett par lysdioder i taget i det slutliga projektet, vi inte kommer att använda en extern strömkälla.
LCD
LCD vi använder är "Grove - RGB LCD-bakgrundsbelysningen." Det kommer som en del av den Grove Starter Kit Plus från SeeedStudio och finns också separat. Vi använder "Grove Base Shield" och en av de medföljande fyra wire kablarna för att ansluta den till Edison. När den är ansluten måste du ladda ner "Grove_LCD_RGB_Backlight" Arduino biblioteket från: https://github.com/Seeed-Studio/Grove_LCD_RGB_Bac... . Sedan måste du lägga en kopia av "bibliotek" katalog för din Arduino IDE installation. När du får biblioteksfiler på plats bör du köra "fade" eller "HelloWorld" exempelmanus som visas i bilden.
Network Server
Intel-Edison kommer med alla funktioner av en Arduino WIFI sköld, så ingen ytterligare hårdvara eller sköldar behövs för Arduino sidan av Edison tillgång WIFI system. Nu behöver vi bara att installera dem upp och testa dem. Det gör du öppna Arduin IDE och köra exemplet skiss "SimpleWebServerWIFI." Om din Arduino IDE installera inte kom installerade med "wifi" skisser, kan du hämta dem från github ( https://github.com/codebendercc/arduino-library-f... ). Nu behöver du bara anpassa skissen med nätverkets SSID (namnet) och lösenord, och du borde hjälpe.
Att sätta allt ihop
Nu behöver vi bara att skriva en skiss som kommer att använda alla delar har vi bara setup. Här är skissen du behöver:
https://github.com/nam37/weathergrid/BLOB/Master/W...
Jag har försökt att kommentera ut skissen att besvara alla frågor, men här är en snabb översikt av skiss.
- De första 70-tal linjerna definiera krävs konstanterna, definiera vissa nödvändiga variabler och "inkludera" de nödvändiga biblioteken.
- Raderna nästa 100 eller så är viktigaste "loop" av skiss. Här väntar den initialiserade webservern på inkommande anslutningar. När en anslutning påträffas, försök det att identifiera den som en väder kod "WW" eller som en temperatur kod "ZZ". Om någon av de som hittat sedan rätt Lamporna lyser och/eller rätt meddelande visas på LCD-skärmen.
- Resten av skissen består av en samling av funktionen används för att styra lysdioder och LCD.
En anteckning på uthållighet...
Vissa Intel Edison firmware versioner har en bugg som raster Arduino skiss uthållighet. Om du upptäcker att din Arduino skript automatiskt inte är omladdning vid omstart, måste du ta itu med detta. Det finns en stor tråd i Intel Edison samhället som behandlar detta här: https://communities.intel.com/thread/77945