Springen naar inhoud


PI

Script I²C-Bus Hardware Detectie.

script I2C hardware detectie python

  • Log in a.u.b. om te beantwoorden
Er zijn 4 reacties in dit onderwerp

#1 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 19 sep 2022 18:25
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 21 maart 2013 - 09:05

Nergens op internet is een script te vinden die een detectie doet welke hardware je op je  I²C-bus hebt aangesloten of heb je wel iets aangesloten, alleen kun je dit met het commando sudo i2cdetect -y 1 zien.
Ik heb mij even de tijd genomen om een Python script te maken die de gehele  I²C range die mogelijk is te scannen en dan te tonen in de console welk hardware op een adres staat aangesloten.
Het script zend een signaal van een PCF8575 door de  I²C-bus en toont dan welk hardware adres hierop reageert, elk andere  I²C IC dat op de bus zit en geen PCF8575 bevat word ook gezien en word weer gegeven als overige  I²C-IC's.

Python-code.:

#!/usr/bin/python
# Raspberryboard I2C bus scan V0.1
# voor de Raspberry Pi Revision 2
#
# Author : PascalBianca
# Site   : http://www.vbib.be
#
# Date   : 21/03/2013 tijd.: 01:14 uur.
#
# Bussysteem scannen op hardware aanwezig

#Doe imports
import smbus
import time
import pylcdlib
import os
import random

from time import sleep
from datetime import datetime
from subprocess import *

i2c = smbus.SMBus(1)
i2c_addr4x20 = 0x26

#Signaal code voor PCF8575
#Controleer voor I/0 fouten (geen device aangesloten)
temp = 0x55AA
#Gehele I2C detection reeks.
locations = [0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77]

print "****************************************************************"
print "* Het bussysteem word gescanned op aangesloten hardware ,   *"
print "* deze word met een signaalcode voor de PCF8575 aangeroepen.   *"
print "* Alle gevonden hardware word getoont en alles wat een PCF8575 *"
print "* bevat word erachter vermeld, indien anders word   *"
print "* dit ook vermeld. *"
print "****************************************************************"

b = 0
d = 0
e = 0
for device in locations:

try:
b = b + 1
i2c.write_byte(device,temp)
a = int(device) - 12
devicebyte = int(i2c.read_byte(device))
c = (b * 2.702702702702702)
sleep(0.1)
  

#temp = signaal code 0x55AA voor de PCF8575 word als 170 getoond.
if devicebyte == 170:
d=d+1
print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een IC PCF8775"
if devicebyte == 0:
e=e+1
print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een andere I2C IC."

except:
if device == 'end':
print "Geen unit gevonden op "+ device
exit()
sleep(1)



Resultaat van dit script , als ik deze bij mij test.:

Bijlage  i2cscan.png   13,22K   1 downloads

Trek ik 1 van de hardware uit, dan word die niet meer weer gegeven.

#2 Eric Buedts

Eric Buedts

    Starting Developer

  • Leden
  • 27 berichten
    Laatst bezocht 19 jun 2014 22:01

Geplaatst op 30 maart 2013 - 17:01

Hallo
Hoe moet ik dat doen? ik heb nog niet met Python-code gewerkt.
Hoe moet dat dan aan het werk zetten in de Pi?
Kan je wat uitleggen?
alvast bedankt

#3 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 19 sep 2022 18:25
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 30 maart 2013 - 17:25

Beste Eric,

Ik ga ervan uit dat je een Pi hebt.
Dan moet je eerst Python installeren , de instructie kun je hiervinden.
Dan zou je een tekst verwerker kunnen gebruiken om het script van mij erin te zetten en op te slaan met extensie .py, hier zou je bv. Geany kunnen gebruiken, installatie kun je hier vinden.
En als je dan in je console het opgeslagen bestand start met sudo ./bestandnaam.py dan krijg je dus het geen wat ik verteld heb in mijn begin bericht.

M.v.g. Pascal.

#4 Eric Buedts

Eric Buedts

    Starting Developer

  • Leden
  • 27 berichten
    Laatst bezocht 19 jun 2014 22:01

Geplaatst op 30 maart 2013 - 19:36

Pascal

Ik heb inderdaad een Pi, ik heb trouwens de software die jij hebt gemaakt geinstaalleert
Waar moet ik dat bestand opslaan?

het is allemaal wat nieuw voor mij, moet dus nog veel leren, maar ik heb er zin, dus dat is wel positief, he;

#5 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 19 sep 2022 18:25
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 30 maart 2013 - 19:44

Beste Eric,

Inderdaad is dat altijd positief :)
Ik zou het script ergens opslaan waar je zo bij kan komen zonder dat je teveel straks in de console moet gaan typen om in die map te komen.
Ik heb bv. in de root van de sdkaart een map I2C gemaakt, dus als ik dan naar die map wil gaan hoef ik maar in de console eerst cd .. te typen om in de root te komen en dat cd i2c , dan zit ik er gelijk in om het script te starten.





Ook met taq PI, script, I2C, hardware, detectie, python voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[PI] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)