Pagina 1 van 1

Nieuwe plugin: BH1750 LUX Sensor

BerichtGeplaatst: 14 maart 2015, 22:30
door rtenklooster
Hoi allemaal, ik had me voorgenomen wat nieuwe plugins te schrijven om meer hardware te ondersteunen op de nodo. Meer hardware = potentieel meer geinteresseerde (nieuwe) users.

Bij deze een plugin voor deze goedkope, goed werkende lux sensoren.
Afbeelding
Je sluit ze aan via i2c. Zijn 5v tolerant. Lux zegt mij meer, dan een ldr analoge waarde.

Code: Selecteer alles
//#######################################################################################################
//#################################### Plugin-254: LuxRead   ############################################
//#######################################################################################################

/*********************************************************************************************\
* Funktionele beschrijving: Deze plugin leest een lux sensor, de BH1750 uit.
*
* Het commando is LuxRead, <var> waarbij de luxwaarde wordt weggeschreven naar par1 uservar.
*
* Auteur             : Richard ten Klooster
* Support            : http://weblog.tenklooster.net
* Datum              : 03-2015
* Versie             : 0.1
* Nodo productnummer :
* Compatibiliteit    : Vanaf Nodo build nummer 744
* Syntax             : "LuxRead <Par1>"
*
***********************************************************************************************
* Technische beschrijving:
*
* De BH1750 is 3v en 5v tolerant. Aangesloten op de I2C Bus en vult één variabele met de huidige lux waarde.
*
* Compiled size      : 435 Bytes voor mega
*
*/


#define PLUGIN_ID 254
#define PLUGIN_NAME "luxRead"
#define BH1750_address           0x23

// Declaratie funkties. De Arduino verzorgt die niet buiten de .ino files.
boolean BH1750_ReadLux(void);
int BH1750_Read(int);

byte buff[2];

boolean Plugin_254(byte function, struct NodoEventStruct *event, char *string)
  {
  boolean success=false;

  switch(function)
  {
  #ifdef PLUGIN_254_CORE
  case PLUGIN_INIT:
    {
    WireNodo.beginTransmission(BH1750_address);
   WireNodo.write(0x10);                  //1lx reolution
   WireNodo.endTransmission();
    break;
    }

  case PLUGIN_COMMAND:
    {
    UserVar[event->Par1 -1] = BH1750_ReadLux();
    success=true;
    }
  #endif // CORE

  #if NODO_MEGA
  case PLUGIN_MMI_IN:
    {
    char *TempStr=(char*)malloc(INPUT_COMMAND_SIZE);

    if(GetArgv(string,TempStr,1))
      {
      if(strcasecmp(TempStr,PLUGIN_NAME)==0)
        {
        if(event->Par1 >0 && event->Par1<=USER_VARIABLES_MAX-1)
          {
          event->Command = PLUGIN_ID; // Plugin nummer 
          event->Type = NODO_TYPE_PLUGIN_COMMAND;
          success=true;
          }
        }
      }
    free(TempStr);
    break;
    }

  case PLUGIN_MMI_OUT:
    {
    strcpy(string,PLUGIN_NAME);            // Eerste argument=het commando deel
    strcat(string," ");
    strcat(string,int2str(event->Par1));

    break;
    }
  #endif // MMI
  }     
  return success;
}

#ifdef PLUGIN_254_CORE
boolean BH1750_ReadLux()
{
  int i;
  uint16_t val=0;    
  if(2==BH1750_Read(BH1750_address))
  {
   val=((buff[0]<<8)|buff[1])/1.2;
   val=val+15;
   return val;     
  }
}
 
int BH1750_Read(int address)
{
  int i=0;
  WireNodo.requestFrom(address, 2);
  while(WireNodo.available()) //
  {
    buff[i] = WireNodo.read();  // receive one byte
    i++;
  }
return i;
}
#endif // CORE

Re: Nieuwe plugin: BH1750 LUX Sensor

BerichtGeplaatst: 17 maart 2015, 11:58
door rwijbenga
Goed bezig!

Ik heb er ook een stel besteld, komen dan ook in de shop.

Re: Nieuwe plugin: BH1750 LUX Sensor

BerichtGeplaatst: 17 maart 2015, 15:02
door manjh
Is het een idee om een combi print te maken met daarop een Pro Mini, en een handjevol sensors?
Ik denk aan de UV sensor, de lux sensor (uit een andere post), een dht22, een bmp85? Dan heb je aardig wat metingen.
Voeg daarbij een "standaard" weerstationnetje voor een paar tientjes, en je hebt alles wat je wilt weten over het weer!
Zeker met de nieuwe webapp valt daar iets heel moois voor te maken...

Re: Nieuwe plugin: BH1750 LUX Sensor

BerichtGeplaatst: 18 maart 2015, 19:40
door andreo
Goed bezig, weer veel om te proberen :P