Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mikroskop do lutowania oparty na Raspberry Pi Zero

ghost666 24 Apr 2017 19:33 31437 32
Computer Controls
  • Mikroskop do lutowania oparty na Raspberry Pi Zero
    Lutowanie elementów do montażu powierzchniowego może być często sporym wyzwaniem, szczególnie że niektóre elementy mają wyprowadzenia co 0,4 mm lub mniej, tak jak w przypadku obudów TQFP a liczba pinów sięgać może setek. W takich przypadkach dedykowany do lutowania mikroskop jest bardzo przydatnym narzędziem.

    Niestety tego rodzaju mikroskopy są dosyć drogie, dlatego też warto spróbować tego rodzaju przyrząd skonstruować samodzielnie. W poniższym artykule omówimy projekt tego rodzaju systemu z oparciu o Raspberry Pi Zero, które nadaje strumień wideo Full HD bezpośrednio do odpowiedniego monitora. System ten wykazuje pomijalne opóźnienia, co pozwala bezproblemowo lutować z jego wykorzystaniem. Jeśli do przesyłania strumienia wideo wykorzystać chcemy WiFi to wtedy opóźnienia są większe - około pół sekundy, co umożliwia jedynie wykorzystanie mikroskopu do do inspekcji polutowanych już płytek drukowanych.

    Dodatkowo, jeśli chcemy można mikroskop uczynić w pełni przenośnym. Dzięki dołączeniu zasilania bateryjnego i nadawaniu wideo przez WiFi mikroskop można używać jako w pełni przenośny system do inspekcji PCB i innych drobnych elementów.





    Krok 1: Narzędzia i potrzebne elementy

    Aby zbudować mikroskop potrzebować będziemy (ceny w przybliżeniu):

    1 x Komputer Raspberry Pi Zero [10?]
    1 x Moduł Raspberry Pi Camera [8?] - Jako że trzeba przerobić moduł z kamerą lepiej jest zakupić starszą wersję z sensorem 5 MP - autor nie daje gwarancji, że taka samą możliwość modyfikacji daje nowy moduł z sensorem 8 MP. Dzięki modyfikacji możliwe będzie ostrzenie na przedmiotach znajdujących się bardzo blisko.
    1 x Kabel do kamery dla Raspberry Pi Zero [2?] - RPi Zero ma inne gniazdo do podłączenia kamery, przez co potrzebny jest specjalny kabel-adaptor do podłączenia kamery do tego modułu.
    1 x Plastikowa suwmiarka - im tańsza tym lepsza.
    1 x Plastikowa linijka o szerokości mniejszej niż długość szczęk suwmiarki. Długość około 10..15 cm będzie odpowiednia.
    1 x Aluminiowa obudowa [4?] - do wykorzystania jako podstawka. Musi być to pudełko, aby móc włożyć do środka obciążenie, które umożliwi stabilne ustawienie mikroskopu.
    1 x Kabel HDMI i adapter HDMI do miniHDMI albo kabel HDMI-miniHDMI
    1 x Zasilacz 5 V z wyjściem microUSB. Wystarczy zasilacz o wydajności prądowej około 500 mA, jako że malina pobiera nie więcej niż 400 mA naet podczas nadawania strumienia wideo poprzez WiFi, ale najlepiej jest zakupić zasilacz 1 A dla bezpieczeństwa.
    1 x karta MicroSD [5?] - wystarczy i pojemności nawet 4 GB, ale dobrze aby była dobrej jakości i klasy 10.
    4 x Śruby M2 wraz z nakrętkami.

    Dodatkowo potrzebne będą:

    * Pistolet z klejem na ciepło.
    * Opaski zaciskowe.
    * Dremel lub podobne narzędzie z dyskiem do cięcia plastiku i wiertłem pod śrubki M2.
    * Brzeszczot lub inne narzędzie do przycięcia śrub do odpowiedniej długości.
    * Śrubokręt.

    Jeśli chcemy skonstruować przenośny mikroskop to dokupić musimy dodatkowo:

    1 x Ogniwo LiPo [8?] - pojemność zależy od tego ile chcemy używać mikroskopu po jednokrotnym naładowaniu. Obliczając czas pracy pamiętajmy, że przetwornica nie ma 100% skuteczności.
    1 x Ładowarka ogniw LiPo i przetwornica 5 V [20?] - Do tego projektu autor wykorzystał Adafruit PowerBoost 1000C, jednakże istnieją tańsze alternatywy.
    1 x 40-Pinowe złącz z goldpinami (męskie)
    1 x 40-Pinowe gniazdo do goldpinów (damskie)
    1 x 8-Pinowe złącze męskie
    1 x 8-Pinowe złącze damskie
    1 x Kawałek płytki uniwersalnej, na której zlutujemy ze sobą piny i gdzie zamontujemy ładowarkę i przetwornicę 5 V.
    1 x Opornik 1K
    1 x Opornik 10K
    1 x Tranzystor BC547 lub inny tranzystor NPN ogólnego przeznaczenia
    1 x Przełącznik chwilowy DPST

    Dodatkowo przydadzą się nam:

    * Trochę kabelka
    * Lutownica
    * Obcinaczki do kabli

    Całkowity koszt wersji stacjonarnej to około 30 euro, dodatkowe 30 euro potrzebne jest do skonstruowania wersji przenośnej mikroskopu.

    Krok 2: Przygotowanie karty MicroSD

    Przygotowania systemu dla RPi rozpocząć musimy od wgrania obrazu na kartę microSD. Najlepiej jest po prost pobrać aktualną wersję Raspbiana Lite z raspberry.org i wgrać ją na kartę SD. Jeśli robimy to pod Linuxem, to po ściągnięciu obrazu wystarczy wpisać w konsoli:

    Code: bash
    Log in, to see the code


    gdzie X to nazwa urządzenie pod jakim zgłasza się karta SD. Przed wgrywaniem obrazu upewnijmy się, że to urządzenie to na pewno karta microSD. Jeśli jest ona zamontowana to przed wgrywaniem obrazu musimy odmontować ją w systemie:

    Code: bash
    Log in, to see the code


    Pod Windowsem skorzystać możemy z narzędzi takich jak na przykład Win32DiskImager który posłuży nam do wgrania rozpakowanego obrazu na kartę. Więcej informacji o tym jak to zrobić znajdziemy w dokumentacji RPi.

    Z kolei pod MacOSem wykorzystać możemy program Etcher, który pozwala wgrać obraz na kartę microSD. Można też wykorzystać polecenie dd w konsoli, jednakże jego wykorzystanie w OS X jest trochę inne niż pod Linuxem.

    Konfiguracja Wi-Fi

    Po wgraniu obrazu na kartę microSD możemy skonfigurować połączenie z siecią WiFi i włączyć SSH.

    Po pierwsze musimy stworzyć pusty folder pod nazwą SSH na bootowalnej partycji systemu. Pod Windowsem partycja ta będzie najpewniej jedyną widoczną partycją, gdyż system ten nie widzi partycji ext4. Jeśli nie widzimy partycji na karcie wystarczy wyjąć i włożyć ponownie kartę do czytnika w komputerze.

    Następnie wewnątrz foldery tworzymy plik tekstowy nazywający się wpa_supplicant.conf, gdzie wpisujemy ustawienia połączenia bezprzewodowego. Plik wygląda następująco:

    country=<COUNTRY_CODE>
    network={
    ssid=<SSID>
    psk=<PASSWORD>
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    auth_alg=OPEN
    }


    * proto może przyjmować wartość RSN, WPA2, WPA lub WPA1 zależnie od konfiguracji sieci WiFi.
    * key_mgmt przyjąć może wartość WPA-PSK lub WPA-EAP.
    * pairwise przyjmuje wartości takie jak CCMP dla WPA2 lub TKIP dla WPA1.
    * auth_alg najpewniej przyjmie wartość OPEN, pozostałe opcje to LEAP i SHARED.

    Pozostałe parametry są dosyć zrozumiałem.

    Teraz odmontujmy/wyjmijmy kartę microSD z komputera i włóżmy do 'Maliny'. Teraz podłączmy wszystko do modułu - monitor HDMI, kamerę i finalnie zasilacz. Po kilku sekundach komputer powinien uruchomić się i połączyć automatyczne do zdefiniowanej sieci WiFi. Na ekranie powinniśmy zobaczyć numer IP, jaki komputer dostał od serwera DHCP w sieci.

    Krok 3: Połączenie poprzez SSH

    Jeśli nie podłączyliśmy monitora do komputera, to istnieje kilka innych sposobów na sprawdzenie jakie IP zostało przydzielone do komputera. Jednym z nich jest sprawdzenie danych na routerze - to gdzie znajdują się te informacje zależy od modelu urządzenia, więc nie będziemy tego opisywać.

    Innym rozwiązaniem jest skorzystanie z Linuxowego polecenia nmap:

    Code: bash
    Log in, to see the code


    Gdzie x.x.x.x to adres IP naszej sieci WiFi, na przykłąd 192.168.1.0 a y to liczba jedynek w masce sieciowej w zapisie binarnym. Na przykład dla maski 255.255.255.0 liczba jedynek wynosi 24 i taką wartość wpisujemy. W tej konkretnej sieci komenda wygląda następująco:

    Code: bash
    Log in, to see the code


    Zwraca ona następujące informacje:

    Starting Nmap 6.47 ( http://nmap.org ) at 2017-04-16 12:34 EEST
    Nmap scan report for 192.168.1.1
    Host is up (0.00044s latency).
    MAC Address: 12:95:B9:47:25:4B (Intracom S.A.)
    Nmap scan report for 192.168.1.2
    Host is up (0.0076s latency).
    MAC Address: 1D:B8:77:A2:58:1F (HTC)
    Nmap scan report for 192.168.1.4
    Host is up (0.00067s latency).
    MAC Address: 88:27:F9:43:11:EF (Raspberry Pi Foundation)
    Nmap scan report for 192.168.1.180
    Host is up.
    Nmap done: 256 IP addresses (4 hosts up) scanned in 2.13 seconds


    Jak łatwo możemy odczytać z skanu sieci lokalnej IP naszego Raspberry Pi to 192.168.1.4.

    Istnieje także Windowsowa wersja nmapa, podobnie jak w Mac OS X.

    Po uzyskaniu numeru IP 'Maliny' możemy połączyć się z nią przez SSH. W przypadku Linuxa i OS X wystarczy, że wpiszemy w konsoli:

    Code: bash
    Log in, to see the code


    Pod Windowsem skorzystać możemy na przykład z PuTTY.

    Domyślne hasło użytkownika pi to raspberry

    Krok 4: Konfiguracja systemu

    Opisane poniżej kroki to ogólna konfiguracja Raspberry Pi, jaką powinno się wykonać za każdym razem gdy uruchamiany nowy system. Po pierwsze musimy zmienić hasło użytkownika pi z domyślnego. Wpisujemy w terminalu:

    Code: bash
    Log in, to see the code


    Następnie ustawiamy wartości lokalizacji:

    Code: bash
    Log in, to see the code


    Następnie konfigurujemy strefę czasową:

    Code: bash
    Log in, to see the code


    I finalnie - aktualizujemy system:

    Code: bash
    Log in, to see the code


    Teraz możemy włączyć kamerę, aby to zrobić przechodzimy do konfiguratora:

    Code: bash
    Log in, to see the code


    W menu wybieramy Interfacing Options a następnie Camera option. Na pytanie czy uruchomić kamerę odpowiadamy Yes i wybieramy OK, wychodzimy z menu i restartujemy komputer. Po resecie i ponownym podłączeniu się do systemu po SSH przetestować możemy czy kamera została poprawnie włączona. Wpisujemy komendę:

    Code: bash
    Log in, to see the code


    W tym momencie powinniśmy zobaczyć na wyjściu HDMI obraz z kamery. Wyłączy się on po naciśnięciu Ctrl+C. Możemy przerzucać obraz w pionie i poziomie dodając przełączniki -vf lub -hf.

    Konfiguracja statycznego IP

    Aby ustawić statyczne IP Raspberry Pi musimy edytować plik /etc/dhcpcd.conf. Wykorzystać do tego możemy na przykład edytor nano:

    Code: bash
    Log in, to see the code


    Na końcu pliku dodajemy:

    interface wlan0
    static ip_address=<IP-RASPBERRY-PI>
    static routers=<IP-ROUTERA>
    static domain_name_servers=<IP-ROUTERA>


    W zmiennej domain_name_servers dodać możemy kilka serwerów oddzielając numery IP spacjami. Dodać możemy np. IP DNSa Google (8.8.8.8) jako zapasowy. Naciskamy CTRL+X aby wyjść z nano, y aby zapisać i Enter aby potwierdzić.

    Teraz restartować możemy klienta DHCP:

    Code: bash
    Log in, to see the code


    Sesja SSH może w tym momencie się zawiesić - nie ma się co przejmować, bo przecież zmieniliśmy IP komputera. Zmieńmy IP jakie wykorzystujemy do połączenia się z 'Maliną' po SSH i już.

    Krok 5: Instalacja GStreamera

    Istnieje szereg sposobów na jakie można przesyłać strumień wideo z Raspberry Pi po sieci, jednakże tym, który zapewnia najmniejsze opóźnienia jest wykorzystanie GStreamera. Aby zainstalować to oprogramowanie w konsoli wpisać wystarczy:

    Code: bash
    Log in, to see the code


    Pobranie i instalacja tego softu może chwilę zająć, gdyż program ma dosyć szerokie zależności. Po instalacji można od razu z niego skorzystać. Aby z jego pomocą przekierować obraz z kamery do wyjścia HDMI i po sieci WiFi naraz wystarczy w linii komend wpisać:

    Code: bash
    Log in, to see the code


    Spowoduje to wygenerowanie strumienia RTP na IP Raspberry Pi na porcie 5000, który może być odbierany z wykorzystaniem dowolnego komputera z zainstalowanym GStreamerem. W konsoli odbiorcy wpisać wystarczy:

    Code: bash
    Log in, to see the code


    Instalacja tego programu na dowolnej maszynie z Debianem przebiega tak samo jak opisano powyżej. Inne dystrybucje Linuxa także powinny mieć ten progrram w swoich repozytoriach. Istnieją też wersje programu dla systemów operacyjnych Windows i Mac OS X.

    Krok 6: Konfiguracja strumienia - automatyczny start przy bootowaniu

    Oczywiście, wykorzystując podaną w poprzednim kroku komendę możemy włączać transmisję w dowolnym momencie, jednakże wymaga to połączenia się do Raspberry Pi pi SSH i nie jest ogólnie zbyt wygodne. Lepiej jest skonfigurować komputer tak, aby automatycznie załączał przesyłanie strumienia wideo do odbiorników HDMI i WiFi po załadowaniu systemu operacyjnego.

    Aby zrealizować automatyczny start transmisji najpierw musimy korzystając z nano stworzyć plik:

    Code: bash
    Log in, to see the code


    wewnątrz którego wpisujemy dwie linijki kodu:

    Code: bash
    Log in, to see the code


    Przełączniki -vf i -hf przerzucają obraz w pionie i poziomie, jak napisano powyżej. Zależnie od ustawienia kamery względem obiektu mogą (acz nie muszą) one być konieczne. Po wpisaniu zawartości skryptu zamykamy nano zapisując plik. Następnie musimy nadać mu prawo do uruchamiania:

    Code: bash
    Log in, to see the code


    Następnie stworzyć musimy kolejny plik: plik usługi systemowej w systemd:

    Code: bash
    Log in, to see the code


    Do pliku tego kopiujemy następującą zawartość:

    [Unit]
    Description=Network Video Streaming
    After=network-online.target
    Wants=network-online.target
    [Service]
    ExecStart=/usr/local/bin/network-streaming.sh
    StandardOutput=journal+console
    User=pi
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target


    Zapisujemy plik i wychodzimy z nano. Przetestować działanie usługi możemy wpisując w konsoli:

    Code: bash
    Log in, to see the code


    Jeśli wszystko działa jak powinno to możemy dodać dodać wpis automatycznego jej uruchamiania przy starcie systemu:

    Code: bash
    Log in, to see the code


    Krok 7: Konfigurowanie plików jako tylko do odczytu

    Dużym problemem kart SD i generalnie dysków FLASH jest skończona liczba operacji zapisu i odczytu przed jego uszkodzeniem. Zaleca się, aby dane na karcie SD oznaczone były jako tylko do odczytu, co z jednej strony przedłuży żywotność karty, a z drugiej umożliwi nam wyłączanie urządzenia bez inicjowania poprawnej sekwencji wyłączenia systemu.

    Po pierwsze, aby to zrobić, musimy usunąć część pakietów. Skorzystajmy w tym celu z następującej komendy:

    Code: bash
    Log in, to see the code


    Dalej, musimy zastąpić rsysloga demonem syslogd busyboxa, który pozwoli nam na trzymanie logów z działania systemu w pamięci, a nie na dysku. Instalujemy taki syslog:

    Code: bash
    Log in, to see the code


    Teraz aby odczytać logi systemowe wystarczy skorzystać z komendy logread.

    Teraz przemieścić musimy /etc/resolv.conf do /tmp, który montowany będzie w pamięci, gdyż pozostać musi w on pozwalać na zapis:

    Code: bash
    Log in, to see the code


    Inny plik, który musi pozostać edytowalny to /var/lib/systemd/random-seed, zatem podobnie jak powyżej:

    Code: bash
    Log in, to see the code


    jako że plik random-seed nie jest normalnie generowany przy starcie systemu a zawartość /tmp jest ulotna, to musimy koniecznie wprowadzić do pliku usługi systemd0random-seed kilka zmian, najprościej jest edytować plik konfigurcyjny z pomocą nano:

    Code: bash
    Log in, to see the code


    na końcu pliku dodajemy:

    ExecStartPre=/bin/echo "" > /tmp/random-seed


    Dzięki czemu plik ten wygląda teraz tak:

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/lib/systemd/systemd-random-seed load
    ExecStop=/lib/systemd/systemd-random-seed save
    ExecStartPre=/bin/echo "" > /tmp/random-seed


    Teraz możemy przeładować usługę:

    Code: bash
    Log in, to see the code


    Kolejną zmianą jest edycja pliki /etc/fstab.

    Do wpisów dla partycji /dev/mmcblk0p1 oraz dev/mmcblk0p2 dodać musimy pzełącznik ro (read-only - tylko do odczytu). Następnie dodać musimy kilka wpisów, aby foldery /tmp, /var/log czy /var/tmp montowane były w pamięci operacyjnej. Po wprowadzeniu omawianych zmian plik wyglądać powinien mnie-więcej tak:

    proc            /proc   proc    defaults                0       0
    /dev/mmcblk0p1  /boot   vfat    defaults,ro             0       2
    /dev/mmcblk0p2  /       ext4    defaults,noatime,ro     0       1
    # a swapfile is not a swap partition, no line here
    #   use  dphys-swapfile swap[on|off]  for that
    tmpfs   /tmp            tmpfs   nosuid,nodev    0       0
    tmpfs   /var/log        tmpfs   nosuid,nodev    0       0
    tmpfs   /var/tmp        tmpfs   nosuid,nodev    0       0
    


    Finalnie edytować możemy plik cmdline.txt,

    Code: bash
    Log in, to see the code


    Na końcu pliku dodajemy opcje fastboot noswap ro, aby wyłączyć sprawdzanie systemu plików, swap i zmusić aby system plików samontowany był jako tylko do odczytu. Plik /boot/cmdline.txt powinien zawierać wtedy takie wpisy:

    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap ro


    Teraz możemy zrestartować system - zmiany powinny być widoczne po uruchomieniu się systemu.

    Komendy takie jak:

    Code: bash
    Log in, to see the code


    Powinny zwrócić odpowiedź, że "Read-only file system". Jeśli jest tak, to bezpiecznie możemy odłączać zasilanie od naszego Raspberry Pi w dowolnym momencie bez ryzyka uszkodzeń karty czy utraty danych.

    Aby tymczasowo zamontować system z możliwością dokonywania zmian wystarczy wpisać komendę:

    Code: bash
    Log in, to see the code


    Po wprowadzeniu zmian można zmienić ustawienie z powrotem na ro:

    Code: bash
    Log in, to see the code


    Jeśli chcemy wykonywać aktualizacje systemu, warto pamiętać, aby zamontować /boot i / z możliwością zapisu, gdyż to są miejsca, gdzie zapisywane są nowe wersje firmware i jądra systemu.

    Ten krok to ostatni etap zabawy z oprogramowaniem. Tera przejść możemy do konstrukcji mechanicznej i przeróbki optyki kamery.

    Krok 8: Modyfikacja modułu kamery

    Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero


    Aby kamera mogła pracować jako mikroskop musi ona być zdolna do obrazowania obiektów, znajdujących się bardzo blisko oraz zapewniać powiększenie. Aby było to możliwe musimy zmienić odległość pracy obiektywu.

    Obiektyw kamery jest wkręcony w jej obudowę i zabezpieczony niewielką ilością kleju. Musimy usunąć obiektyw, złapmy więc go delikatnie szczypcami i poruszajmy aby klej puścił. Gdy już stanie się to, to możemy bez problemu wykręcić obiektyw z obudowy kamery i oczyścić go z resztek kleju. Po dokonaniu tej operacji wkręćmy go w obudowę, ale jedynie odrobinę, aby tylko nie wypadł po odwróceniu do góry nogami modułu. Włączmy Raspberry Pi i podłączmy monitor, aby obserwować obraz z kamery.

    Musimy teraz ustawić obiektyw tak, aby kamera była w stanie złapać obraz na elementach będących około 10 cm od obiektywu. Nie warto jest zmniejszać tej odległości mocniej gdyż taka odległość pracy jest optymalna, aby móc pracować pod tym mikroskopem. Jeśli podczas pracy będziemy chcieli zmienić odległość - nie ma problemu, zawsze można dokonać regulacji, więc nie ma co się martwić perfekcyjnym ustawieniem w danej chwili.

    Krok 9: Montaż mikroskopu

    Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero


    Teraz przystąpić możemy do montażu mikroskopu. Najpierw wywiercić musimy w górnej części szczęk suwmiarki dwa otwory wielkości zakupionych śrubek. Taką samą parę otworów wiercimy w boku aluminiowej obudowy. Po wykonaniu obu par otworów możemy zamontować suwmiarkę do obudowy-podstawy mikroskopu.

    W kolejnym kroku montażu mikroskopu musimy wyciąć w suwmiarce szczelinę wielkości linijki. Najlepiej robić to bardzo delikatnie, gdyż w innym przypadku łatwo złamać plastikowy element suwmiarki lub wyciać zbyt duży otwór. Po wykonaniu tej operacji możemy wsunąć linijkę w szczękę suwmiarki, jak pokazano na zdjęciach.

    Teraz możemy zamontować na linijce moduł kamery. W tym celu wykonajmy w niej cztery otwory o takim rozstawie jak w module do obrazowania i przykręćmy przygotowanymi wcześniej śrubami moduł kamery do linijki.

    Po przygotowaniu wszystkich elementów możemy finalnie zmontować wszystko w całość. Przykręcamy suwmiarkę do metalowej podstawy, jeśli jeszcze tego nie zrobiliśmy i montujemy linijkę w szczelinie w suwmiarce, mocując ją następnie odrobiną kleju na gorąco, aby się nie poruszała. Dobrze jest nałożyć klej z obu stron oraz z góry i z dołu.

    Finalnie, do ruchomej części suwmiarki (tej samej, na której znajduje się moduł kamery) zamocować możemy Raspberry Pi Zero. Najwygodniej jest przymocować komputer z pomocą opasek zaciskowych. Po zamontowaniu RPi na suwmiarce możemy podłączyć kamerę do komputera.

    Odległość pomiędzy kamerą a obrazowanym przedmiotem najprościej jest regulować przesuwając suwmiarkę w górę i w dół. Dodatkowo można dostrajać odległość obrazowania poruszając minimalnie obiektywem kamery.

    Krok 10: Jak sprawić, aby urządzenie było przenośne

    Jeśli chcemy, aby nasz mikroskop był przenośny musimy w pierwszej kolejności zasilić z baterii moduł Rasberry Pi.

    Autor wykorzystał w tym celu moduł PowerBoost 1000C wraz z odpowiednią baterią. Moduł ten wyposażony jest w przydatną funkcję ? przetwornica weń wbudowana aktywowana jest stanem wysokim na jednym z pinów. W momencie gdy na pinie tym występuje stan niski przetwornica nie działa.

    Jednocześnie skonfigurować możemy jeden z pinów GPIO Rasberry Pi jako wyjście ? dzięki temu gdy Raspberry Pi będzie załączone to będzie tam stan wysoki, a gdy komputer wyłączy się to może także wyłączy przetwornicę dzięki temu możemy, łącząc te dwie funkcje obu urządzeń, zrealizować programowy wyłącznik mikroskopu.

    Zacznijmy od części programowej. Musimy najpierw włączyć pin GPIO jako wyjście i ustawić je w stan wysoki, tak aby podtrzymywało załączenie przetwornicy od momentu uruchomienia komputera do wyjścia z systemu.

    Realizacja tego zadania jest bardzo prosta, wystarczy zedytować plik /etc/config.txt:

    Code: bash
    Log in, to see the code


    dodając na końcu taką linijkę:

    dtoverlay=gpio-poweroff,gpiopin=26,active_low


    Teraz po każdym załączeniu maliny pin GPIO26 (pin numer 37 na wyprowadzeniu z komputera) będzie w stanie wysokim. Zmierzmy napięcie między nim a masą po załączeniu komputera - woltomierz powinien wskazywać 3,3 V. Po wyłączeniu komputera poleceniem shutdown pin wskazywać powinien 0 V.

    Gdy już to zrobiliśmy napisać musimy prosty skrypt monitorujący stan innego z pinów, który zostanie skonfigurowany jako wejście. To będzie nasz wyłącznik. W tym celu wykorzystajmy bibliotekę wiringpi. Zainstalujmy ją:

    Code: bash
    Log in, to see the code


    I korzystając z nano stwórzmy skrypt:

    Code: bash
    Log in, to see the code


    Wygląda on następująco:

    Code: bash
    Log in, to see the code


    Oczywiście, po zapisaniu i wyjściu z nano musimy uczynić go wykonywalnym:

    Code: bash
    Log in, to see the code


    Musimy wiedzieć, że odczytywany pin 24 to pin GPIO19 czyli 35 pin na listwie GPIO w Raspberry Pi. Jeśli oznaczenie te są dla nas trudne do zrozumienia wystarczy zajrzeć do dokumentacji Raspberry Pi.

    Następnie tworzymy plik systemd dla usługi systemowej:

    Code: bash
    Log in, to see the code


    W którym wpisujemy:

    [Unit]
    Description=Power Button Monitoring
    After=network-online.target
    Wants=network-online.target
    [Service]
    ExecStart=/usr/local/sbin/power-button.sh
    StandardOutput=journal+console
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target


    Finalnie, możemy uruchomić stworzoną usługę i skonfigurować ją do autostartu przy bootowaniu systemu:

    Code: bash
    Log in, to see the code


    Na koniec montujemy system tylko do odczytu, wracając do stanu wyjściowego, jeśli o prawa do zapisu chodzi:

    Code: bash
    Log in, to see the code


    Krok 11: Zasilanie z baterii

    Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero


    Ostatnim etapem jest podpięcie przetwornicy wraz z baterią do Raspberry Pi. Dodatkowo skonstruować musimy prosty układ z tranzystora NPN, dwóch oporników i przycisku chwilowego (np. microswitach), tak jak pokazano na schemacie.

    Koniecznie trzeba też wlutować listwy pinowe do Raspberry Pi i gniazdko do tej listy na płytkę uniwersalną, a także piny dla PowerBoost. Dzięki temu przetwornica na płytce uniwersalnej nakładana będzie na 'Malinę', która zasilana będzie napięciem +5 V z przetwornicy poprzez odpowiednie goldpiny komputera.

    Po zlutowaniu ze sobą elementów można połączyć wszystkie moduły w całość. W pierwszej kolejności umieszczamy RPi wraz z przetwornicą na suwmiarce i przypinamy ją spinkami. Następnie przypinamy do tego baterię, także mocując ją spinkami. Teraz możemy już podłączyć wszystko razem - zasilanie, przetwornicę, baterię i oczywiście kamerę. Na końcu wkładamy do modułu kartę microSD.

    Teraz jesteśmy gotowi do pierwszego uruchomienia. Aby uruchomić system naciskamy i przytrzymujemy przycisk załączania przez około osiem sekund. Po załadowaniu się systemu komputer już sam zadba o podtrzymanie pracy przetwornicy. Aby wyłączyć system naciskamy po prostu ten sam przycisk.

    Krok 12: Propozycje ulepszenia

    Każdy układ zawsze można poprawić. W przypadku mikroskopu bardzo pożądane byłoby np. usunięcie dodatkowych źródeł światła z okolic kamery. Nie ma to dużego znaczenia do samego lutowania, ale jeśli chcemy robić z jego pomocą także zdjęcia to dobrze jest zadbać, aby na obrazie nie widzieć dodatkowych odbić. Jednym z nich jest czerwona dioda na module z kamerą, która odbija się w obrazowanym przedmiocie. Na szczęście łatwo jest jej się pozbyć programowo. Musimy zedytować plik /boot/config.txt korzystając z nano:

    Code: bash
    Log in, to see the code


    na końcu pliku dodajemy po prostu:

    disable_camera_led=1


    Teraz po resecie dioda nie będzie się już zapalała.

    Większym problemem jest dioda LED w przetwornicy. Jest ona dosyć jasna i nie dość, że psuje nasze zdjęcia to męczy podczas pracy. Można usunąć diodę LED lub zmienić opornik 1 k? na większy, przez co dioda będzie słabiej świecić.

    Inną modyfikacją, jest zmiana powiększenia kamery. Jeśli chcemy możemy dołożyć trochę pieniędzy do budżetu projektu i zakupić inny moduł kamery z regulowaną odległością pracy - takie są dostępne już za 20 euro. Taki moduł, jako że będzie miał dużo większy zakres regulacji da naszemu mikroskopowo o wiele więcej elastyczności.

    Źródło: http://www.instructables.com/id/Raspberry-Pi-Zero-HDMIWiFi-Soldering-Microscope/

    Cool? Ranking DIY
    Do you have a problem with Raspberry? Ask question. Visit our forum Raspberry.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11701 posts with rating 9875, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Computer Controls
  • #2
    mkpl
    Level 37  
    Zamiast dedykowanej kamerki z Pi można zastosować kamerkę HD6000. Zastosowałem ją w swojej pracy magisterskiej i idealnie nadaje się do tego celu. Kamerka łapie ostrość od 2.5cm od obiektu i ma wbudowany autofocus.
  • Computer Controls
  • #3
    SatServ
    Level 15  
    Lutowanie kondensatora 100uF "+" do masy, też mi fachura:)
  • #4
    ADI-mistrzu
    Level 30  
    Nie lepiej było by kupić kamerę HD na USB ? Taniej, mniejsze i prostsze...
    Czekam na projekt włącznika miksera opartego o RPI!
  • #5
    winio42
    Level 19  
    mkpl wrote:
    Zamiast dedykowanej kamerki z Pi można zastosować kamerkę HD6000. Zastosowałem ją w swojej pracy magisterskiej i idealnie nadaje się do tego celu. Kamerka łapie ostrość od 2.5cm od obiektu i ma wbudowany autofocus.


    Masz na myśli kamerkę Microsoftu Lifecam HD6000?
    Spojrzałem z ciekawości w jej notę katalogową:

    Mikroskop do lutowania oparty na Raspberry Pi Zero

    Rozdzielczość HD 720p - czyli ok 1MP
    Autofocus - wg Microsoftu - pracuje poprawnie dla odległości od kamerki od sześciu cali (ok. 15 cm) do nieskończoności

    W jaki sposób przerobiłeś swoją kamerę HD6000 aby działała od 2,5cm?
  • #6
    vergil50
    Level 13  
    Satserv a nie wpadłeś na pomysł że tam może być symetryczne zasilanie ??? :) :D
  • #7
    ADI-mistrzu
    Level 30  
    @vergil50 mimo iż nawet jeśli tam będzie symetryczne zasilanie, to na etapie projektowania PCB oznaczenie powinno być odwrotne.
    Na etapie produkcji skąd mają wiedzieć że tam jest ujemne napięcie i kondensator odwrotnie montujemy? To ewidentny błąd projektowy bądź montażowy.
  • #8
    lolek456
    Level 9  
    Dla wersji przenośnej dodatkowa przetwornica nie jest konieczna. RPi zero można zasilić bezpośrednio z ogniwa LiPo podanego na piny 5V. Procek, karta SD i kamera mają własną przetwornicę 3.3V i 1.8V. Zasilanie 5V jest wymagane tylko dla urzadzeń USB a tutaj ich nie ma.
  • #9
    SatServ
    Level 15  
    @vergil50 Takie czasy, że ludzie zajmują się systemami uC od strony hw a podstawy zostają gdzieś na boku, druga sprawa to po prostu zwykła komercja producenta RPi0, niezbyt udana moim zdaniem.
  • #10
    tomus2k
    Level 26  
    lolek456 wrote:
    Dla wersji przenośnej dodatkowa przetwornica nie jest konieczna ....

    Zastosowano ładowarkę z przetwornicą, raczej funkcja ładowarki była tu przesłanką zastosowania tego dodatkowego modułu w wersji przenośnej.
  • #11
    rosak
    Car dashboards specialist
    A czy któryś z szanownych malkontentów, lub ktokolwiek ma lepszą alternatywę do ww projektu? Pytam całkiem poważnie. Mam zamiar zbudować toto bo do tej pory nie spotkałem się jeszcze z tak dobrą jakością obrazu ani w dużo droższych chińskich mikroskopach ani w zmodowanych kamerkach internetowych, ale może jeszcze mało widziałem. Coprawda autor prezentuje urządzenie na sporej wielkości komponentach nie wymagających żadnego powiększenia ale i tak wygląda nieźle.
  • #12
    aviko

    Level 17  
    rosak wrote:
    A czy któryś z szanownych malkontentów, lub ktokolwiek ma lepszą alternatywę do ww projektu? Pytam całkiem poważnie. Mam zamiar zbudować toto bo do tej pory nie spotkałem się jeszcze z tak dobrą jakością obrazu ani w dużo droższych chińskich mikroskopach ani w zmodowanych kamerkach internetowych, ale może jeszcze mało widziałem. Coprawda autor prezentuje urządzenie na sporej wielkości komponentach nie wymagających żadnego powiększenia ale i tak wygląda nieźle.


    DIYINHK oparta o m$ lifecam studio, gdzies na forum podawalem przepisy gdzie i co kupic po taniosci w pl

    nic nie stoi na przeszkodzie aby uzyc tej kamery wraz z tym projektem tylko koszta, kamerki ip przeznaczone wlasciwie do monitoringu w najtanszej plytkowej wersji tez sie nadaja a im wieksza matryca tym uzyzkasz lepsza glebie (przetestowalem osobiscie imx322+hi3516c (bez optyki jakies 25$ na ali i po lanie wyciaga bez problemu 30fps przy 1920x1080)
  • #13
    rosak
    Car dashboards specialist
    aviko wrote:
    DIYINHK oparta o m$ lifecam studio, gdzies na forum podawalem przepisy gdzie i co kupic po taniosci w pl


    Widziałem testy na YT, nawet na EEVBLOG. koszt 3x większy a jakość dużo niższa niż to z Pi. Podobną jakość uzyskuję z samego telefonu bez żadnych dodatkowych obiektywów.
    Jedynie ten statyw mi się bardzo podoba.

    Dodano po 2 [minuty]:

    Jednak nie 3x większy, to sam mod kit.

    Dodano po 44 [sekundy]:

    Acha, LAN, WiFi czy USB są mi zbędne, wystarczy HDMI.
  • #14
    aviko

    Level 17  
    nie chce cie obrazic ale kto tu teraz wychodzi na malkontenta?

    widziales glebie przy powiekszeniu (i odleglosci roboczej) z tego? nie chodzi mi o glebie koloru tylko ostrosci w zaleznosci od odleglosci od obiektywu.

    malkonentom wyjasniam: im wieksze powiekszenie tym mniejszy zakres ostrosci czyli np oznaczenie elementu widzimy ale juz kurz na soldermasce bedzie rozmazany, jesli kamera patrzy pod katem to jeszcze bardziej dokuczliwe, z kolei jesli kamera patrzy na wprost to podswietlenie bedzie nam sie odbijac od pcb na ktora patrzymy i bedzie rozblysk

    jesli wystarczy ci hdmi to lapsun z tuba 0.7-4.5x na cmount to wszystko czego ci potrzeba do szczescia
  • #15
    rosak
    Car dashboards specialist
    aviko wrote:
    nie chce cie obrazic ale kto tu teraz wychodzi na malkontenta?


    Mylisz pojęcia kolego, ja w tym wątku bronię projektu autora, nie krytykuję każdego rozwiązania nie podając żadnego swojego. Mniejsza o to.

    Jak już pisałem, widziałem testy DIYINHK i porównując do filmu z Pi DIYINHK wypadał dużo gorzej. Obraz był dużo bardziej rozmazany, zauważalny lag, generalnie obraz wyglądał jak z mojego telefonu na 4x cyfrowym powiększeniu. Być może to wina złego doświetlenia, nie wiem, dlatego też napisałem, że być może mało widziałem.

    Masz też rację, że nie mam pojęcia jak to wygląda w praktyce, bo nigdy czegoś takiego nie używałem. Chciałbym z odległości powiedzmy 10cm widzieć np. QFN28 na powiedzmy 1/4 ekranu Full HD. Ze światłem myślę, że sam bym sobie poradził, jakiś ring LED z porządnym dyfuzerem czy coś w tym stylu.

    Ten projekt z Pi zamyka się w około 100zł. Pewnie, że wolałbym kupić gotowca ale nawet za 2x tyle nie spotkałem się z sensowną alternatywą.

    aviko wrote:
    jesli wystarczy ci hdmi to lapsun z tuba 0.7-4.5x na cmount to wszystko czego ci potrzeba do szczescia


    Mógłbyś zapodać jakiś link? Bo ja widzę najtaniej tutaj:
    http://www.ebay.com/itm/16MP-1080P-HDMI-Digit...667512?hash=item3f777db838:g:l~wAAOSw2gxYxgok

    ale to $220 więc nie może o to chodzić..

    Dodano po 6 [minuty]:

    Zresztą, porównaj sam zrzuty ekranu z YT:

    Mikroskop do lutowania oparty na Raspberry Pi Zero Mikroskop do lutowania oparty na Raspberry Pi Zero

    Na DIYINHK wyraźnie widać szumy, mniejszą ostrość słabsze detale. Oczywiście nie mówię, że to jest złe i do niczego się nie nadaje, ale Pi wychodzi znacznie taniej i na moje oko lepiej.
  • #16
    aviko

    Level 17  
    nie mam zadnej kamery dedykowanej pod rpi wiec nie mam odniesienia

    co do lapsuna fakt drozej tylko ze sam statyw kosztuje 60$
    optyka to kolejne 50$ ale masz plynna regulacje powiekszenia

    reszta to kamera 14mpix z wyjsciem hdmi oraz usb, po co 14mpix skoro 1920x1080 to zaledwie 2mpix ? po to ze reszte wykorzystasz jako cyfrowy zoom operujac guziczkami na kamerce bez uzycia komputera - monitor podpiety pod hdmi
  • #17
    simw
    Level 26  
    rosak wrote:
    A czy któryś z szanownych malkontentów, lub ktokolwiek ma lepszą alternatywę do ww projektu? Pytam całkiem poważnie. Mam zamiar zbudować toto bo do tej pory nie spotkałem się jeszcze z tak dobrą jakością obrazu ani w dużo droższych chińskich mikroskopach ani w zmodowanych kamerkach internetowych, ale może jeszcze mało widziałem. Coprawda autor prezentuje urządzenie na sporej wielkości komponentach nie wymagających żadnego powiększenia ale i tak wygląda nieźle.

    Może niekoniecznie lepsza, ale zawsze alternatywa:
    https://www.youtube.com/watch?v=FjCLlng9Pu0
    Dobierając lepsze obiektywy M42 czy c-mount można jeszcze pewnie zwiększyć jakość obrazu.
  • #18
    mkpl
    Level 37  
    SatServ wrote:
    Lutowanie kondensatora 100uF "+" do masy, też mi fachura:)


    Po prostu wziąłem kamerkę w dłoń i zbliżałem do obiektu tak długo aż AF przestał pracować czyli 2cm. Dla 2.5 cm poprawnie łapie ostrość.
    W kamerze nic nie modyfikowałem. Użyłem jej do magisterki wiec musiałem przekopać jej parametry i możliwości...
  • #20
    bb84
    Level 21  
    Chciałbym zastosować tanią, sprawdzoną kamerę lub moduł USB w roli celownika do wiercenia laminatu. Wiercenie od dołu, kamera z nałożonym programowo krzyżem od góry laminatu. Duża rozdzielczość, nawet kolor nie są wymagane. Jakieś propozycje ?
  • #21
    rosak
    Car dashboards specialist
    bb84 wrote:
    Chciałbym zastosować tanią, sprawdzoną kamerę lub moduł USB w roli celownika do wiercenia laminatu. Wiercenie od dołu, kamera z nałożonym programowo krzyżem od góry laminatu. Duża rozdzielczość, nawet kolor nie są wymagane. Jakieś propozycje ?


    Myślę że byle jaka mini kamera CCTV plus USB capture typu EasyCap da radę. Zmieścisz się w 50zł.
  • #24
    PiotrPitucha
    Level 34  
    Witam
    Lutowałem swego czasu dość dużo SMD i pomimo używania dobrego tinolu bez dodatkowych topników, na sprzęcie w bliskim otoczeniu lutowanych płytek osadzała się kalafonia z oparów powstałych przy lutowaniu.
    Mam jedno zastrzeżenie do projektu, na co zwrócił też uwagę slavo666, zbyt mała odległość od lutowanych elementów.
    Jeden problem to osadzanie kalafonii na obiektywie, drugi to podgrzewanie kamery, trzeci to niewygoda w operowaniu lutownicą między płytką a kamerą.
    Oczy mi wysiadają i myślę o podobnej konstrukcji, ale z kamerą co najmniej w odległości 20 cm, niestety optykę miałem tak dawno, że zupełnie nie mam pojęcia jak się zabrać do takiego projektu.
    Jeśli ktoś jest mocny w te klocki to może poradzi jak zaprojektować obiektyw do kilkukrotnego powiększenia i odległości pracy rzędu 20 cm.
    Może jest szansa na użycie gotowych obiektywów z kamer monitoringu poprzez modyfikację obudów obiektywu?
    Co do kamer USB był na elektrodzie ( koło rok temu ? ) projekt mikroskopu do lutowania, zarówno kamera jak i obiektyw był relatywnie drogi, ale spodobało mi się, że kamera miała bardzo sprawny autofocus.
    Przy pracy z dużymi powiększeniami przydałby się punktowy oświetlacz płytki zogniskowany na centrum obrazu, bo przy płytkach z podobnymi sekcjami możemy czasami zadawać sobie pytanie, który obszar płytki widzimy. Punkt świetlny oczywiście oświetlałby płytkę tylko w chwili pozycjonowania a nie przy lutowaniu.
    Pozdrawiam
  • #26
    slavo666
    Level 20  
    @PiotrPitucha zobacz sobie na ten post:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=15510743#15510743
    Jest tam przedstawiony obiektyw za 35zł, który powinien się nadać do tej kamerki z Raspberry. Na samym końcu tego tematu jest też moje nagranie z Nikona P100 jako rejestrator. Widać, że szczegółowość jest kiepska mimo mocnego oświetlenia i nagrania FullHD. Za to odległość była spora- 20-25cm.
    Od siebie dodam, że temat zarzuciłem, bo uważam, że dla mnie nie ma to sensu. Wzrok mam jeszcze bardzo dobry i wystarczy mi lupa zegarmistrzowska do inspekcji po lutowaniu małych elementów, a właściwie tylko procesorów QFN z bardzo małym rastrem.
    Poza tym, spójrz jak małe jest pole robocze. Przy lutowaniu jednej płytki to nie problem, ale jak robisz masówkę, gdzie na formatce jest 9-12 płytek, to przesuwanie ich co każdy element doprowadziłoby mnie do szaleństwa, ergonomia przy takiej pracy to podstawa, żeby się potem nie nabawić problemów z plecami i nadgarstkami.
    Nie neguję bynajmniej tego rozwiązania. Jak wyżej napisałem, uważam, że jakość obrazu jest świetna za te pieniądze i warto sobie to złożyć choćby jako pomoc w inspekcji płytki.
  • #29
    rosak
    Car dashboards specialist
    george2002 wrote:
    rosak wrote:
    Super sprawa, ja już zrobiłem.

    Można jakieś info albo zdjęcia jak to koledze wyszło :) ?


    Wersja robocza zmontowana w 10 minut. Finalna będzie ze stali dla większej sztywności i z przyciskami do robienia zdjęć i filmów, które zapisują się na domowym FTP. Być może będzie jeszcze elektroniczny zoom i focus, na razie jest ręczny. Będzie też wyżej, choć w tej chwili i tak można wygodnie lutować.

    Mikroskop do lutowania oparty na Raspberry Pi Zero
  • #30
    johny_w
    Level 21  
    A czy wiecie może, jak uzyskać taką jakość obrazu i wyraziste kolory jak na filmie autora tego mikroskopu?

    Pisałem do autora prawie rok temu, gdy tylko kupiłem RPi i identyczną kamerę ale nie otrzymałem odpowiedzi.
    Odległość kamery to 10 cm, focus ustawiłem najlepiej jak się dało ale jakość jest kiepska, obraz jakby zaszumiony a same kolory jakieś blade. Co prawda testy wykonywałem "w powietrzu", ale teraz w końcu zbudowałem statyw i nic się nie zmieniło.

    Ledwo da się sprawdzić, czy pady w TQFP64 się nie posklejały. O inspekcji lutów nie mam co marzyć. Lepiej sobie radzę gołym okiem oświetlając płytkę halogenem.

    Oświetlenie pomieszczenia to zwykłe świetlówki. Próbowałem doświetlać płytkę halogenem lub mocnymi białymi ledami ale efekt jest jeszcze gorszy.