Inhaltsverzeichnis:

Weltweiter Mikrocontroller-Link für unter 20 US-Dollar - Gunook
Weltweiter Mikrocontroller-Link für unter 20 US-Dollar - Gunook

Video: Weltweiter Mikrocontroller-Link für unter 20 US-Dollar - Gunook

Video: Weltweiter Mikrocontroller-Link für unter 20 US-Dollar - Gunook
Video: Kann Geld aus dem Nichts entstehen? | 42 - Die Antwort auf fast alles | ARTE 2024, Juli
Anonim
Weltweiter Mikrocontroller-Link für unter $20
Weltweiter Mikrocontroller-Link für unter $20

Steuern Sie Ihren Hausthermostat von der Arbeit aus. Schalten Sie einen Sprinkler von überall auf der Welt ein, indem Sie einen Schalter umlegen. Dieses Instructable zeigt, wie man zwei oder mehr $ 4 Mikrocontroller mit dem Backbone des Internets und einem einfachen VB. Net-Code verbindet. Dies baut auf einem früheren Instructable auf, das zeigt, wie man einen Mikrocontroller mit einem PC verbindet und einen Topf zur Steuerung eines Servos verwendet https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ Dieses Mal haben wir einen Mikrocontroller, der mit einem VB. Net-Programm spricht, dann mit einer FTP-Website, zurück zu einem anderen VB. Net Programm und dann einen zweiten Mikrocontroller irgendwo auf der Welt, mit oder ohne menschliches Eingreifen. Wie sonst sollen die Maschinen in The Matrix jemals übernehmen, wenn sie nicht miteinander sprechen können?

Schritt 1: Sammeln Sie die Teile

Sammeln Sie die Teile
Sammeln Sie die Teile

Viele der Teile sind die gleichen wie in der PC Control Instructable https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ und es wird empfohlen, dass dies zuerst abgeschlossen wird, bevor Sie es versuchen um zwei Mikrocontroller zu verbinden. Während es durchaus möglich ist, einen Poti zur Steuerung eines Servos zu verwenden, werden wir diesmal etwas einfacheres wählen - einen Schalter, der eine LED einschaltet. Der Schalter könnte leicht ein Tankfüllstandssensor sein und die LED könnte eine Pumpe in der Nähe eines Flusses sein, aber lassen Sie uns zuerst etwas Einfaches zum Laufen bringen. Teile - Zwei Picaxe 08M-Chips - erhältlich von vielen Quellen, einschließlich Rev Ed https://www.rev- ed.co.uk/picaxe/ (UK), PH Anderson https://www.phanderson.com/ (USA) und Microzed https://www.microzed.com.au/ (Australien). Diese Chips kosten weniger als 4 US-Dollar. Zwei von: Protoboard, 9V Batterie und Batterieklemmen, 10k Widerstand, 22k Widerstand, 33uF 16V Kondensator, 0,1uF Kondensator, 7805L Low Power 5V Regler, Drähte (Festkern Telefon/Datenkabel zB Cat5/6), LED, 1k Widerstand. 1 von: D9-Buchse und Abdeckung und 2 Meter 3 (oder 4) adriges Datenkabel (zum Download) und ein Kippschalter. 2 Computer mit 9-poligen seriellen Ports (kann jedoch auf einem Computer debuggt werden) und einer Internetverbindung. Für Computer ohne serielle Schnittstelle, ein USB-zu-Seriell-Gerät https://www.rev-ed.co.uk/docs/axe027.pdf und eine kleine Stereobuchse.

Schritt 2: Laden Sie einige Software herunter und installieren Sie sie

Laden Sie einige Software herunter und installieren Sie sie
Laden Sie einige Software herunter und installieren Sie sie

Wir benötigen das kostenlose VB. Net und die Picaxe-Controller-Software und wenn Sie den PC-Controller Instructable gemacht haben, haben Sie diese bereits. VB. Net (Visual Basic Express) ist verfügbar unter https://msdn2.microsoft.com/en -us/express/aa718406.aspxDie Picaxe-Software ist erhältlich unter https://www.rev-ed.co.uk/picaxe/Sie müssen sich bei Microsoft registrieren, um den Download zu erhalten - wenn dies ein Problem ist, verwenden Sie eine gefälschte E-Mail oder so. Ich fand es tatsächlich hilfreich, meine echte E-Mail-Adresse anzugeben, da sie gelegentlich Updates senden wo Studierende in der Regel innerhalb weniger Stunden Antworten auf Fragen erhalten. Das Forum ist sehr verständnisvoll selbst für die einfachsten Fragen, da einige der Schüler noch in der Grundschule sind. Bitte haben Sie keine Angst, um Hilfe zu bitten!

Schritt 3: Erstellen Sie eine Download-Schaltung

Erstellen Sie eine Download-Schaltung
Erstellen Sie eine Download-Schaltung

Diese Download-Schaltung verwendet einen Picaxe-Chip, ein paar Widerstände, einen Regler und eine 9-V-Batterie. Weitere Informationen finden Sie in der picaxe-Dokumentation/Hilfe, die im Hilfemenü des Programms angezeigt wird. Der Aufbau der Schaltung sollte nur wenige Minuten dauern, sobald alle Teile zur Hand sind. Sobald ein Chip programmiert ist, behält er sein Programm im EEPROM, auch wenn der Strom ausgeschaltet wird. Da wir zwei Chips programmieren, kann es sich lohnen, die Chips zu beschriften, damit Sie wissen, welcher welcher ist. Sie können jederzeit zurückgehen und einen Chip neu programmieren, indem Sie eine Verbindung entfernen und einen Widerstand verschieben.

Ich könnte auch hinzufügen, dass Picaxes mit 3 AA-Batterien problemlos funktionieren. Eine geregelte 5V-Versorgung ist für den Betrieb analoger Eingänge nützlich, da sich die Referenzspannungen nicht ändern, aber für einfache Ein/Aus-Schaltungen wird keine geregelte Versorgung benötigt. Die 5V-Regulierung kann in diesen Situationen weggelassen werden.

Schritt 4: Programmieren Sie die Chips

Programmieren Sie die Chips
Programmieren Sie die Chips

Wir werden ein Programm Tx und ein Rx nennen. Tx ist der steuernde Chip und hat einen Schalter und eine LED. Rx hat auch eine LED. Wenn sich der Schalter ändert, geht das Signal von Tx zu Rx, ändert die LED und ändert auch eine zweite Variable, die dann zu Tx zurückgeht. Also den Schalter umlegen und in weniger als einer Minute ändert sich die LED an beiden Stromkreisen und zeigt an, dass die Nachricht dort angekommen ist und der Rx auf die neue Schalterposition reagiert. Auf der einfachsten Ebene hat die Picaxe 14 Einzelbyte-Register. Wenn ein virtuelles Netzwerk erstellt wird, verknüpfen wir all diese Register miteinander. Wenn sich also ein Byte in einer Picaxe ändert, ändert es sich in allen Picaxes. Wenn zwei Picaxes versuchen, dasselbe Byte zu ändern, wird es natürlich sehr verwirrend, aber wenn jede Picaxe nur ein Byte ändert, können alle anderen Picaxes diese Änderung sehen und darauf reagieren. Einfache Nachrichten können vor- und zurückgesendet werden, wenn ein bestimmtes Byte nur um eine Picaxe geändert wird. Ein Poti kann den Wert in einem Register ändern und eine oder mehrere andere Picaxes können diese Änderung wahrnehmen und ein Servo oder was auch immer bewegen und eine Heizung einschalten. Ein zweites Register könnte die Temperatur im Raum zurücksenden. Kopieren Sie die Programme und fügen Sie sie in den Picaxe-Programmierer ein und laden Sie sie mit dem blauen Download-Pfeil aus dem Picaxe-Programmierer auf jeden der jeweiligen Chips herunter. Tx:main:serin 3, N2400, ("Daten"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' Paket vom Computer holen, wenn pin2= 0 dann' den Schalter testen und Register setzen b0 je nach Status b0=0 sonst b0=1 endif wenn b1=0 dann' andere Picaxe setzt b1 je nach b0 niedrig 1' geführt aus sonst hoch 1' geführt an endif serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' zurück an den Computer zurück zum Mainand Rx:main:serin 3, N2400, ("Daten"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' Paket vom Computer holen b1=b0' Register b1 in gleiches Register b0 ändern wenn b1 =0 dann niedrig 1' aus geführt sonst hoch 1' eingeschaltet endif serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' an Computer zurücksenden goto main

Schritt 5: Erstellen Sie die Tx-Schaltung

Baue die Tx-Schaltung
Baue die Tx-Schaltung

Wenn Sie zwischen einer Arbeitsschaltung und einer Programmierschaltung hin und her wechseln, stellen Sie sicher, dass Sie die Verbindung zu Bein 2 und die Position des 22k-Widerstands von Bein 2 zu Bein 4 ändern. Oder Sie können eine dedizierte Download-Schaltung bauen und die Chips verschieben über. Beachten Sie nur, ob eine Schaltung ausgeführt wird oder heruntergeladen wird, da dies ziemlich verwirrend werden kann. Beachten Sie insbesondere, dass ein laufender Stromkreis nicht funktioniert, wenn Bein 2 schwebend gelassen wird - es muss geerdet werden. Bein 2 ist der Download-Pin und wenn es schwebend gelassen wird, nimmt es Streu-RF von Fluoro-Lichtern auf und der Chip denkt, dass ein anderes Programm heruntergeladen wird.

Erwähnenswert ist auch die Picaxe-Nomenklatur, die einen physischen Pin als Bein und einen virtuellen Pin als Pin bezeichnet. Daher ist eine Ausgabe an Pin 2 im Code tatsächlich eine Ausgabe an physischem Bein 5. Dies mag seltsam erscheinen, bedeutet jedoch, dass Code auf größere Picaxes wie die 28- und 40-Pin-Versionen portiert werden kann und immer noch funktioniert.

Schritt 6: Erstellen Sie die Rx-Schaltung

Baue die Rx-Schaltung
Baue die Rx-Schaltung

Diese Schaltung ist fast die gleiche wie der Sender - sie hat nur keinen Schalter.

Schritt 7: Schreiben Sie einen VB. Net-Code

Schreiben Sie einen VB. Net-Code
Schreiben Sie einen VB. Net-Code

Ich hätte den Code kompilieren und dieses Programm als kompilierte.exe zur Verfügung stellen können, aber das Erlernen von VB. Net ist so unglaublich nützlich, dass es sich lohnt, es Schritt für Schritt durchzugehen. Wenn Sie dies auf zwei verschiedenen Computern ausführen, können Sie das Programm in eine.exe-Datei einbauen, die ein kleines Setup-Programm erstellt, das auf dem zweiten Computer installiert werden kann. Oder Sie können VB. Net auf beiden Computern installieren und die Programme in VB. Net ausführenAngenommen, Sie wissen, wie Sie ein neues VB.net-Projekt aus Schritt 7 und 8 von https://www.instructables.com/id/S1MMU2XF82EU2GT öffnen /Auf dem leeren Formular fügen wir die folgenden Komponenten aus der Symbolleiste hinzu und fügen sie wie gezeigt in das Formular ein. Ändern Sie für die Beschriftungen und die Textfelder die Texteigenschaft (rechts unten) auf den erforderlichen Wert. Machen Sie sich keine Sorgen um die Einstellungen für den Timer - wir werden sie im Code ändern, aber stellen Sie sicher, dass Sie einen Timer einfügen. Sie können Dinge verschieben und es gibt keine wirklichen Regeln für den Standort. Die große Textbox ist eine RichTextBox und die kleineren drei sind normale Textboxen. In Bezug auf die Reihenfolge beginnen wir oben im Formular und bewegen uns nach unten. Wenn Sie etwas auslassen, wird ein Fehler im Code angezeigt, der einen Hinweis geben sollte. Bitte wählen Sie einen zufälligen Dateinamen für Textbox3 - dies ist der Name Ihrer einzigartigen Gruppe von Picaxes auf dem FTP-Server und offensichtlich, wenn wir alle den derselbe Name, dann werden die Daten alle durcheinander!Entschuldigen Sie die Bindestriche in dieser Tabelle - beim Einfügen von Leerzeichen geht die Formatierung in der Tabelle verloren. Toolbox-Objekt--------Text---------- ------------------------------------------NotizenLabel1-----------------Picaxe CommunicationsLabel2------------------FTP-StatusLabel3------------------StatusLabel4--------- --------Picaxe-RegisterLabel5------------------Register 0-13Label6------ Wert 0-255Label7------------------FTP-Link DateinameTextbox1------------- --------------------------------------0 ist eine Null, kein OTextbox2----- -----------0Textbox3----------------MeinDateiname--------------------- ----------Ändern, damit keine Konflikte auftreten!Button1------------------ModifyRichtextbox1 Picturebox1 Picturebox2 Timer1

Schritt 8: Code hinzufügen

Code hinzufügen
Code hinzufügen

Siehe Schritt 12 der anderen Anleitung für die Position der Schaltfläche, die zwischen Formularansicht und Codeansicht wechselt. Wechseln Sie in die Codeansicht und fügen Sie den folgenden Code ein. Die Farben sollten alle wieder wie im Screenshot erscheinen. Wenn eine Zeile aufgrund eines Zeilenumbruchproblems nicht richtig kopiert wurde, löschen Sie Leerzeichen, bis die Fehlermeldung verschwindet. Ich habe versucht, die meisten Zeilen zu kommentieren, damit der Code zumindest einen Sinn ergibt. Löschen Sie das Bit der öffentlichen Klasse, damit der Text leer ist, bevor Sie dies einfügen - dieser Code hat bereits eine öffentliche Klasse. Wenn ein Objekt wie ein Textfeld nicht im Formular platziert wurde oder den falschen Namen hat, wird es im Textcode mit einer verschnörkelten blauen Linie darunter angezeigt. Imports System. IOImports Strings = Microsoft. VisualBasic ' kann also verwendet werden Dinge wie left(and right(for stringsPublic Class Form1 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)) ' für sleep-Anweisungen Dim WithEvents serialPort As New IO. Ports. SerialPort ' serieller Port deklarieren Dim PicaxeRegisters(0 bis 13) As Byte 'registriert b0 bis b13 Dim ModifyFlag As Boolean Private Sub Form1_Load(ByVal sender As Object, ByVal e As System. EventArgs) Handles Me. Load 'benötige all diesen Müll -.net fügt es automatisch ein, wenn form1events oben / geladen werden Timer1. Enabled = True ' setze dies im Code als Standard auf false, wenn erstellt Timer1. Interval = 20000 ' alle 20 Sekunden PictureBox1. BackColor = Color. Gray ' starte mit den Kommunikationsboxen grau PictureBox2. BackColor = Color. Gray ModifyFlag = False ' Wenn Sie einen Wert manuell ändern, dann s kip download RichTextBox1. Multiline = True ' kann also mehr als eine Zeile anzeigen Call DisplayPicaxeRegisters() ' die 14 Register anzeigen Call ReadFTPFilename() ' den Dateinamen von der Festplatte lesen (alle 20 Sek. neu gespeichert) End Sub Sub SerialTxRx() Dim DataPacket(0 bis 17) As Byte ' gesamtes Datenpaket "Data"+14 Byte Dim i As Integer ' i ist immer nützlich für Schleifen usw. For i = 0 To 3 DataPacket(i) = Asc(Mid("Data", i + 1, 1)) ' füge das Wort "Data" zum Paket hinzu Next For i = 0 To 13 DataPacket(i + 4) = PicaxeRegisters(i) ' füge alle Bytes zum Paket hinzu Next If serialPort. IsOpen Then serialPort. Close() ' nur für den Fall, dass bereits geöffnet ist End If Try With serialPort. PortName = "COM1" ' Die meisten neuen Computer verwenden standardmäßig com1, aber jeder Computer vor 1999 mit einer seriellen Maus wird wahrscheinlich standardmäßig com2 verwenden. BaudRate = 2400 ' 2400 ist die maximale Geschwindigkeit für kleine Picaxes. Parity = IO. Ports. Parity. None ' keine Parität. DataBits = 8 ' 8 Bit. StopBits = IO. Ports. StopBits. One ' ein Stoppbit. ReadTimeout = 1000 ' Millisekunden ds so timeout in 1 Sekunde, wenn keine Antwort. Open() 'den seriellen Port öffnen. DiscardInBuffer() ' den Eingabepuffer löschen. Write(DataPacket, 0, 18) 'das Datenpaket-Array senden Call Sleep(300) '100 Millisekunden Mindestens warten bis die Daten zurückkommen und mehr, wenn der Datenstrom länger ist. Read(DataPacket, 0, 18) ' zurück in das Datenpaket-Array lesen. Close() ' den seriellen Port schließen End With For i = 4 To 17 PicaxeRegisters (i - 4) = DataPacket(i) ' verschiebt das neue Datenpaket in das Register-Array Next PictureBox1. BackColor = Color. GreenYellow ' funktioniert Catch ex As Exception PictureBox1. BackColor = Color. Red ' funktioniert nicht End Try End Sub Sub FTPUpload (ByVal Filename As String) Dim localFile As String 'Ort zum Speichern von Daten Dim remoteFile As String ' Dateiname ist case sensitive dies ist wirklich wichtig Const host As String = "ftp://ftp.0catch.com" ' Beachten Sie, dass die 0 a Null kein Zeichen O Const Benutzername As String = "picaxe.0catch.com" Const Passwort As String = "picaxetester" Dim URI As String localFile = Filename ' wird möglicherweise nicht benötigt, aber wenn Sie einen Speicherort definieren, z. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential(Benutzername, Passwort) ' anmelden ftp. KeepAlive = False 'wird einmal getrennte Verbindung ftp. UseBinary = True ' Binärkomm. verwenden ftp. Timeout = 9000 ' Timeout nach 9 Sekunden - sehr nützlich, da FTP manchmal stirbt. Method = System. Net. WebRequestMethods. Ftp. UploadFile ' Datei senden starten Dim fs As New FileStream(localFile, FileMode. Open) ' Lokale Datei öffnen Dim filecontents(fs. Length) As Byte ' in den Speicher einlesen fs. Read(filecontents, 0, fs. Length) fs. Close() ' Datei schließen Dim requestStream As Stream = ftp. GetRequestStream() ' FTP-Link starten requestSt ream. Write(filecontents, 0, filecontents. Length) ' sende es requestStream. Close() ' schließe den Link PictureBox2. BackColor = Color. GreenYellow ' ändere das Kästchen auf grün um zu sagen, dass funktionierte ok Label2. Text = "FTP Connected" ' Text, der besagt, dass die Verbindung hergestellt wurde Catch 'Kann keine Verbindung herstellen PictureBox2. BackColor = Color. Red ' Box auf Rot setzen, da keine Verbindung besteht Label2. Text = "FTP Upload Fail" ' Text, der besagt, dass die Verbindung fehlgeschlagen ist End Try End Sub Sub FTPDownload(ByVal Filename As String) ' lädt remotefile in localfile Dim localFile As String 'Ort zum Speichern von Daten Dim remoteFile As String ' Beim Dateinamen muss die Groß-/Kleinschreibung beachtet werden 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 ' im Stammverzeichnis speichern, aber dieses localFile = Filename ' ändern, also kann c:\ hinzugefügt werden, wenn es definiert werden muss aktueller Standort remoteFile = "/" + Filename ' zum Remote-FTP-Standort hinzugefügt URI = host + remoteFile ' Make-up vollständige Adresse Versuchen Sie Dim ftp As System. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential(Benutzername, Passwort) ' Einloggen ftp. KeepAlive = False 'wird nach Beendigung der Verbindung getrennt ftp. UseBinary = True ' Binärmodus ftp. Timeout = 9000 ' Timeout nach 9 Sekunden ftp. Method = System. Net. WebRequestMethods. Ftp. DownloadFile 'Datei herunterladen 'in Stücken einlesen als Ich weiß nicht, wie groß die Datei ist. IO. FileMode. Create) Dim buffer(2047) As Byte Dim read As Integer = 0 Do read = responseStream. Read(buffer, 0, buffer. Length) ' Stück von ftp fs. Write(buffer, 0, read) ' und in Datei schreiben Loop Until read = 0 ' bis keine Teile mehr responseStream. Close() ' ftp-Datei schließen fs. Flush() ' flush clear fs. Close() ' und schließen e file End Using responseStream. Close() ' schließe es, auch wenn nichts da war End Using response. Close() PictureBox2. BackColor = Color. GreenYellow ' grünes Kästchen wie es funktioniert Label2. Text = "FTP Connected" ' und Text, der es sagt hat funktioniert End Using Catch ' Fehlercodes hier einfügen PictureBox2. BackColor = Color. Red ' rotes Feld, da es nicht funktioniert Label2. Text = "FTP Download Fail" ' und Nachricht, um dies zu sagen End Try End Sub Private Sub Timer1_Tick(ByVal sender As System. Object, ByVal e As System. EventArgs) Behandelt Timer1. Tick If ModifyFlag = False Then 'Wenn der Benutzer ein Byte geändert hat, dann nicht herunterladen Label3. Text = "Downloading" System. Windows. Forms. Application. DoEvents() ' so wird der neue Label-Text angezeigt Rufen Sie FTPDownload(TextBox3. Text) auf ' laden Sie die Remote-Datei herunter Label3. Text = "Heruntergeladen" System. Windows. Forms. Application. DoEvents() Rufen Sie ReadRemoteFileToRegisters() auf ' speichern Sie die Dateinummern im Register-Array Label3. Text = "Mit picaxe sprechen" System. Windows. Forms. Application. DoEvents() Sonst ModifyFlag = False 'Flag zurücksetzen End If Call SerialTxRx() ' an die Picaxe senden und zurücklesen Label3. Text = "Von Picaxe gesendet und empfangen" System. Windows. Forms. Application. DoEvents() Call DisplayPicaxeRegisters() Call SaveRegistersToLocalFile() ' Zahlen in Datei speichern Label3. Text = "Uploading" System. Windows. Forms. Application. DoEvents() Call FTPUpload(TextBox3. Text) ' zurück zur FTP-Site mit meinem Namen senden Label3. Text = "Resting" Call SaveFTPFilename() ' so liest sich in when restart End Sub Sub DisplayPicaxeRegisters() Dim i As Integer Dim registernumber As String RichTextBox1. Multiline = True ' kann also mehr als eine Zeile im Textfeld anzeigen RichTextBox1. Clear() ' lösche das Textfeld For i = 0 To 13 registernumber = Trim(Str(i)) ' führende Leerzeichen abschneiden If i < 10 Then registernumber = "0" + registernumber ' 0 zu Zahlen unter 10 hinzufügen End If RichTextBox1. AppendText(registernumber + " = " + Str(PicaxeRegisters(i)) + Chr(13)) Next ' chr(13) ist Wagenrücklauf, also neue Zeile End Sub Private Sub Button1_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Behandelt Button1. Click Dim i As Integer ' Check out of range first 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) ' den Wert ändern Call DisplayPicaxeRegisters() ' and aktualisiere die Anzeige ModifyFlag = True ' und nächster FTP-Link überspringe den Download End Sub Sub SaveRegistersToLocalFile() ' speichere das Register-Array in einer lokalen Textdatei Dim i As Integer FileOpen(1, TextBox3. Text, OpenMode. Output) ' öffne die Textdatei mit dem Namen im Textfeld For i = 0 To 13 PrintLine(1, Str(PicaxeRegisters(i))) ' 14 Werte speichern Next FileClose(1) ' Datei schließen End Sub Sub ReadRemoteFileToRegisters() ' Lokale Textdatei in das Register-Array einlesen Dim i As Integer Dim LineOfText As String Try FileOpen(1, TextBox3. Text, OpenMode. Input) ' den Namen der entfernten Datei lesen For i = 0 To 13 LineOfText = LineInput(1) ' die 14 Zeilen einlesen es PicaxeRegisters(i) = Val(LineOfText) ' Text in Werte konvertieren Next FileClose(1) Catch ex As Exception FileClose(1) ' Datei existiert nicht, also nichts tun End Try End Sub Sub ReadFTPFilename() ' also der Name von die Remote-FTP-Datei ist dieselbe, wenn dieses Programm das nächste Mal ausgeführt wird Dim LineOfText As String Versuchen Sie FileOpen(1, "FTPFilename.txt", OpenMode. Input) ' öffne die Datei LineOfText = LineInput(1) TextBox3. Text = LineOfText ' lies die name FileClose(1) Catch ex As Exception FileClose(1) End Try End Sub Sub SaveFTPFilename() FileOpen(1, "FTPFilename.txt", OpenMode. Output) ' den Namen der entfernten FTP-Datei speichern PrintLine(1, TextBox3. Text) FileClose(1) End SubEnd Klasse

Schritt 9: Führen Sie das Programm auf beiden PCs aus

Führen Sie das Programm auf beiden PCs aus
Führen Sie das Programm auf beiden PCs aus

Starten Sie das Programm, indem Sie auf das grüne Dreieck oben in der Mitte des Bildschirms klicken - die Schaltfläche "Debugging starten". 20 Sekunden lang passiert nichts und dann versucht das Programm, eine Verbindung zum FTP-Server herzustellen und versucht, eine Verbindung zum Picaxe herzustellen. Die Bildboxen werden entweder rot oder grün. Der FTP-Speicherort ist eine kostenlose Website und jeder kann diese verwenden, aber Sie müssen einen anderen FTP-Arbeitsdateinamen verwenden (meiner ist DoctorAcula1), sonst könnten wir alle mit den Daten des anderen enden, wenn wir denselben Dateinamen verwenden! Wenn Sie möchten, können Sie irgendwann Ihre eigene FTP-Site erhalten - ändern Sie einfach den FTP-Standort, den Benutzernamen und das Passwort an zwei Stellen im Code von meiner 0Catch-Website. Die meisten Websites erlauben FTP. Mehrere Computer können auf dieselbe FTP-Datei zugreifen - der FTP-Dateiserver sortiert die Reihenfolge aus. Gelegentlich kommt es zu Datenkonflikten oder Hängenbleiben und diese scheinen alle 20 Dateilesevorgänge aufzutreten. In diesem Fall gibt es eine Zeitüberschreitung im Code, sodass keine Daten und keine beschädigten Daten zurückgegeben werden. Die Verwendung einer Breitbandverbindung mit einer Upload-Geschwindigkeit von 128 kbs bedeutet, dass ein Datei-Upload etwa 3 Sekunden, manchmal aber auch bis zu 8 Sekunden dauert, von denen die meiste Zeit beansprucht wird beim Handshaking statt bei der Datenübertragung. Dies setzt die Timer1-Zeit von mindestens etwa 20 Sekunden unter Berücksichtigung von Download, Upload und Chat mit der Picaxe. Mit sehr schnellem Breitband können Sie eventuell die Zykluszeit verkürzen. Sie können ein Register manuell innerhalb des VB-Programms ändern. Wenn Sie dies tun, überspringt der nächste Timer-Zyklus das Herunterladen von der FTP-Site und sendet die neuen Daten an die Picaxe und liest sie dann zurück und lädt sie hoch. Die neuen Daten finden somit ihren Weg zu allen Picaxen, die dieser Gruppe zugeordnet sind. Dies ist hilfreich zum Debuggen und/oder zum Einbinden von PC-Software in die Hardware-Schleife des Mikrocontrollers. Websites können auch per PERL-Skript oder ähnlichem auf die Hardwareschleife zugreifen, um eine neue Datei auf die FTP-Site zu schreiben. Dieser Screenshot wurde mit dem Tx-Chip aufgenommen, der Schalter war eingeschaltet und das Register b0 = to 1 wurde an den Rx-Chip gesendet, der hatte dann auch Register b1 auf 1 geändert. Die LED leuchtete somit auf beiden Platinen. Dies ist eine triviale Anwendung, aber es ist einfach, eine 3,6 kW-Pumpe anstelle einer LED einzuschalten. Einige weitere Ideen finden Sie unter https://drvernacula.topcities.com/, einschließlich der Verbindung von Picaxes über solarbetriebene Funkverbindungen. Mit Funkverbindungen plus Internet ist es 'The Machines' möglich, in viele Ecken der Welt vorzudringen. Im Picaxe-Forum gibt es einige Ideen, diese Idee weiterzuentwickeln und die PC- und FTP-Site durch dedizierte Webserver-Chips zu ersetzen, die direkt an einen Router angeschlossen werden. Dies würde natürlich den Stromverbrauch einer Verbindung verringern. Wenn Sie an weiteren Diskussionen interessiert sind, posten Sie bitte in den Intstructable-Kommentaren und/oder im Picaxe-Forum. Dr. James MoxhamAdelaide, South Australia

Schritt 10: Screenshots von Code

Screenshots von Code
Screenshots von Code

Auf Anfrage finden Sie hier eine Reihe von Screenshots des vb.net-Codes mit allen Formatierungen. Dieser Code wurde tatsächlich von diesem instructable zurückkopiert und die Formatierung wurde automatisch wieder angezeigt. Es wäre besser, den Text zu kopieren und einzufügen, als zu versuchen, diese Bilder zu lesen, aber diese sind nützlich, wenn Sie sich in einem Internet-Café befinden und vb.net nicht installieren können.

Schritt 11: Screenshot2

Screenshot2
Screenshot2

Screenshot 2

Schritt 12: Screenshot 3

Screenshot 3
Screenshot 3

Screenshot 3

Schritt 13: Screenshot 4

Screenshot 4
Screenshot 4

Screenshot 4

Schritt 14: Screenshot 5

Screenshot 5
Screenshot 5

Screenshot 5

Schritt 15: Screenshot 6

Screenshot 6
Screenshot 6

Screenshot 6

Empfohlen: