Orange

Эксперименты с Arduino

В начале января я впервые взял в руки Arduino (очень дешёвый микрокомпьютер, у которого есть 14 цифровых входов/выходов и 6 аналоговых входов) и за пару часов научился управлять шаговым двигателем (http://ammo1.livejournal.com/808639.html). Для дальнейших экспериментов мне были нужны индикаторы и датчики освещённости, поэтому они были заказаны на Aliexpress, а эксперименты отложены. На прошлой неделе пришла последняя посылка с тем, что было заказано, и весь вчерашний день я посвятил экспериментам и изучению языка программирования Arduino.




Модуль двухстрочного экрана и клавиатуры LCD Keypad Shield за $2.60 ставится вторым этажом на плату Arduino Uno и втыкается в её разъёмы.



С одной стороны - очень просто, с другой - доступа к портам после установки платы больше нет. Можно подпаять контакты, чтобы они торчали уже из модуля экрана, а можно весь модуль подключить к плате Arduino проводами.

При первом включении индикатор ничего не показывал и я уже подумал, что он неисправен. Оказалось, что нужно было покрутить синий подстроечный резистор, регулирующий контрастность. Изначально он был в таком положении, что контрастность была нулевой.

Управлять индикатором не просто, а очень просто. Программа, отображающая две строчки, работу которой видно на заглавной фотографии, выглядит так:



Ещё я купил четырёхкнопочную мембранную клавиатуру за $0.53 и четырёхразрядный индикатор за $1.4.



Индикатор довольно бестолковый - у него нет "мозгов", а индикация динамическая. Это означает, что для того, чтобы он работал, на него нужно непрерывно отправлять данные. Оказалось, что это не стандартный компонент Arduino, а чисто китайское поделие. Для него есть библиотека, написанная каким-то энтузиастом, но работает это всё неудобно. Впрочем, может и пригодится.

На самом деле оказалось, что без индикаторов и дисплеев можно обойтись - Arduino умеет выводить данные на экран компьютера через свой USB-интерфейс. Для экспериментов это даже удобней.



Я решил для начала сделать на базе Arduino пульсметр - прибор, измеряющий пульсацию света. Для этого было куплено четыре разных датчика света.



1. Датчик с фоторезистором за $0.4.
2. Датчик с фотодиодом за $0.6.

Уже заказав их, я осознал, что это не то, что мне нужно. Они предназначены для автоматического включения освещения в тёмное время суток и просто выдают единицу на цифровой выход, когда уровень освещённости становится меньше порогового.

3. Датчик с фоторезистором, имеющий аналоговый выход за $0.9. На самом деле это то же самое, что и первый датчик, просто прямо к ножке фоторезистора подключен ещё один выход. Я сделал точно такой же выход на втором датчике, подпаяв к нему жёлтый провод.

4. Хитрый датчик с двумя фотодиодами и двумя АЦП за $1.75. Его пока ещё не включал. Он не годится для измерения пульсации, так как выдаёт в цифре значение освещённости и делает это относительно медленно, но для гониофотометра (прибора, измеряющего угол освещения и световой поток) он скорее всего подойдёт лучше всего.

О том, чего я вчера добился, расскажу отдельно, а пока просто покажу картинку пульсаций света плохой китайской светодиодной лампочки, сделанную на основе данных, полученных с помощью Arduino.



p.s. Ищу "самоделкиных" и знатоков Arduino, готовых помочь с реализацией нескольких технических идей для lamptest.ru: простой гониофотометр из шагового мотора и датчика света для измерения угла освещения и светового потока ламп, измеритель пульсации света, анализатор формы потребляемого тока.

© 2017, Алексей Надёжин




Основная тема моего блога - техника в жизни человека. Я пишу обзоры, делюсь опытом, рассказываю о всяких интересных штуках. А ещё я делаю репортажи из интересных мест и рассказываю об интересных событиях.
Добавьте меня в друзья здесь. Запомните короткие адреса моего блога: Блог1.рф и Blog1rf.ru.

Второй мой проект - lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.

Последние записи в журнале

promo ammo1 февраль 14, 19:00 145
Buy for 300 tokens
В отличие от обычных ламп накаливания, различающихся только мощностью и качеством изготовления, светодиодные лампы имеют много параметров, влияющих на качество и безопасность освещения. Я расскажу об основных параметрах светодиодных ламп и порекомендую, какие лампы лучше подойдут для дома.…
для подключения экранов лучше юзать l2c - там всего 3 ноги используется вместо кучи и работает всё даже имхо удобнее
>> простой гониофотометр из шагового мотора и датчика света для измерения угла освещения

С фоторезистором работать не будет, у него спектральная чувствительность не та.
arduino - прошлый век, ручная работа

переходим на ESP8266

keyword - WeMos

это уже в wifi
на все ноги можно interrupt

4 MB памяти
можно туда webserwer прикрутить и пр

и стоит столько же 3 - 4$

и прикрутить его на потолок в соседней комнате, а update програмы прям через OTA делать.
с почином!

> изучению языка программирования Arduino.
Формально тут язык С++, ардуино это скорее фреймворк или библиотека.
Фоторезистор не подойдет, он просто не засечет мерцание.
По поводу выбора датчика для измерения пульсаций, рекомендую данное видео: https://www.youtube.com/watch?v=9h4_W25qP64
Автор сделал простой детектор, но сигнал с солнечной батареи можно загнать на АЦП ардуины. Или ещё простой вариант - загонять сигнал в аудиокарту ПК.

И повторюсь, не побрезгуйте выложить ТЗ на устройства на форуме. Тогда желающим помочь будет проще включиться в работу.

Edited at 2017-02-08 19:53 (UTC)
Спасибо!
Уже писал в прошлой вашей теме про мотрочики, что мне здорово помог ваш пост сделать такую штуку.







Edited at 2017-02-08 19:56 (UTC)
Ардуино - прикольная вещь. Делал автономно ездящих четырехколесных роботов, метеостанцию с дисплеем... но вот только понять не могу - зачем вам в серьезной работе использовать детские конструкторы? Ардуиносовместимые датчики - дешманское гумно, потому что рассчитано на спрос начинающих электроников, которые пожгут их, а на новый монеток в диване не завалялось. Про фоторезистор выше уже сказали, у него спектральной чувствительности нет и релаксация дольше пульсаций ламп. Сервомоторы будут дергаться и лажать, разрядность в 256 не даст вам десятых долей градуса в угле освещения, ток лучше посмотреть осциллографом, и т. д.
В ардуино все предельно просто и на библиотеках, а сейчас вон у вас на фотках вообще порнография - готовый блок-дисплей с подпаянными ногами) я для проекта метеостанции сам курил распиновку дисплея, особенности подключения по I2P, и писал текст не текстом в программе, а адресами букв из библиотеки-таблицы символов. А тут уже все за вас сделано, можете на форуме магазина "Амперка" посмотреть какие-то неясные моменты.
Что такое "Ардуиносовместимые датчики"? Берёте любой нужный и подключаете - благо ног у Ардуино достаточно и цифровых и аналоговых. А "написанием текста адресами букв" даже в профессиональном программировании контроллеров никто не занимается - берут готовые библиотеки.
Программировал ракету в Екатеринбурге. По заказу Роскосмоса. Первый раз в жизни столкнулся. Очень простая штука.
У Ардуины (точнее, у Atmega328) довольно базовый ADC, предназначенный, скорее, именно для датчиков освещенности, а не каких-то серьезных измерений. Кроме того, не знаю уж про конкретный клон, но на оригинальной ардуине не сделан лоу-пасс фильтр (рекомендованный в даташите Atmega328), что делает и без того печальный ADC совсем инвалидом.

Все-таки для измерений стоит покупать соответствующие чипы (которые вполне смогут работать и с ардуиной тоже). Представленные китайские "модули" - туфта, можно просто взять фоторезистор и воткнуть его в адруину, результат будет точно такой же. Четвертый модуль, возможно, получше, хотя по фото не скажешь.
Скорее всего, вам нужно что-то вроде 1pcs 16 Bit I2C ADS1115 Module ADC 4 channel впихнуть между фоторезистором/фотодиодом/модулем и самой Ардуиной, чтобы она не пыталась сама распознать аналоговый сигнал, а получала надежную цифру по I2C. Не исключено, что его надо также отдельно запитать. Сам по себе ардуиний ADC будет люто шуметь, особенно если подключать дисплей, ну не разведено на ардуине аналоговое питание отдельно от общего.
Arduino быстро надоест. Та же малина уже на порядок интереснее. Плюс ардуины в реалтайме, но я не вижу поставленных для этого задач. Минус- это нет человекоориентированного интерфейса. К малине поставил обычный дисплей и qt с питоном дадут простые и удобные интерфейсы.
Прелесть авр в асме. Там ты царь и бог
Разрешите два вопроса не по теме?
Спасибо!
Из чего сделать циклический таймер включения обогревателя в 1 квт? 10 минут работы, пять выключен. Таймеры с шагом в 15 минут есть в продаже, с шагом в 10 я купил на Али, а вот в пять минут, найти не могу.
Почему издают "звон" тэны при понижении нагрузки с киловатта на 500 ватт при помощи регуляторов мощности? Нужны какие то особенные регуляторы?