Як мій кіт перестав боятися і полюбив Arduino

Привіт, Хабр!

Нещодавно ми з шановним dzhe думали про те, який заголовок може вважатися ідеальним для Хабра — і ви вже зрозуміли, до якого висновку прийшли. Правда, на жаль, насправді кота у нас немає, однак тему Arduino обіцяю нижче трохи відкрити.



Втім, глобальні новини у нас інші: Black Swift не просто вийшов на Kickstarter, але і за перші 6 днів майже зібрав необхідну суму.

Це не багато і не мало — були проекти, який збирали 100 % за день або за годину, були проекти, який так і вмирали, ледве діставшись до 50 % за весь термін. Ми потрапили в цікаву ситуацію — з одного боку, у професійних спільнотах Black Swift викликав переважно позитивні відгуки, з іншого боку, ЗМІ більш-менш загальної спрямованості нами не зацікавив — якийсь ще один мікрокомп'ютер, мало їх — тому якогось масивного сплеску у перші день-два у нас не було.

Тут, звичайно, варто було трохи доопрацювати перед запуском: створити яку-небудь безглузду, але зрозумілу і дає гарні картинки і заголовки плату розширення, на яку клюнули б звичайні ЗМІ. Ну, наприклад, «найменший роутер в світі» або «100 % сумісність з Arduino». Безглузду — тому що якщо вам потрібен роутер, простіше купити готовий, а якщо ви правда при вигляді 400-МГц процесора і OpenWRT турбуєтеся про сумісність з Arduino, то є ж Yun. Але, як показує практика, всі ті журналісти, які традиційно зневажливо відгукуються про маркетологов, на такі нескладні маркетингові виверти ловляться дуже навіть непогано.

Втім, про роботу з Kickstarter я докладніше напишу пізніше, коли буде офіційний інфопривід «100 %», а поки — про ардуину (насправді немає).

Я вже пару-трійку раз згадував, що в парі з Black Swift зручно використовувати який-небудь дешевий і нескладний мікроконтролер — AVR, PIC, STM32 — щоб на ньому реалізувати апаратний ШІМ, АЦП і чесне реальний час. Очевидно, що виникає одна незручність — контролер треба чимось окремо програмувати, і якщо ми цілимось на людей, не обов'язково серйозно розбираються в микроконтроллерной тематики, то це стає проблемою.

На щастя, під Linux існує пакет avrdude, який вміє одну дуже хорошу річ — програмувати AVR, підключений до звичайних портів вводу-виводу (GPIO) Linux-пристроїв. OpenWRT — той же лінукс, вид збоку, тому збірка під нього avrdude є в загальному-то справою техніки і одного невеликого патча.

Тестова плата:



На ній стоїть ATtiny24A, кварц на 8 МГц, дрібна обв'язка з харчування, роз'єми для Black Swift і пара роз'ємів IDC 2x5. Ніякої конкретної мети саме такий форм-фактор не переслідував.



З встановленим Black Swift. Одна з речей, за яку він мені подобається можливість поставити його на роз'ємах, а всякі додаткові компоненти розмістити під ним; навіть над кварцом (звичайний HC-49S) залишається трохи вільного місця.

Схема дуже проста: SPI-інтерфейс тіньки підключається до Black Swift, її RESET — також до одного з GPIO і одночасно підтягується до харчування резистором. Живиться тинька для простоти від 3,3 В, видаваних Black Swift'ом.



Схема в PDF, схема і плата для Diptrace і в герберах.

Це, очевидно, половина роботи. Тепер беремо свіжий avrdude-6.1, трохи правимо, щоб він зібрався під OpenWRT, на майбутнє додаємо підтримку апаратного SPI авторства Кевіна Кацнера, пишемо Makefile і збираємо в готовий пакет.

Патчі і Makefile можна знайти тут, а готовий пакет для OpenWRT 14.07 — тут. Він не заточений під Black Swift яким-небудь спеціальним чином (зокрема, я не став переписувати драйвер linuxgpio з повільного sysfs на швидкий прямий доступ до GPIO), тому буде спокійно працювати і на інших платах.

Пробуємо (avrdude-p t24-c linuxgpio-t):



Сигнатура чіпа правильна, все працює. Прошиваємо AVR, щоб помигати светодиодиком:



Моргаємо светодиодиком, прямо як на Arduino.

Очевидно, що обмін даними з AVR легко організувати через той же SPI, через який ми його прошили — в одну сторону пересилати команди і параметри, у відповідь отримувати якісь дані. Тобто, ми повністю інтегрували з AVR Black Swift, причому так, що нам навіть зовнішній програматор не потрібен — Black Swift може сконфігурувати і прошити невинно чистий чіп.

Само собою, Black Swift можна використовувати і як власне програматора — з доступом по Wi-Fi і можливість автономного живлення. Я навіть бачу, як його довести до закінченого продукту: додати [відключається] транслятор рівнів 3,3/5 В і зробити веб-інтерфейс з калькулятором фьюзов (є такі на JS) і заливкою HEX-файл прошивки. У мене навіть тільки що виникла підозра, що я собі зроблю.

При бажанні, підозрюю, можна навіть зібрати під нього gcc-avr, щоб прошивку прямо на ньому збирати, але як-то не бачу в цьому практичної необхідності.

Ну і про Arduino: в принципі ніщо не заважає писати їм в AVR HEX-файли, отримані з Arduino IDE.

Upd. dzhe вимагає спростувати брудний наклеп і повідомити, що у нього кіт є.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.