Friday, December 11, 2015

การเปลี่ยน i2c address

การเปลี่ยน address ของอุปกรณ์เซนเซอร์ ที่ใช้การสื่อสารบัส i2c ที่ศึกษามา 2 วิธี
ได้แก่
1. เปลี่ยนโดยการเขียน code python
2. เปลี่ยนโดยใช้โปรแกรม explorer ของ OpenElectrons

เปลี่ยน Address โดยการเขียน code python

  วิธีการนี้เป็นวิธีการของผู้ที่ใช้นามแฝงว่า dannyoneill จาก forums ของ https://www.raspberrypi.org ในหัวข้อ i2c addressing - set device to unaddressable by RPi address! ซึ่งเป็นเพียงแนวทางในการเปลี่ยน address ในการสื่อสารบัส i2c เท่านั้น เพราะใน forums เองยังหาข้อมสรุปถึงขั้นตอนการทำให้สำเร็จอยู่ โดยในบางความเห็นก็แนะนำให้เปลี่ยนโดย ใช้ serial

  ขั้นตอนการเปลี่ยน Address โดยใช้ code python

  1. เชื่อมต่ออุปกรณ์ เข้ากับบอร์ด RPi
  2. ใช้ code ต่อไปนี้ในการเปลี่ยน address


  สำหรับการแก้ปัญหาโดยใช้ serial ตามที่มีความเห็นแนะนำมาใน forum มีขั้นตอนดังนี้
  1. เชื่อมต่ออุปกรณ์เข้ากับบอร์ด RPi      
    Pi 5V  --- device 5V
    Pi ground --- device ground
    Pi ground --- device mode
    Pi TX --- device RX
  2. Configue RPi serial ที่ baud rate 9600
    stty -F /dev/ttyAMA0 9600
  3. ใช้ echo เพื่อส่งคำสั่งไปยังอุปกรณ์สำหรับเปลี่ยน address ของอุปกรณ์ 0 ถึง 5   
    echo -ne "\x00\xA0\x00\xAA\x00\xA5\x00\x05" >/dev/ttyAMA0
  4.  การเปลี่ยน address ของอุปกรณ์ 5 ถึง 0
    echo -ne "\x05\xA0\x05\xAA\x05\xA5\x05\x00" >/dev/ttyAMA0

เปลี่ยนโดยใช้โปรแกรม explorer ของ OpenElectrons

  สำหรับการเปลี่ยน Address โดยใช้โปรแกรม explorer นั้น จะใช้ภาษา python เช่นเดียวกับวิธีข้างต้น แต่จะต้องมีการติดตั้ง module OpenElectrons_i2c ของบริษัท OpenElectrons โดยมีขั้นตอนการใช้งานดังนี้
  1. ดาวน์โหลด module OpenElectrons_i2c จาก http://pypi.akbild.ac.at/OpenElectrons_i2c/ และทำการแตกไฟล์ที่ได้มา
  2. ติดตั้ง module ตามขัั้นตอนดังต่อไปนี้
    cd OpenElectrons_i2c
    sudo  python setup.py install
  3. เชื่อมต่ออุปกรณ์เข้ากับบอร์ด RPi
  4. หา address ของอุปกรณ์
    sudo i2cdetect -y 1
  5. ดาวน์โหลดโปรแกรม explorer และทำการแตกไฟล์
  6. ใช้งานโปรแกรม explorer ตามขั้นตอนดังนี้
    cd explorer
    sudo python explore.py
    โปรแกรมจะแสดงข้อมูลของอุปกรณ์เซนเซอร์ที่ต่ออยู่กับบอร์ด RPi
  7. ดาวน์โหลดโปรแกรมเปลี่ยน Address และแตกไฟล์
  8. เปลี่ยน Address โดยใช้คำสั่ง
   ./addresschange (i2c address) (new i2c address)