Mrugająca dioda LED

Z RoboCity

Prosty projekt elektroniczno-programowy na start.

Do czego zmierzamy

Chcemy uzyskać taki efekt jak na filmie poniżej, czyli swobodną kontrolę nad jednym z cyfrowych wyjść Maliny. Stan wyjścia będziemy testowali diodą LED.

Trochę elektroniki

W technologii SMD części są naprawdę miniaturowe (najmniejsza kratka ma 1cm). Po lewej opornik -- element pozwalający ograniczać przepływ prądu. Kierunek podłączania nie ma znaczenia. Po prawej dioda LED. Dioda ma specjalnie zaznaczony styk, który musi być podłączony do masy (tutaj zielony marker bliżej lewego boku). Podłączenie tego styku do "plusa" może ją łatwo uszkodzić.

Żeby przygotować naszą LEDową "sondę" kładziemy elementy jak na zdjęciu obok. Następnie -- najlepiej dociskając z góry ramionami pęsety każdy z elementów -- dotykamy obu środkowych styków jednocześnie rozgrzanym grotem lutownicy z niewielką ilością cyny (im krócej tym lepiej, sekunda powinna starczyć). Stopiona cyna powinna spłynąć między elementy i stworzyć połączenie.

Teraz przygotowujemy krótkie odcinki kabelków miedzianych. Najlepiej jeśli jeden z nich, który przylutujemy od strony masy diody led, był czarny -- tego koloru typowo używa się do oznaczania masy i przyjęcie takiej konwencji ułatwi nam szybką orientację, który kabel gdzie przytknąć. Kabelki mniej więcej takiej długości jak na filmie. Ściągamy izolację na małym odcinku na końcach (2mm wystarczy) i cynujemy rozgrzaną lutownicą jeszcze przed lutowaniem do pary dioda-opornik. Takie wstępne pocynowanie końcówek ułatwia potem lutowanie do elementów SMD.

Kable układamy w linii ze zlutowaną wcześniej parą elementów i podobnie jak przed chwilą wkładając rozgrzaną lutownicę w środek z odrobiną cyny łączymy razem.

Na koniec na całość możemy nałożyć przeźroczystą rurkę termokurczliwą i zatopić w niej elementy. Sonda gotowa. Jeśli wszystko zrobiliśmy dobrze podłączona do dwóch baterii "paluszków" powinna się zaświecić. Bateria ma masę na od strony płaskiego końca, a biegun dodatni tam gdzie znajduje się dodatkowa wypustka.


Gdzie tą sondę podłączyć?

Podłączanie czegoś do płytki Maliny wywołuje konkretne obciążenia elektryczne. Złącze 40 pinowe nie zostało pomyślane jako "publicznie" dostępne (takie jak np. różne złącza w komórce) i zakłada się, że korzysta z niego świadomy użytkownik, który wie co robi. Łącząc przypadkowe piny bez wielkiego wysiłku można spalić płytkę i w ten sposób pozbyć się jej. Biorąc pod uwagę, że na nowe dostawy Maliny Zero trzeba czekać zwykle około miesiąca, efekt może być średnio przyjemny.


Oczywiście od razu dodajmy, że lepiej spalić płytkę i się czegoś dowiedzieć niż siedzieć i patrzyć jak inni się bawią. Najwygodniej bawić się nie psując sobie narzędzi, ale bez przesady! Nauka wymaga poświęceń ;)

Piny złącza 40 pinowego liczy się zaczynając od kwadratowego (numer 1), a dalej "zygzakiem". Poniżej numeracja z zaznaczonym miejscem podłączenia diody tak jak na filmie powyżej.

[1]    2
 3     4
 5     6          <-- masa  (tu podłączamy kabel masy sondy z diodą)
 7     8          <-- wyjście 14 procesora  (tu podłączamy biegun sondy)

    .
    .
    .

 37   38 
 39   40 


Włączanie i wyłączanie diody w pythonie

# coding: utf-8

# wczytujemy moduł pythona zawierający funkce obsługi czasu 
import time                              

# a w tym module mamy funkcje do obsługi wyjść złącza 40 pinowego; żeby było prościej zapisywać kod nazwiemy go krócej i bez dużych liter 
import RPi.GPIO as gpio       

# moduł RPi.GPIO może używać dwóch różnych sposobów numerowania pinów; nas interesuje w tej chwili wygodniejszy 
# tryb BOARD (z ang. płytka), w którym numery pinów w module zgadzają się numerami używanymi w projekcie płytki Maliny 
gpio.setmode(gpio.BOARD)

# będziemy się bawić wyjściem 14 procesora i używać go do wysyłania sygnałów (można też czytać piny)
gpio.setup(14, gpio.OUT)  

ile_powtorek = 0   # zmiena, która będzie odliczała kolejne powtórki

while ile_powtorek < 100:   # while powtarza instrukcje tak długo jak długo spełniony jest podany warunek

    gpio.output(14, 0) # ustawienie napięcia 0V na wyjściu 14, dioda gaśnie
    time.sleep(0.5)    # pół sekundy czekamy

    gpio.output(14, 1) # ustawienie napięcia 3.3V na wyjściu 14, dioda zapala się
    time.sleep(0.5)    # znów chwilę czekamy

    # zwiększamy zmienną ile powtórek o jeden -- w końcu osiągnie ona wartość 100 i while przestanie powtarzać
    ile_powtórek  = ile_powtorek + 1

# porządki, czyli przywracamy pierwotne ustawienia wyjść (dobry zwyczaj)
gpio.cleanup()