Страница 1 из 1

Люксметр на базе Ардуино

СообщениеДобавлено: 02 авг 2013, 02:19
tisugol
По просьбе dgezva создаю отдельную тему.

Давно хотел попробовать что-то запрограммировать.
Поэтому с Fasttech заказал Arduino и кучу модулей к нему. Одним из таких модулей был BH1750FVI - датчик освещенности, задумывался для других целей, но....
Потребовалось оценить разницу в свечении светодиода при 450мА и 700мА - появилась идея почему бы не сделать люксметр как первый проект на ардуино. Быстрый поиск в гугле выдал эту страницу http://embedded-lab.com/blog/?p=7558
Потребовалось минуты 3 чтобы скачать Arduino IDE поставить необходимые драйверы и прочитать быстрый how to
Подключил все как в статье - тупо скопировал код запустил монитор порта и увидел нули. Честно скажу - разбираться времени не было. Поэтому еще немного гугла и получаем код, который идет как пример к чипу. Закачиваем, запускаем монитор порта и вот значения с чипа в люксах сыпятся нам на экран компьютера. Простейший люксметр создан.

Вроде как датчик уже откалиброван. Преимущества решения
1. Цена (Arduino Uno R3 Rev3 Development Board SKU 1001700 $9.84 + BH1750FVI Digital Light Sensor Module for Arduino SKU 1012006 $2.90)
2. Гибкость. Вынули датчик освещенности воткнули хоть счетчик гейгера.
3. Место - у вас не будет валяться 1001 устройство
4. Веселье :) Даже если никогда не программировали, как и я. Почему бы просто не попробовать )

Код на всякий случай.
Код: выделить все
/*
Sample code for the BH1750 Light sensor
Version 0.1
website:www.DFRobot.com

Connection:

VCC-5v
GND-GND
SCL-SCL(analog pin 5)
SDA-SDA(analog pin 4)
ADD-NC
*/


#include <Wire.h> //BH1750 IIC Mode
#include <math.h>
int BH1750address = 0x23; //setting i2c address

byte buff[2];
void setup()
{
  Wire.begin();
  Serial.begin(9600);//init Serail band rate
}

void loop()
{
  int i;
  uint16_t val=0;
  BH1750_Init(BH1750address);
  delay(200);

  if(2==BH1750_Read(BH1750address))
  {
    val=((buff[0]<<8)|buff[1])/1.2;
    Serial.print(val,DEC);     
    Serial.println("[lx]");
  }
  delay(150);
}

int BH1750_Read(int address) //
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) //
  {
    buff[i] = Wire.read();  // receive one byte
    i++;
  }
  Wire.endTransmission(); 
  return i;
}

void BH1750_Init(int address)
{
  Wire.beginTransmission(address);
  Wire.write(0x10);//1lx reolution 120ms
  Wire.endTransmission();
}

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 02 авг 2013, 06:14
vtral
Обычное дело. Кто с темой играется, тот покупает игрушки. Кто темой занимается серьезно, тот покупает приборы. Каждому свое.

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 02 авг 2013, 09:21
kulibin
Тем не менее набор цацок для Arduino впечатляет. Как прикладное пособие, мне кажется - офигительная вещь.

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 02 авг 2013, 10:57
tisugol
vtral писал(а):Обычное дело. Кто с темой играется, тот покупает игрушки. Кто темой занимается серьезно, тот покупает приборы. Каждому свое.


Конечно! И покупает нормальные приборы, со светофильтрами, эталонными источниками, а не китайский нонейм "шырпотреб" )

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 02 авг 2013, 13:25
vtral
kulibin писал(а):Тем не менее набор цацок для Arduino впечатляет. Как прикладное пособие, мне кажется - офигительная вещь.

В данном контексте термин "игрушка" употребил во вполне уважительном смысле. Просто хотел выразить мысль, что для личного применения обычно не нужна низкая абсолютная погрешность измерений, соответственно и приборное обеспечение может быть совершенно разным, не сертифицированным, не поверенным. Для производства же подход совершенно другой.
Ардуино нравится, как явление. Но себе покупать не стал, остановился на другом варианте, взял отладочную плату Pinboard-II, на которой макетирую и отлаживаю, а уже сам девайс делаю с нуля, в том числе и плату.

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 04 авг 2013, 03:23
dgezva
tisugol писал(а):По просьбе dgezva создаю отдельную тему.

Тут дело не во мне лично, как раз.
Просто теперь эта инфа не утонет

Re: Люксметр на базе Ардуино

СообщениеДобавлено: 23 фев 2014, 02:03
b00gieman
Мониторите СОМ-порт, или переписали код с выводом на дисплей?