สารบัญ:

ลิงก์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า 20 เหรียญ: 15 ขั้นตอน
ลิงก์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า 20 เหรียญ: 15 ขั้นตอน

วีดีโอ: ลิงก์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า 20 เหรียญ: 15 ขั้นตอน

วีดีโอ: ลิงก์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า 20 เหรียญ: 15 ขั้นตอน
วีดีโอ: เรียนไมโครคอนโทรลเลอร์ Arduino เบื้องต้น 2024, กรกฎาคม
Anonim
ลิงค์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า $20
ลิงค์ไมโครคอนโทรลเลอร์ทั่วโลกสำหรับราคาต่ำกว่า $20

ควบคุมเทอร์โมสตัทที่บ้านของคุณจากที่ทำงาน เปิดสปริงเกอร์ได้จากทุกที่ในโลกด้วยการกดสวิตช์ คำแนะนำนี้แสดงวิธีเชื่อมโยงไมโครคอนโทรลเลอร์มูลค่า $4 ตั้งแต่สองตัวขึ้นไปโดยใช้แกนหลักของอินเทอร์เน็ตและโค้ด VB. Net แบบง่ายๆ ซึ่งสร้างจากคำสั่งก่อนหน้าซึ่งแสดงวิธีเชื่อมโยงไมโครคอนโทรลเลอร์กับพีซีและใช้หม้อเพื่อควบคุมเซอร์โว https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ คราวนี้เรามีไมโครคอนโทรลเลอร์คุยกับโปรแกรม VB. Net จากนั้นไปที่เว็บไซต์ ftp กลับไปที่ VB. Net อื่น โปรแกรมและจากนั้นไมโครคอนโทรลเลอร์ตัวที่สองที่ใดก็ได้ในโลกโดยมีหรือไม่มีการแทรกแซงของมนุษย์ เครื่องจักรใน The Matrix จะเข้ามาแทนที่ได้อย่างไรหากพวกเขาไม่สามารถพูดคุยกันได้?

ขั้นตอนที่ 1: รวบรวมชิ้นส่วน

รวบรวมชิ้นส่วน
รวบรวมชิ้นส่วน

หลายส่วนจะเหมือนกับใน PC Control Instructable https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ และขอแนะนำให้ทำสิ่งนี้ให้เสร็จก่อนพยายาม เพื่อเชื่อมโยงไมโครคอนโทรลเลอร์สองตัว แม้ว่าจะค่อนข้างเป็นไปได้ที่จะใช้หม้อเพื่อควบคุมเซอร์โว แต่คราวนี้เราจะไปหาสิ่งที่ง่ายกว่านี้ - สวิตช์เปิดไฟ LED สวิตช์อาจเป็นเซ็นเซอร์ระดับถังได้ง่าย และไฟ LED อาจเป็นปั๊มใกล้แม่น้ำ แต่ขอทำงานง่ายๆ ก่อน ชิ้นส่วน - ชิป Picaxe 08M สองชิ้น - หาได้จากหลายแหล่งรวมถึง Rev Ed https://www.rev- ed.co.uk/picaxe/ (สหราชอาณาจักร), PH Anderson https://www.panderson.com/ (สหรัฐอเมริกา) และ Microzed https://www.microzed.com.au/ (ออสเตรเลีย) ชิปเหล่านี้อยู่ภายใต้ $4US สอง: Protoboard, แบตเตอรี่ 9V และคลิปแบตเตอรี่, ตัวต้านทาน 10k, ตัวต้านทาน 22k, ตัวเก็บประจุ 33uF 16V, ตัวเก็บประจุ 0.1uF, ตัวควบคุม 5V พลังงานต่ำ 7805L, สายไฟ (สายโทรศัพท์ / สายข้อมูลที่เป็นของแข็งเช่น Cat5/6), LED, ตัวต้านทาน 1k 1 จาก: ซ็อกเก็ตและฝาปิดตัวเมีย D9 และสายข้อมูลหลัก 3 (หรือ 4) 2 เมตร (สำหรับดาวน์โหลด) และสวิตช์สลับ คอมพิวเตอร์ 2 เครื่องที่มีพอร์ตอนุกรม 9 พิน (สามารถดีบั๊กบนคอมพิวเตอร์เครื่องเดียวได้) และการเชื่อมต่ออินเทอร์เน็ต สำหรับคอมพิวเตอร์ที่ไม่มีพอร์ตอนุกรม ให้ใช้ USB กับอุปกรณ์ซีเรียล https://www.rev-ed.co.uk/docs/axe027.pdf และซ็อกเก็ตสเตอริโอขนาดเล็ก

ขั้นตอนที่ 2: ดาวน์โหลดและติดตั้งซอฟต์แวร์บางตัว

ดาวน์โหลดและติดตั้งซอฟต์แวร์บางตัว
ดาวน์โหลดและติดตั้งซอฟต์แวร์บางตัว

เราจำเป็นต้องมี VB. Net และซอฟต์แวร์ตัวควบคุม picaxe ฟรี และหากคุณได้ทำตัวควบคุม PC ที่สอนได้ คุณจะมี VB. Net (Visual Basic Express) ได้จาก https://msdn2.microsoft.com/en -us/express/aa718406.aspxซอฟต์แวร์ picaxe มีให้ที่ https://www.rev-ed.co.uk/picaxe/ คุณจะต้องลงทะเบียนกับ microsoft เพื่อดาวน์โหลด - หากเป็นปัญหา ให้ใช้อีเมลปลอม หรือบางสิ่งบางอย่าง. ฉันพบว่าการส่งอีเมลจริงของฉันมีประโยชน์จริง ๆ เมื่อพวกเขาส่งการอัปเดตเป็นครั้งคราว ฉันจะพูดถึงฟอรัม picaxe https://www.picaxeforum.co.uk/ ด้วย เนื่องจากนี่เป็นฟอรัมประเภทที่มีเจ้าหน้าที่ดูแลโดยครูและนักการศึกษา และ ซึ่งโดยปกติแล้วนักเรียนจะได้รับคำตอบสำหรับคำถามภายในไม่กี่ชั่วโมง กระดานสนทนานี้เข้าใจแม้กระทั่งคำถามที่ง่ายที่สุด เนื่องจากนักเรียนบางคนยังอยู่ในระดับประถมศึกษา โปรดอย่ากลัวที่จะขอความช่วยเหลือ!

ขั้นตอนที่ 3: สร้างวงจรดาวน์โหลด

สร้างวงจรดาวน์โหลด
สร้างวงจรดาวน์โหลด

วงจรดาวน์โหลดนี้ใช้ชิป picaxe ตัวต้านทานสองตัว ตัวควบคุม และแบตเตอรี่ 9V ข้อมูลเพิ่มเติมมีอยู่ในเอกสารประกอบของ picaxe/help ซึ่งอยู่ในเมนูวิธีใช้ของโปรแกรม วงจรจะใช้เวลาเพียงไม่กี่นาทีในการสร้างเมื่อชิ้นส่วนทั้งหมดอยู่ในมือ เมื่อตั้งโปรแกรมชิปแล้ว โปรแกรมจะยังคงอยู่ใน EEPROM แม้ว่าจะปิดเครื่องแล้วก็ตาม เนื่องจากเรากำลังตั้งโปรแกรมชิปสองตัวจึงอาจคุ้มค่าที่จะติดฉลากชิปเพื่อให้คุณรู้ว่าตัวไหนเป็นชิปตัวไหน คุณสามารถย้อนกลับและตั้งโปรแกรมชิปใหม่ได้เสมอโดยถอดลิงก์ออกและย้ายตัวต้านทาน

ฉันอาจเพิ่มด้วยว่า picaxes ทำงานอย่างมีความสุขด้วยแบตเตอรี่ AA 3 ก้อน แหล่งจ่ายไฟที่มีการควบคุม 5V มีประโยชน์สำหรับการรันอินพุตแบบอะนาล็อก เนื่องจากแรงดันอ้างอิงไม่เปลี่ยนแปลง แต่สำหรับวงจรเปิด/ปิดอย่างง่าย ไม่จำเป็นต้องใช้แหล่งจ่ายไฟที่มีการควบคุม คุณสามารถละเว้น reg 5V ได้ในสถานการณ์เหล่านี้

ขั้นตอนที่ 4: ตั้งโปรแกรมชิป

โปรแกรมชิป
โปรแกรมชิป

เราจะเรียกหนึ่งโปรแกรม Tx และหนึ่ง Rx Tx เป็นชิปควบคุมและมีสวิตช์และไฟ LED Rx ยังมีไฟ LED เมื่อสวิตช์เปลี่ยนสัญญาณจะเปลี่ยนจาก Tx เป็น Rx ให้เปลี่ยน led และเปลี่ยนตัวแปรตัวที่สองซึ่งจะกลับไปที่ Tx ดังนั้นให้สะบัดสวิตช์และในเวลาน้อยกว่าหนึ่งนาทีไฟ LED จะเปลี่ยนไปทั้งสองวงจรซึ่งระบุว่ามีข้อความอยู่ที่นั่นและ Rx ทำหน้าที่ในตำแหน่งสวิตช์ใหม่ ในระดับที่ง่ายที่สุด picaxe มีการลงทะเบียนแบบไบต์เดี่ยว 14 ตัว เมื่อมีการสร้างเครือข่ายเสมือน เราจะเชื่อมโยงรีจิสเตอร์ทั้งหมดเข้าด้วยกัน ดังนั้นหากไบต์เปลี่ยนแปลงใน picaxe เดียว ก็จะเปลี่ยนใน picaxes ทั้งหมด เห็นได้ชัดว่าถ้าสอง picaxes พยายามเปลี่ยนไบต์เดียวกันจะทำให้เกิดความสับสนมาก แต่ถ้า picaxe แต่ละตัวเปลี่ยนเพียงไบต์เดียวแล้ว picaxes อื่น ๆ ทั้งหมดจะสามารถเห็นการเปลี่ยนแปลงนั้นและสามารถดำเนินการกับมันได้ ข้อความธรรมดาสามารถส่งกลับไปและส่งต่อได้หากบางไบต์ถูกเปลี่ยนโดย picaxe เดียว หม้อสามารถเปลี่ยนค่าในรีจิสเตอร์และ picaxes อื่น ๆ อย่างน้อยหนึ่งตัวสามารถสัมผัสได้ว่าเปลี่ยนและย้ายเซอร์โวหรืออะไรก็ตามและเปิดเครื่องทำความร้อน เครื่องบันทึกที่สองสามารถส่งกลับอุณหภูมิในห้อง คัดลอกและวางโปรแกรมลงในโปรแกรมเมอร์ picaxe และดาวน์โหลดไปยังชิปแต่ละตัวโดยใช้ลูกศรดาวน์โหลดสีน้ำเงินจากภายในโปรแกรมเมอร์ picaxe Tx:main:serin 3, N2400, ("Data"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' รับแพ็กเก็ตจากคอมพิวเตอร์ถ้า pin2= 0 จากนั้น ' ทดสอบสวิตช์และตั้งค่ารีจิสเตอร์ b0 ขึ้นอยู่กับสถานะ b0=0 อื่น b0=1 endif ถ้า b1=0 แล้ว ' picaxe อื่น ๆ ตั้งค่า b1 ขึ้นอยู่กับ b0 ต่ำ 1' นำออกจากอื่นสูง 1' นำบน endif serout 0, N2400, ("ข้อมูล", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' ส่งกลับไปที่คอมพิวเตอร์ ไปที่ mainand Rx:main:serin 3, N2400, ("ข้อมูล"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13' รับแพ็กเก็ตจากคอมพิวเตอร์ b1=b0' เปลี่ยน register b1 เป็น register b0 ถ้า b1 =0 แล้วต่ำ 1' นำออกสูงอื่น 1' นำบน endif serout 0, N2400, ("ข้อมูล", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)' ส่งกลับไปที่คอมพิวเตอร์ goto main

ขั้นตอนที่ 5: สร้างวงจร Tx

สร้างวงจร Tx
สร้างวงจร Tx

หากคุณกำลังพลิกกลับไปกลับมาระหว่างวงจรการทำงานและวงจรการเขียนโปรแกรม อย่าลืมเปลี่ยนการเชื่อมต่อเป็นขา 2 และตำแหน่งของตัวต้านทาน 22k จากขา 2 เป็นขา 4 หรือคุณสามารถสร้างวงจรดาวน์โหลดเฉพาะและย้ายชิป ข้าม. เพียงสังเกตว่าวงจรกำลังทำงานหรือกำลังดาวน์โหลดอยู่เนื่องจากอาจทำให้สับสนได้ โดยเฉพาะอย่างยิ่ง โปรดทราบว่าวงจรวิ่งจะไม่ทำงานหากขาที่ 2 ลอยอยู่ - จะต้องต่อสายดิน เลกที่ 2 คือพินดาวน์โหลด และหากปล่อยทิ้งไว้ มันจะดึง RF ที่หลงทางจากไฟ flouro และชิปคิดว่ากำลังดาวน์โหลดโปรแกรมอื่นอยู่

นอกจากนี้ยังควรกล่าวถึงระบบการตั้งชื่อ picaxe ซึ่งเรียกขาพินทางกายภาพและพินเสมือน ดังนั้นเอาต์พุตบนพิน 2 ในโค้ดจึงเป็นเอาต์พุตบนขาจริง 5 ซึ่งอาจดูแปลก แต่หมายความว่าโค้ดสามารถย้ายไปยัง picaxes ที่ใหญ่กว่าเช่นรุ่น 28 และ 40 พินและยังคงใช้งานได้

ขั้นตอนที่ 6: สร้างวงจร Rx

สร้างวงจร Rx
สร้างวงจร Rx

วงจรนี้เกือบจะเหมือนกับตัวส่งสัญญาณ - มันไม่มีสวิตช์

ขั้นตอนที่ 7: เขียนโค้ด VB. Net บางส่วน

เขียนโค้ด VB. Net บางส่วน
เขียนโค้ด VB. Net บางส่วน

ฉันสามารถคอมไพล์โค้ดและทำให้โปรแกรมนี้พร้อมใช้งานในรูปแบบ.exe ที่คอมไพล์แล้ว แต่การเรียนรู้ VB. Net บางอย่างมีประโยชน์อย่างเหลือเชื่อจนคุ้มค่าที่จะอ่านทีละขั้นตอน หากคุณกำลังใช้งานสิ่งนี้บนคอมพิวเตอร์สองเครื่องที่แตกต่างกัน คุณสามารถสร้างโปรแกรมเป็น.exe ซึ่งจะสร้างโปรแกรมติดตั้งขนาดเล็กที่สามารถติดตั้งบนคอมพิวเตอร์เครื่องที่สองได้ หรือคุณสามารถวาง VB. Net บนคอมพิวเตอร์ทั้งสองเครื่องและเรียกใช้โปรแกรมจากภายใน VB. Net สมมติว่าคุณรู้วิธีเปิดโครงการ VB.net ใหม่จากขั้นตอนที่ 7 และ 8 ของ https://www.instructables.com/id/S1MMU2XF82EU2GT /บนแบบฟอร์มเปล่า ให้เพิ่มส่วนประกอบต่อไปนี้จากแถบเครื่องมือและวางไว้บนแบบฟอร์มในตำแหน่งตามที่แสดง สำหรับป้ายกำกับและกล่องข้อความ ให้เปลี่ยนคุณสมบัติข้อความ (บนขวาล่าง) เป็นสิ่งที่จำเป็น ไม่ต้องกังวลกับการตั้งค่าของตัวจับเวลา - เราจะเปลี่ยนการตั้งค่าในโค้ด แต่อย่าลืมใส่ตัวจับเวลาไว้ด้วย คุณสามารถเคลื่อนย้ายสิ่งของต่างๆ ไปรอบๆ ได้ และไม่มีกฎเกณฑ์เกี่ยวกับตำแหน่งที่แท้จริง กล่องข้อความขนาดใหญ่คือ RichTextBox และกล่องข้อความที่เล็กกว่าสามกล่องคือกล่องข้อความธรรมดา ในแง่ของการเรียงลำดับเราจะเริ่มต้นที่ด้านบนของแบบฟอร์มและเลื่อนลง หากคุณทิ้งบางสิ่งไว้ จะมีข้อผิดพลาดในโค้ดซึ่งควรให้เบาะแสบางอย่าง โปรดเลือกชื่อไฟล์แบบสุ่มสำหรับ Textbox3 - นี่คือชื่อของกลุ่ม picaxes ที่ไม่ซ้ำกันของคุณบนเซิร์ฟเวอร์ ftp และแน่นอนว่าถ้าเราทุกคนใช้ ชื่อเดียวกัน ข้อมูลจะยุ่งเหยิงไปหมด! ขออภัยเกี่ยวกับขีดกลางในตารางนี้ - การเว้นวรรคในช่องว่างจะทำให้การจัดรูปแบบในตารางหายไป วัตถุกล่องเครื่องมือ ------- ข้อความ ----------- ------------------------------ NotesLabel1--------------------------Picaxe CommunicationsLabel2----------------- FTP StatusLabel3 ------------------ StatusLabel4---------- -------- Picaxe RegistersLabel5 ------------------ ลงทะเบียน 0-13Label6 ------------------ ค่า 0-255Label7 ------------------ FTP link filenameTextbox1-------0 -------- ---------------------------------- 0 เป็นศูนย์ไม่ใช่ OTextbox2---- ------------ Textbox3---------------- ชื่อไฟล์ -------------- ----------เปลี่ยนเพื่อไม่ให้เกิดการปะทะ!ปุ่ม1--------------------------ปรับเปลี่ยนRichtextbox1 Picturebox1 Picturebox2 Timer1

ขั้นตอนที่ 8: เพิ่มรหัสบางส่วน

เพิ่มรหัส
เพิ่มรหัส

ดูขั้นตอนที่ 12 ของคำสั่งอื่นๆ สำหรับตำแหน่งของปุ่มที่สลับไปมาระหว่างมุมมองแบบฟอร์มและมุมมองโค้ด สลับไปที่มุมมองโค้ดแล้ววางโค้ดต่อไปนี้ลงไป สีทั้งหมดควรปรากฏขึ้นอีกครั้งเหมือนในภาพหน้าจอ หากบรรทัดไม่ได้คัดลอกอย่างถูกต้องเนื่องจากปัญหา wordwrap ให้ลบช่องว่างจนกว่าข้อความแสดงข้อผิดพลาดจะหายไป ฉันพยายามแสดงความคิดเห็นเกือบทุกบรรทัดดังนั้นโค้ดอย่างน้อยก็สมเหตุสมผล ลบบิตคลาสสาธารณะเพื่อให้ข้อความว่างเปล่าก่อนที่จะวาง - รหัสนี้มีคลาสสาธารณะอยู่แล้ว หากวัตถุเช่นกล่องข้อความไม่ได้ถูกวางบนแบบฟอร์มหรือมีชื่อไม่ถูกต้อง วัตถุนั้นจะปรากฏขึ้นในโค้ดข้อความโดยมีเส้นสีน้ำเงินขยุกขยิกอยู่ข้างใต้Imports System. IOImports Strings = Microsoft. VisualBasic ' จึงสามารถใช้ได้ สิ่งต่าง ๆ เช่น ซ้าย (และขวา (สำหรับ stringsPublic Class Form1 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' สำหรับคำสั่ง sleep Dim WithEvents serialPort As New IO. Ports. SerialPort ' พอร์ตอนุกรมประกาศ Dim PicaxeRegisters (0 ถึง 13) เนื่องจาก Byte ' ลงทะเบียน b0 ถึง b13 Dim ModifyFlag As Boolean Private Sub Form1_Load (ผู้ส่ง ByVal As Object, ByVal e As System. EventArgs) จัดการ Me. Load ' ต้องการสิ่งขยะทั้งหมดนี้ -.net วางไว้โดยอัตโนมัติเมื่อไป form1events ด้านบน / โหลด Timer1. Enabled = True ' ใส่ค่านี้ในโค้ดโดยค่าเริ่มต้นเป็น false เมื่อสร้าง Timer1. Interval = 20000 ' ทุกๆ 20 วินาที PictureBox1. BackColor = Color. Gray ' เริ่มต้นด้วยกล่องข้อความสีเทา PictureBox2. BackColor = Color. Gray ModifyFlag = False' หากแก้ไขค่าด้วยตนเอง s kip ดาวน์โหลด RichTextBox1. Multiline = True ' เพื่อให้สามารถแสดงมากกว่าหนึ่งบรรทัด Call DisplayPicaxeRegisters() ' แสดง 14 registers Call ReadFTPFilename() ' อ่านชื่อไฟล์จากดิสก์ (บันทึกใหม่ทุก 20 วินาที) End Sub Sub SerialTxRx() Dim DataPacket(0 ถึง 17) As Byte ' แพ็กเก็ตข้อมูลทั้งหมด "Data"+14 ไบต์ Dim i As Integer ' i มีประโยชน์เสมอสำหรับลูป ฯลฯ สำหรับ i = 0 ถึง 3 DataPacket(i) = Asc(Mid("Data", i + 1, 1)) ' เพิ่มคำว่า "ข้อมูล" ลงในแพ็กเก็ต Next For i = 0 ถึง 13 DataPacket(i + 4) = PicaxeRegisters(i) ' เพิ่มไบต์ทั้งหมดลงในแพ็กเก็ต Next หาก serialPort. IsOpen แล้ว serialPort. Close() ' ในกรณีที่เปิดแล้ว End If Try With serialPort. PortName = "COM1" ' คอมพิวเตอร์ใหม่ส่วนใหญ่ใช้ค่าเริ่มต้นเป็น com1 แต่คอมพิวเตอร์รุ่นก่อนปี 1999 ที่มีเมาส์ซีเรียลอาจเป็นค่าเริ่มต้น com2. BaudRate = 2400 ' 2400 เป็นความเร็วสูงสุดสำหรับ picaxes ขนาดเล็ก. Parity = IO. Ports. Parity. None ' no parity. DataBits = 8 ' 8 บิต. StopBits = IO. Ports. StopBits. One ' หนึ่งบิตหยุด. ReadTimeout = 1000 'มิลลิวินาที ds หมดเวลาใน 1 วินาทีหากไม่มีการตอบสนอง. Open() ' เปิดพอร์ตอนุกรม. DiscardInBuffer() ' ล้างบัฟเฟอร์อินพุต. Write (DataPacket, 0, 18) ' ส่ง datapacket array Call Sleep (300) ' 100 มิลลิวินาที ขั้นต่ำเพื่อรอให้ข้อมูลกลับมาและอื่น ๆ หากสตรีมข้อมูลยาวขึ้น. Read(DataPacket, 0, 18) ' read back in data packet array. Close() ' ปิดพอร์ตอนุกรม End With For i = 4 ถึง 17 PicaxeRegisters (i - 4) = DataPacket (i) ' ย้ายแพ็กเก็ตข้อมูลใหม่ไปยังอาร์เรย์ลงทะเบียน Next PictureBox1. BackColor = Color. GreenYellow ' ทำงาน Catch ex As Exception PictureBox1. BackColor = Color. Red ' ไม่ทำงาน End Try End Sub Sub Sub FTPUpload (ชื่อไฟล์ ByVal เป็นสตริง) Dim localFile As String 'ที่สำหรับจัดเก็บข้อมูล Dim remoteFile As String' ชื่อไฟล์เป็นแบบตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ สิ่งนี้สำคัญมาก Const host As String = "ftp://ftp.0catch.com" ' โปรดทราบว่า 0 เป็น a ศูนย์ ไม่ใช่อักขระ O ชื่อผู้ใช้ Const As String = "picaxe.0catch.com" รหัสผ่าน Const As String = "picaxetester" Dim URI As String localFile = ชื่อไฟล์ ' อาจไม่จำเป็น แต่ถ้ากำหนดตำแหน่งเช่น c:\mydirectory สามารถเพิ่มได้อย่างง่ายดายด้วยวิธีนี้ remoteFile = "/" + ชื่อไฟล์ ' ไฟล์บนเซิร์ฟเวอร์ ftp ต้องการ "/" เพิ่มในด้านหน้า URI = host + remoteFile ลอง Dim ftp As System. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential(username, password) ' เข้าสู่ระบบ ftp. KeepAlive = False ' จะเป็น ยกเลิกการเชื่อมต่อเมื่อทำเสร็จแล้ว ftp. UseBinary = True ' use binary comms ftp. Timeout = 9000 ' timeout หลังจาก 9 วินาที - มีประโยชน์มากเพราะ ftp บางครั้งหมดเวลา '(และความถี่สัญญาณนาฬิกา 20 วินาที) อาจต้องช้าลงสำหรับการเชื่อมต่อผ่านสายโทรศัพท์ ftp Method = System. Net. WebRequestMethods. Ftp. UploadFile ' เริ่มส่งไฟล์ Dim fs As New FileStream (localFile, FileMode. Open) ' เปิดไฟล์ในเครื่อง Dim filecontents (fs. Length) As Byte ' อ่านในหน่วยความจำ fs. Read (เนื้อหาไฟล์, 0, fs. Length) fs. Close() ' ปิดไฟล์ Dim requestStream As Stream = ftp. GetRequestStream() ' start ftp link requestSt ream. Write(filecontents, 0, filecontents. Length) ' send it requestStream. Close() ' ปิดลิงก์ PictureBox2. BackColor = Color. GreenYellow ' เปลี่ยนกล่องเป็นสีเขียวเพื่อบอกว่าใช้งานได้ดี Label2. Text = "FTP Connected" ' ข้อความบอกว่าเชื่อมต่อแล้ว Catch 'ไม่สามารถเชื่อมต่อ PictureBox2. BackColor = Color. Red ' กล่องเป็นสีแดงเนื่องจากไม่มีการเชื่อมต่อ Label2. Text = "FTP Upload Fail" ' ข้อความว่าการเชื่อมต่อล้มเหลว End Try End Sub Sub Sub FTPDownload (ByVal Filename As String) ' ดาวน์โหลดไฟล์จากระยะไกลไปยัง localfile Dim localFile As String 'สถานที่จัดเก็บข้อมูล Dim remoteFile As String' ชื่อไฟล์เป็นแบบตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ สิ่งนี้สำคัญมาก Const host As String = "ftp://ftp.0catch.com" ชื่อผู้ใช้ Const As String = "picaxe.0catch.com" รหัสผ่าน Const As String = "picaxetester" Dim URI As String 'localFile = "C:\" + Filename ' เก็บในไดเร็กทอรีราก แต่สามารถเปลี่ยน localFile นี้ = ชื่อไฟล์ ' เพื่อเพิ่ม c:\ หากจำเป็นต้องกำหนด ตำแหน่งจริง remoteFile = "/" + ชื่อไฟล์ ' เพิ่มไปยังตำแหน่ง ftp ระยะไกล URI = โฮสต์ + remoteFile ' ประกอบ ที่อยู่แบบเต็ม ลอง Dim ftp As System. Net. FtpWebRequest = CType(System. Net. FtpWebRequest. Create(URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential (ชื่อผู้ใช้ รหัสผ่าน) ' เข้าสู่ระบบ ftp. KeepAlive = False ' จะถูกตัดการเชื่อมต่อหลังจากเสร็จสิ้น ftp. UseBinary = True ' binary mode ftp. Timeout = 9000 ' หมดเวลาหลังจาก 9 วินาที ftp. Method = System. Net. WebRequestMethods. Ftp. DownloadFile ' ดาวน์โหลดไฟล์ ' อ่านเป็นชิ้น ๆ เป็น ไม่รู้ว่าไฟล์ใหญ่แค่ไหน ใช้ response As System. Net. FtpWebResponse = CType(ftp. GetResponse, System. Net. FtpWebResponse) ใช้ responseStream As IO. Stream = response. GetResponseStream ใช้ fs As ใหม่ IO. FileStream(localFile, IO. FileMode. Create) Dim buffer(2047) ขณะที่ Byte Dim อ่าน As Integer = 0 Do read = responseStream. Read (buffer, 0, buffer. Length) ' ชิ้นจาก ftp fs. Write (buffer, 0, read) ' และ เขียนไปยังไฟล์ วนซ้ำจนกว่าจะอ่าน = 0 ' จนกว่าจะไม่มีชิ้นส่วนอื่น responseStream. Close() ' ปิดไฟล์ ftp fs. Flush() ' flush clear fs. Close() ' และปิด th e file End โดยใช้ responseStream. Close() ' ปิดแม้ว่าไม่มีอะไรอยู่ที่นั่น End Using response. Close() PictureBox2. BackColor = Color. GreenYellow ' กล่องสีเขียวตามที่มันทำงาน Label2. Text = "FTP Connected" ' และข้อความบอกว่ามัน ทำงาน สิ้นสุด การใช้ Catch ' ใส่รหัสข้อผิดพลาดที่นี่ PictureBox2. BackColor = Color. Red ' กล่องสีแดงเนื่องจากใช้งานไม่ได้ Label2. Text = "FTP Download Fail" ' และข้อความให้บอกว่า End Try End Sub Private Sub Timer1_Tick (ผู้ส่ง ByVal ในฐานะ System. Object, ByVal e As System. EventArgs) จัดการ Timer1. Tick หาก ModifyFlag = False ถ้าผู้ใช้เปลี่ยนไบต์อย่าดาวน์โหลด Label3. Text = "กำลังดาวน์โหลด" System. Windows. Forms. Application. DoEvents () ' ดังนั้นข้อความป้ายกำกับใหม่จะแสดง Call FTPDownload (TextBox3. Text) ' ดาวน์โหลดไฟล์ระยะไกล Label3. Text = "ดาวน์โหลดแล้ว" System. Windows. Forms. Application. DoEvents() โทร ReadRemoteFileToRegisters () ' บันทึกหมายเลขไฟล์ลงในอาร์เรย์การลงทะเบียน Label3. Text = "กำลังคุยกับ picaxe" System. Windows. Forms. Application. DoEvents() Else ModifyFlag = False 'ตั้งค่าสถานะใหม่ End If Call SerialTxRx() ' ส่งไปที่ picaxe และอ่านกลับมา Label3. Text = "ส่งและรับจาก picaxe" System. Windows. Forms. Application. DoEvents() Call DisplayPicaxeRegisters() Call SaveRegistersToLocalFile() ' บันทึกตัวเลขลงในไฟล์ Label3. Text = "กำลังอัปโหลด" System. Windows. Forms. Application. DoEvents () โทร FTPUpload (TextBox3. Text) ' ส่งกลับไปยังไซต์ ftp ที่ตั้งชื่อตามชื่อของฉัน Label3. Text = "พักผ่อน" โทร SaveFTPFilename () ' ดังนั้นอ่าน เมื่อรีสตาร์ท End Sub Sub Sub DisplayPicaxeRegisters() Dim i As Integer Dim registernumber As String RichTextBox1. Multiline = True ' จึงสามารถแสดงมากกว่าหนึ่งบรรทัดในกล่องข้อความ RichTextBox1. Clear() ' ล้างกล่องข้อความ For i = 0 ถึง 13 registernumber = Trim(Str(i)) ' ตัดช่องว่างนำหน้า ถ้าฉัน < 10 จากนั้น registernumber = "0" + registernumber ' เพิ่ม 0 ให้กับตัวเลขภายใต้ 10 End If RichTextBox1. AppendText(registernumber + " = " + Str (PicaxeRegisters(i))) + Chr(13)) ถัดไป ' chr(13) คือ carriage return ดังนั้นบรรทัดใหม่ End Sub Private Sub Button1_Click(ByVal sender ในฐานะ System. Object, ByVal e As System. EventArgs) จัดการ Button1. Click Dim i As Integer ' ให้ตรวจสอบนอกช่วงก่อน i = Val (TextBox1. Text) ถ้าฉัน <0 หรือ i> 13 จากนั้น TextBox1. Text = 0 End ถ้า i = Val(TextBox2. Text) ถ้าฉัน <0 หรือ i> 255 จากนั้น TextBox2. Text = 0 End ถ้า PicaxeRegisters(Val(TextBox1. Text)) = Val(TextBox2. Text) ' เปลี่ยนค่า Call DisplayPicaxeRegisters() ' และ รีเฟรชจอแสดงผล ModifyFlag = True ' และลิงก์ ftp ถัดไปข้ามการดาวน์โหลด End Sub Sub SaveRegistersToLocalFile() ' บันทึกอาร์เรย์การลงทะเบียนในไฟล์ข้อความในเครื่อง Dim i As Integer FileOpen (1, TextBox3. Text, OpenMode. Output) ' เปิดไฟล์ข้อความที่ชื่อ ในกล่องข้อความ สำหรับ i = 0 ถึง 13 PrintLine(1, Str(PicaxeRegisters(i))) ' บันทึก 14 ค่า Next FileClose(1) ' ปิดไฟล์ End Sub Sub ReadRemoteFileToRegisters() ' อ่านไฟล์ข้อความในเครื่องในอาร์เรย์ลงทะเบียน Dim i As Integer Dim LineOfText As String ลอง FileOpen (1, TextBox3. Text, OpenMode. Input) ' อ่านชื่อไฟล์ระยะไกลสำหรับ i = 0 ถึง 13 LineOfText = LineInput(1) ' อ่านใน 14 lin es PicaxeRegisters(i) = Val(LineOfText) ' แปลงข้อความเป็นค่า Next FileClose(1) Catch ex As Exception FileClose(1) ' file ไม่มีอยู่ ดังนั้นอย่าทำอะไรเลย End Try End Sub Sub Sub ReadFTPFilename() ' ดังนั้นชื่อของ ไฟล์ ftp ระยะไกลจะเหมือนกันในครั้งต่อไปที่โปรแกรมนี้เรียกใช้ Dim LineOfText As String ลอง FileOpen (1, "FTPFilename.txt", OpenMode. Input) ' เปิดไฟล์ LineOfText = LineInput(1) TextBox3. Text = LineOfText ' อ่าน ชื่อ FileClose(1) Catch ex เป็นข้อยกเว้น FileClose(1) End Try End Sub Sub SaveFTPFilename() FileOpen(1, "FTPFilename.txt", OpenMode. Output) ' บันทึกชื่อไฟล์ ftp ระยะไกล PrintLine(1, TextBox3. Text) FileClose(1) End SubEnd Class

ขั้นตอนที่ 9: เรียกใช้โปรแกรมบนพีซีทั้งสองเครื่อง

เรียกใช้โปรแกรมบนพีซีทั้งสองเครื่อง
เรียกใช้โปรแกรมบนพีซีทั้งสองเครื่อง

เริ่มใช้งานโปรแกรมโดยคลิกที่สามเหลี่ยมสีเขียวที่ตรงกลางด้านบนของหน้าจอ - ปุ่ม 'เริ่มการดีบัก' จะไม่มีอะไรเกิดขึ้นเป็นเวลา 20 วินาที จากนั้นโปรแกรมจะพยายามเชื่อมต่อกับเซิร์ฟเวอร์ ftp และจะพยายามเชื่อมต่อกับ picaxe กล่องภาพจะเป็นสีแดงหรือสีเขียว ตำแหน่ง ftp เป็นเว็บไซต์ฟรีและทุกคนสามารถใช้สิ่งนี้ได้ แต่คุณต้องใช้ชื่อไฟล์ที่ใช้ ftp อื่น (ของฉันคือ DoctorAcula1) ไม่เช่นนั้นเราอาจจบลงด้วยข้อมูลของกันและกันถ้าเราใช้ชื่อไฟล์เดียวกัน! หากคุณต้องการในที่สุด คุณก็จะได้ไซต์ ftp ของคุณเอง - เพียงแค่เปลี่ยนตำแหน่ง ftp ชื่อผู้ใช้และรหัสผ่านในสองตำแหน่งในโค้ดจากเว็บไซต์ 0Catch ของฉัน เว็บไซต์ส่วนใหญ่อนุญาต ftp คอมพิวเตอร์หลายเครื่องสามารถเข้าถึงไฟล์ ftp เดียวกันได้ - เซิร์ฟเวอร์ไฟล์ ftp จะเรียงลำดับสิ่งที่เกิดขึ้น บางครั้งมีการขัดข้องของข้อมูลหรือหยุดทำงาน และดูเหมือนว่าจะเกิดขึ้นทุกๆ 20 ไฟล์ที่อ่านมีการหมดเวลาในโค้ดหากเกิดเหตุการณ์นี้ขึ้น ดังนั้นจึงไม่ส่งคืนข้อมูลใด ๆ แทนที่จะเป็นข้อมูลที่เสียหาย การใช้การเชื่อมต่อบรอดแบนด์ที่มีความเร็วในการอัปโหลด 128kbs หมายถึงการอัปโหลดไฟล์ใช้เวลาประมาณ 3 วินาที แต่บางครั้งอาจนานถึง 8 วินาที ซึ่งส่วนใหญ่ใช้เวลา ในการจับมือกันมากกว่าการถ่ายโอนข้อมูล การตั้งค่านี้ตั้งเวลา timer1 อย่างน้อยประมาณ 20 วินาทีโดยพิจารณาจากการดาวน์โหลด อัปโหลด และแชทกับ picaxe ด้วยบรอดแบนด์ที่เร็วมาก คุณอาจสามารถลดรอบเวลาได้ คุณสามารถเปลี่ยนการลงทะเบียนด้วยตนเองภายในโปรแกรม VB หากคุณทำเช่นนั้น รอบการจับเวลาถัดไปจะข้ามการดาวน์โหลดจากไซต์ ftp และส่งข้อมูลใหม่ไปยัง picaxe จากนั้นอ่านและอัปโหลด ข้อมูลใหม่จึงหาทางไปยัง picaxes ทั้งหมดที่เชื่อมโยงกับกลุ่มนี้ สิ่งนี้มีประโยชน์สำหรับการดีบักและ/หรือสำหรับการเชื่อมโยงซอฟต์แวร์พีซีเข้ากับลูปฮาร์ดแวร์ไมโครคอนโทรลเลอร์ เว็บไซต์ยังสามารถเข้าถึงลูปฮาร์ดแวร์โดยใช้สคริปต์ PERL หรือคล้ายกันเพื่อเขียนไฟล์ใหม่ไปยังไซต์ ftp ภาพหน้าจอนี้ถ่ายโดยใช้ชิป Tx สวิตช์เปิดอยู่ และรีจิสเตอร์ b0 = ถึง 1 ถูกส่งไปยังชิป Rx ซึ่ง ได้เปลี่ยน register b1 เป็น 1 เช่นกัน ไฟ LED จึงติดสว่างทั้งสองแผง นี่เป็นแอปพลิเคชั่นเล็กน้อย แต่ง่ายต่อการเปิดปั๊ม 3.6Kw แทนไฟ LED แนวคิดเพิ่มเติมบางส่วนอยู่ที่ https://drvernacula.topcities.com/ รวมถึงการเชื่อมโยง picaxes ผ่านลิงก์วิทยุพลังงานแสงอาทิตย์ ด้วยลิงก์ทางวิทยุและอินเทอร์เน็ต ทำให้ 'The Machines' สามารถเข้าถึงส่วนต่างๆ ของโลกได้ มีแนวคิดบางอย่างในฟอรัม picaxe เกี่ยวกับการนำแนวคิดนี้ต่อไปและแทนที่พีซีและไซต์ ftp ด้วยชิปเว็บเซิร์ฟเวอร์เฉพาะที่เสียบเข้ากับเราเตอร์โดยตรง เห็นได้ชัดว่าสิ่งนี้จะลดการใช้พลังงานของลิงค์ หากคุณสนใจในการอภิปรายเพิ่มเติม โปรดโพสต์ในความคิดเห็นที่สอนได้ และ/หรือในฟอรัม picaxe ดร.เจมส์ ม็อกแฮมแอดิเลด รัฐเซาท์ออสเตรเลีย

ขั้นตอนที่ 10: ภาพหน้าจอของ Code

ภาพหน้าจอของ Code
ภาพหน้าจอของ Code

ตามคำขอ ต่อไปนี้คือชุดภาพหน้าจอของโค้ด vb.net พร้อมการจัดรูปแบบทั้งหมด รหัสนี้ถูกคัดลอกกลับมาของคำสั่งนี้จริง ๆ และการจัดรูปแบบปรากฏขึ้นอีกครั้งโดยอัตโนมัติ การคัดลอกและวางข้อความจะดีกว่าการพยายามอ่านรูปภาพเหล่านี้ แต่จะมีประโยชน์หากคุณอยู่ในร้านอินเทอร์เน็ตและไม่สามารถติดตั้ง vb.net

ขั้นตอนที่ 11: ภาพหน้าจอ2

ภาพหน้าจอ2
ภาพหน้าจอ2

ภาพหน้าจอ2

ขั้นตอนที่ 12: ภาพหน้าจอ3

ภาพหน้าจอ3
ภาพหน้าจอ3

ภาพหน้าจอ3

ขั้นตอนที่ 13: ภาพหน้าจอ4

ภาพหน้าจอ 4
ภาพหน้าจอ 4

ภาพหน้าจอ 4

ขั้นตอนที่ 14: ภาพหน้าจอ 5

ภาพหน้าจอ 5
ภาพหน้าจอ 5

ภาพหน้าจอ 5

ขั้นตอนที่ 15: ภาพหน้าจอ6

ภาพหน้าจอ 6
ภาพหน้าจอ 6

ภาพหน้าจอ 6

แนะนำ: