Использование Little Wire в проектах на базе OpenWRT
Введение
В процессе сбора информации.
Из моего письма на 4PDA:
LittleWire позволяет запускать “из коробки” приложения для домашней автоматизации (управление ШИМ, RGB лентами ws2812, подключать датчики 1Wire и I2c, кнопки, реле и т.д.)
Сами бинарные файлики программ управления маленькие, под конкретную задачу их можно закидывать прямо на роутер.
К роутеру в USB порт подключается стик с установленной на нем tiny85, загрузчиком (micronucleus) и прошивкой (littlewire).
Причем прошивки на тиньке можно менять прямо с роутера. В результате получаем с роутера 5 gpio с кучей вкуснейших плюшек в виде ШИМ, 1Wire, I2C и т.д.
Портирование Makefile проектов Micronucleus и LittleWire под OpenWRT произведено.
Исходники здесь – https://github.com/ZigFisher/Glutinium Там, кстати, есть и другие интересные фичи портированые под OpenWRT.
Например, утилиты и прошивки для переходника USBasp на котором уважаемый MaksMS с проекта http://Homes-smarT.ru делает и описывает интересные вещи (приемники и передатчики 433MHz, датчики, а так-же работа с линейкой модулей nRF24).
Нужен основной libusb + libusb-compat. Насколько я понял, это библиотека для работы с низкоуровневыми устройствами.
Digispark это просто платка, с распаянным tiny85 и обвязкой для подключения к USB порту. Micronucleus – бутлоадер и одноименная утилита загрузки прошивок.
LittleWire – прошивка, заливаемая в тиньку при помощи утилиты micronucleus и дающая возможность получить на любом роутере с USB:
Вполне возможно, что LittleWire можно влить в Digispark просто через Arduino IDE, но тут фишка в другом – залить (или сменить) загрузчик на Micronucleus
и затем иметь возможность заливать прошивки в Digispark утилиткой прямо с роутера без использования avrdude (он жирноват).
Ссылка на архив с готовыми пакетами для платформы Ralink – http://zftlab.org/files/firmware_bricket/packages/
Digispark и LittleWire по хардварной части ничем не отличаются. LittleWire был разработан еще на обычных элементах (первые образцы), а потом уже Digispark и китайцы начали штамповать SMD клоны.
Прелесть вся в простой реализации нужного функционала на чистом Си (малый размер кода на выходе) и с простой аппаратной интеграцией (воткнул в USB и пользуй).
Так-же предлагаю подумать над модулем RCswitch, который будет позволять подавать команды радиоуправляемым розеткам 315/433 MHz.
Одна из рабочих программ уже так-же есть у меня в примерах на GitHub.
Возможности
- USBtinyisp compatible AVR programmer
- 4 channel GPIO
- ADC with 10 bit resolution
- 2 parallel hardware PWM outputs
- SPI interface
- I2C interface
- 1-Wire interface
- WS2812 RGB LED interface
- Multiple device support
Pin outs
All pins can be used as Digital I/O
- Pin 0 → I2C SDA, PWM (LED on Model B)
- Pin 1 → PWM (LED on Model A)
- Pin 2 → I2C SCK, Analog In
- Pin 3 → Analog In (also used for USB+ when USB is in use)
- Pin 4 → PWM, Analog (also used for USB- when USB is in use)
- Pin 5 → Analog In
Прошивка загрузчика на Digispark (выполняется при помощи USBasp)
avrdude -c usbasp -p t85 -U flash:w:digispark_t85_micronucleus-v2.03.hex -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m
Если вы хотите намертво вшить загрузчик в Digispark, используйте hfuse:w:0×5d:m (не рекомендуется)
Прошивка проекта на Disispark (выполняется на роутере)
micronucleus --run --type intel-hex /usr/share/little-wire/digispark_t85_littlewire_v13.hex
Тстовые утилиты Little Wire
- adc – отображает напряжение на GPIO
- blink – мигает светодиодом на плате
- blink_ws2812
- button – отображает нажатие кнопки
- debugConsole
- fade_ws2812
- hardwarePWM
- i2c_blinkM
- i2c_nunchuck
- lwbuttond
- onewire – сканирует шину 1-Wire и показывает температуру датчика
- rgb_cycle_ws2812
- servo
- softPWM
- spi_LTC1448
Подключение устройств и датчиков к Digispark с прошивкой Little Wire
Digispark | USBtinyisp | Hard PWM | Soft PWM | ADC | I2C | SPI | OneWire | WS2812 | CDC-232 |
pin1 | MISO | CH_B | CH_2 | - | - | DO | - | DATA | TX |
pin2 | SCK | - | CH_3 | CH_1 | SCL | SCK | DATA | DATA | RX |
pin3 | RESET | - | - | CH_0 | - | CS | - | DATA | - |
pin4 | MOSI | CH_A | CH_1 | - | SDA | DI | - | DATA | - |
Получение тестовых бинарных сборок
wget -O /usr/bin/octonix_gpio http://zftlab.org/files/firmware_bricket/binary/octonix_gpio && chmod 755 /usr/bin/octonix_gpio
Разработчикам прошивок на базе OpenWRT
Если вы хотите сделать поддержку пакетов Glutinium в своей среде разработки, добавьте в файл feeds.conf, находящийся в корне проекта, строку:
src-git glutinium https://github.com/ZigFisher/Glutinium.git
Затем, обновите список пакетов командой:
./scripts/feeds update glutinium
Выберите, какие именно пакеты вы хотите интегрировать. Рекомендуемые и полулярные пакеты:
# ./scripts/feeds install homes-smart ./scripts/feeds install httping ./scripts/feeds install i2c-telemetry ./scripts/feeds install littlewire ./scripts/feeds install micronucleus ./scripts/feeds install rcswitch
После этого можно выполнить команду make menuconfig и указать, какие из вновь установленных пакетов собирать.
Перед сборкой очередного релиза своей прошивки, желательно выполнять команду обновления списка пакетов, что-бы они сохраняли свою актуальность.
Предложения о интеграции пакетов сделаны разработчикам прошивок ‘Хитрый Домовенок’ и ‘CyberWRT’
Внутренние ссылки
- 2016-10-05 Использование Homes-smarT в проектах на базе OpenWRT
- Использование Little Wire в проектах на базе OpenWRT
- 2016-03-14 Прошивка для роутера ‘брикет’ на базе SoC Ralink – Home IoT edition
Внешние ссылки
- Краткая история появления Little Wire [!]
- Little Wire home
- Little Wire download page
- Little Wire documentation
- Little Wire on Digispark Shield Kit Tutorial
- GitHub: Micronucleus – ATTiny usb bootloader
- GitHub: Little Wire official
- GitHub: Little Wire update by kehribar
- OpenWrt – ATtiny w zastosowaniach
- PL forum: ATtiny85 z LittleWire
- PL forum: Attiny85 i sterownik
- PL forum: Połączenie routera z centralą alarmową – jak najprościej?
- Attiny85 – Little Wire nie reaguje po wgraniu bootloadera micronucleus
- New gpio driver for LittleWire USB devices
- DS18B20 / 1-wire via Little Wire [USB] / OpenWrt on TL-WR841ND
- MySKU: Клон Digispark. Тот же ATtiny85, только с USB
- Загрузчики [bootloader] для микроконтроллеров AVR
- -
- Kickstarter: Digispark – The tiny, Arduino enabled, usb dev board!
- Kickstarter: Digispark – Case Prototypes
- Kickstarter: Digispark – Shield PCBs and Kits
- Kickstarter: Digispark – Shipping Begins
- Kickstarter: Digispark – Production Photos
- Kickstarter: Digispark – Final Shield PCB Prototypes