Fyra kanal 'Fake TV' med Arduino eller Attiny
Medan jag jobbade på en "hemma" simulator bilaga larmsystem, en av de saker jag ville göra är att ha en TV på och från tid till annan ändra kanal. För att jag hade en IR-Led ingår i projektet och det fungerade bra.
Men TV är energi guzzlers och idén att ha en TV på standby för längre perioder på semester också riktigt tilltalar inte mig.
Så jag tänkte att kanske kan jag simulera en TV med LED ljus.
Varför var jag inte förvånad som sådan produkt redan existerande, träffande kallas "fakeTV" det är en enhet som använder 7-12 lysdioder att efterlikna flimmer på TV. Det kan ställas in att reagera på ljus (dvs inkoppling i skymningen).
Priset - beroende på modell - är från 25 USD till 30 USD 40 USD för deras senaste modell som simulerar en 40" platt-TV. Nu naturligtvis risken med det är att du faktiskt kan locka en inbrottstjuv som efter din förmodligen "stora platt-TV"
Jag har hört blandade recensioner. Målet är att du sätter den någonstans där det inte syns men fortfarande har något att projicera sitt ljus på (mörkar, gardiner). Självklart gardinerna får inte vara för tjock och själva enheten bör inte vara synlig från utsidan.
En av de klagomål jag hört var att "scener" spelade upprepas alltför ofta och att en potentiell inbrottstjuv som "hölje gemensamt" skulle snart se att det var falska. Han kanske förstås fortfarande inte vill ta en risk och gå till en grannar hus. FakeTV - om du kolla deras hemsida är verkligen liten. Inte större än en kopp kaffe som det verkar
Eftersom jag hittade priset lite brant för 7-12 lysdioder (beroende på modell), började jag tänka hur man konstruerar en själv. Att döma av deras hemsida deras enklaste modell har en blå, en grön, en röd och 4 vita LED, så, 4 kanaler
Perfekt tänkte jag på en Attiny, men det har bara 5 utgångar förmodligen alla 5 kan användas som SoftwarePWM (PB0 och PB1 kan användas som hårdvara PWM, PB4 skulle kunna användas som hårdvara PWM om analogWrite skulle genomföras för det klämmer fast i kärnan), det vill säga om du lämnar Pin 1 (Reset) som är. Jag gillar inte jävlas med stift 1.
Jag kom på en "mini moodlight" med en Attiny85 med 3 lysdioder och en moodlight med ett Attiny85 som använde 3 RGB lysdioder. Det finns faktiskt en hissa av Moodlights på instructables. Moodlights naturligtvis ändra deras färg mycket gradvis, medan med en TV som kan vara mer abrupt, men det är en fråga om programmering.
Sedan kom jag på någon ('modeller') i adafruit forum som ägde en "fakeTV" och hade beslutat att också bygga en själv... med en Arduino. Intressanta var att han använde 6 lysdioder istället för 12 och hävdade att få bra resultat med det. Jag var emellertid mer bekymrad över mängden stiften han använde i stället för beloppet av lysdioder. Han använde Jo 6 stift, men eftersom han verkade skriva samma värde varje gång till sin 2 gröna lysdioder och sin 2 röda lysdioder, jag kunde bara sätta dessa lysdioder parallellt respektive. Det skulle även spara mig 2 stift, att vara kvar med behöver igen endast 4 stift (röd grön blå och vit), vilket är OK för en Attiny85. Jag har sedan fortfarande 1 stift kvar för att tillfoga någon sort av utlösaren.
Arduinoen har nu som sagt ovan, 6 PWM stift och Attiny endast 2 (PB0 och PB1). Förment PB4 är också en PWM stift, men det finns inga genomförandet av kommandot "AnalogWrite". Så jag funderar på en programvara PWM.
Med programvara PWM i princip vad du gör växling en Digital pin mellan hög och låg med intermittensen bestämma "analogWrite".
Detta skapar emellertid ett annat problem som processorn skulle vara främst upptagen med "väntar" och dessutom kan du bara hantera en pin på gång. Det ögonblick du gå till en annan PIN-kod, lämnar du den tidigare stiftet antingen högt eller lågt. Även om du bygga en tillståndsdator har som inte alla dessa problem
Kalla mig dum för att vilja använda en Attiny85, som en pro mini är mycket billigt i dessa dagar och med hjälp av en skulle lösa problem, men jag bara inte känner rätt att använda en 14 digitala pin, 6 analoga pin styrkort för en krets som behöver 4-5 stift.
Så jag fick hitta en annan lösning.
PWM stift PB0 och PB1 styrs av timer 0.
Tittar på möjliga PWM utdata pin alternativ ATtiny85 stöder:
Utgång PB0: OC0A eller /OC1A.
Output PB1: OC0B eller OC1A.
Utgång PB2: ingen.
Output PB3: /OC1B.
Utgång PB4: OC1B.
Vi har redan fått OC0A på PB0 och OC0B på PB1.
Så hur får vi 4 PWM-utgångar
ATtiny chip innehåller två timer/räknare, Timer/Counter0 och Timer/Counter1, och varje av dessa ger två PWM kontrollapparater, OCR0A, OCR0B, OCR1A och OCR1B. Så i teorin bör vi kunna få fyra PWM utgångar.
Men titta på tabellen ovan av pin uppdrag det är klart att vi inte kan få både OC0B och OC1A samtidigt, även om det finns två stift: PB3 och PB4.
Lyckligtvis är lösningen ganska enkel; vi definierar ett avbrott inträffar när registret OCR1A matchar Timer/Counter1, och en annan avbrott inträffar när räknaren flödar över; dvs når 00 igen. Vi använder TIMSK registret, så i princip avbrottet inträffar på en jämför och dataspill.
Jag byggt något på en skärbräda och som verkade fungera, så var det dags att bygga något tåligare.
BOM
4 x 330 Ohm motstånd
5 x 150 ohms motstånd
1 x 10 k Ohm motstånd
1 x 470kOhm Resistor (valfritt)
6 x röd LED
6 x grön LED
6 x blå LED
9 x vit LED
1 x phototranistor, fotodiod eller LDR (valfritt)
4 x BC547 (eller andra byta transistor NPN)
7805
7812 (valfritt)
1 x Attiny85
1 x 8 pin DIL uttag
ELLER
Arduino/RBB Arduino
Märk: kretsen nämner 220 Ohm motstånd men de var inledande gissningar när jag inte hade kontrollerat lysdioder framspänning ännu.
Bara en kommentar om 7812: du behöver en ingång på minst 14,5 volt för att. ett NÄTAGG av 14.5 volt är sällsynt. Även om vissa wal-vårtor ge mer om de inte är anslutna till en last, sjunker spänningen ofta på belastning.
Om du har en 12 volts PSU, kan du utelämna 7812.
Om att få 12 volt/14.5 volt från en walwart visar sig vara ett problem, överväga en 75 eurocents(!) 5 till 12 Volt converter