Сенсор освітленості MAX44009 – програмний I2C драйвер з обробкою подій без GPIO переривань
₴239 – ₴279
Цей програмний модуль драйвера сенсора освітленості реалізує повний набір інструментів в обхід деяких незручних можливостей апаратної інтегральної схеми MAX44009. Через “дивну” реалізацію виробником мікросхеми режиму обробки переривань “віконного компаратора” з двома порогами, ми прийшли до рішення, що набагато ефективніше буде програмно опитувати сенсор і обробляти події на стороні головного контролера. Застосування лише послідовної шини, заощаджує/вивільняє порт контролера під сигнал INT. Також, до програмної обробки подій на стороні контролера, нас підштовхнула експоненційна природа значень порогів у регістрах сенсора, що робить неможливим для користувача вказувати пороги у люксах без спеціальних таблиць перерахунку. Ми ж, гарно попрацювали і вирішили всі згадані складнощі: події обробляються, GPIO займає лише порти під шину I2C, користувач вказує пороги не у двікових “сирих” числах, а у люксах.
Продукт max44009_drv, після запуску у середовищі Lua, «фоново» працює як повноцінний модуль зі своїми публічними методами, що зареєстровано у системному оточенні і котрі можливо викликати з рівня мови Lua. У модулі реалізовано методи ініціалізації max44009
.init()
та читання поточного значення max44009.readout
()
, а також службовий метод event() що обробляє події зміни стану на принципах: “Норма” / “Нижче норми” / “Вище норми”.
Опис
Ambient Light Sensor MAX44009 – Software I2C driver for with event handling without interrupt GPIO
Цей програмний модуль розроблявся і тестувався для роботи з
- Прошивкою NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com
- branch: master
- release: 3.0-master_20200610
- build created on 2020-07-28
- powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e)
- Для роботи модуля, прошивка NodeMCU має містити обов’язковий модуль I2C
- Тестовий стенд, крім мікроконтролера ESP8266 з прошивкою NodeMCU, має включати до свого складу сенсор MAX44009 у вигляді модуля. Вивід Int для обробки подій в даній реалізації програмного продукту не застосовується.
- Обробка подій виконується періодичним опитуванням регістрів MAX44009, а період налаштовується користувачем.
Цей програмний модуль драйвера сенсора освітленості реалізує повний набір інструментів в обхід деяких незручних можливостей апаратної інтегральної схеми MAX44009. Через “дивну” реалізацію виробником мікросхеми режиму обробки переривань “віконного компаратора” з двома порогами, ми прийшли до рішення, що набагато ефективніше буде програмно опитувати сенсор і обробляти події на стороні головного контролера. Застосування лише послідовної шини, заощаджує/вивільняє порт контролера під сигнал INT. Також, до програмної обробки подій на стороні контролера, нас підштовхнула експоненційна природа значень порогів у регістрах сенсора, що робить неможливим для користувача вказувати пороги у люксах без спеціальних таблиць перерахунку.
А отже, ми гарно попрацювали і вирішили всі згадані складнощі, перетворивши роботу із сенсором на суцільне задоволення: події обробляються, GPIO займає лише I2C, користувач вказує пороги не у двійкових сирих числах, а у люксах.
Зверніть увагу. В той час, як апаратний сенсор надає можливість забезпечувати зону нечутливості лише по часу, в нашому продукті таких параметри два:
- період опитування і обробки подій
- значення гістерезису, що приймається до уваги під час порівняння значень у функції обробки подій.
Продукт max44009_drv, після запуску у середовищі Lua, «фоново» працює як повноцінний модуль зі своїми публічними методами, що зареєстровано у системному оточенні і котрі можливо викликати з рівня мови Lua. У модулі реалізовано методи ініціалізації max44009
.init()
та читання поточного значення max44009.readout
()
, а також службовий метод event() що обробляє події зміни стану на принципах: “Норма” / “Нижче норми” / “Вище норми”.
Реєстрація модуля у системному оточенні:
1 |
max44009 = require('max44009_drv') |
Примітка 1. Так викликати можливо як вихідний *.lua код, так і компільований *.lc.
Примітка 2. Рекомендуємо виконувати виклик модуля з файлу початкового завантаження init.lua.
Публічні методи модуля:
max44009.init()
– ініціалізація модуля із заданими параметрами;
max44009.readout
()
– зчитування поточного значення рівня освітленості.
Розробник може за допомогою API, котрий надає модуль, реалізувати власний алгоритм подальшої обробки подій чи реакції на них, засобами мови Lua та бібліотек мікроконтролера NodeMCU.
Для кого цей продукт
Кожен наш програмний продукт розроблено із застосуванням безмежного розмаїття можливостей простих і доступних контролерів, сенсорів та інших електронних компонентів, які можна знайти у будь-якому магазині. Головна наша мета – надати прості і недорогі інструменти швидкого вирішення задуманих проектів.
Для використання програмного модуля max44009_drv підійде будь-який модуль чи плата на базі ESP8266-12e/f з прошивкою NodeMCU.
Ми будемо раді, якщо нашими продуктами скористаються:
- Діти та їх батьки;
- Учні та їх вчителі;
- Студенти та їх лабораторні роботи;
- Новачки у технологіях Інтернету речей;
- Лаборанти та їх експерименти;
- Аматори-електронщики-не-програмісти;
- Аматори-програмісти-не-електронщики;
- Професійні інженери та їх поважні замовники;
Можливості сучасних обчислювальних систем настільки потужні і всеосяжні, що дані програмні компоненти однаково добре згодяться як для домашньої автоматизації і факультативного навчання, так і комерційного впровадження, або швидкого розгортання окремих сегментів комерційних систем та виконання їх пілотних випробувань.
Необхідні навички та інструменти
Всі програмні продукти на нашому сайті розраховано на користувачів, які вже вміють самостійно підключати, прошивати та програмувати контролер ESP8266 з прошивкою NodeMCU і мовою програмування Lua.
Таким чином, застосування даного комерційного-придбаного програмного модуля Клієнтом полягає у тому, щоб:
- завантажити (download) lua-код у середовище розробника на комп’ютер,
- ознайомитися з кодом і супутніми матеріалами пакету постачання,
- адаптувати код за необхідності під свої задачі,
- вивантажити (upload) програмний код у контролер та запустити на виконання;
- після тестування придбаного коду, користувач може інтегрувати його до своїх власних програмних розробок.
Проте, Ви можете ознайомитися з інструкцією на нашому сайті, як швидко почати програмувати на Lua з контролером NodeMCU/ESP8266 за цим посиланням Як швидко почати працювати з контролером NodeMCU/ESP8266.
А також з публікаціямі про датчик MAX44009:
Додаткова інформація
Рівень складності | Складний |
---|---|
Передача даних назовні | Немає |
Тип виконання | Модуль з повним API |
Локальний Web-сервер | Немає |
Журналювання | Немає |
Енергоспоживання | Звичайне |
Композиція скриптів | Один скрипт |
Статистична обробка даних | Немає |
Перевірена версія прошивки | 3.0-master_20200610 |
Отримання точного часу | Немає |
Інтерфейс користувача | Немає |
Виробники апаратного забезпечення | MAXIM INTEGRATED |
Необхідні модулі прошивки | i2c модуль |
Мінімальна сумісна версія прошивки | 1.5.4.1-master_20161201 |
комплект: | модуль, модуль + коментарі |
Інтерфейсна шина | I2C |