Simple setup that makes working with electronics easier (film, 18m)
Majsterkowanie i nie tylko presents a new project that will surely make learning electronics much more enjoyable. In today's episode, viewers will be introduced to a device built on a universal board that changes the way we use breadboards. Until now, many people had to spend long hours assembling complex circuits to perform even the simplest functionalities. With the presented project, many of these troubles are eliminated. Now, it’s just a matter of connecting the right connectors to start enjoying programming without the need for complex configuration.
In the project, the author emphasizes the power supply of the device. It can be powered with a voltage ranging from 7 to 12 V, offering some flexibility in its usage. Once the power is connected, viewers can notice lights indicating that the system is active and ready to work. With access to 3 input-output ports and 2 single-bit pins, the author shows how easy it is to manage them and control the whole system with straightforward commands.
During the testing phase depicted in the video, the author explains step by step how to configure the ports as outputs and send appropriate commands to the system for it to respond to programmed instructions. This might seem simple but requires practice, making the project incredibly attractive for both novices and more advanced electronics enthusiasts. With the provided instructions and available files, anyone can try their hand at creating a similar device.
The episode also introduces additional interesting features, such as clock setup and pin configuration as clock outputs. This technology allows for building efficient circuits and programming them without hassle. The author emphasizes that everything is very convenient and understandable, and with numerous options the device offers, everyone can test their skills.
Finally, Majsterkowanie i nie tylko highlights critical statistics regarding the video. At the time of writing this article, the material has been viewed 23919 times and gathered 996 likes. This shows that the topic of electronics enjoys significant interest and is enthusiastically discussed in the Polish community. It's worth considering subscribing to the channel to stay updated on the latest projects and innovations in this field.
Toggle timeline summary
-
Introduction to the project that aims to make learning electronics more enjoyable.
-
Today's project's hero is built on a universal board.
-
Discussion on the type of device being showcased, likely a debugger.
-
Overview of the device's functionality, highlighting its simplicity.
-
Contrasting traditional breadboard usage with this more efficient setup.
-
The device allows for complex functionalities without extensive wiring.
-
Transition from theoretical explanation to practical testing of the device.
-
Connecting the power supply and discussing voltage options.
-
Explanation of using input/output configurations effectively.
-
Choosing command lines through a switch to select the desired output.
-
Configuring ports as outputs for controlling devices.
-
Demonstrating the process of setting up a clock output.
-
Necessary configurations to integrate a memory device.
-
Discussing how to read data from the memory and displaying it.
-
Setting a counter and confirming proper functionality.
-
Communicating with a microcontroller using the integrated SPI protocol.
-
Discussing the educational benefits of building such devices.
-
Closing summary on the practical applicability of the device.
-
Call to action for viewers to like and subscribe.
Transcription
Witajcie! W dzisiejszym odcinku zobaczycie projekt, dzięki któremu nauka elektroniki będzie znacznie przyjemniejsza. Tworzenie na płytkach stykowych różnych kontrakcji, takich jak na przykład to, albo to, zostanie ograniczone do minimum. Zapraszam do oglądania! Bohater dzisiejszego odcinka jest dosyć niepozorny i wyjątkowo został zbudowany na płytce uniwersalnej. Zazwyczaj trawi płytki, ale z tym układem akurat było tak, że ja nawet nie planowałem tego publikować. No a co to tak właściwie jest i w jaki sposób to rozwiąże problemy z płytkami stykowymi? Na razie to pod tytułem instrukcji możecie się pewnie domyśleć, że jest to jakiś debugger, zapewne obsługiwany ręcznie. Idea całego układu jest prosta. Podłączamy sobie coś tutaj do wyjścia i tym sterujemy, w praktycznie dowolny sposób. Z tą różnicą, że tutaj wszystko mocno siedzi na płytce zlutowane, więc nie musimy się bawić w niekontaktujące połączenia na płytkach stykowych. Co prawda płytkę stykową w większości przypadków jednak trzeba tutaj użyć, ale jedynie do umieszczenia naszego sterowanego układu. Układ wciskamy w płytkę i łączymy przewodami z tym. I to wszystko. Nie trzeba się bawić w żadne większe kontrakty, nie trzeba wtykać przycisków ani przewrótników. Dodatkowo ten układ pozwala w prosty sposób realizować całkiem złożone funkcjonalności, przy których musielibyśmy się trochę urobić, jakbyśmy chcieli to robić po prostu palcami wciskając przyciski. Żeby nie zanudzić Was czytaniem instrukcji od deski do deski, od razu przejdziemy do testów tego układu. Po prostu pokażę Wam, co można z tym zrobić. Więc instrukcję tak przy okazji będziemy sobie do niej zerkać, żebyście lepiej rozumieli, co ja tak właściwie robię tutaj w danym momencie. Oczywiście instrukcję i resztę plików macie dostępną pod linkiem w opisie, więc kto chce, to może sobie nawet od deski do deski to przeczytać. Zacznijmy od podłączenia zasilania. Można to zasilać napięciem od 7 do 12 V. Podłączę 12. I zaświeciły nam się tutaj od razu jakieś lampki. Mamy tutaj takie dosyć spore wyjście zasilania. Spore układów, można tego podciąć na raz. I tu można też sobie wybrać, jakim napięciem ta płytka będzie zasilała nasze układy. Teraz mamy wybrany 5 V. Można też wybrać 3.3 V. Nasza płytka ma 3 porty wejścia-wyjścia, po 8 bitów każdy, oraz 2 piny wejścia-wyjścia, które piny, jak sama nazwa wskazuje, są jednobitowe. Żeby sprawnie tym się posługiwać, potrzeba trochę praktyki, ale naprawdę nie jest to trudne. Całość opiera się o konfigurację wejścia-wyjścia, a później wysyłanie odpowiednich komend do tych wejści-wyjść. Zielone diody pokazują nam, pod którą lokację zostałyby teraz wysłane dane albo komenda. Możemy sobie wybierać, jak widzicie. Jak świeci się ta dioda, to dane poszłyby do tego portu. Jak świeci się ta, dane by poszły tutaj i tak dalej. Z pinami jest podobnie. Teraz dane by szły do tego pinu, a teraz do tego. Na początku po uruchomieniu wszystko tutaj jest z wejściami. I ta dioda nie powinna się świecić, tylko że tutaj mam trochę uszkodzony mikrokontroler. Upalił się jeden port wyjściowy, także nie mógł podawać plusa, ale mógł ściągać do masy. Więc po prostu podciągnąłem to rezystorem do plusa, żeby dalej to mogło działać. Wysyłaną komendę albo dane wybieramy na przełączniku. Mamy tutaj 8 bitów, całość jest 8-bitowa. Protek tutaj użyty ma 2 kilobajty pamięci programu i 128 bajtów RAM-u. Tutaj naprawdę nie potrzeba jakiegoś superkomputera, żeby tym sterować. Po drugiej stronie płytki mamy taką pajęczynkę klasyczną, jeśli chodzi o te płytki uniwersalne u mnie. No i jeszcze trochę drobnic SMD. Może nawet więcej niż trochę. Ogólnie budowanie tego to jest małpia robota, bo tutaj trzeba wiele razy powtórzyć taką samą czynność. No wiecie, sporo jest tutaj linii, które są tak naprawdę identyczne. Ale później po przejściu przez tą małpią robotę można samemu sobie podziękować, bo naprawdę ułatwia to pracę. Takie urządzenie. No dobrze, nagadałem się trochę, to przejdźmy wreszcie do korzystania z tego. Powiedzmy, że chcemy skonfigurować ten port jako wyjście, więc czytamy instrukcję. Co tutaj mamy napisane? Są jakieś komendy konfiguracji portów, więc chyba to o co nam chodzi. I mamy tutaj simple out. Widzimy, ustawia dany port jako wyjście. Dokładnie to o co nam chodzi. Słowo komendy to jest 1. A w jaki sposób się wysyła komenda do portu? Ustawiamy słowo komendy na przełączniku, ustawiam 1. I teraz przytrzymuję ten przycisk, którym normalnie się przełącza pomiędzy portami. I naciskam ten. I poszło. Teraz już ten port jest wyjściem. Czyli teraz, jak powiedzmy, ustawię sobie na przełączniku coś takiego. I to wyślę. Czyli teraz po wybraniu portu, po prostu wcisnę port EXEC. Zobaczcie, poszło. Mamy to już na porcie. Jakbym to wysłał do innego portu, to nic się nie dzieje, bo tutaj jeszcze nie ma konfiguracji jako wyjście. Zobaczmy, jak się konfiguruje piny. To jest praktycznie identyczne, tylko mamy tutaj dostępne inne komendy. Wybieramy pin, który chcemy skonfigurować, powiedzmy, że ten. I wysyłamy komendę. Mamy tutaj taką fajną komendę CLOCK, która umożliwia skonfigurowanie piny jako wyjście zegara, które później będzie podawało odpowiednią ilość taktów. Słowo komendy to jest 1. Takie samo jak wtedy przy porcie mieliśmy. Czyli wysyłam tą komendę. I teraz zgasły nam tu wszystkie diody. To sygnalizuje, że układ czeka na kolejny bajt konfiguracji. I mamy tutaj podane, w jakim formacie jest ten bajt. Coś takiego. Wybierzmy sobie jakiś wolny zegar, żeby gołym okiem było widać, że coś tu się dzieje. Szybkość zegara się tutaj tym ustawia. Dajmy ten multiplier na 10 milisekund. Czyli tutaj 1,1. A bity szybkości też ustawmy coś dużego. Na przykład 20. Mamy 20, czyli tutaj będzie teraz 10 milisekund razy 20. 200 milisekund. W takich odstępach czasu będzie zegar zmieniał stan. Teraz to potwierdzam. I poszło. Pin jest skonfigurowany jako wyjście zegara. Teraz zależnie od tego, ile tutaj ustawię na przełączniku, tyle taktów zegara tu pójdzie. Ustawiłem 1. Widzicie, poszedł jeden takt. Teraz jak ustawię 10, to idzie 10 taktów. I wszystkie diody zgasły. Co pokazuje nam, że układ jest czymś zajęty. I wtedy nie reaguje na to, co mu tu wstukujemy. Mam tutaj układ wyprowadzenia układów. Które postaramy się naszym urządzeniem wysterować. Powiedzmy, że na początek weźmiemy sobie tą pamięć. Mamy już naszą pamięć podłączoną i trzeba przyznać, że ten pajączek wcale nie wygląda tak źle. Uwierzcie mi, jakbyście chcieli zbudować układ do wysterowania pamięci na płycie stykowej bez tego układu, to wyglądałoby to dużo gorzej. A tutaj mamy elegancko podłączone wszystkie wejścia adresowe, wyjście danych, wejścia sterujące. Nawet mamy rezystory pull-up, którymi możemy sobie to wygodnie podciągnąć do plusa. To teraz trzeba to skonfigurować. Wyjście danych na razie pozostawię tutaj jako wejście. Czyli, że nasz układ będzie przyjmował dane z pamięci i wyświetlał, co tam siedzi. No a jeszcze wejścia adresowe pamięci trzeba na płycie ustawić jako wyjścia, żeby je wysterować. Zróbmy to sobie. Już mamy. Sterujemy wejściami adresowymi pamięci. To podajmy stan niski na Output Enable i widzimy dane, które odczytujemy z adresu 0 teraz. Możemy skonfigurować ten port wyjściowy jako taki port, do którego możemy dodawać albo odejmować wartości. Więc zróbmy to. Ustawmy teraz konfiguracji portu jako 2. Teraz zobaczcie. Mogę sobie dodawać albo odejmować od wartości adresu. I w ten sposób wygodnie odczytać całą pamięć. No może nie całą, bo ręcznie byłoby to żmudne. Ale kilka bajtów odczytamy. Jak widzicie bajt po bajcie z pamięci wychodzi. Można sobie to dodawanie przyspieszyć. No działa. Co już więcej mogę powiedzieć? Działa jak w zegarku. Odstrzała. Nie ma żadnych problemów z połączeniami. To zróbmy sobie jeszcze przykład z licznikiem, a później przejdziemy do jakiegoś protokołu szeregowego. Spróbujemy dogadać się z mikrokontrolerem za pomocą naszego zadajnika. Licznik już podłączony. Tu to już było dużo prościej. Mamy jedynie piny skonfigurowane. Obydwa jako wyjście zegarowe. Ten górny to jest reset, ten dolny to jest zegar. A tutaj jest 4-bitowe wyjście licznika. I ten licznik, jeżeli tutaj wszystko dobrze połączyłem, będzie liczył od 0 do 9. No to zobaczmy. Wygląda na to, że nasz licznik nam liczy. Widzicie? 8, 9 i 0. Elegancko, wszystko działa. Prawda, że wygodne? Naciskam sobie przycisk i patrzę co się dzieje. Bardzo przystępna forma nauki i obsługi nowych układów cyfrowych. Zobaczmy teraz jak działa reset. Po prostu przełączę się tutaj na ten górny pin. No i proszę, zresetowało się. Zapodam teraz tu więcej impulsów zegara, powiedzmy 15. No i sobie liczy. Elegancko, wszystko działa. Chciałem jeszcze pokazać trochę innych układów, ale już jak zwykle się przedłuża, więc od razu przejdziemy sobie do naszego mikrokontrolera. Naszła mnie jeszcze jedna myśl. Jak tutaj ustawię sobie np. 64 i zapodam tyle taktów zegara na licznik, oczywiście chwilę będzie trzeba poczekać zanim to się wykona, to teraz to co dostaliśmy tutaj to jest nic innego jak reszta z dzielenia, liczby 64 przez 10, czyli 4. Przejdźmy zatem do naszego mikrokontrolera. Ten układ możecie kojarzyć z poprzedniego odcinka. Tutaj siedzi sobie ATTiny13A i właśnie z nim spróbujemy się dogadać poprzez to złącze. Tutaj nasz układ będzie jeszcze większym ułatwieniem, ponieważ ma wbudowaną obsługę protokołu, o którym się gada z tym ATTiny, czyli obsługę SPI. Tak na marginesie mamy tutaj też obsługę I2C. Układ podłączony. Tutaj już obyło się w ogóle bez płytki stykowej. Podłączam zasilanie, no i trzeba to skonfigurować. Tutaj, żeby użyć tego SPI, trzeba trzeci port aktywować w nim specjalną funkcję drugą, czyli niby wyjście, ale jednak nie do końca. Ta konfiguracja będzie trochę inna. Teraz nam to wskoczyło i ustawiamy SPI. Słowo konfiguracji to będzie 2, więc tutaj nabijam do tego pinu i poszło. Teraz jak mi coś wysłał, to linia Chip Select idzie na stan niski. I chodzi zegar. Dane wychodzące z układu podejrzymy sobie na porcie drugim i trzeba go skonfigurować jako wyjście pamięci. W naszym układzie mamy pamięć, do której trafiają dane odczytywane przez SPI. Słowo konfiguracji to będzie 3 i teraz widzimy, że układ znowu żąda jakichś danych dodatkowych. To są dane nabijane do pamięci. Na tym porcie widać teraz adres, do którego te dane wyszły. Możemy go sobie zmieniać. A tym nabijamy dane. Teraz np. pod adres 0 nabiłem trójkę. Teraz z powrotem 0. Jak już wszystko nabiję, to stąd wychodzę. I teraz jak będę wysyłał dane do tego portu skonfigurowanego jako wyjście pamięci, to będę patrzył co jest pod danym adresem. Ustawię 16. Wyślę to. I teraz patrzę co jest pod adresem 16. I jakby to się zmieniło, to tą zmianę będzie tu widać. Adres 16 to jest środek pamięci i tam właśnie trafiają dane z SPI. Ostatnie do zrobienia to jest podanie zasilania na układ. Tutaj sobie to przepnę. Bo jednak tego portu użyć nie mogę, ale mogę użyć tego. Tym portem podamy zasilanie. Czyli ustawiam go jako wyjście. I podaję tam 1. Mamy już zasilanie. Mam nadzieję. Bo te przewody już lata świetności mają za sobą. Tak fatalnie to się tu trzyma. Takie dziadostwo. Miejmy nadzieję, że kontaktuje. Przeszliśmy już przez ten cykl. Reset tam jest na stałe zwarty do masy przełącznikiem. Teraz wejdziemy w typ programowania, żeby się dogadać z naszym układem. Tak wygląda sekwencja bajtów, którą trzeba tam nabić. To do dzieła. Teraz te bajty przez SPI wysyła się banalnie prosto. Ustawiam je na przełączniku. I po prostu wysyłam. Poszedł pierwszy. Układ nam już wypluł jakieś dane. Widzimy, że to się tu zmieniło na tym porcie. Który jest skonfigurowany jako wyjście pamięci. Spod adresu 16. Dajmy teraz kolejny bajt. Te instrukcje przechodzące w tryb programowania. Execute. Poszło. Dwa kolejne bajty nie mają znaczenia, więc wysyłam zera. Cyk i cyk. Poszło. To spróbujmy na przykład odczytać ID naszego ATTiny. Wyślijmy taką instrukcję. Na początek taki bajt. Później same zera powiedzmy. A tym trzecim bajtem wybieramy, który bajt ID odczytujemy. To też podajmy zero. I zobaczmy, czy to w ogóle działa. Czy to tutaj kontaktowało. No nie. Nie działa. Dobra, zmieniłem przewody. Wciąż badziewie, ale mniejsze badziewie niż tamto. Ogólnie nie polecam tego. Już lepiej sobie samemu zrobić tak, niż korzystać z tej chińszczyzny. Spróbujmy jeszcze raz odczytać to ID. Teraz wydaje mi się, że już ta komunikacja działa, bo mamy tu same zera. Dobra, to pierwszy bajt. Same zera. Teraz wybieramy, którą część ID odczytujemy. I powinno nam się tu pojawić. No proszę. Teraz wygląda to lepiej. Pierwsza część ID to powinno być 1E. I co my tu mamy? 1E. No zgadza się. Odczytajmy kolejną część. Ta sama komenda. Teraz adres 1. I co wypluje układ? 1E. 90. Jest 90. To jeszcze raz. Teraz adres 2. 07. 07. Wszystko się zgadza. Działa komunikacja. Zamiast się bawić z płytką stykową i nawalać bit po bicie, możemy to znacznie wygodniej zrobić tym. Ktoś się zapyta, no ale po co w ogóle takie rzeczy robić? Po co ręcznie próbować dogadywać się z układem? No jak na przykład chcemy zbudować programator, chociażby po prostu w celach edukacyjnych, żeby tam łutnąć trochę programowania, trochę tych różnych protokołów szeregowych, no to czemu nie? Dobrze jest zacząć właśnie od takiego czegoś. Ręcznie to zrobić, żeby dobrze poznać układ, jak on działa. Jak poszła nam ta komenda, to znaczy, że pójdą tutaj już wszystkie inne. I równie dobrze moglibyśmy cały ten układ teraz ręcznie odczytać albo zapisać. Jak podam tutaj komendę odczytu, wybiorę adres, no to wychodzą nam dane. Odczytałem teraz drugi bajt z pamięci. I to się zgadza, bo pamiętam, wcześniej już to odczytywałem i tam właśnie było C0, siedziało pod tym drugim bajtem. No i mamy tu C0 odczytane. I tutaj się zatrzymamy. Myślę, że już widzicie, do czego taki układ może się przydać. Moim zdaniem, czy to do nauki, czy do niskopoziomowego debugowania, świetna sprawa. Jeżeli się podobało, zostawcie po sobie łapy w górę, żeby nie przegapić kolejnych filmów i żeby kanał się rozwijał. Subskrybujcie go, a ja już się z Wami żegnam i do zobaczenia za jakiś czas.