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

Ну надо же где-то поговорить не только о светодиодах :)

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

Сообщение tisugol » 02 авг 2013, 02:19

По просьбе 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();
}
tisugol
Фонарик
Фонарик
 
Сообщений: 20
Зарегистрирован: 30 июн 2013, 12:31
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение vtral » 02 авг 2013, 06:14

Обычное дело. Кто с темой играется, тот покупает игрушки. Кто темой занимается серьезно, тот покупает приборы. Каждому свое.
Троллей игнорирую. Пусть дохнут с голода.
vtral
Scio me nihil scire
Scio me nihil scire
 
Сообщений: 3584
Зарегистрирован: 23 дек 2012, 15:11
Откуда: Юг Западной Сибири
Благодарил (а): 38 раз.
Поблагодарили: 228 раз.

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

Сообщение kulibin » 02 авг 2013, 09:21

Тем не менее набор цацок для Arduino впечатляет. Как прикладное пособие, мне кажется - офигительная вещь.
Не спрашивай Россию - что она для тебя сделала. Спроси себя - что ты сделал для нее.
Аватар пользователя
kulibin
Scio me nihil scire
Scio me nihil scire
 
Сообщений: 19245
Зарегистрирован: 18 дек 2009, 03:34
Откуда: Барнаул
Благодарил (а): 60 раз.
Поблагодарили: 1054 раз.

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

Сообщение tisugol » 02 авг 2013, 10:57

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


Конечно! И покупает нормальные приборы, со светофильтрами, эталонными источниками, а не китайский нонейм "шырпотреб" )
tisugol
Фонарик
Фонарик
 
Сообщений: 20
Зарегистрирован: 30 июн 2013, 12:31
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение vtral » 02 авг 2013, 13:25

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

В данном контексте термин "игрушка" употребил во вполне уважительном смысле. Просто хотел выразить мысль, что для личного применения обычно не нужна низкая абсолютная погрешность измерений, соответственно и приборное обеспечение может быть совершенно разным, не сертифицированным, не поверенным. Для производства же подход совершенно другой.
Ардуино нравится, как явление. Но себе покупать не стал, остановился на другом варианте, взял отладочную плату Pinboard-II, на которой макетирую и отлаживаю, а уже сам девайс делаю с нуля, в том числе и плату.
Троллей игнорирую. Пусть дохнут с голода.
vtral
Scio me nihil scire
Scio me nihil scire
 
Сообщений: 3584
Зарегистрирован: 23 дек 2012, 15:11
Откуда: Юг Западной Сибири
Благодарил (а): 38 раз.
Поблагодарили: 228 раз.

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

Сообщение dgezva » 04 авг 2013, 03:23

tisugol писал(а):По просьбе dgezva создаю отдельную тему.

Тут дело не во мне лично, как раз.
Просто теперь эта инфа не утонет
Аватар пользователя
dgezva
Scio me nihil scire
Scio me nihil scire
 
Сообщений: 3592
Зарегистрирован: 03 окт 2011, 11:24
Откуда: Владивосток-Николаев-Одесса-Aachen
Благодарил (а): 74 раз.
Поблагодарили: 169 раз.

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

Сообщение b00gieman » 23 фев 2014, 02:03

Мониторите СОМ-порт, или переписали код с выводом на дисплей?
Аватар пользователя
b00gieman
Фонарик
Фонарик
 
Сообщений: 27
Зарегистрирован: 11 янв 2014, 22:55
Откуда: Украина, Донецк
Благодарил (а): 11 раз.
Поблагодарили: 2 раз.


Вернуться в Всякая всячина

Кто сейчас на форуме

Зарегистрированные пользователи: Bing [Bot], Corroner, Светочъ, Fabik01, Google [Bot], mailru, Majestic-12 [Bot], MAQ, skal, voxy2, Мифодий, Яндексбот