Spisu treści:

Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD: 15 kroków
Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD: 15 kroków

Wideo: Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD: 15 kroków

Wideo: Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD: 15 kroków
Wideo: Jak wygląda egzamin krótkofalarski klasy C? (OPIS) 2024, Lipiec
Anonim
Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD
Ogólnoświatowe łącze mikrokontrolera za mniej niż 20 USD

Kontroluj swój domowy termostat z pracy. Włącz zraszacz z dowolnego miejsca na świecie, naciskając przełącznik. Ta instrukcja pokazuje, jak połączyć dwa lub więcej mikrokontrolerów o wartości 4 USD za pomocą szkieletu Internetu i prostego kodu VB. Net. Opiera się to na wcześniejszej instrukcji, która pokazuje, jak połączyć mikrokontroler z komputerem i użyć garnka do sterowania serwo https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ Tym razem mamy mikrokontrolera rozmawiającego z programem VB. Net, potem ze stroną ftp, z powrotem do innego VB. Net program, a następnie drugi mikrokontroler w dowolnym miejscu na świecie, z interwencją człowieka lub bez niej. W jaki inny sposób maszyny w Matrixie mają kiedykolwiek przejąć kontrolę, jeśli nie mogą ze sobą rozmawiać?

Krok 1: Zbierz części

Zbierz części
Zbierz części

Wiele części jest takich samych jak w PC Control Instructable https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ i sugeruje się, aby wykonać to przed próbą połączyć dwa mikrokontrolery. Chociaż całkiem możliwe jest użycie potencjometru do sterowania serwo, tym razem pójdziemy na coś prostszego - przełącznik włączający diodę. Przełącznik może z łatwością być czujnikiem poziomu w zbiorniku, a dioda LED może być pompą w pobliżu rzeki, ale najpierw zacznijmy od czegoś prostego. Części - dwa układy Picaxe 08M - dostępne z wielu źródeł, w tym Rev Ed https://www.rev- ed.co.uk/picaxe/ (Wielka Brytania), PH Anderson https://www.panderson.com/ (USA) i Microzed https://www.microzed.com.au/ (Australia). Te żetony kosztują mniej niż 4 USD. Dwa z: Protoboard, bateria 9V i zaciski do baterii, rezystor 10k, rezystor 22k, kondensator 33uF 16V, kondensator 0,1uF, regulator małej mocy 5V 7805L, przewody (solid-core telefon/przewód danych np. Cat5/6), dioda LED, rezystor 1k. 1 z: gniazdo żeńskie D9 i osłona oraz 2 metry 3 (lub 4) rdzeniowego przewodu danych (do pobrania) i przełącznik dwustabilny. 2 komputery z 9-pinowymi portami szeregowymi (mogą być jednak debugowane na jednym komputerze) i połączeniem internetowym. W przypadku komputerów bez portu szeregowego, urządzenie USB do portu szeregowego https://www.rev-ed.co.uk/docs/axe027.pdf i małe gniazdo stereo.

Krok 2: Pobierz i zainstaluj oprogramowanie

Pobierz i zainstaluj oprogramowanie
Pobierz i zainstaluj oprogramowanie

Będziemy potrzebować darmowego VB. Net i oprogramowania kontrolera picaxe, a jeśli wykonałeś program PC Controller Instructable, już je masz. VB. Net (Visual Basic Express) jest dostępny pod adresem https://msdn2.microsoft.com/en -us/express/aa718406.aspxOprogramowanie picaxe jest dostępne pod adresem https://www.rev-ed.co.uk/picaxe/ Aby pobrać plik, musisz zarejestrować się w firmie Microsoft - jeśli to stanowi problem, użyj fałszywego e-maila lub coś. Właściwie okazało się, że pomocne jest podawanie mojego prawdziwego e-maila, ponieważ wysyłają od czasu do czasu aktualizacje. Wspomnę również o forum picaxe https://www.picaxeforum.co.uk/, ponieważ jest to rodzaj forum prowadzonego przez nauczycieli i wychowawców oraz gdzie uczniowie zazwyczaj mogą uzyskać odpowiedzi na pytania w ciągu kilku godzin. Forum bardzo rozumie nawet najprostsze pytania, ponieważ niektórzy uczniowie są jeszcze na poziomie szkoły podstawowej. Proszę nie bój się prosić o pomoc!

Krok 3: Zbuduj obwód pobierania

Zbuduj obwód pobierania
Zbuduj obwód pobierania

Ten obwód pobierania wykorzystuje układ Picaxe, kilka rezystorów, regulator i baterię 9V. Więcej informacji można znaleźć w dokumentacji/pomocy picaxe, która pojawia się w menu pomocy programu. Budowa obwodu powinna zająć tylko kilka minut, gdy wszystkie części będą już dostępne. Po zaprogramowaniu chip zachowuje swój program w pamięci EEPROM nawet po wyłączeniu zasilania. Ponieważ programujemy dwa chipy, warto je oznaczyć, aby wiedzieć, który jest który. Zawsze możesz cofnąć się i przeprogramować układ, usuwając ogniwo i przesuwając rezystor.

Dodam jeszcze, że pikaxy działają szczęśliwie na 3 bateriach AA. Zasilanie regulowane 5 V jest przydatne do obsługi wejść analogowych, ponieważ napięcia odniesienia nie zmieniają się, ale w przypadku prostych obwodów włączania/wyłączania regulowane zasilanie nie jest potrzebne. W takich sytuacjach można pominąć 5V reg.

Krok 4: Zaprogramuj żetony

Zaprogramuj żetony
Zaprogramuj żetony

Jeden program nazwiemy Tx i jeden Rx. Tx jest chipem sterującym i ma przełącznik i diodę LED. Rx ma również diodę led. Kiedy przełącznik się zmienia, sygnał przechodzi z Tx na Rx, zmienia diodę LED, a także zmienia drugą zmienną, która następnie wraca do Tx. Więc pstrykaj przełącznikiem i w mniej niż minutę dioda zmienia się na obu obwodach, wskazując, że wiadomość dotarła i Rx działa w nowej pozycji przełącznika. Na najprostszym poziomie pikaxe ma 14 jednobajtowych rejestrów. Kiedy tworzona jest wirtualna sieć, łączymy wszystkie te rejestry razem, więc jeśli bajt zmienia się w jednym pikselu, zmienia się we wszystkich pikach. Oczywiście, jeśli dwie pikaxy próbują zmienić ten sam bajt, będzie to bardzo mylące, ale jeśli każda pikaxa zmieni tylko jeden bajt, wszystkie inne pikaxy widzą tę zmianę i mogą na nią działać. Proste wiadomości mogą być przekazywane tam iz powrotem, jeśli pewien bajt jest zmieniany tylko przez jedną pikaksę. Garnek może zmienić wartość w rejestrze, a jeden lub więcej pikaksów może wyczuć tę zmianę i przesunąć serwo lub cokolwiek innego i włączyć grzałkę. Drugi rejestr może odesłać temperaturę w pomieszczeniu. Skopiuj i wklej programy po kolei do programatora Picaxe i pobierz je do każdego z odpowiednich chipów za pomocą niebieskiej strzałki pobierania z programatora Picaxe. Tx:main:serin 3, N2400, ("Dane"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' pobierz pakiet z komputera jeśli pin2= 0 następnie' przetestuj przełącznik i ustaw rejestr b0 w zależności od statusu b0=0 inaczej b0=1 endif if b1=0 to' inne zestawy picaxe b1 zależne b0 low 1' zgasł inaczej wysoki 1' led na endif serout 0, N2400, ("Dane", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' odeślij do komputera goto main i Rx:main:serin 3, N2400, ("Dane"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' pobierz pakiet z komputera b1=b0' zmień rejestr b1 na równy b0 jeśli b1 =0 wtedy niski 1' zgasł w przeciwnym razie wysoki 1' zgasł endif serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' odesłać do komputera goto main

Krok 5: Zbuduj obwód Tx

Zbuduj obwód Tx
Zbuduj obwód Tx

Jeśli przeskakujesz tam i z powrotem między działającym obwodem a obwodem programowania, pamiętaj, aby zmienić połączenie na nogę 2 i lokalizację rezystora 22k z nogi 2 na nogę 4. Lub możesz zbudować dedykowany obwód do pobierania i przenieść układy przez. Po prostu zwróć uwagę, czy obwód działa, czy pobiera, ponieważ może to być dość mylące. W szczególności należy zwrócić uwagę, że obwód roboczy nie będzie działał, jeśli noga 2 pozostanie pływająca - musi być uziemiona. Noga 2 to pin pobierania i jeśli pozostanie pływający, odbiera zabłąkane fale radiowe ze świateł fluoro, a chip myśli, że jest pobierany inny program.

Warto również wspomnieć o nomenklaturze pikaxe, która nazywa fizyczną pin nogą, a wirtualną pin pin. Tak więc wyjście na pinie 2 w kodzie jest w rzeczywistości wyjściem na fizycznej odnodze 5. Może to wydawać się dziwne, ale oznacza to, że kod może być przeniesiony do większych pikaxów, takich jak wersje 28 i 40-pinowe, i nadal będzie działać.

Krok 6: Zbuduj obwód Rx

Zbuduj obwód Rx
Zbuduj obwód Rx

Ten obwód jest prawie taki sam jak nadajnik - po prostu nie ma przełącznika.

Krok 7: Napisz jakiś kod VB. Net

Napisz jakiś kod VB. Net
Napisz jakiś kod VB. Net

Mogłem skompilować kod i udostępnić ten program jako skompilowany.exe, ale nauczenie się VB. Net jest tak niesamowicie przydatne, że warto przejść przez to krok po kroku. Jeśli używasz tego na dwóch różnych komputerach, możesz wbudować program w plik.exe, który utworzy mały program instalacyjny, który można zainstalować na drugim komputerze. Lub możesz umieścić VB. Net na obu komputerach i uruchamiać programy z poziomu VB. NetZałóżmy, że wiesz, jak otworzyć nowy projekt VB.net z kroku 7 i 8 https://www.instructables.com/id/S1MMU2XF82EU2GT /W pustym formularzu dodajmy następujące komponenty z paska narzędzi i umieśćmy je na formularzu w pokazanych lokalizacjach. W przypadku etykiet i pól tekstowych zmień właściwość tekstu (w prawym dolnym rogu) na taką, jaka jest potrzebna. Nie przejmuj się ustawieniami timera - zmienimy je w kodzie, ale pamiętaj, aby umieścić timer. Możesz przesuwać rzeczy i nie ma prawdziwych zasad dotyczących lokalizacji. Duże pole tekstowe to RichTextBox, a trzy mniejsze to zwykłe pola tekstowe. Pod względem porządku zaczynamy od góry formy i schodzimy w dół. Jeśli coś zostawisz, pojawi się błąd w kodzie, który powinien dać jakąś wskazówkę. Wybierz losową nazwę pliku dla Textbox3 - jest to nazwa Twojej unikalnej grupy piksów na serwerze ftp i oczywiście jeśli wszyscy używamy ta sama nazwa, wtedy dane będą zagmatwane!Przepraszam za myślniki w tej tabeli - wstawienie spacji powoduje utratę formatowania w tabeli. Obiekt Toolbox-----------Tekst----------- ------------------------------UwagiEtykieta1------------------Picaxe Etykieta komunikacji2------------------Etykieta stanu FTP3----------------------Etykieta stanu4---------- --------Etykieta rejestrów Picaxe5------------------Rejestracja 0-13Etykieta6------------------ Wartość 0-255Label7------------------FTP nazwa pliku łącza Pole tekstowe1----------------0-------- ---------------------------0 to zero, a nie OTextbox2----- -----------0Pole tekstowe3-----Nazwa mojegopliku---------- ----------Zmień, aby nie było kolizji!Przycisk1----------------------ZmieńRichtextbox1 Picturebox1 Picturebox2 Timer1

Krok 8: Dodaj trochę kodu

Dodaj trochę kodu
Dodaj trochę kodu

Zobacz krok 12 drugiej instrukcji, aby dowiedzieć się, gdzie znajduje się przycisk, który przełącza się między widokiem formularza a widokiem kodu. Przejdź do widoku kodu i wklej następujący kod. Wszystkie kolory powinny pojawić się ponownie, jak na zrzucie ekranu. Jeśli wiersz nie został poprawnie skopiowany z powodu problemu z zawijaniem słów, usuń spacje, aż komunikat o błędzie zniknie. Próbowałem skomentować większość wierszy, aby kod miał przynajmniej jakiś sens. Usuń bit klasy publicznej, aby tekst był pusty przed wklejeniem - ten kod ma już klasę publiczną. Jeśli obiekt, taki jak pole tekstowe, nie został umieszczony w formularzu lub ma niewłaściwą nazwę, pojawi się w kodzie tekstowym z niebieską linią falistą. Imports System. IOImports Strings = Microsoft. VisualBasic ', więc można użyć rzeczy takie jak left(i right(for stringsPublic Class Form1 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' dla oświadczeń uśpienia Dim WithEvents serialPort As New IO. Ports. SerialPort ' port szeregowy zadeklaruj Dim PicaxeRegisters(0 do 13) As Byte ' rejestruje b0 do b13 Dim ModifyFlag As Boolean Private Sub Form1_Load (ByVal sender As Object, ByVal e As System. EventArgs) Handles Me. Load ' potrzebujesz wszystkich tych bzdur -.net umieszcza je automatycznie po przejściu form1events powyżej/load Timer1. Enabled = True ' ustaw to w kodzie jako domyślną wartość false podczas tworzenia Timer1. Interval = 20000 ' co 20 sekund PictureBox1. BackColor = Color. Gray ' zaczyna się od szarych pól komunikacyjnych PictureBox2. BackColor = Color. Gray ModifyFlag = False ' jeśli zmodyfikujesz wartość ręcznie, to s kip download RichTextBox1. Multiline = True ' więc może wyświetlić więcej niż jedną linię Call DisplayPicaxeRegisters() ' wyświetl 14 rejestrów Call ReadFTPFilename() ' odczytuje nazwę pliku z dysku (zapisywanego co 20 sekund) End Sub Sub SerialTxRx() Dim DataPacket(0 do 17) As Byte ' cały pakiet danych "Data"+14 bajtów Dim i As Integer ' i jest zawsze użyteczny dla pętli itp. For i = 0 do 3 DataPacket(i) = Asc(Mid("Data", i + 1, 1)) ' dodaj słowo "Data" do pakietu Next For i = 0 To 13 DataPacket(i + 4) = PicaxeRegisters(i) ' dodaj wszystkie bajty do pakietu Next If serialPort. IsOpen Then serialPort. Close() ' na wszelki wypadek już otwarty End If Try With serialPort. PortName = "COM1" ' Większość nowych komputerów domyślnie używa com1, ale każdy komputer sprzed 1999 r. z myszą szeregową będzie prawdopodobnie domyślnie com2. BaudRate = 2400 ' 2400 to maksymalna prędkość dla małe piksele. Parity = IO. Ports. Parity. None ' brak parzystości. DataBits = 8 ' 8 bitów. StopBits = IO. Ports. StopBits. One ' jeden bit stopu. ReadTimeout = 1000 ' milisekund W przypadku braku odpowiedzi ds tak limit czasu. Open() ' otwórz port szeregowy. DiscardInBuffer() ' wyczyść bufor wejściowy. Write(DataPacket, 0, 18) ' wyślij tablicę pakietów danych Call Sleep(300) ' 100 milisekund minimum oczekiwania na powrót danych i więcej, jeśli strumień danych jest dłuższy. Read(DataPacket, 0, 18) ' odczytaj z powrotem w tablicy pakietów danych. Close() ' zamknij port szeregowy End With For i = 4 To 17 PicaxeRegisters (i - 4) = DataPacket(i) ' przenieś nowy pakiet danych do tablicy rejestrów Next PictureBox1. BackColor = Color. GreenYellow ' working Catch ex As Exception PictureBox1. BackColor = Color. Red ' nie działa End Spróbuj End Sub FTPUpload (ByVal Filename As String) Dim localFile As String 'miejsce przechowywania danych Dim remoteFile As String ' w nazwie pliku rozróżniana jest wielkość liter to jest naprawdę ważne Const host As String = "ftp://ftp.0catch.com" ' zwróć uwagę, że 0 to zero bez znaku O Const username As String = "picaxe.0catch.com" Const hasło As String = "picaxetester" Dim URI As String localFile = Nazwa pliku ' może nie jest potrzebna, ale jeśli zdefiniujesz lokalizację, np. c:\mójkatalog można łatwo dodać w ten sposób remoteFile = "/" + Plik "Nazwa pliku" na serwerze ftp wymaga dodania "/" z przodu URI = host + remoteFile Spróbuj Dim ftp As System. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = Nowy System. Net. NetworkCredential(nazwa użytkownika, hasło) ' zaloguj się ftp. KeepAlive = False ' będzie rozłączenie raz wykonane ftp. UseBinary = True ' użyj binarnych komunikatów ftp. Timeout = 9000 ' limit czasu po 9 sekundach - bardzo przydatne, ponieważ ftp czasami umiera 'timeout (i częstotliwość zegara 20 sekund) może wymagać wolniejszego połączenia dialup ftp. Method = System. Net. WebRequestMethods. Ftp. UploadFile ' rozpocznij wysyłanie pliku Dim fs As New FileStream(localFile, FileMode. Open) ' otwórz plik lokalny Dim filecontents(fs. Length) As Byte ' wczytaj do pamięci fs. Read(filecontents, 0, fs. Length) fs. Close() ' zamknij plik Dim requestStream As Stream = ftp. GetRequestStream() ' uruchom link ftp requestSt ream. Write(filecontents, 0, filecontents. Length) ' wyślij requestStream. Close() ' zamknij link PictureBox2. BackColor = Color. GreenYellow ' zmień pole na zielone, aby powiedzieć, że działało dobrze Label2. Text = "Połączono z FTP" ' tekst mówiący, że połączenie jest połączone Catch 'nie można połączyć się PictureBox2. BackColor = Color. Red ' pole na czerwono, ponieważ brak połączenia Label2. Text = "FTP Upload Fail" ' tekst mówiący, że połączenie nie powiodło się End Try End Sub FTPDownload(ByVal Filename As String) ' pobiera plik zdalny do pliku lokalnego Dim localFile As String 'miejsce do przechowywania danych Dim remoteFile As String ' nazwa pliku rozróżniana jest wielkość liter to jest naprawdę ważne Const host As String = "ftp://ftp.0catch.com" Const username As String = "picaxe.0catch.com" Const password As String = "picaxetester" Dim URI As String 'localFile = "C:\" + Filename ' przechowuj w katalogu głównym, ale możesz to zmienić localFile = Filename ', więc możesz dodać c:\, jeśli trzeba zdefiniować aktualna lokalizacja remoteFile = "/" + Filename ' dodano do zdalnego adresu ftp URI = host + remoteFile ' make up pełny adres Spróbuj Dim ftp As System. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential(nazwa użytkownika, hasło) ' zaloguj się ftp. KeepAlive = False ' zostanie rozłączone po zakończeniu ftp. UseBinary = True ' tryb binarny ftp. Timeout = 9000 ' limit czasu po 9 sekundach ftp. Method = System. Net. WebRequestMethods. Ftp. DownloadFile ' pobierz plik ' przeczytaj w kawałkach jako nie wiem, jak duży jest plik. Korzystanie z odpowiedzi As System. Net. FtpWebResponse = CType(ftp. GetResponse, System. Net. FtpWebResponse) Korzystanie z responseStream As IO. Stream = response. GetResponseStream Using fs As New IO. FileStream(localFile, IO. FileMode. Create) Dim buffer(2047) As Byte Dim read As Integer = 0 Do read = responseStream. Read(buffer, 0, buffer. Length) ' fragment z ftp fs. Write(buffer, 0, read) ' i zapis do pliku Loop Until read = 0 ' aż nie będzie więcej elementów responseStream. Close() ' zamknij plik ftp fs. Flush() ' opróżnij clear fs. Close() ' i zamknij th e plik End Using responseStream. Close() ' zamknij go, nawet jeśli nic tam nie było End Using response. Close() PictureBox2. BackColor = Color. GreenYellow ' zielone pole tak jak działa Label2. Text = "Połączono FTP" ' i tekst mówiący o tym działało End Using Catch ' wstaw tutaj kody błędów PictureBox2. BackColor = Color. Red ' czerwone pole, ponieważ nie działa Label2. Text = "FTP Download Fail" ' i wiadomość, aby powiedzieć to End Spróbuj End Sub Private Sub Timer1_Tick(ByVal sender Jako System. Object, ByVal e Jako System. EventArgs) Obsługuje Timer1. Tick If ModifyFlag = False Then 'jeśli użytkownik zmienił bajt, nie pobieraj Label3. Text = "Pobieranie" System. Windows. Forms. Application. DoEvents() ' więc nowy tekst etykiety wyświetla Call FTPDownload(TextBox3. Text) ' pobierz plik zdalny Label3. Text = "Pobrany" System. Windows. Forms. Application. DoEvents() Wywołaj ReadRemoteFileToRegisters() ' zapisz numery plików w tablicy rejestrów Label3. Text = „Rozmowa z pikselem” System. Windows. Forms. Application. DoEvents() Else ModifyFlag = False „zresetuj flagę End If Call SerialTxRx() ' wyślij do picaxe i odczytaj go Label3. Text = "Wysłane i odebrane od picaxe" System. Windows. Forms. Application. DoEvents() Wywołaj DisplayPicaxeRegisters() Wywołaj SaveRegistersToLocalFile() ' zapisz numery do pliku Label3. Text = "Przesyłanie" System. Windows. Forms. Application. DoEvents() Wywołaj FTPUpload(TextBox3. Text) ' wyślij kopię zapasową do witryny ftp o nazwie jak moje imię Label3. Text = "Odpoczywa" Wywołaj SaveFTPFilename() ' tak brzmi in po ponownym uruchomieniu End Sub DisplayPicaxeRegisters() Dim i As Integer Dim numer rejestru As String RichTextBox1. Multiline = True ' więc może wyświetlić więcej niż jeden wiersz w polu tekstowym RichTextBox1. Clear() ' wyczyść pole tekstowe For i = 0 To 13 numer_rejestru = Trim(Str(i)) ' usuń spacje wiodące If i < 10 Then numer_rejestru = "0" + numer_rejestru ' dodaj 0 do liczb poniżej 10 End If RichTextBox1. AppendText(registernumber + " = " + Str(PicaxeRegisters(i)) + Chr(13)) Następny ' chr(13) to powrót karetki, więc nowa linia End Sub Private Sub Button1_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Obsługuje Button1. Click Dim i As Integer ' najpierw sprawdź poza zakresem i = Val(TextBox1. Text) If i <0 Or i> 13 Then TextBox1. Text = 0 End If i = Val(TextBox2. Text) If i <0 Or i> 255 Then TextBox2. Text = 0 End If PicaxeRegisters(Val(TextBox1. Text)) = Val(TextBox2. Text) ' zmień wartość Wywołaj DisplayPicaxeRegisters() ' i odśwież ekran ModifyFlag = True ' i następny link ftp pomiń pobieranie End Sub Sub SaveRegistersToLocalFile() ' zapisz tablicę rejestrów w lokalnym pliku tekstowym Dim i As Integer FileOpen(1, TextBox3. Text, OpenMode. Output) ' otwórz plik tekstowy o nazwie w polu tekstowym For i = 0 To 13 PrintLine(1, Str(PicaxeRegisters(i))) ' zapisz 14 wartości Next FileClose(1) ' zamknij plik End Sub ReadRemoteFileToRegisters() ' wczytaj lokalny plik tekstowy do tablicy rejestru Dim i As Integer Dim LineOfText As String Spróbuj FileOpen(1, TextBox3. Text, OpenMode. Input) ' odczytaj nazwę pliku zdalnego For i = 0 To 13 LineOfText = LineInput(1) ' przeczytaj w 14 wierszu es PicaxeRegisters(i) = Val(LineOfText) ' konwertuj tekst na wartości Next FileClose(1) Catch ex As Exception FileClose(1) ' plik nie istnieje, więc nic nie rób End Try End Sub Sub ReadFTPFilename() ' więc nazwa zdalny plik ftp jest taki sam przy następnym uruchomieniu tego programu Dim LineOfText As String Try FileOpen(1, "FTPFilename.txt", OpenMode. Input) ' otwórz plik LineOfText = LineInput(1) TextBox3. Text = LineOfText ' przeczytaj name FileClose(1) Catch ex As Exception FileClose(1) End Spróbuj End Sub SaveFTPFilename() FileOpen(1, "FTPFilename.txt", OpenMode. Output) ' zapisz nazwę zdalnego pliku ftp PrintLine(1, TextBox3. Text) FileClose(1) Zakończ klasę SubEnd

Krok 9: Uruchom program na obu komputerach

Uruchom program na obu komputerach
Uruchom program na obu komputerach

Uruchom program, klikając zielony trójkąt w górnej środkowej części ekranu - przycisk „Rozpocznij debugowanie”. Nic się nie wydarzy przez 20 sekund, a następnie program spróbuje połączyć się z serwerem ftp i spróbuje połączyć się z Picaxe. Ramki na zdjęcia zmienią kolor na czerwony lub zielony. Lokalizacja ftp to bezpłatna strona internetowa i każdy może z niej korzystać, ale musisz użyć innej roboczej nazwy pliku ftp (moja to DoctorAcula1), w przeciwnym razie wszyscy moglibyśmy otrzymać dane innych osób, jeśli użyjemy tej samej nazwy pliku! Jeśli chcesz, możesz w końcu dostać własną stronę ftp - po prostu zmień lokalizację ftp, nazwę użytkownika i hasło w dwóch miejscach w kodzie z mojej strony 0Catch. Większość stron internetowych pozwala na ftp. Wiele komputerów może uzyskać dostęp do tego samego pliku ftp - serwer plików ftp ustala kolejność ich występowania. Czasami zdarzają się kolizje lub zawieszanie się danych i wydaje się, że zdarzają się one co 20 odczytów plików. Jeśli tak się stanie, w kodzie występuje limit czasu, więc nie zwraca on żadnych danych, a tylko uszkodzone dane. Korzystanie z połączenia szerokopasmowego z prędkością wysyłania 128kbs oznacza, że przesłanie pliku zajmuje około 3 sekund, ale czasami do 8 sekund, z czego większość jest zajęta w uzgadnianiu, a nie przesyłaniu danych. Ustawia to czas timera1 na co najmniej około 20 sekund, biorąc pod uwagę pobieranie, przesyłanie i czatowanie z pikaksem. Z bardzo szybkim łączem szerokopasmowym możesz skrócić czas cyklu. Możesz zmienić rejestr ręcznie w programie VB. Jeśli to zrobisz, następny cykl zegara pomija pobieranie ze strony ftp i wysyła nowe dane do pikaxe, a następnie odczytuje je i przesyła. W ten sposób nowe dane trafiają do wszystkich pikaxów związanych z tą grupą. Jest to pomocne przy debugowaniu i/lub łączeniu oprogramowania PC z pętlą sprzętową mikrokontrolera. Strony internetowe mogą również uzyskać dostęp do pętli sprzętowej za pomocą skryptu PERL lub podobnego, aby zapisać nowy plik na stronie ftp. Ten zrzut ekranu został zrobiony przy użyciu układu Tx, przełącznik był włączony, a rejestr b0 = do 1 został wysłany do układu Rx, który następnie zmienił również rejestr b1 na 1. Dioda została więc zapalona na obu tablicach. Jest to trywialna aplikacja, ale łatwo jest włączyć pompę o mocy 3,6 kW zamiast diody LED. Więcej pomysłów można znaleźć na stronie https://drvernacula.topcities.com/, w tym łączenie pikaxów za pomocą łączy radiowych zasilanych energią słoneczną. Dzięki łączom radiowym i internetowi „Maszyny” mogą dotrzeć do wielu zakątków globu. Na forum picaxe jest kilka pomysłów na rozwinięcie tego pomysłu i zastąpienie witryny PC i ftp dedykowanymi chipami serwera WWW, które podłącza się bezpośrednio do routera. Oczywiście zmniejszyłoby to zużycie energii łącza. Jeśli jesteś zainteresowany dalszymi dyskusjami, opublikuj je w Intstructable Comments i/lub na forum picaxe. Dr James MoxhamAdelaide, Australia Południowa

Krok 10: Zrzuty ekranu kodu

Zrzuty ekranu z Kod
Zrzuty ekranu z Kod

Na życzenie przedstawiamy serię zrzutów ekranu kodu vb.net z całym formatowaniem. Ten kod został faktycznie skopiowany z tej instrukcji, a formatowanie pojawiło się ponownie automatycznie. Lepiej byłoby skopiować i wkleić tekst, niż próbować czytać te obrazki, ale przydadzą się one, jeśli jesteś w kafejce internetowej i nie możesz zainstalować vb.net.

Krok 11: Zrzut ekranu2

Zrzut ekranu2
Zrzut ekranu2

Zrzut ekranu 2

Krok 12: Zrzut ekranu 3

Zrzut ekranu 3
Zrzut ekranu 3

Zrzut ekranu 3

Krok 13: Zrzut ekranu 4

Zrzut ekranu 4
Zrzut ekranu 4

Zrzut ekranu 4

Krok 14: Zrzut ekranu 5

Zrzut ekranu 5
Zrzut ekranu 5

Zrzut ekranu 5

Krok 15: Zrzut ekranu 6

Zrzut ekranu 6
Zrzut ekranu 6

Zrzut ekranu 6

Zalecana: