1

Temat: Jaki czujnik natężenia oświetlenia?

Nie chodzi mi o czujnik włącz/wyłącz tylko pokazujący jakieś wartości zależne od natężenia oświetlenia. Na początek podłączyłem BH1750 ale nie za bardzo chce coś pokazać

root@OpenWrt:~# i2cdetect i2c-gpio0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

root@OpenWrt:~# i2cget -y 0 0x23
0x00

Może jest coś innego sprawdzonego? A może prościej zastosować czujnik 1 wire?

2

Odp: Jaki czujnik natężenia oświetlenia?

Ale wg googli to nie jest tak że po prostu odczytasz rejestr i już. Masz zainicjować pomiar i odczytać wynik. Sięgnij do pdfa czujnika lub bibliotek od arduino/esp/rpi i zobacz jak to zrobili.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Jaki czujnik natężenia oświetlenia?

Znalazłem skrypt w pythonie i uruchomiłem czujnik:)
Skoro już wiemy jak odczytać w pythonie to można z tego wydobyć jakieś "normalne" polecenie? Chodzi mi żeby nie instalować pythona, żeby nie robić extroota. Oto ten skrypt:

#!/usr/bin/python

import smbus
import time

# Define some constants from the datasheet

DEVICE     = 0x23 # Default device I2C address

POWER_DOWN = 0x00 # No active state
POWER_ON   = 0x01 # Power on
RESET      = 0x07 # Reset data register value

# Start measurement at 4lx resolution. Time typically 16ms.
CONTINUOUS_LOW_RES_MODE = 0x13
# Start measurement at 1lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
# Start measurement at 0.5lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_1 = 0x20
# Start measurement at 0.5lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_2 = 0x21
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_LOW_RES_MODE = 0x23

bus = smbus.SMBus(0)

def convertToNumber(data):
  # Simple function to convert 2 bytes of data
  # into a decimal number. Optional parameter 'decimals'
  # will round to specified number of decimal places.
  result=(data[1] + (256 * data[0])) / 1.2
  return (result)

def readLight(addr=DEVICE):
  # Read data from I2C interface
  data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1)
  return convertToNumber(data)

def main():

  while True:
    lightLevel=readLight()
    print("Light Level : " + format(lightLevel,'.2f') + " lx")
    time.sleep(0.5)

if __name__=="__main__":
   main()

4

Odp: Jaki czujnik natężenia oświetlenia?

Przez i2cset/i2cget. Tu masz: http://raspberrypi.link-tech.de/doku.php?id=bh1750

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Jaki czujnik natężenia oświetlenia?

I2C opanowane:) Przydało by się dodatkowo 1 wire, ale MR3020 ma tylko 2 wolne GPIO. Da się w tym sprzęcie prostym sposobem zwolnić GPIO np. od diody?

6

Odp: Jaki czujnik natężenia oświetlenia?

Ale ty problemy widzisz. Podłączasz 1 wire pod linię danych i2c (nie zegara!) i teraz: załaduj 1wire, odczytaj, wyładuj, załaduj i2c, odczytaj. I masz wszystko na 2 gpio...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Jaki czujnik natężenia oświetlenia?

Polecenie rmmod niestety nie zwalnia GPIO

root@OpenWrt:~# rmmod i2c-gpio-custom.ko
root@OpenWrt:~# rmmod i2c-gpio-custom.ko
module is not loaded
root@OpenWrt:~# dmesg | grep gpio
[  103.023489] i2c-gpio i2c-gpio.0: using pins 7 (SDA) and 29 (SCL)

I2C nadal działa i można robić odczyty. Tak samo jeśli najpierw załaduję 1-wire, polecenie rmmod w1-gpio-custom nie zwalnia GPIO.

8

Odp: Jaki czujnik natężenia oświetlenia?

dmesg może ci pokazywać z momentu załadowania. Jesteś pewien że  rmmod i2c-gpio-custom.ko a nie rmmod i2c-gpio-custom? Jeżeli faktycznie go wyładowałeś to magistrala i2c nie ma prawa istnieć bo nie ma co jej obsługiwać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Jaki czujnik natężenia oświetlenia?

Na pewno rmmod i2c-gpio-custom.ko. Zainstalowałem nawet Chaos Calmer żeby sprawdzić i jest tak samo jak w 18.06. Po wyładowaniu I2C działa nadal i nie da się załadować 1-wire.

root@OpenWrt:~# cat /sys/kernel/debug/gpio
GPIOs 0-29, ath79:
gpio-0   (tp-link:green:wlan  ) out lo
gpio-8   (USB power           ) out hi
gpio-11  (wps                 ) in  lo
gpio-17  (tp-link:green:lan   ) out hi
gpio-18  (sw1                 ) in  hi
gpio-20  (sw2                 ) in  hi
gpio-26  (tp-link:green:wps   ) out lo
gpio-27  (tp-link:green:3g    ) out lo
root@OpenWrt:~# insmod i2c-gpio-custom.ko bus0=0,7,29
root@OpenWrt:~# cat /sys/kernel/debug/gpio
GPIOs 0-29, ath79:
gpio-0   (tp-link:green:wlan  ) out hi
gpio-7   (sda                 ) in  hi
gpio-8   (USB power           ) out hi
gpio-11  (wps                 ) in  lo
gpio-17  (tp-link:green:lan   ) out hi
gpio-18  (sw1                 ) in  hi
gpio-20  (sw2                 ) in  hi
gpio-26  (tp-link:green:wps   ) out lo
gpio-27  (tp-link:green:3g    ) out lo
gpio-29  (scl                 ) in  hi
root@OpenWrt:~# i2cset -y 0 0x23 0x20
root@OpenWrt:~# i2cget -y 0 0x23 0x00 w
0x1400
root@OpenWrt:~# rmmod i2c-gpio-custom.ko
root@OpenWrt:~# rmmod i2c-gpio-custom.ko
module is not loaded
root@OpenWrt:~# cat /sys/kernel/debug/gpio
GPIOs 0-29, ath79:
gpio-0   (tp-link:green:wlan  ) out lo
gpio-7   (sda                 ) in  hi
gpio-8   (USB power           ) out hi
gpio-11  (wps                 ) in  lo
gpio-17  (tp-link:green:lan   ) out hi
gpio-18  (sw1                 ) in  hi
gpio-20  (sw2                 ) in  hi
gpio-26  (tp-link:green:wps   ) out lo
gpio-27  (tp-link:green:3g    ) out lo
gpio-29  (scl                 ) in  hi
root@OpenWrt:~# i2cset -y 0 0x23 0x20
root@OpenWrt:~# i2cget -y 0 0x23 0x00 w
0x1400
root@OpenWrt:~# dmesg | grep gpio
[  111.290000] i2c-gpio i2c-gpio.0: using pins 7 (SDA) and 29 (SCL)
root@OpenWrt:~# insmod w1-gpio-custom bus0=0,7,0
root@OpenWrt:~# dmesg | grep gpio
[  111.290000] i2c-gpio i2c-gpio.0: using pins 7 (SDA) and 29 (SCL)
[  222.330000] w1-gpio w1-gpio.0: gpio_request (pin) failed
[  222.330000] w1-gpio: probe of w1-gpio.0 failed with error -16

10

Odp: Jaki czujnik natężenia oświetlenia?

Na którejś starej platformie to robiłem i działało. Muszę poszukać na czym to było.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez Królik 2018-12-05 06:59:44)

Odp: Jaki czujnik natężenia oświetlenia?

Jeśli opis platformy routera jest na plikach dts, to nie będzie działać na żadnej dystrybucji starszej niż 18.06. Chyba, że się skompiluje z tym patchem:

https://git.openwrt.org/?p=openwrt/open … f9a533292d

EDIT:

Teraz zauważyłem, że nie dodali tego przed 18.06. Tylko snapshot.

Mam i używam: Linksysy 1900ACS, LB-Link BL-W1200, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50.

12

Odp: Jaki czujnik natężenia oświetlenia?

Cofam to co napisałem wcześniej. Robiłem to na jakieś starożytnej wersji i działało, teraz nawet nie jak się zrobi unbind moduły to nie można załadować z tym samym numerem magistrali. Więc jednak wracaj do początku - zwolnij sobie jakieś gpio od led i jego używaj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: Jaki czujnik natężenia oświetlenia?

@Cezary

Mógłbyś przy kolejnym Twoim wydaniu 18.06 zbackportować ten patch do siebie?

Mam i używam: Linksysy 1900ACS, LB-Link BL-W1200, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50.

14

Odp: Jaki czujnik natężenia oświetlenia?

Tak i pisałeś nawet o tym swego czasu. Tylko zapomniałem...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: Jaki czujnik natężenia oświetlenia?

Z tego co pamiętam, to jest spora szansa, że na kernelu 4.4 też będzie działać bez dokonywania zmian w patchu.

Mam i używam: Linksysy 1900ACS, LB-Link BL-W1200, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50.

16

Odp: Jaki czujnik natężenia oświetlenia?

Królik napisał/a:

@Cezary

Mógłbyś przy kolejnym Twoim wydaniu 18.06 zbackportować ten patch do siebie?

Twoja poprawka jest oficjalnie wrzucona do 18.06:

https://github.com/openwrt/openwrt/blob … gpio.patch
https://github.com/openwrt/openwrt/blob … gpio.patch

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Jaki czujnik natężenia oświetlenia?

Faktycznie, w 18.06.1 się pojawiła. Nie wiedziałem, że ją zbackportowano.

Mam i używam: Linksysy 1900ACS, LB-Link BL-W1200, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50.