DIY Home LED transit teken (2 / 2 stap)

Stap 2:


Broncode

Zoals gewoonlijk zal ik beginnen met de broncode, die op github. Hier is een lokale mirror, in het geval dat de broncode voor een gepatchte volgende Muni gem is hier.

How to Run

Er is een kleine documentatie in het README bestand, en monster opdrachtregels zijn in de daemon opstartscript voor deze spec. in principe, dat u selecteert een stop op nextmuni.com te vinden uw stop-ID, en uitvoeren van client/client.rb--stopId 12345. Alternatief, kunt u een ochtend dashboard uitvoeren door te geven van maximaal twee routes en stopt in tekst, en voeg een URL om te halen weer fromweather.gov:

PI configuratie notities

Tijdens de eerste run, sluit u de muis, het toetsenbord en Wi-Fi-kaart via de USB-hub. Volg de gids aan de slag om eerste afbeelding naar SD kaart te downloaden. Schoen op opwaarts, installeren de standaard Raspbian Debian-gebaseerde distributie. Kies "automatisch opstarten desktop omgeving bij het opstarten" wanneer gevraagd. Terwijl u het niet hoeft, is het de gemakkelijkste manier om het configureren van de Wi-Fi. Eenmaal op het bureaublad, selecteer "Wi-Fi-configuratie" onder een van de menu's toegankelijk via de knop Start en de wi-fi-kaart die u ingevoegd om verbinding met de router te configureren. Zorg ervoor dat u ook configureren om te starten van wi-fi automatisch tijdens het opstarten. Configureren van SSH-server, en zorg ervoor dat het opstart tijdens het opstarten. Configureren van hostname of IP-adres noteren. Reboot en probeer te SSH vanaf een andere machine. Als dit werkt, verbreken muis, het toetsenbord en HDMI: u hoeft ze niet meer. Controleer of git is geïnstalleerd via sudo apt-get install git, de bronnen downloaden en volg de instructies van de README te installeren taal runtimes. Spelen met script van command line opties om erachter te komen wat u wilt uitvoeren en een daemon configureren door het installeren van de initscript. Zodra genoeg vertrouwen in de veerkracht van de setup, mount dit op uw muur.

Resultaten

Dus de oplossing geholpen: ik gestopt als een Japanse schooljongen, en begon te controle van mijn ochtend uitstel, ook. Als een bonus, ik had een ruwe schatting van hoeveel het zou kosten belastingbetalers om te programmeren van dit teken, en, natuurlijk, ik had veel plezier, ook. Tot slot, ik heb nu een geeky item in mijn woonkamer... Hoewel het lijkt aan anderen als een gegevensstroom van de aandelenkoersen, in plaats van Muni aankomsttijden.

Notities

De rest is minder "hot" secties, waarin mijn ervaring met de tools die ik voor de baan gebruikte.

Ruby

Raspberry Pi's standaard Linux, als een Debian afgeleide, bevatten fatsoenlijke ondersteuning voor Ruby, met inbegrip van 1.9. die is een beetje oud al, wel. Het duurt enkele seconden om te laden van de interpreter en een dozijn van edelstenen die ik nodig had voor dit teken Pi, maar het is OK, aangezien het programma opstart slechts eenmaal wanneer het systeem is ingeschakeld.

LED Sign

Dus ik gebruikte teken verzorgd een Perl-API, dus zou het natuurlijk het clientprogramma in Perl te schrijven... niet echt. Terwijl ik heb een heleboel ervaring programmeren in Perl, ik zou veel liever schrijven in een interessanter taal, zoals Python of Ruby. Dat was een van de redenen waarom ik een kleine wrapper schreef over de Perl API, zodat ik kon exec dit eenvoudige programma vanuit een andere taal. Een andere reden waarom ik schreef dit API was dat het teken niet twee regels tekst in de ingebouwde tekst renderer ondersteunt. Met de API kunt u een regel tekst, en het teken zal gelukkig maken, en zelfs sommige effecten toevoegen, maar ik wilde twee regels in een kleiner lettertype in plaats daarvan. API hoeft niet een "render image"-functie, maar het teken kunt u uw eigen lettertype glyphs te maken en hen in tekst invoegen. Het voor de hand liggende idee van afdrukken een 16 x 96 "symbool" gewerkt. De wrapper doet precies dit. Het bord kan ook doorlopen van meerdere afbeeldingen--net als het echte Muni teken. API maakt dit zeer eenvoudig te programmeren: dit gebeurt automatisch wanneer u meerdere berichten verzenden. Integratie met Pi ging vlot: gewoon gebruik maken van $sign -> verzenden (apparaat = > '/ dev/ttyUSB0'); in uw programma. Er waren al verschillende glitches. Eerst, elke glyph wordt automatisch gecentreerd, tenzij het is meer dan ongeveer 80 pixels breed, in welk geval het wordt uitgelijnd aan de linkerkant. Anders in een lus doorlopen uitgelijnd berichten ziet er slecht, zodat ik alle afbeeldingen die ik stuur het teken als 16 x 96, hen met zwarte pixels opvulling dwingen. Ten tweede, er is geen manier om stroom uit het teken via programmacode. Voor het aandrijven van het uit, moet ik fysiek verwijderen van de USB-aansluiting en zwenking op vandoor, omdat het begint met behulp van de batterij anders. Van de fabrikant van de teken bedoeling was waarschijnlijk dat u het teken niet vaak opnieuw programmeren zodat u zou het programma eens en opnieuw in te schakelen in- en uitschakelen handmatig. Maar we programmeurs ook; ons brood en boter rond dingen niet werkt? Een all-black-beeld weergeven did naar de truc van het uitschakelen van het teken "". Ten derde, ik vernieuwen het teken elke 30 seconden om tijdige voorspelling, maar duurt het 1-2 seconden te werken van het teken. Ik verzenden veronderstel dit is omdat het teken bevat een eigen CPU en programmering, of omdat ik niet probeert te spelen met functieargumenten. Hoewel de interne loodgieterswerk waarschijnlijk van invloed op de snelheid van de update, en zag ik voorbeelden van verlading van alle de synchronisatie en het opvlammen van de lichten Raspberry Pi compleet met verschillende, meer low-level tekenen, dat zou te tijdrovend voor me om met moeite. Ik weet ook niet hoelang het teken zal duren wanneer twee keer een minuut opnieuw geprogrammeerd. Tot nu toe ben ik heel blij met het teken van de Bright LED die ik gebruikte en haar API.

Font Rendering

Ik verwacht nul om tijd te besteden van font rendering, maar het duurde veel, veel langer dan ik had verwacht. Nou, ik was van plan om te schrijven van mijn eigen eenvoudige font rendering-engine, maar verschillende verborgen rotsen zaten te wachten voor mij onder het dunne zand. Eerst kon ik niet vinden een "raster"-lettertype dat is gewoon een verzameling van bitmaps. Uiteindelijk heb ik "korrelig" TTF lettertypen downloaden en hen te renderen met FontConfig bibliotheek. Ik wilde niet het teken dat een heleboel afhankelijkheden, dus ik pre-rendeded de glyphs op mijn Pi in een kant-en-klare manier met dit script, en schreef een kleine bibliotheek om te werken hen. Het leukste deel is dat ik gemakkelijk nieuwe glyphs, zoals regenval indicatoren toevoegen kon. Wij ook een heleboel font rendering voor verleend nemen, zoals uitlijnen naar midden, woord verpakken, spatiëring. Ik uitgevoerd sommige van hen op een zeer eenvoudige manier (in Ruby!) maar ik denk dat een paar meer functies me ragequit ten gunste van een echte font rendering bibliotheek in plaats daarvan maken zou.

Toegang tot Muni voorspellingen

Een andere reden waarom mij chose Ruby was de Muni bibliotheek in Ruby, kant-en-klare om voorspellingen van het NextBus systeem. Of zo ik dacht: de bibliotheek miste sommige functies, zoals raffinage routes of het krijgen van voorspellingen voor alle routes van stilstand (dit is wat een Muni teken wordt weergegeven). Ook trok hij in de hele Rail stack alleen weer te geven van de tijd fraai opgemaakte tekenreeks! (zoals, converteren interval in seconden aan iets fancy als "meer dan 1 uur"). Ik vaste sommige van deze dingen, en het juweel met de oorspronkelijke bron voor uw gemak gebundeld, omdat het was makkelijker dan het afsplitsen en in een officiële repository toe te voegen.

Opgeven routeConfig!

Blijkbaar, officiële Muni monitoren werken in dezelfde bewoordingen: routeConfig is een van de opdrachten van de API van NextBus dienst.

Anyway, NextBus systeem heeft een leuke API, die schijnbaar vrij is te gebruiken als het gebruik is beperkt of gedistribueerd onder cliënten. Een spawn van deze site, nextmuni.com is gewijd aan SF Muni. Het enige wat ik niet vind was de werkelijke namen van de

Weerbericht ophalen

Oh, Nou, hier komt het makkelijke gedeelte,"Ik dacht toen ik klaar met alles, en besloten om te gooien in de voorspelling. Ik was verkeerd in een zeer interessante manier. Blijkt, weer voorspelling dat API 's zijn meestal niet gratis. De websites die ik op de top van Google gevonden zoeken alle vereiste aanmeldingen en met inbegrip van uw persoonlijke sleutel tot alle API-aanroepen. Velen hadden vrij beperkte versies maar vereist betaling voor elk uur prognose-- en ik was vooral geïnteresseerd in voorwaarden op een specifieke plaats op een bepaald uur van de dag (San Francisco weer is niet erg stabiel). Niet dat ik ben tegen betaalde diensten, per se, of naar webpagina's met regexps parseren, maar ik hoef niet dat veel van hen te betalen, kan ik? Ik ging met een vrije regering weather.gov dienst, die eigenlijk soort van cool ondanks de webdesign van de vorige eeuw is. De service is beperkt tot de VS, maar San Francisco Muni voorspellingen zijn niet handig buiten het land. Om het te gebruiken, moet u een link naar de XML-tabel opgeven voor uw stad/gebied, die er als volgt uitzien: http://forecast.weather.gov/MapClick.php?lat=37.77493 & lon =-122.41942 & FcstType = digitalDWML. Ik niet het gebruiken van hun API, want het is een volwaardige zeep, en is niet niemand tijd daarvoor kreeg.

Gerelateerde Artikelen

DIY Home Decoration: How to Make Quilled Shell Wall Decor

DIY Home Decoration: How to Make Quilled Shell Wall Decor

Quilled shell muur decor is een uniek en een interessant idee dat kwam voor de geest, toen ik zat te denken van ideeën voor mijn DIY Home Decoratie Project. Omzetten van een alledaagse kamer in een levendige woonruimte kan zeer gemakkelijk worden ged
DIY Home Automation voor Beginners.  Absoluut geen codering of solderen vereist.  Android/Arduino voor het schakelen van dingen in- en uitschakelen

DIY Home Automation voor Beginners. Absoluut geen codering of solderen vereist. Android/Arduino voor het schakelen van dingen in- en uitschakelen

Deze instructiable is gericht op de absolute beginner. Als u kunt omgaan met een scherp mes zonder snijden kunnen uw vingers van u maken en aanpassen van deze domotica controller.Deze instructies zijn ook on-line op www.pfod.com.au onder Android / Ar
DIY handheld LED lamp

DIY handheld LED lamp

Een lamp houdt groot belang in iemands leven. Ze zijn de bron van licht en ding voor u zichtbaar maken. Wanneer licht van een lamp wordt uitgestoten, het reizen in alle richtingen en na het slaan van een oppervlak dat het gaat om onze ogen en het obj
Maak een LED acryl teken

Maak een LED acryl teken

Ik maakte dit LED acryl teken voor mijn buurman, die de eigenaar van "Rob's hout Shop - opvang voor volwassenen is". Check out mijn video en volg deze instructies om een zelf te maken!Stap 1: Ontwerp een logo en het te snijden in het acryl. Ik o
DIY goedkope LED TV Backlight - een leken versie

DIY goedkope LED TV Backlight - een leken versie

Hallo Makers,Als u zich afvraagt maakt wat deze DIY verlichting instructable zo speciaal wanneer er zijn al zo veel beschikbaar, lees op:).Tegenwoordig heeft iedereen een TV, om precies te zijn een LED, LCD of Plasma TV. Dus waarom moet een TV verlic
Eenvoudige LED Backlit teken

Eenvoudige LED Backlit teken

In dit Instructable, zal ik u tonen hoe te bouwen van een zeer eenvoudige, maar mooi uitziende LED backlit teken.Ik bouwde het project alleen met dingen die ik had liggen rond mijn elektronische winkel zodat de materialen die ik gebruik niet de juist
Zelfgemaakte Raspberry Pi goedkoop acryl gratis geval DIY Home Theater PC HTPC

Zelfgemaakte Raspberry Pi goedkoop acryl gratis geval DIY Home Theater PC HTPC

Zelfgemaakte Raspberry Pi acryl geval erg goedkoop voor DIY Home Theater PC HTPC door doen uw selt,Deze mooie HTPC werken alle films HD 720 of 1080, Raspberry Pi module ongeveer 35 USD, gratis geval door DIY acryl, voedingen, draadloze muis, toetsenb
LED verlichte teken Intro

LED verlichte teken Intro

Heb je ooit wilde maken van een teken dat oplicht en gloeit met behulp van LED's? Nou, zo ja, volg mijn instructies over het maken van een succesvolle teken dat ziet er cool en is ook functioneel. Ik heb gemaakt voor mijn specifieke project, een LED
DIY Home Decor

DIY Home Decor

DIY Home Decor ideeën
DIY motorfiets LED Daytime Running Lights (DRL) mod

DIY motorfiets LED Daytime Running Lights (DRL) mod

UltraBright™ Design serie Bright White LED strip verlichting voor deze onderscheidende DIY motorfiets LED DRL mod.Als u wilt installeren de lichten, start door het snijden van de LED strips op maat. Vervolgens soldeer de strips samen en zet ze in een
Zelfgemaakte Raspberry Pi geval projecten DIY Home Theater Computer HTPC Aluminium CNC frezen

Zelfgemaakte Raspberry Pi geval projecten DIY Home Theater Computer HTPC Aluminium CNC frezen

Zelfgemaakte Raspberry Pi geval projecten DIY Home Theater Computer HTPC Aluminium CNC frezenSingle-board microcomputers zoals de Raspberry Pi 2 maakt het goedkoper en gemakkelijker dan ooit om te leren over computers.Simpel gezegd, is de Raspberry P
Klasse van 2013 LED banner/teken

Klasse van 2013 LED banner/teken

ik wilde maken van onze klasse steekt meer dan de anderen bij de pep rallys, dus heb ik besloten om te bouwen van een LED banner/teken dat klasse van 2013 zou weergeven.Stap 1:Materialen:LED'sschuimkernhoutschroevendraadAA batterijen en houderlichtsc
DIY Home Made 6W LED lamp

DIY Home Made 6W LED lamp

mijn doel met dit project was het creëren van een low-cost energiebesparende LED-lamp voor sloppenwijken. Spaarlampen zijn duur hier in Pakistan. Chinese bollen rating van 5 tot en met 7 watt kost ongeveer 6 tot 8 US$ die niet betaalbaar voor gezinne
DIY groot LED verlicht 7 Segment Display

DIY groot LED verlicht 7 Segment Display

een vriend van mij die middelbare school wetenschap leert in opdracht wil maken van een gevaar stijl quiz game controller met een grote timer display en knoppen voor spelers. De beste soort timer die ik kon bedenken was een grote 7-segment display me