ใช้ AT24C256 EEPROM กับ Raspberry Pi

Using the AT24C256 EEPROM with the Raspberry Pi

ที่ AT24C256 เป็น I2C EEPROM (หน่วยความจำแบบอ่านแบบอ่านได้อย่างเดียวทางไฟฟ้า) ที่ช่วยให้ Raspberry Pi สามารถจัดเก็บและดึงข้อมูลได้แม้หลังจากการสูญเสียพลังงาน คู่มือนี้อธิบายวิธีการเชื่อมต่อไฟล์ AT24C256 ด้วย Raspberry Pi รวมถึงการเดินสายการเปิดใช้งาน I2C และข้อมูลการอ่าน/การเขียนโดยใช้ Python


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO และ I2C เช่น PI 3, PI 4)
  2. AT24C256 โมดูล EEPROM
  3. เครื่องหั่นขนมปังและสายจัมเปอร์
  4. ติดตั้ง Python บนราสเบอร์รี่ pi

ขั้นตอนที่ 1: เดินสาย AT24C256 ไปยังราสเบอร์รี่ PI

AT24C256 สื่อสารโดยใช้ไฟล์ โปรโตคอล I2C.

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

AT24C256 PIN Raspberry Pi Pin
VCC 3.3V (พิน 1)
gnd พื้นดิน (พิน 6)
SDA SDA (พิน 3, GPIO2)
SCL SCL (PIN 5, GPIO3)
WP (เขียน Protect) GND (ปิดใช้งานการป้องกันการเขียน)

ขั้นตอนที่ 2: เปิดใช้งาน I2C บน Raspberry Pi

  1. เปิดเครื่องมือกำหนดค่า Raspberry Pi:
    sudo raspi-config
    
  2. นำทางไปยัง ตัวเลือกอินเตอร์เฟส> i2c และเปิดใช้งาน
  3. รีบูตราสเบอร์รี่ pi:
    sudo reboot
    

ขั้นตอนที่ 3: ติดตั้งไลบรารีที่ต้องการ

  1. อัปเดตรายการแพ็คเกจ Raspberry Pi ของคุณ:
    sudo apt update && sudo apt upgrade -y
    
  2. ติดตั้งเครื่องมือ I2C ที่จำเป็นและไลบรารี Python:
    sudo apt install -y i2c-tools python3-smbus
    
  3. ตรวจสอบว่าตรวจพบ AT24C256 EEPROM บนรถบัส I2C:
    sudo i2cdetect -y 1
    
    EEPROM ควรปรากฏที่ 0x50 (หรือที่อยู่อื่นตามการกำหนดค่า PIN A0-A2)

ขั้นตอนที่ 4: การอ่านและเขียนข้อมูลไปยัง AT24C256

AT24C256 เก็บข้อมูลใน หน่วยความจำ 256kBและแต่ละไบต์สามารถเข้าถึงได้โดยใช้ที่อยู่หน่วยความจำ

การเขียนข้อมูลไปยัง EEPROM

import smbus2
import time

EEPROM_ADDRESS = 0x50  # Default I2C address of AT24C256
bus = smbus2.SMBus(1)  # Use I2C bus 1

def write_byte(address, data):
    bus.write_i2c_block_data(EEPROM_ADDRESS, address, [data])
    time.sleep(0.05)  # EEPROM needs time to write

# Write data (example: store 'A' at address 0x00)
write_byte(0x00, ord('A'))
print("Data written successfully!")

การอ่านข้อมูลจาก EEPROM

def read_byte(address):
    return bus.read_byte_data(EEPROM_ADDRESS, address)

# Read the stored byte at address 0x00
stored_value = read_byte(0x00)
print(f"Stored Data: {chr(stored_value)}")

ขั้นตอนที่ 5: แอปพลิเคชันของ AT24C256

  1. การบันทึกข้อมูล: จัดเก็บข้อมูลเซ็นเซอร์เมื่อเวลาผ่านไปสำหรับการเข้าถึงออฟไลน์
  2. ที่เก็บข้อมูลการกำหนดค่า: บันทึกการตั้งค่าระบบหรือข้อมูลการสอบเทียบ
  3. ปลอดภัยการรับรองความถูกต้อง: เก็บคีย์ที่เข้ารหัสหรือโทเค็นการรับรองความถูกต้อง
  4. โครงการ IoT: เปิดใช้งานที่เก็บข้อมูลแบบถาวรสำหรับแอปพลิเคชัน Internet of Things

การแก้ไขปัญหา

  1. ไม่พบ EEPROM:

    • ตรวจสอบการเดินสายและยืนยันการเชื่อมต่อ SDA/SCL
    • วิ่ง sudo i2cdetect -y 1 เพื่อตรวจสอบที่อยู่ I2C ของ EEPROM
  2. การดำเนินการอ่าน/เขียนไม่ถูกต้อง:

    • ทำให้มั่นใจ Write Protect (WP) เป็น มีสายดิน เพื่อเปิดใช้งานการเขียน
    • แนะนำความล่าช้า (time.sleep(0.05)) เพื่อให้การดำเนินการเขียน EEPROM เสร็จสมบูรณ์
  3. ข้อผิดพลาดในการสื่อสาร I2C:

    • ตรวจสอบที่อยู่ I2C ที่ขัดแย้งกันบนรถบัส
    • ทำให้มั่นใจ smbus2 ติดตั้งอย่างถูกต้องโดยใช้ pip3 install smbus2.

บทสรุป

AT24C256 EEPROM เป็นวิธีที่เรียบง่าย แต่ทรงพลัง จัดเก็บข้อมูลอย่างต่อเนื่อง บนราสเบอร์รี่ pi ไม่ว่าจะ การบันทึกข้อมูลการจัดเก็บการตั้งค่าหรือแอปพลิเคชัน IoTคู่มือนี้ให้ความรู้พื้นฐานที่จำเป็นในการโต้ตอบกับการจัดเก็บ EEPROM อย่างมีประสิทธิภาพ ทดลองกับการอ่าน/เขียนชุดข้อมูลขนาดใหญ่เพื่อสำรวจศักยภาพอย่างเต็มที่! 🚀

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.