abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    dnes 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 0
    dnes 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 7
    dnes 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    včera 17:55 | IT novinky

    Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.

    Ladislav Hagara | Komentářů: 3
    včera 17:44 | IT novinky

    Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).

    Ladislav Hagara | Komentářů: 1
    včera 15:11 | Nová verze

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.0.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 4
    včera 14:22 | IT novinky

    Nejvyšší soud podpořil novináře Českého rozhlasu. Nařídil otevřít spor o uchovávání údajů o komunikaci (data retention). Uvedl, že stát odpovídá za porušení práva EU, pokud neprovede řádnou transpozici příslušné směrnice do vnitrostátního práva.

    Ladislav Hagara | Komentářů: 0
    včera 05:33 | Zajímavý článek

    Minulý týden proběhl u CZ.NIC veřejný test aukcí domén. Včera bylo publikováno vyhodnocení a hlavní výstupy tohoto testu.

    Ladislav Hagara | Komentářů: 29
    včera 04:44 | Nová verze

    Byla vydána nová verze 3.5.0 svobodné implementace protokolu RDP (Remote Desktop Protocol) a RDP klienta FreeRDP. Přehled novinek v ChangeLogu. Opraveno bylo 6 bezpečnostních chyb (CVE-2024-32039, CVE-2024-32040, CVE-2024-32041, CVE-2024-32458, CVE-2024-32459 a CVE-2024-32460).

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (68%)
     (11%)
     (2%)
     (20%)
    Celkem 545 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)

    16.12.2015 09:14 cvp | skóre: 18
    Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Přečteno: 957×
    Koupil jsem si světelný senzor, který komunikuje za pomocí I2C rozhranní na Raspberry PI2.

    Přesné znění je: spojení s Raspberry Pi zajišuje I2C rozhraní, kde čidlo má neměnnou 7-bitovou adresu 0x29.

    Jak získám data z této adresy? (7-bitovou adresu 0x29) Potřebuji takové data vložit do souboru senzor.sh, který chci spouštět přes CRON. Jde mně hlavně o to, co dát do souboru senzor.sh, abych data ze světelného senzoru získal.

    Data budu mít pro fotoaparát, abych mohl lépe nastavovat ISO, expozici apod., což zatím nevím jak budu provádět - LUX -> iso,expozice...

    Odpovědi

    16.12.2015 10:09 NN
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Podival bych se na tutorial, ktery je primo v tvem odkaze a zaroven si neco nastudoval o konfiguraci i2c na Rpi.

    Tak adresa slouzi jen pro identifikaci zarizeni.
    16.12.2015 13:11 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Našel jsem python script, kterým lze získavat lux hodnotu.

    Pro focení s kamerou však používat bash (camera.sh). Jak mohu dostat lux hodnotu získanou z python souboru přímo do bash, kde s touto hodnout mohu dál pracovat?
    16.12.2015 13:41 NN
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Napis si Python skript, ktery bude vyuzivat uvedeny modul a vypisovat hodnotu na vystup:
    #!/usr/sbin/python
    
    import tsl2591
    
    tsl = tsl2591.Tsl2591()  # initialize
    full, ir = tsl.get_full_luminosity()
    lux = tsl.calculate_lux(full, ir)
    print lux
    
    Se skriptem budes v Bash zachazet jako s prikazem:
    #!/bin/sh
    
    LUX = `/root/lux'
    
    17.12.2015 18:58 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Na I2C mně to detekuje na busu 0 a zařízení 29 = 0x29.

    Zkoušel jsem přes sudo i2cget -y 1 0X29 přečíst data ze senzoru světla, ale vrací mně to Error: Read failed

    Mám vůbec i2cget příkaz správně? Abych vyloučil vadu na senzoru.
    17.12.2015 20:01 NN
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Melo by to byt pro 'ir':
    i2cget -y 1 0x29 0xb4
    a pro 'full':
    i2cget -y 1 0x29 0xb6
    Zbytek si musis dopocitat, nebo pouzit python skript ktery uz mas. Nebo si precit originalni arduino knihovnu podle ktere byl prepsan..
    17.12.2015 20:18 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Tak snad senzor není KO. Error: Read failed
    18.12.2015 00:48 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Funguje i2cdump?
    19.12.2015 15:13 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Naštěstí funguje.

    pi@raspberrypi:~ $ i2cdump -y 1 0x29 w
         0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
    00: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
    08: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
    10: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
    18: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
    20: XXXX XXXX 0022 0023 0024 0025 0026 0027
    28: 0028 0029 002a 002b 002c 002d 002e 002f
    30: 0030 0031 0032 0033 0034 0035 0036 0037
    38: 0038 0039 003a 003b 003c 003d 003e 003f
    40: 0040 0041 0042 0043 0044 0045 0046 0047
    48: 0048 0049 004a 004b 004c 004d 004e 004f
    50: 0050 0051 0052 0053 0054 0055 0056 0057
    58: 0058 0059 005a 005b 005c 005d 005e 005f
    60: 0060 0061 0062 0063 0064 0065 0066 0067
    68: 0068 0069 006a 006b 006c 006d 006e 006f
    70: 0070 0071 0072 0073 0074 0075 0076 0077
    78: 0078 0079 007a 007b 007c 007d 007e 007f
    80: 007f 0000 0000 0000 0000 0000 0000 0000
    88: 0000 0000 0000 0000 0000 0000 0000 0000
    90: 0100 5001 0050 0000 0000 0000 0000 1a00
    98: e01a c0e0 41c0 0041 0000 0000 0000 0000
    a0: 007f 0000 0000 0000 0000 0000 0000 0000
    a8: 0000 0000 0000 0000 0000 0000 0000 0000
    b0: 0100 5001 0050 0000 0000 0000 0000 1a00
    b8: e01a c0e0 41c0 0041 0000 0000 0000 0000
    c0: 0000 0000 0000 0000 7f00 007f 0000 0000
    c8: 0000 0000 0000 0000 0000 0000 4400 0044
    d0: 0000 0000 0000 0000 0000 0000 0000 0000
    d8: 0000 0000 0000 0000 0000 0000 0000 7f00
    e0: 7f00 7f00 7f00 7f00 7f00 7f00 7f00 7f00
    e8: 7f00 7f00 7f00 7f00 7f00 7f00 7f00 7f00
    f0: 7f00 7f00 7f00 7f00 7f00 7f00 7f00 7f00
    f8: 7f00 7f00 7f00 7f00 7f00 7f00 7f00 7f00
    19.12.2015 16:52 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    A čtení pořád nejde? BTW proč používáš šířku 16bit? Ty registry jsou určitě 8bit. Teda pokud používáš stejnej datasheet jako já. Co dělá dump s 'b'?

    Moc jsem to nestudoval, rpí ani senzor nemám. A ten datasheet vypadá vícevýznamově. Osobně bych bit CMD (7) v Command registru nenastavoval, pokud bych přistupoval k normálním registrům (na i2c adresa registru není definovaná, takže si je výrobci implementují třeba jako temp registry). Takže adresa registru by měla být:
    (0 << 7) | (1 << 5) | (reg_addr & 0x1f)
    
    Ještě bych možná bylo dobrý zapnout ten čip PON. Takže já bych to zkusil nějak takle:
    i2cset -y 1 0x29 $(( (0 << 7) | (1 << 5) | 0 )) $(( (1 << 1) | ( 1 << 0 ) ))   #power on, ALS enable
    i2cget -y 1 0x29 $(( (0 << 7) | (1 << 5) | 0x12 ))     #ID registr, mel by vratit 0x50
    
    20.12.2015 21:44 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    i2cdump -y 1 0x29 b
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
    10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
    20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f     !"#$%&'()*+,-./
    30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f    0123456789:;<=>?
    40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f    @ABCDEFGHIJKLMNO
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f    PQRSTUVWXYZ[\]^_
    60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f    `abcdefghijklmno
    70: 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f    pqrstuvwxyz{|}~?
    80: 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ?...............
    90: 00 01 50 00 00 00 00 00 1a e0 c0 41 00 00 00 00    .?P.....???A....
    a0: 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ?...............
    b0: 00 01 50 00 00 00 00 00 1a e0 c0 41 00 00 00 00    .?P.....???A....
    c0: 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 44    .....?.........D
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    
    Chtěl jsem načíst jen status ze senzoru, který jsem vyčetl v datasheet jako:
    Address | Register | Name | R/W | Register Function | Reset Value
    0x13 | STATUS | R | Device | status | 0x00
    S příkazem: i2cget -y 1 0x29 0x13

    Bohužel jsem dostal opět Error: Read failed
    20.12.2015 22:02 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Ještě jsem vyzkoušel tento příkaz:
    pi@raspberrypi ~ $ dmesg|grep i2c
    [    3.982111] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)
    [    6.420761] i2c /dev entries driver
    20.12.2015 22:37 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Error: Write failed
    i2cset -y 1 0x29 $(( (0 << 7) | (1 << 5) | 0 )) $(( (1 << 1) | ( 1 << 0 ) ))
    20.12.2015 23:42 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    A když teď zkusíš ty samé dva příkazy (poweron a ID read) s bitem 7 nastaveným do "1" ?

    P.S. Můžeš odoznačit komentář označený jako řešení (první koment)? Vzhledem k tomu, že to furt nejede a lidi na odfajfkovaný link v poradně spíš nekliknou.
    21.12.2015 09:52 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Na power ON je tedy příkaz jak jsi psal:
    i2cset -y 1 0x29 $(( (0 << 7) | (1 << 5) | 0 )) $(( (1 << 1) | ( 1 << 0 ) ))
    Aby byl příkaz se 7 bity, tak co mám přesně udělat? Bohužel I2C není moje parketa a už tak tápu nad tím senzorem.

    Je pravda, že možná senzor nekomunikuje, protože mu chybí power ON. Každopádně jsem zkusil i2cdump 2x po sobě, kdy na podruhé jsem senzor zakryl hadrou pro vytvoření tmy. i2cdump výsledek byl různý. Tak že nevím, jestli power ON bude stačit.
    21.12.2015 15:25 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Bitem 7 myslím změnit
    (0 << 7)
    Na
    (1 << 7)
    Takže oba příkazy takhle:
    i2cset -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0 )) $(( (1 << 1) | ( 1 << 0 ) ))   #power on, ALS enable
    i2cget -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0x12 ))     #ID registr, mel by vratit 0x50
    
    21.12.2015 23:19 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Nevím, je to nějaké divné :/ Na druhý pokus jsem vložil ještě k tomu sudo, ale stále stejná chyba.

    pi@raspberrypi ~ $ i2cset -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0 )) $(( (1 << 1) | ( 1 << 0 ) ))
    Error: Write failed
    pi@raspberrypi ~ $ i2cget -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0x12 ))
    Error: Read failed
    22.12.2015 00:33 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Hmm ono je možný, že to používá jinej přenos dat než podporuje i2ctools (jak jsem psal, tak si každej může po adrese přenášet data jak se mu zachce).

    Ale když se koukám na ten i2cdump ještě jednou, tak je dost možný, že to funguje, na adrese 0xb2 je 0x50, což by odpovídalo ID registru. V nejhorším bys to musel vyparsovat :-D.

    Když pustíš po těch selhaných i2cget a i2cset znova i2cdump, pojede, nebo selže taky (stav kdy by chybnej příkaz zablokoval sběrnici/senzor)?

    Po úspěšném i2cdump (nebo prostě ve výchozím stavu), co ohlásí tenhle samotnej příkaz?
    i2cset -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0 ))
    
    Pokud by prošel, tak zkus:
    i2cset -y 1 0x29 $(( (1 << 7) | (1 << 5) | 0x12 ))
    i2cget -y 1 0x29 
    
    P.S. jinak ten odkazovanej python skript ti funguje nebo ne?
    22.12.2015 10:40 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Všechno to hlásí Write nebo Read failed. Vypadá to, že komunikace přes i2cset či get nepřipadá v úvahu. Na internetu jsem našel ovládací knihovnu pro tento senzor. Bohužel je to ale pro Adafruit, tak že z toho se asi nic použít nedá. Jedině udělat script s parsováním z dump. Strýček google ale takový parser nenašel, tak že budu asi první blázen :)
    22.12.2015 10:54 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Python script nefunguje. Leč jeden uživatel psal, že mu to na RPI2 funguje. Nemám fakt ponětí, v čem dělám případnou chybu, když detekce i dump funguje.
    22.12.2015 13:36 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Dokázal bys napsat script, kterým bych získal data z i2cdump? Tzv. vyparsovat je? Já bohužel vůbec nemám ponětí, jak bych to udělal :/
    22.12.2015 16:25 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Tak dokázal, ale není to čistý řešení a navíc ti to nepomůže pokud budeš potřebovat nastavit nějaké vnitřní parametry (přerušení, zisk apod.).

    I2C tools mají ještě nějaké další parametry, tak je můžeš vyzkoušet (všechny možné kombinace).

    Nejjednodušší by bylo udělat vlastní C program a ideálně vycházet z i2cdump. Bez reálného HW by se ale vývojový cyklus dost protáhl (takhle přes abc). Můžeme to zkusit, ale na to bys měl být schopen rozumět (a programovat) v Céčku a musíš mít kompilátor pro Rpí. Hlavně to bude ještě úmornější než všechny kombinace parametrů i2ctools.

    Jestli to někomu ale prý na RPí fungovalo, tak bych se ho určitě zkusil zeptat (i kdyby jeho odpověď trvala týden, tak to klidně může být rychlejší než vlastní program z i2ctools :-D).

    BTW různé verze rpí můžou mít různé konfigurace I2C. Teoreticky může něco to zařízení blokovat. Jsi si jistý, že to je správná adresa a adaptér? (to spíš jo, viz i2cdump, ale radši bych to ověřil) Máš správné zapojené piny, napájecí a datové napěťové úrovně? Kompletní dmesg, lsmod, apod.
    22.12.2015 17:46 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Nakonec jsem našel člověka, co vlastní sice jiný typ senzoru, ale je funkční. Senzor jsem našel i na aukro.cz a dle obrázku je shodný s tímto.

    Komunikace s čidlem je pak jednoduchá.
    22.12.2015 23:54 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Ale ten současnej nejspíš funguje taky, akorát má divnej protokol (když ti funguje přes dump ale už ne přes set/get)
    28.12.2015 14:23 cvp | skóre: 18
    Rozbalit Rozbalit vše Re: Jak dostat data z I2C rozhraní se 7-bit adresou 0x29 (nemění se)
    Ale zbytečně se s tím čtvu už tolik hodin. Čidlo jsem nabídnul k prodeji.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.