Menu
O mnie Kontakt

Symulator telewizji kablowej z lat 90. oparty na Raspberry Pi (film, 18m)

Kabelowa telewizja w latach 90. była zarówno ciekawa, jak i dziwaczna, ale z pewnością zajmuje specjalne miejsce w historii telewizji. W tym okresie miało miejsce wiele momentów definiujących pokolenie oraz wydarzeń zmieniających kulturę, co sprawia, że trudno przecenić wpływ lat 90. na telewizję kablową. Telewizja kablowa zyskała na popularności pod koniec lat 80. XX wieku, aby szybko ustąpić miejsca usługom streamingowym w latach 2000, więc lata 90. były jej złotą erą. Autor nieustannie myślał o tym, jak wiele zmieniło się w mediach, które konsumujemy, i postanowił stworzyć symulator telewizji kablowej z lat 90., aby na nowo przeżyć te chwile. Idea wzięła się po tym, jak stworzył film o symulatorze telewizyjnym, który zbudował, zwanym Field Station 42. Komentarze od widzów wykazały tęsknotę za funkcjami przypominającymi telewizję kablową z lat 90, więc po wysłuchaniu ich sugestii, zbudowano pełnoprawny symulator kablowy. W filmie pokazuje, co zrobił, jak to działa i prowadzi widzów przez symulację kablową z lat 90., a także demonstruje symulacje stworzone przez innych użytkowników przy użyciu tego samego oprogramowania.

Wczesne systemy kablowe miały fizyczną reprezentację w postaci skrzynki kablowej, która była potrzebna, ponieważ telewizory sprzedawane w latach 80. miały tylko 13 kanałów VHF. Autor postanowił zaprojektować własną skrzynkę i wydrukować ją w technologii 3D. Aby stworzyć funkcjonalną replikę, musiała ona pomieścić klawiaturę numeryczną, wyświetlacz 7-segmentowy oraz Raspberry Pi. Po wielu próbach i wydrukach autor zaaranżował wszystko tak, aby dobrze dopasowało się do Raspberry Pi 5 i innych komponentów. Jeśli ktoś chce wydrukować swoją skrzynkę, mogą znaleźć modele 3D i instrukcje na GitHubie. Następnie autor podłączył skrzynkę kablową do FieldStation 42 i napisał pętlę kontrolera do obsługi interakcji użytkownika i aktualizacji wyświetlacza. Po kilku modyfikacjach kodu, napotkał ograniczenia oryginalnej symulacji nadawania, które wymagały bardziej złożonego mechanizmu komunikacji. W rezultacie wprowadził nowe możliwości do FieldPlayer, umożliwiając zewnętrznym programom bezpośrednią zmianę kanałów oraz dostarczanie informacji zwrotnej.

Gdy wszystko działało poprawnie, autor złożył urządzenie i dodał ostatnie poprawki. Następnie przystąpił do zorganizowania symulacji kanałów telewizyjnych. Najpierw zbierał treści, a następnie skonfigurował stacje telewizyjne, co wymagało długich dyskusji na GitHubie o specyfikacji systemu. Stworzenie elastycznego systemu harmonogramowania okazało się bardziej pracochłonne niż pierwotnie zakładano. Autor podzielił dzień na bloki czasowe, w których zadano dla każdego bloku określone tagi odnoszące się do zgrupowanych folderów. Dzięki tym tagom i odpowiednim strategiom reklamowym, twórca mógł symulować realistyczny układ programowy, spełniając wymagania telewizji kablowej z lat 90. Dodał też możliwości ograniczeń czasowych dla niektórych treści, aby były one odtwarzane w odpowiednich terminach.

W serii symulacji autor zaprezentował własne stacje kablowe, które przywołują estetykę lat 90. Powstały kanały filmowe oraz stacje z programami dla dzieci, z sitcomami w późniejszych godzinach nocnych. Umożliwiły one widzom nostalgiczne przypomnienie sobie o programach, które tak bardzo kochali jako dzieci. Doświadczenia z lat 90. przyniosły wiele radości z wyborów telewizyjnych, które były nowością w tym czasie. Mimo kilku niedociągnięć, symulacja działa całkiem dobrze i w całości przywołuje klimat telewizyjnej kablówki. Na czas pisania tego artykułu, film zgromadził 306930 wyświetleń i 13960 polubień, co pokazuje, jak bardzo widzowie doceniają pracę autora i jego inwencje twórcze.

Toggle timeline summary

  • 00:00 Wprowadzenie do znaczenia telewizji kablowej lat 90. w historii mediów.
  • 00:30 Dyskusja na temat nostalgii i zmieniającego się sposobu konsumowania mediów.
  • 00:48 Wprowadzenie projektu budowy symulatora telewizji kablowej lat 90.
  • 01:15 Przegląd budowy i funkcji dekodera telewizyjnego.
  • 01:50 Opis fizycznego wyglądu i komponentów dekodera.
  • 02:19 Podłączenie dekodera do FieldStation 42.
  • 02:49 Udoskonalanie funkcji komunikacyjnych dla lepszej kontroli użytkownika.
  • 03:13 Montaż gotowego dekodera.
  • 03:41 Proces zbierania treści do symulacji kablowej.
  • 04:35 Wdrożenie funkcji harmonogramu dla symulatora.
  • 06:00 Dyskusja na temat rozwoju elastycznego systemu harmonogramowania.
  • 07:20 Wprowadzenie strategii przerw i przyrostów harmonogramu.
  • 08:37 Wskazówki dotyczące harmonogramowania treści w zależności od pory dnia.
  • 09:18 Wycieczka po stworzonych kanałach telewizyjnych w stylu lat 90. dla symulatora.
  • 11:15 Obserwacje dotyczące treści telewizji kablowej lat 90. i jej nostalgii.
  • 12:53 Refleksja nad ewolucją telewizji od kabli do streamingu.
  • 13:18 Zachęta dla innych do spróbowania stworzenia własnego doświadczenia telewizji kablowej lat 90.
  • 17:00 Podsumowanie projektu odtworzenia doświadczeń telewizyjnych z dzieciństwa.
  • 17:37 Uznanie dla inspiracji i wkładu społeczności.
  • 17:51 Koniec filmu i podziękowanie widzom.

Transcription

Cable TV in the 90s was cool and kind of weird, but it definitely holds a special place in television history. There were so many generation-defining moments and culture-shifting events that it's hard to overstate how influential 90s cable actually was. Cable rose to prominence in the late 80s before rapidly falling off to streaming services in the 2000s, so 90s was kind of its golden era. I've been thinking about how much has changed about the media we consume and the ways we consume it, so I decided to build a 90s cable simulator so I could relive those moments. The idea came after I made a video about a broadcast television simulator I'd built called Field Station 42. In the comments, people seemed nostalgic about features they remembered from 90s cable. I released the code on GitHub, and as people from around the world started using it to build their own simulators, I started getting a lot of requests for cable-like features. So I got on board, and with their input, we built it out into a full-blown cable simulator. In this video, I'll show you what I did, how it works, and I'll give you a tour of the 90s cable simulation I built, then I'll show you some simulations that have been built by others using the same software. Early cable systems had a physical representation in the form of the cable box. This was needed because TVs sold through the 80s only had 13 VHF channels, so the cable companies had these boxes that could tune through the full range of channels. After looking at some vintage cable boxes, I decided to design my own and 3D print it. To make a functioning replica, it would need to house a number pad, a 7-segment display, the Raspberry Pi, and provide plenty of ventilation. I played around with the design a bunch, and it took a couple of prints to get everything the way I wanted, but it fits my Raspberry Pi 5 and the other components well. If anyone wants to print their own, I've posted the 3D models and instructions to GitHub, and I'll put a link in the description. Now it's time to connect the cable box to FieldStation 42. I wrote a controller loop to drive user interactions and update the display. The problem was that the original broadcast simulator only supported channel up and down commands, but we needed more control here. At the same time, people over on GitHub were also hooking new things up to FieldStation 42 like remote controls and other devices, so it needed a more complete communication mechanism. So I put new hooks into the FieldPlayer so external programs could direct tune the channels and the FieldPlayer will communicate status back. I also kept support for simple up and down commands. The status output lets external apps update their displays and provide user feedback. When everything was working right, I assembled the unit and put the finishing touches on the box. I think the finished product looks and feels convincing enough. Now I could change channels from the cable box and it worked the way you would expect it to. FieldStation 42 handles switching between the channels and making it seem like the programs had been playing the whole time. It was already starting to feel like cable TV. Now I needed to get the cable station set up. The first step to setting up a TV simulator is gathering content. I assembled the catalogs from digital content I already owned and then bolstered it with purchasing and digitizing some VHS and DVD content. U.S. law makes provisions for me to keep backups of content I own. Please check your own local laws and make sure you aren't violating copyright. You'll want to collect plenty of era appropriate commercials to keep the simulation accurate. Make sure you get a good variety. You'll also want to get bumpers, promos, and station identifications of various lengths. This helps in keeping the schedule accurate. The design philosophy for FieldStation 42 is to prefer convention over configuration and the convention for station content is that it's read from folders and then organized by tags based on the folder name. When it builds the catalog, it looks at all the video files in that folder and determines their duration, then stores that information in the catalog data store along with the tag. The tags are used later in the scheduling step to specify what should play during a specific time slot. Now it was time to start configuring the 90s cable stations, but this is where the first major limitation of the original implementation popped up. In the broadcast TV days, there were only a couple of kinds of channels in the US, commercial supported network style, and public broadcasting. You can see how simple the television landscape used to be in this channel listing from Denver in 1979, with only 6 channels in the listing. When you compare it to this listing from the same market in 1998, it's a much more complex landscape. There were channels that only played movies, community access channels, home shopping networks, music channels, block coverage channels like C-SPAN, and they all have unique scheduling requirements. The naive approach I had taken to scheduling originally wasn't up to the task and would need to be rewritten. We had long discussions on GitHub about this topic with folks weighing in from around the globe until I had a solid set of requirements and a design approach that I thought would work for most of the use cases. It took a while to implement and was a lot more work than I had expected, but the result was a much more flexible and robust scheduling system that could handle the challenges of 90s cable. Now let's talk about how the scheduler works with the catalog to generate schedules. It helps to think about the day as a set of time slots. In the station configuration, you assign one or more tags to a slot, where the tag references the folder name in your content directory. The scheduler references the tag and asks the catalog to provide the least frequently played content that matches the tag and puts that in the schedule. The content for a 30-minute programming block, like a sitcom, will typically only last about 22 minutes, so the remainder of the time is filled with commercials and bumps that are interleaved into 3 or 4 station breaks. With movie channels, though, the programming block is based on the movie's duration. The problem is that you still want promos and station identifiers between the feature content. To satisfy all these use cases, I introduced the concept of break strategies and schedule increments. With a traditional network channel, you would set up 30 minutes as your schedule increment and a normal break strategy. This will cause shows to buffer to the next 30-minute increment. A show with 22 minutes of content will be 30 minutes in duration after breaks and commercials. If it's 45 minutes of content, it will buffer to 60 minutes, and so on. With a movie channel, though, you could set a 5-minute increment and an in-cut break strategy. This will cause the shows to buffer to the next 5 minutes, and all the buffer content will stay at the end of the show, so it plays between the feature content. This was working great, but there was another important aspect to an accurate simulator. Scheduling matters. I wanted a way to let the scheduler know when it was or wasn't appropriate to play certain content. So after a few more coding and debugging cycles, I added the concept of scheduling hints. One thing this lets you do is specify content that should be restricted to specific months or date range. This lets you do things like show sports only during the right season, baseball in the summer, football in the autumn in the US, special television events like Olympics, Shark Week. My favorite feature is to use it to play holiday shows and commercials during the right time of year. You also want to control the time of day that some content is allowed to be played. For example, a beer commercial during a football game is accurate to the air. A beer commercial during Saturday morning cartoons is not accurate. So you can specify content that should be restricted to a time of day based on day parting. I also added a text-based UI that lets you configure and generate catalogs and schedules. You can still do everything via command line switches for automation, but this approach should be a little more intuitive for new users. Okay, now for a tour of my simulation. Instead of using real channels from the 90s, I decided to make up my own channels in a 90s cable style, complete with their own bumpers, branding, and promo videos. There's a movie channel called Movie TV that plays feature movies and then plays trailers from 90s movies in between to pad the time. There's a channel that plays nature shows and war documentaries called Learn TV. There's a channel that plays cartoons and kids shows during the day but switches to classic sitcoms at night. It's called Cool TV. There's another channel that just plays old game shows, and there's even a home shopping network. There's a channel that plays cartoons from the 90s all day, and there were some great cartoons in the 90s. At night, it plays more adult-themed cartoons. There's a channel that plays classic movies all week, then has marathons of classic westerns on the weekends. Of course, there's a music channel, but it's not very realistic because it plays actual music videos all day. There's a community access channel that plays some wild and unexpected content. Anyone remember when there was actual personal ads on cable TV? That was a real thing. Warp TV is one of my favorites. It plays science fiction shows, and building this channel reminded me that there were some amazing sci-fi in the 1990s. I found some old favorites I'd forgotten and several that I had missed altogether. The finishing touches come with a guide channel. I wrote it in Python TK, so it even has some old-school look. It plays background music and flips through images and text messages. Overall, despite some lingering rough edges, the simulation works pretty well. Classic sitcoms are playing when you expect them to be playing, and primetime dramas when you expect them. There are kid shows in the morning and there are soap operas during the day. There was some great content in 90s cable, but there were some downsides, and I put them in the simulator too. At night, many of the stations are flooded with commercials for 1-900 channels and cheap law firms. Some of the commercials are downright weird, like this 1-900 cry commercial. The movie channels show adult-themed content late at night. Some channels go completely off-air overnight, while many of them switch to infomercials. The daytime talk shows are pretty terrible, with a lot of ideas aging like milk. I'm not sure these were helpful to anyone. Another observation about cable in the 90s is how much of the content actually came from the decades before. Reviewing TV schedules from back in the day show that a big portion of the content at any given time was recycled from the 50s, 60s, 70s, and 80s. Despite all that, watching this reminds me of all the new things that 90s cable brought, and how it changed the way we consume media. All of the sudden, there was a lot of choices of what to watch on tons of new networks. It was definitely a decade of TV expansion, and led to even further changes of the streaming media platforms we have now. The cool thing here is that Field Station 42 lets you set up the simulation the way you remember it, the way it worked where you live. One of the biggest things I've learned here through working with people all across the world on this is that not everyone had the same TV experience. I've released all the software on GitHub as open source. Quite a few people from around the world have downloaded the code and made their own version. It takes a bit of technical know-how, but anyone who wants to can try it out. See how this contributor from Israel set their system up. This guy's great work is what inspired me to print a cable box and add a lot of the features we've talked about today. Watching TV was a significant part of my life as a child. It was the beginning of the 90s, and cable TV was something new and fascinating. It felt like this still remote control was my key to the world, not to mention a whole channel dedicated entirely to kids. I played with the idea of building a replica of the 90s TV, the one I grew up with, quite a bit, but I didn't know much about Raspberry Pi or programming. When I first came across Shane's YouTube video, it was a boost of encouragement for me. I took the old analog cable box that I had lying around unused and started working. I had one of those lying around, and I opened it just to get to its contents. What I actually needed from this box is that little 7-segment display, and investigating how that worked, basically, each one of those lines is a little LED light, and what I had to do is just figure out which pin is corresponding to which line, then it was not that difficult to connect those pins to the Raspberry Pi. So I started by connecting the 7-segment display to the Raspberry Pi using a 1K ohm resistor. I also connected those buttons of the original cable box to the Raspberry Pi, and also added an infrared receiver. When I was able to write the code to handle those buttons and infrared inputs, I used a program called LIRC to teach the Raspberry Pi the different buttons on the remote itself. I also asked a friend to design and print this 3D mount for the 7-segment display, so I'll be able to mount it just the way it was on the original cable box. After spending some time writing the code to drive the 7-segment display, the infrared remote and the buttons, I wanted this cable box to be able to output its signal to an analog TV. So what I did, I bought one of the HDMI to RF converters from AliExpress, and I just connected it to the Raspberry Pi using this HDMI flat cable, which you can also buy from AliExpress. I actually desoldered the original RF connectors from that converter, and re-routed them to the actual original outputs of the cable box, and that is how I was able to connect it to an old analog TV. And thanks to Shane and his collaboration on my project and his Field42 project, I was able to recreate my childhood cable TV. This is still a work in progress, and I'm now focusing on collecting all of those video materials to put in that box, and have it working the way I want it to be. So thanks a lot Shane, you really are the best. This project was originally based on a video that was released several years ago on YouTube, but since deleted, where the creator talks through a system that they made. I want to give credit to that original video as an inspiration for this video, and this channel. There are still some rough edges to work out, but with inputs from contributors over at GitHub and here on YouTube, I'll keep working on it. Thanks for watching.