สารบัญ:

เครื่องอ่านการ์ด SD ไร้สาย [ESP8266]: 10 ขั้นตอน (พร้อมรูปภาพ)
เครื่องอ่านการ์ด SD ไร้สาย [ESP8266]: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องอ่านการ์ด SD ไร้สาย [ESP8266]: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องอ่านการ์ด SD ไร้สาย [ESP8266]: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: [ ของแท้ VS ของปลอม ] อันไหนคุ้ม SD Card Lightning iPhone/iPad 2024, กรกฎาคม
Anonim
Image
Image

USB ควรจะเป็นแบบสากล และเป้าหมายหลักคือการทำให้ hot-swappable เชื่อมต่อกับอุปกรณ์อื่นได้ง่ายสุด ๆ แต่ในช่วงหลายปีที่ผ่านมาแนวคิดนี้ก็ยุ่งเหยิง พอร์ต USB เหล่านี้มีหลากหลายรูปแบบซึ่งน่าหงุดหงิดในบางครั้ง และวิธีการทำงานเหล่านี้ขัดแย้งกับชื่อ [USB - Universal Serial Bus] โดยสิ้นเชิง เพราะตัวรับสัญญาณ USB ทุกตัวควรเข้ากันได้กับอุปกรณ์ USB ทุกชนิด! คุณไม่สามารถเสียบแท่ง USB หรือแป้นพิมพ์ในที่ชาร์จและคาดว่าจะใช้งานได้

แต่คอนเซปต์ฟังดูดีเกินไป! นั่นเป็นเหตุผลที่เริ่มต้นแนวคิด "พอร์ตอเนกประสงค์" นี้ ฉันเริ่มต้นด้วยโครงการง่ายๆ "เครื่องอ่านการ์ดไร้สาย"

เป็นไปตามความปรารถนาของฉันทั้งหมด ทั้งหมดที่ฉันต้องทำคือเพียงแค่เสียบเข้ากับตัวรับสัญญาณ USB ใดๆ ก็ตาม ไม่ว่าอันไหน!

ทันทีที่คุณเสียบปลั๊ก มันจะสร้างจุดเชื่อมต่อที่เราสามารถเชื่อมต่อแล้วเชื่อมต่อกับจุดเชื่อมต่อ และเพียงแค่เปิดแอปพลิเคชั่นไคลเอนต์ FTP ในอุปกรณ์ที่เข้ากันได้ ด้วยการตั้งค่านี้ เราสามารถคัดลอกและบันทึกไฟล์ไปยังการ์ด SD แบบไร้สายได้!

เสบียง

นี่คือรายการผลิตภัณฑ์ที่สามารถช่วยให้คุณทำโครงการนี้ได้อย่างง่ายดาย

(ลิงค์พันธมิตร)

  • Esp12E:
  • การ์ด SD:
  • อะแดปเตอร์ Micro SD:
  • HeaderPins:
  • หมุดหัวมุม:
  • สายไฟ:
  • FTDI:
  • Arduino nano + สายโปรแกรมเมอร์:
  • USB ชาย:
  • PCB:
  • ปืนบัดกรี:
  • หัวแร้ง:

ขั้นตอนที่ 1: การ์ด SD (Secure Digital)

การ์ด SD(Secure Digital)
การ์ด SD(Secure Digital)

SD ย่อมาจาก Secure Digital ซึ่งคล้ายกับ Pendrive ของคุณ แต่มีขนาดเล็กกว่าและราคาที่ถูกกว่ามาก

เมื่อเราต้องใช้สิ่งนี้กับไมโครคอนโทรลเลอร์ตัวใดตัวหนึ่ง มี 2 ตัวเลือกหนึ่งคือ SDIO และ SPI การ์ด SD เกือบทั้งหมดมีคุณสมบัติมาตรฐานหลายอย่าง และมีข้อกำหนดทางกายภาพและทางไฟฟ้าเหมือนกัน ความแตกต่างที่แท้จริงระหว่าง SPI และ SDIO นั้นส่วนใหญ่อยู่ที่ระดับซอฟต์แวร์ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในลิงค์นี้

ในตอนนี้ สมมติว่า SDIO เร็วกว่าแต่ใช้งานยากกว่า และ SPI นั้นช้ากว่าแต่นำไปใช้ได้ง่ายกว่า เนื่องจากไมโครคอนโทรลเลอร์ส่วนใหญ่รองรับ SPI โดยค่าเริ่มต้น เราจึงจะใช้มันต่อไป

ช่องเสียบการ์ด SD สำหรับ SPI

Pin-1 - CS (Chip select)Pin-2 - DI (MOSI)Pin-3 - GNDPin-4 - VCCPin-5 - SCLKPin-6 - GNDPin-7 - DO (MISO)Pin-8 - NCPin-9 - NC

ขั้นตอนที่ 2: การปรับเปลี่ยนอะแดปเตอร์การ์ด SD

การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD
การปรับเปลี่ยนอะแดปเตอร์การ์ด SD

คุณสามารถใช้โมดูลการ์ด SD ที่รองรับ Arduino และ esp8266 ได้ แต่สำหรับวัตถุประสงค์ของโครงการนี้ เราจะใช้อะแดปเตอร์การ์ด microSD และจะปรับเปลี่ยนในลักษณะที่เราสามารถใช้แทนโมดูลได้

ขั้นแรก ทำความสะอาดหน้าสัมผัสของอะแดปเตอร์การ์ด SD จากนั้นใช้หมุดส่วนหัวที่ทำมุมแล้วประสานหมุดเข้ากับหน้าสัมผัสของอะแดปเตอร์โดยตรง เมื่อบัดกรีเสร็จแล้ว ให้ตรวจสอบหน้าสัมผัสระหว่างหมุดส่วนหัวเพื่อตรวจสอบว่ามีไฟฟ้าลัดวงจรหรือไม่ ถอดตัวคั่นสีดำออกทีละตัว ดังนั้นเมื่อเราใส่กลับเข้าไป มันจะล้างออกด้วย PCB

ตัด PCB ให้พอดีกับอะแดปเตอร์การ์ด SD และมีพื้นที่เพิ่มเติมเพื่อเพิ่มพอร์ต USB ตัวผู้

คุณยังสามารถทำขั้นตอนเดียวกันนี้กับการ์ด SD แทนอะแดปเตอร์ได้ แต่จะค่อนข้างเสี่ยงหากคุณทำเสียหาย

ขั้นตอนที่ 3: การเชื่อมต่อ USB

การเชื่อมต่อ USB
การเชื่อมต่อ USB
การเชื่อมต่อ USB
การเชื่อมต่อ USB
การเชื่อมต่อ USB
การเชื่อมต่อ USB

เราจำเป็นต้องจ่ายไฟให้กับการ์ด SD สำหรับสิ่งนั้น เราจะใช้พอร์ตรับ USB เอง ดังนั้นเราจะใช้พอร์ต USB ตัวผู้ โดยปกติแล้วจะมี 4 พิน โดยที่ 2 พินตรงกลางใช้สำหรับถ่ายโอนข้อมูล และ 2 พินสุดขั้วใช้สำหรับส่งกำลังและกราวด์ เนื่องจากเราต้องการพลังงานเพียงอย่างเดียว ฉันจะตัดหมุดข้อมูลและเก็บ GND และ VCC ไว้

จากนั้นวางพอร์ต USB ตัวผู้ไว้ด้านหน้าการ์ด SD ที่เราสร้างพื้นที่ไว้ก่อนหน้านี้ จากนั้นประสานเข้าที่ นี่ยังไม่ได้แก้ปัญหาเรื่องพลังงานเลย! เนื่องจากการ์ด SD ต้องการ 3.3v แต่แหล่งจ่ายไฟ USB เป็นมาตรฐาน 5V หากคุณเพียงแค่เสียบปลั๊กเข้ากับแหล่งจ่ายไฟ คุณอาจจะทำให้การ์ด SD แตก (แต่อะแดปเตอร์ microSD จะไม่เกิดความเสียหาย)

เพื่อแก้ปัญหานี้ เราจะใช้ตัวควบคุม 3.3V และเชื่อมต่ออินพุตของแหล่งจ่าย USB กับตัวควบคุม 3.3V เช่น เชื่อมต่อ GND ของ USB กับพิน 1 ของตัวควบคุม และเชื่อมต่อพิน 3 ของตัวควบคุมกับ +5V ของตัวควบคุม สุดท้ายประสานพิน 3 (พินเอาต์พุต) และกราวด์ของตัวควบคุมเข้ากับการ์ด SD

การดำเนินการนี้จะตั้งค่าพลังงานสำหรับการ์ด SD คุณสามารถตรวจสอบแผนภาพวงจรสำหรับการเชื่อมต่อที่มีรายละเอียดมากขึ้น

ขั้นตอนที่ 4: นำทุกอย่างมารวมกันด้วย ESP-12E

รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E
รวมทุกอย่างเข้าด้วยกันด้วย ESP-12E

ในการอ่านและเขียนข้อมูลจากการ์ด SD เราจะใช้โมดูล Esp12E wifi แม้ว่าจะช้ากว่า esp32 ก็ตาม แต่มันไม่สำคัญหรอกว่าคุณจะเลือกอันไหน ฉันจะบอกเหตุผลในขั้นตอนหลังๆ

ขั้นแรกให้ประสาน EN (เปิดใช้งานพิน) กับ VCC ของ esp12E ซึ่งจะเป็นการเปิด IC หากไม่ได้เชื่อมต่อกับสัญญาณ HIGH IC จะไม่เปิดขึ้น จากนั้นวาง esp12E ที่ด้านหลังของบอร์ด PCB และประสานพิน SPI ของ esp12E เข้ากับพิน SPI บนการ์ด SD สำหรับรายละเอียด การเชื่อมต่อตรวจสอบแผนภาพวงจร

ขั้นตอนที่ 5: HTTP VS FTP

ก่อนเขียนโปรแกรม ฉันได้ค้นคว้าเกี่ยวกับวิธีการทำงานของการดาวน์โหลดและอัปโหลด ซึ่งตอนนั้นเองที่ฉันพบคำว่า FTP โดยทั่วไป FTP ย่อมาจากโปรโตคอลการถ่ายโอนไฟล์ โปรโตคอลนี้ใช้เพื่อถ่ายโอนไฟล์ระหว่างเซิร์ฟเวอร์และไคลเอนต์ และแตกต่างอย่างสิ้นเชิงจาก HTTP ปกติที่ไคลเอนต์และเซิร์ฟเวอร์ส่งและรับคำขอ/การตอบสนองซึ่งมีขนาดเล็กมาก

FTP นั้นเร็วกว่า HTTP ในการถ่ายโอนไฟล์เพราะถูกสร้างขึ้นมาเพื่อมันโดยเฉพาะ ดังนั้นฉันจึงต้องการนำไปใช้ในโครงการนี้ ตำแหน่งที่เซิร์ฟเวอร์ FTP ทำงานบน esp-12E และเราสามารถผลักและดึงข้อมูลผ่าน FTP นี้ไปยังการ์ด SD

ขั้นตอนที่ 6: ค้นหาไลบรารี FTP

การหา FTP Library
การหา FTP Library
การหา FTP Library
การหา FTP Library

ฉันไม่พบไลบรารี FTP ใดที่มีการพัฒนาอย่างแข็งขันหรือสร้างขึ้นเป็นพิเศษสำหรับ esp8266 แต่ด้วยการขุดค้นฉันเจอ David Paiva ซึ่งย้ายเซิร์ฟเวอร์ FTP เวอร์ชัน Arduino ไปยัง esp8266 แต่ด้วยการสนับสนุน SPIFFS ไม่ใช่การ์ด SD

แต่ด้วยความพยายามเพียงเล็กน้อย ฉันพบใครบางคนที่ทำงานในห้องสมุด David Paiva เพื่อแปลง SPIFFS เป็นการ์ด SD แต่เมื่อฉันพยายามใช้สิ่งนี้ฉันประสบปัญหา 2 ประการ อันดับแรก หน้าเว็บที่ฉันค้นพบเป็นภาษาเกาหลี ดังนั้นฉันจึงต้องนั่งแปลทุกอย่างเพื่อให้รู้ว่าเกิดอะไรขึ้นก่อนที่ฉันจะทำอะไรกับมันได้ ปัญหาที่สองคือ ฉันต้องแก้ไขไลบรารี SD ที่มีอยู่เพื่อรองรับการเปลี่ยนแปลงที่เขาทำ แต่นั่นก็ดูเงอะงะมาก

ดังนั้นฉันจึงเปรียบเทียบห้องสมุดทั้งสองนี้ ห้องสมุดหนึ่งมาจาก David Paiva และอีกห้องสมุดหนึ่งมาจากเว็บไซต์ของเกาหลี จากนั้นจึงทำการเปลี่ยนแปลงเล็กน้อยและทำให้ทั้งหมดเป็นโครงการเดียว ดังนั้นจึงไม่จำเป็นต้องติดตั้งไลบรารีใด ๆ คุณสามารถตรวจสอบรหัสจากบัญชี Github ของฉัน

ขั้นตอนที่ 7: การเขียนโปรแกรม ESP-12E

การเขียนโปรแกรม ESP-12E
การเขียนโปรแกรม ESP-12E
การเขียนโปรแกรม ESP-12E
การเขียนโปรแกรม ESP-12E
การเขียนโปรแกรม ESP-12E
การเขียนโปรแกรม ESP-12E

ESP-12E ไม่ได้มาพร้อมกับโปรแกรมเมอร์ในตัว ดังนั้นเราจึงต้องใช้โปรแกรมเมอร์ภายนอก เช่น โมดูล FDTI ดังนั้นฉันจึงสร้างอะแดปเตอร์โดยใช้สายไฟสองสามเส้นและหมุดหัวตัวเมีย ด้วยวิธีนี้ เราสามารถประสาน esp12E ชั่วคราวและตั้งโปรแกรมโดยใช้โมดูล FTDI

เชื่อมต่อ GND[esp12E] กับ GND, Rx[esp12E] กับ Tx, Tx[esp12E] กับ Rx, GPIO15[esp12E] กับ GND, GPIO0 [esp12E] ถึง GND, VCC[esp12E] ถึง VCC ของโมดูล FDTI

จากนั้นอัปโหลดโค้ดจาก Github โดยใช้ Arduino IDE

เมื่ออัปโหลดโปรแกรมแล้ว คุณสามารถถอดสายไฟที่เชื่อมต่อกับโปรแกรม esp12E ออกได้

ขั้นตอนที่ 8: เสร็จสิ้นโครงการ

จบโครงการ!
จบโครงการ!
จบโครงการ!
จบโครงการ!
จบโครงการ!
จบโครงการ!

เพียงใส่การ์ด microSD [สูงสุด 32 GB] ลงในอะแดปเตอร์แล้วเสียบอุปกรณ์ทั้งหมดเข้ากับอุปกรณ์ที่รองรับ USB ซึ่งน่าจะเพิ่มพลังให้กับสิ่งต่างๆ! แต่มีบางสิ่งที่ต้องพิจารณา ตรวจสอบให้แน่ใจว่ากระแสไฟขาออกของพอร์ต USB มากกว่า 1 แอมป์ เพื่อความปลอดภัย เนื่องจากโมดูล Esp12E ใช้กระแสไฟมากกว่าเมื่อถ่ายโอนไฟล์

ขั้นตอนที่ 9: การใช้อุปกรณ์

การใช้เครื่อง
การใช้เครื่อง
การใช้เครื่อง
การใช้เครื่อง
การใช้เครื่อง
การใช้เครื่อง

ทันทีที่อุปกรณ์ได้รับพลังงาน อุปกรณ์จะสร้างจุดเชื่อมต่อที่เรียกว่า SD Reader เชื่อมต่อกับจุดเชื่อมต่อนี้โดยใช้รหัสผ่านซึ่งอยู่ในรหัส จากนั้นขึ้นอยู่กับอุปกรณ์ที่คุณใช้เพื่อเชื่อมต่อกับ 12E ดาวน์โหลดซอฟต์แวร์ไคลเอนต์ FTP ที่เกี่ยวข้อง หากคุณใช้พีซีดาวน์โหลด WinSCP หรือ Filzella และหากคุณใช้อุปกรณ์ Android ดาวน์โหลด AndFTP

เมื่อการติดตั้งเสร็จสิ้น ให้เปิด AndFTP และกรอกข้อมูลประจำตัวเพื่อตั้งค่าไคลเอนต์ FTP ในกรณีของฉัน ฉันปล่อยให้ชื่อผู้ใช้และรหัสผ่านเป็นค่าเริ่มต้น "esp8266" ในรหัส ดังนั้นใช้สิ่งนั้นสำหรับข้อมูลผู้ใช้และสำหรับโฮสต์ให้ใช้ 192.168.12.7 สุดท้าย เชื่อมต่อกับเซิร์ฟเวอร์ FTP

เมื่อเสร็จแล้ว คุณสามารถดาวน์โหลดไฟล์ใดๆ จากการ์ด SD และอัปโหลดไฟล์จากโทรศัพท์ของคุณไปยังการ์ด SD ได้

คุณสามารถดูวิดีโอเพื่อทราบวิธีการทำงาน!

ขั้นตอนที่ 10: ความคิดสุดท้าย

ความคิดสุดท้าย
ความคิดสุดท้าย
ความคิดสุดท้าย
ความคิดสุดท้าย

แต่ก่อนที่จะสรุปว่าเป็นอุปกรณ์ที่มีประโยชน์มาก ลองย้อนกลับไปดู

แม้จะทำในสิ่งที่ต้องการ แต่ก็ช้ามาก! สำหรับเพียง 4 ไฟล์ (แต่ละไฟล์ประมาณ 100Kb) จะใช้เวลาประมาณ 30 วินาที และหากคุณลองใช้ไฟล์ขนาดใหญ่กว่า เช่น 10MB จะใช้เวลาประมาณ 3-4 นาทีจึงจะเสร็จสมบูรณ์ มีหลายวิธีในการเพิ่มประสิทธิภาพสิ่งนี้ และจากหน้าที่ฉันอ้างถึง เขาสามารถรับความเร็วในการอ่านได้ประมาณ 450kbs (ด้วยความเร็วในการถ่ายโอนไลบรารี Esp32 และ SD_MMC อาจอยู่ที่ประมาณ 1MB/วินาที)

เหตุผลที่ฉันหยุดโครงการที่นี่และไม่พยายามเพิ่มประสิทธิภาพนั้นเป็นเพราะเหตุผล 2 ประการ เหตุผลแรก ฉันต้องการจริงๆ พร้อมด้วยเซิร์ฟเวอร์ FTP ฉันยังคงสามารถใช้สายข้อมูล USB เพื่อถ่ายโอนข้อมูลได้ แต่ไม่รองรับใน esp8266 หรือ esp32 และเหตุผลที่สองคือ ฉันไม่สามารถรับความเร็วเพียงพอในการถ่ายโอนไฟล์ผ่าน FTP นี่เป็นเหตุผลเดียวกับที่ว่าทำไมฉันถึงไม่สนใจที่จะใช้ esp32 แทน esp12E

แต่ฉันคิดว่าปัญหาเหล่านี้บางอย่างสามารถแก้ไขได้ ถ้าเราสามารถใช้บอร์ด esp32 S2 ที่รองรับความเร็วเต็มที่บน USB ได้ บางทีฉันสามารถทำได้สำหรับ XD ที่สอนได้อื่น

แนะนำ: