How to Control Your Actuators from Alternative Networks

Jak sterować naszymi siłownikami z alternatywnych sieci

Guest Writer
Guest Writer
PA Engineer

Świat ruchu liniowego rozwija się szybko i nieustannie ewoluuje. Progressive Automations postanowiło pozostać w czołówce tych zmian technologicznych. Zdalnie sterowane siłowniki stały się bardziej zróżnicowane i dynamiczne. Mając to na uwadze, jeden z naszych inżynierów, Jake, postanowił przeprowadzić eksperyment, aby sprawdzić, czy nasze siłowniki liniowe można kontrolować z alternatywnych sieci. Okazało się, że jest to możliwe. W tym artykule znajdziesz więc instrukcję krok po kroku, jak to osiągnąć. Zawiera on również przykład kodu oraz listę narzędzi potrzebnych do nawiązania udanego połączenia i ostatecznie sterowania siłownikiem/siłownikami online.

Do tego eksperymentu użyliśmy naszego mini siłownika liniowego PA-14, jednego z najpopularniejszych modeli!

Kliknij tutaj

Lista produktów

 

Mini siłownik liniowy PA-14

     

    Mini siłownik liniowy firmy Progressive Automations

     

    LC-201 to 4‑kanałowa płytka przekaźników – idealna do tego zastosowania!

    Kliknij tutaj

     

    Mini siłownik liniowy PA-14 to jeden z najpopularniejszych modeli oferowanych przez Progressive Automations i właśnie jego użyliśmy w tym eksperymencie. Zamiast PA-14 można wykorzystać dowolny model Progressive Automations o napięciu 12VDC/24VDC/36VDC/48VDC i z szczotkowym silnikiem DC. Przedstawiony poniżej kod nie wymagałby żadnych modyfikacji po zmianie siłownika, należy jednak sprawdzić parametry prądowe i napięciowe zasilacza przed rozpoczęciem.

    Nowy i ulepszony mini siłownik PA-01 (następca PA-14) to obecnie oferowany przez nas model z szeregiem dodatkowych korzyści. Dla porównania sprawdź tabele poniżej i modernizuj z pewnością!

     

    PA-01

    PA-14

    Opcje obciążenia dynamicznego

    16, 28, 56, 112, 169, 225 lbs

    35, 50, 75, 110, 150 lbs

    Maksymalne obciążenie

    225 lbs

    150 lbs

    Najszybsza Prędkość

    3.54 "/sec

    2.00"/sec

    Klasa szczelności IP

    IP65

    IP54

    Opcje Skoku

    1" to 40"

    1" to 40"

    Sprzężenie zwrotne efektu Halla

    Opcjonalne

    No

    Siłownik liniowy dla Raspberry Pi

    Poniższe szczegóły eksperymentu wyjaśniają, jak sterować siłownikiem liniowym za pomocą Raspberry Pi. Raspberry Pi 4 służy do uruchomienia oprogramowania serwera i odbierania poleceń sterujących siłownikiem. Alternatywnie można użyć komputera stacjonarnego i płytki Arduino. Jeśli wybierzesz tę drogę, komputer musi odbierać polecenia i przekazywać je do Arduino przez port szeregowy.

    Raspberry Pi to komputer jednopłytkowy mniej więcej wielkości karty kredytowej. Ten mikrokomputer powstał w Wielkiej Brytanii do nauki podstaw informatyki.

     

    Zasada działania Raspberry Pi

    Raspberry Pi ma wszystkie cechy prawdziwego komputera, w tym dedykowany procesor, pamięć oraz układ graficzny z wyjściem HDMI. Uruchamia nawet specjalną wersję systemu operacyjnego Linux. Ułatwia to instalację większości programów linuksowych i podłączanie siłowników liniowych do Raspberry Pi. Dzięki temu Raspberry Pi może być używany do sterowania siłownikami, jako pełnoprawny serwer multimediów lub emulator gier.

    Pi nie ma wewnętrznej pamięci danych, ale można użyć karty pamięci jako pamięci flash dla całego systemu. Pozwala to szybko wgrywać różne wersje systemu operacyjnego lub aktualizacje oprogramowania do celów testowych. Ponieważ urządzenie zapewnia niezależną łączność sieciową, można je skonfigurować do dostępu przez SSH lub transfer plików FTP.

     

    Instrukcje do eksperymentu

    Poniżej przedstawiono dokładne kroki, które Jake wykonał podczas testów – od wstępnej konfiguracji po bezprzewodowe zdalne sterowanie siłownikiem liniowym.

    Ponieważ płytce Raspberry Pi można przypisać adres IP i posiada piny GPIO, a także inne wymienione funkcje, jest najlepszym urządzeniem do takiego eksperymentu.

    Konfiguracja Raspberry Pi z siłownikiem liniowym

    1. Upewnij się, że na Twojej płytce zainstalowany jest system Raspbian. Kliknij tutaj, aby zobaczyć instrukcję krok po kroku instalacji tego systemu na Twoim Pi.
    2. Połącz płytkę z siecią Wi‑Fi. Kliknij tutaj, aby zobaczyć instrukcje.
    3. Przypisz statyczny adres IP swojemu Raspberry Pi. Kliknij tutaj, aby dowiedzieć się, jak to zrobić.
    4. Utwórz nowy plik .py na Raspberry Pi i skopiuj do niego poniższy kod. Po uruchomieniu tego kodu Twoje Pi stanie się serwerem nasłuchującym poleceń na porcie „6166”.

     

     import socket
    	import sys
    
    	# Create a TCP/IP socket
    	sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    	# Bind the socket to the port
    	server_address = ('', 6166)
    	print ('starting up on port ', server_address)
    	sock.bind(server_address)
    
    	# Listen for incoming connections
    	sock.listen(True)
    
    
    	GPIO.setmode(GPIO.BCM)
    	GPIO.setup(18, GPIO.OUT)
    	GPIO.setup(27, GPIO.OUT)
    
    	while (True):
        		# Wait for a connection
        		print ('waiting for a connection')
        		connection, client_address = sock.accept()
    
        		print ('connection from', client_address)
    
        		# Receive the data in small chunks and retransmit it
            	data = connection.recv(16)
           	 	print ("received:", data)
            	
    		# Output signal on GPIO depending on received command
    		if data == b"ext":
                		GPIO.output(18, GPIO.HIGH)
            	if data == b"ret":
                		GPIO.output(27, GPIO.HIGH)
            	
    		if data == b"close connection":
    			break
    
        	 # Closing up the connection
        	 connection.close() 

    Okablowanie

    Dla jasnych wskazówek dotyczących okablowania tego projektu, skorzystaj z diagramu pod następującym linkiem: 4‑kanałowy przekaźnik cyfrowy + Arduino – okablowanie siłownika liniowego.

     

    Konfiguracja routera

    Gdy Twoje Pi jest połączone z Wi‑Fi i ma statyczny adres IP skonfigurowany w poprzednim kroku, możesz przejść do ustawienia przekierowania portów i filtrowania IP w routerze. Przekierowanie portów pozwala skonfigurować router tak, aby przekazywał dane przychodzące na określony port do danego urządzenia w sieci LAN. Załóżmy, że serwer Pi ma statyczny adres IP 192.168.1.69 i nasłuchuje poleceń na porcie 6166. Musisz skonfigurować router tak, aby przekazywał dane przychodzące na port 6166 do urządzenia o adresie 192.168.1.69.

    Instrukcje:

    Uwaga: Interfejs Twojego routera może wyglądać inaczej niż w tym przykładzie. W takim przypadku znajdź instrukcje odpowiednie dla modelu Twojego routera.


        1. Wprowadź adres IP routera i zaloguj się, aby uzyskać dostęp do interfejsu routera.

           

          Adres IP
        2. Znajdź opcję Port Forwarding.

           

          Znajdź opcję Port Forwarding

     

        1. Wpisz statyczny adres IP serwera Pi oraz zakres Public Port. Upewnij się, że port 6166 mieści się w tym zakresie.

           

          Zakres Public Port

    Zalecamy w tym momencie skonfigurować filtrowanie IP ze względów bezpieczeństwa. Filtrowanie IP pozwala określić adresy IP urządzeń, które mogą uzyskiwać dostęp do Twojego Pi i wysyłać do niego polecenia przez Internet. Znajdź ustawienie inbound filters i dodaj adresy IP urządzeń, które mają mieć dostęp do siłownika/siłowników w tej opcji.

    Konfiguracja klienta

        1. Aby uruchomić oprogramowanie klienckie na swoim urządzeniu, zainstaluj Python 3.8 z ich oficjalnej strony.
        2. Możesz też zainstalować PyCharm, czyli prosty w obsłudze IDE.
        3. Skopiuj poniższy kod:
    import socket
    import sys
    
    # Create a TCP/IP socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # Connect the socket to the port where the server is listening
    server_address = ('Enter IP address of router in your pi’s LAN', 6166)
    print ('connecting to %s port', server_address)
    sock.connect(server_address)
    
    try:
    
        # Send data
        message = b'ret'
        print ('sending "%s"',message)
        sock.sendall(message)
    
        # Look for the response
        amount_received = 0
        amount_expected = len(message)
    
        while amount_received < amount_expected:
            data = sock.recv(16)
            amount_received += len(data)
            print ('received: ', data)
    
    finally:
        print ('closing socket')
        sock.close()


     

    Każdy siłownik potrzebuje niezawodnego zasilacza – tutaj użyliśmy PS-20-12!

    Kliknij tutaj

    Raspberry Pi kontra Arduino

    Jak wspomniano na początku artykułu, można użyć płytki Arduino zamiast Raspberry Pi. Najpierw warto wyjaśnić, czym są płytki Arduino. Te mikrokontrolery wykonują kody interpretowane przez firmware. Nie są w pełni funkcjonalnymi komputerami, więc nie mają systemu operacyjnego jako takiego. Choć nie oferują podstawowych narzędzi systemu operacyjnego, ułatwiają bezpośrednie uruchamianie prostego kodu.

    Nie wiąże się to też z kosztami systemu operacyjnego. Głównym zadaniem płytki Arduino jest interakcja z czujnikami i urządzeniami, co czyni ją świetną do projektów sprzętowych reagujących na różne sygnały z czujników i wejścia manualne. Doskonale nadaje się do sterowania innymi urządzeniami i siłownikami, gdzie pełnoprawny system operacyjny nie jest potrzebny.

    Wybór między Raspberry Pi a Arduino w dużej mierze zależy od projektu i jego wymagań.

    Lepiej wybrać Arduino, jeśli głównym zadaniem jest odczyt danych z czujników lub zmiana wartości na silniku i innych urządzeniach. Biorąc pod uwagę wymagania zasilania Arduino i łatwość utrzymania, urządzenie może pracować bez wyłączania, praktycznie bez ingerencji w jego działanie.

    Raspberry Pi z kolei będzie bardziej praktyczne przy zadaniach, które wykonuje się na komputerze osobistym. Ułatwia ono zarządzanie przepływem pracy w różnych scenariuszach, np. gdy trzeba połączyć się z Internetem, aby czytać lub zapisywać dane, odtwarzać multimedia czy podłączyć zewnętrzny wyświetlacz.

    Ponieważ Arduino i Raspberry Pi rozwiązują różne zadania, w niektórych sytuacjach wygodnie jest używać ich razem. Łącząc te dwa urządzenia, można uzyskać dostęp kliencki do ustawień i kodu przez Pi, podczas gdy Arduino steruje siłownikami i zbiera dane z czujników. Urządzenia można połączyć przez USB, LAN lub łącząc porty I/O Arduino z Raspberry Pi.

     

    Na zakończenie

    W tym momencie wszystko jest gotowe, aby sterować dowolnym siłownikiem Progressive Automations spełniającym podane kryteria – przez Internet! Uruchomienie kodu daje pełną wygodę zdalnego sterowania siłownikami – my lubimy nazywać je „siłownikami sterowanymi WiFi”. Dziękujemy za przeczytanie artykułu – jeśli masz pytania lub chcesz, aby jeden z naszych inżynierów przeprowadził konkretny eksperyment, skontaktuj się z nami, a z przyjemnością się odezwiemy!