在Raspberr Pi上运行多个程序

时间:2016-04-12 16:55:35

标签: python raspberry-pi pubnub

我刚刚完成了这个项目的所有原型设计:我遇到了2个问题:https://www.pubnub.com/blog/2015-03-17-building-a-model-smart-home-with-raspberry-pi/

  1. 我不能同时运行所有程序(湿度和温度,LED,微伺服电机等......)
  2. 我不能有三个以上的LED(技术上是两个)
  3. 我可以做什么来一次运行所有内容,所以它都显示在WEB UI中?我怎么能有更多的LED,因为限制是50mah,大约是2个LED? (它们可以是三个空间',因此每个GPIO引脚只有三个,或者每个GPIO只有三个)。我没有看到锄头可以使用这样的功率限制。此外,它们需要通过PWM控制。 Raspberry Pi上没有足够的电量!

    DHT22传感器的代码是:

    import time
    import sys
    from pubnub import Pubnub
    import Adafruit_DHT as dht
    
    pubnub = Pubnub(publish_key='demo', subscribe_key='demo')
    channel = 'pi-house'
    
    def callback(message):
    print(message)
    
    #published in this fashion to comply with Eon
    while True:
        h,t = dht.read_retry(dht.DHT22, 4)
        temp='{0:0.1f}'.format(t)
        hum='{0:0.1f}'.format(h)
        message = {'temperature': temp, 'humidity': hum}
        print 'Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(t, h)
        pubnub.publish(channel=channel, message=message, callback=callback, error=callback)  
    

    led的代码是:

    import RPi.GPIO as GPIO
    import time
    import sys
    from pubnub import Pubnub
    
    GPIO.setmode(GPIO.BCM)
    
    PIN_LIVING = 22
    PIN_PORCH = 17
    PIN_FIREPLACE = 27
    
    GPIO.setup(PIN_LIVING,GPIO.OUT)
    GPIO.setup(PIN_PORCH,GPIO.OUT)
    GPIO.setup(PIN_FIREPLACE,GPIO.OUT)
    
    FREQ = 100 # frequency in Hz
    FIRE_FREQ = 30 #  flickering effect
    
    # Duty Cycle (0 <= dc <=100)
    
    living = GPIO.PWM(PIN_LIVING, FREQ)
    living.start(0)
    
    porch = GPIO.PWM(PIN_PORCH, FREQ)
    porch.start(0)
    
    fire = GPIO.PWM(PIN_FIREPLACE, FIRE_FREQ)
    fire.start(0)
    
    # PubNub
    
    pubnub = Pubnub(publish_key='demo', subscribe_key='demo')
    
    channel = 'pi-house'
    
    def _callback(m, channel):
        print(m)
    
        dc = m['brightness'] *10
    
        if m['item'] == 'light-living':
            living.ChangeDutyCycle(dc)
    
        elif m['item'] == 'light-porch':
            porch.ChangeDutyCycle(dc)
    
        elif m['item'] == 'fireplace':
            fire.ChangeDutyCycle(dc)
    
    def _error(m):
      print(m)
    
    pubnub.subscribe(channels='pi-house', callback=_callback, error=_error)
    
    try:
        while 1:
            pass
    except KeyboardInterrupt:
        GPIO.cleanup()
        sys.exit(1)
    

    谢谢!

0 个答案:

没有答案