Самый дешевый Ардуино для поднятия праздничного настроения. Плитка arduino


Самый дешевый Ардуино для поднятия праздничного настроения

Ну вот, опять пост о непонятных для многих микроконтроллерах, микросхемах и прочей фигне радиотехнике. Но зато применение очень понятное — новогодние огни. Все началось больше года назад, когда я приобрел управляемые светодиоды WS2812. И с тех пор эти диоды мне не давали покоя — что же из них смонстрячить. Был и цифровой дисплей и цифро-аналоговые часы. Увы, все было не то — душа просила праздника. И вот за окном пошел снег, и я решил, что самое достойное им применение — иллюминация к Новому году. Причем здесь Ардуино? Ардуино будет дальше под катом. Наигравшись отдельными светодиодиками, микросхемами и печатными платами я решил в преддверии праздника себя не мучить пайкой печатных плат, а купить готовых контроллеров и ленту и сделать из них радующие глаза и сердце вещи. Тем более что были заказы на что-то подобное.

В «пятницу тринадцатого» купил 5 метров ленты WS2812 $31.5, кучу ардуинок по $1.2 (сегодня цена выросла, но не намного), а также USB разъемчиков $1.58 за 10-ток

Ардуино получился самый дешевый, из того что я встречал

Это китайский клон Arduino Pro Mini с более слабой микросхемой Atmega 168PA. В отличие от более навороченной Atmega328P, 168-й имеет вдвое меньшее ОЗУ (1Кб вместо 2-х) и ПЗУ под программу (16Кб вместо 32Кб). Еще меньше размеры и стоимость, а даташит у них общий. Дизайн платы немного отличается от продающихся сейчас Pro Mini, и кварц там стоит огромный, но в целом платы вполне годные и очень привлекательные по цене. Для моих задач контроллер полностью достаточен. Подошел бы и ATmega8 и некоторые ATtiny, но готовых плат за такие деньги я не встретил, а паять самому, как писал выше, не захотелось. Несколько слов про ленту. Ленты с WS2812B были с разным количеством светодиодов на метр, разным цветом подложки и защитой. Я взял белого цвета, 60/м, без защиты. От обычных лент 5050 данные отличаются тем, что каждым светодиодом можно управлять в отдельности при помощи специального контроллера.

Ну а теперь перейду к празднику, так как делать буду снежинки. Собственный опыт показал, что слабое место самодельных устройств — их внешний вид. Поэтому я заказал изготовление корпусов своих снежинок из акрила методом лазерной резки. И не игрушкой в 300мВт, а нормальным 100-ваттным лазером с жидкостным охлаждением и обдувом воздуха.

Размер снежинок 25 и 30см. Количество светодиодов каждого луча — 5 и 8 соответственно. Пару штук сделал из самодельных полосок, остальные из светодиодной ленты. проводки взяты из разобранных отрезков UTP-кабелей, коих на работе скопилось великое множество. Теперь контроллер. Паять все ножки в данном проекте к нему не обязательно — 4 штырька для программирования, спаянные с учетом минимизации высоты. (Простите за ушедший фокус) В контроллер заливаю программу при помощи самого дешевого TTL-конвертера. При программирование в Arduino IDE выбираю Arduino Pro Mini 5V Atmega168

Три проводка, питание, земля и цифровой выход, припаиваю прямо к плате. Плату креплю на 3М-ский скотч (а на что же еще, если не подходит синяя изолента?) Приятной особенностью данных контроллеров оказался очень тускло горящий светодиод питания. Яркий бы пришлось выпаивать или заклеивать, так как световым эффектом он бы мешал.

Теперь питание. Питание 5В будет подаваться через разъем USB. Для этого прикупил таких вот разъемчиков Зачем такие сложности с USB?

  • Ну во первых, большого количества блоков питания у меня нет, а снежинки я планировал отдавать разным людям.
  • Во вторых, зарядники USB от старых телефонов обычно у всех лежат по чуланам.
  • В третьих, стабилизатора питания в снежинке не предусмотрено, а вероятность, что на устройство будет подано питание, отличное от 5В, через такой разъем минимальное
А вот проводов нормальных под рукой не оказалось. Те что продаются в электро-товарах слишком толстые, а симпатичных тоненьких и белых не попалось.

Теперь можно включать мои снежинки:

Ну что еще сказать, на маленькую снежинку уходит ровно 0.5м ленты. Потребляет она при данных световых эффектах 270мА. Большая 510мА. Мой ноутбук вполне тянет по USB все разом. (Благо управление током зарядки и защита в нем есть)

В будущем году я планирую проапгрейтить все снежинки — добавить ИК-приемник, для того чтобы можно было управлять эффектами с любого ИК-пульта, ну и написать новых световых эффектов.

Следующие же подобные устройства буду делать на ESP8266. (Цена у них теперь соизмеримая с Ардуино — около $2) Можно будет управлять снежинкой прямо со смартфона и загружать эффекты из интернета. А также координировать работу снежинок единой программой в системе «Умный Новый год» ))) Ну и конечно, лазерная резка располагает разнообразию форм.

Можно было сделать управление несколькими снежинками с одного контроллера и БП, но тогда бы они потеряли автономность.

На этом откланиваюсь, прошивку снежинок можно взять здесь

Кот, одуревший от обилия проводов, здесь

Всех со стремительно наступающим Новым годом!

mysku.ru

Светодиодный диско-пол на Arduino

Светодиодный диско-пол на Arduino

Особенностью такого пола являются WS2801 RGB светодиоды 36 мм, выбор пал на такие светодиоды, потому что они имеют достаточно низкий профиль (глубина 5 мм). Этот размер идеально подходит для посадки вдоль плиток пола.

Материалы:- Arduino Uno- Arduino Proto Board- Кабель USB 2.0- Макетная плата- Шнур и вилка электропитания- Светодиоды WS2801 LED 36 мм- Сетевой выключатель 12V 5A- Поликарбонатные прозрачные листы Lexan MARGARD 5 мм- Деревянные рейки 9 х 21 мм- Самоклеящийся винил прозрачный- ПК/ноутбук для программы Jinx!- Провода для светодиодов

Светодиодный диско-пол на Arduino

Автор указывает на то что материалы по желанию можно заменить. Листы Lexan MARGARD, по его мнению, подошли идеально из-за их прочности и стойкости. Матированный материал отлично рассеивает блеск близко расположенных к нему светодиодов.

Шаг первый. Электрическая схема.В проекте используется небольшая макетная плата для разделения Arduino, земляных проводников и светодиодов. Это решение позволило использовать всего 4 проводника для светодиодов. От источника питания напрямую идёт плюсовой проводник на светодиоды. Для подключения вилки к сетевому выключателю питания автор пригласил электрика. Также можно использовать блок питания от компьютера на 12В.

Светодиодный диско-пол на Arduino

Шаг второй. Программирование.Для световых эффектов Arduino решено программировать скетчем Glediator, который будет прикреплён под статьёй. Arduino подключили к ноутбуку напрямую через USB и загрузили скетч в микроконтроллер. В коде изменено только количество пикселей в этой строке:«#define Num_Pixels 120», номера выводов:int SDI = 2;int CKI = 3;

Светодиодный диско-пол на Arduino

Шаг третий. Jinx!Для этого проекта удобнее всего использовать программу Jinx! со скетчем Glediator. Автор не использовал Bluetooth для подключения Arduino и запустил его напрямую подключив к ноутбуку. На скриншотах ниже показаны использованные настройки для 120 светодиодов. Следует обратить внимание на то что количество каналов, которые используются для пикселей/светодиодов требуется умножить на 3. На вкладке Fast Patch выбрана опция Snakelines, она подходит к данному типу светодиодов. Также порядок каналов указан как GBR, поскольку эти светодиоды имеют именно такую последовательность. Для выбора нужного эффекта выбирается меню Setup, и там Start Output и сразу проверяется как горят светодиоды. Программа Jinx! имеет возможность программировать сразу несколько зон, эта функция используется автором для разного свечение пола. Скачать программу можно тут: Jinx!

Светодиодный диско-пол на Arduino

Шаг четвёртый. Каркас пола.Каркас пола построен в виде пикселей, так как это позволит равномерно распределить вес когда кто-то стоит на полу, и поможет более качественно и резко отображать свет от светодиодов в каждом пикселе. Размер пола вышел 1640х930 мм, в него поместилось ровно 120 пикселей, организованы они в виде матрицы 8 на 15. У деревянных планок ширина 21 мм, это позволило сделать каждый квадрат от 90 до 100 мм вокруг каждого пикселя.

Под каждым элементом пикселя сделаны маленькие прорези для размещения проводов. Все деревянные планки и пиксели склеены пистолетом.

Шаг пятый. Поверхность пола.После долгих раздумий автор остановился на листах Lexan Margard, которые имеют защите от протирания и не бьются. Благодаря конструкции с ячейками 10х10 пол может выдерживать вес от стульев и высоких каблуков. Листы выбраны толщиной в 5 мм для установки вровень с напольной плиткой. Листы

Светодиодный диско-пол на Arduino

Шаг шестой. Винил.В этом шаге прозрачный материал поверхности пола покрывают самоклеящимся рассеивающим винилом. Такой материал позволяет ярко светиться светодиодам, и одновременно не бить в глаза. Также можно использовать матовый винил.

Шаг седьмой. Закрепление.Листы Lexan с винилом под ними ложат на каркас и приклеивают силиконом по краям.Использую ПО Jinx! и меняя различные свечения можно много экспериментировать. Автор сделал различную последовательность включения свечения. Программа может изменить ярлык рабочего стола для запуска эффектов, этот ярлык можно добавить в автозагрузку Windows. Это позволит светодиодам загораться в нужной последовательности при включении компьютера.

Светодиодный диско-пол на Arduino

Видео с работой диско-пола:

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

usamodelkina.ru

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки

Хочу рассказать о моем увлечении радио моделями, в частности катерами.

Для управления моторами решил использовать ардуину и готовый пульт для квадрокоптеров. Данный пульт собран с использованием радио модуля NRF24L01, и к тому же один добрый человек раскодировал протокол.

1 модель

Для начала решил выбрать тип корпуса: катамаран. За основу взял данную картинку:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 1

По данной картинке был сделан набросок 3D модели, для того чтобы из нее сделать выкройку в одной замечательной программе pepakura designer:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 2

Но конечно программа не смогла сделать нормальную выкройку по моим слишком криволинейным поверхностям. Пока шло мое обучение, какие все-таки должны быть 3D модели, решил делать без чертежей «на глаз»:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 3

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 4

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 5

И собственно сама ардуина (самодельная) с драйвером на SI9986:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 6

И конечно видео:

Ни одна уточка не пострадала.

Был выявлен ряд недостатков:

  1. Модель тяжелая.
  2. Потолочный клей (для пистолетов в виде шприца) тяжелый и размокает от воды.
  3. Масляная камера с использованием литола (кто-то предлагал как вариант от протечек со стороны вала) справляется плохо.
  4. Напряжения 1 литиевого аккумулятора явно недостаточно. Требуется как минимум 2S батарея.
  5. Винты захватывали воздух.
  6. Драйверы на SI9986 со временем сдохли от перегрузок.
  7. Двигатели со старого радиоуправляемого вертолета требовал радиатор, так как очень сильно раскалялся.
  8. Моя конструкция катера была явно неудачная: короткая и высокая.

После небольшой работы над ошибками и увеличения опыта в создании «правильных» 3D моделей появилось несколько новых корпусов:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 7

Для следующей модели был выбран самый маленький, который как я ожидал должен был хорошо себя показать.

2 модель

В принципе я был доволен, но стало ясно что моторы требуется менять на один мощный, а направлением управлять рулем.

3 модель

Данную модель я не собрал до конца, но научился делать 3D модели для получения выкроек, а также узнал что такое шпангоуты и их назначение.

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 8

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 9

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 10

По данной модели была сделана выкройка:

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 11

Также узнал о отличной замене потолочной плитки: подкладка под ламинат.

У подкладки ряд плюсов по сравнению с потолочкой:

  1. Размер листов: 1000 х 500 мм.
  2. Различная толщина, я купил толщиной 3 и 5 мм, но использую пока только 5 мм.
  3. Отсутствие различного профиля и картинок.
  4. Хорошая прочность за счет большей толщины (для 5 мм).

А в остальном очень похожи:

  1. Малый вес.
  2. Не боятся воды.
  3. Низкая цена и доступность.

Клей использовал Титан, но затем перешел на термоклей, с которым сборка ускорилась в несколько раз.

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 12

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 13

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

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 14

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 15

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки - 16

Данный мотор очень прожорлив, и имеет огромный пусковой ток, около 10 А, может и выше. Поэтому я решил сделать драйвер двигателя проще: из 1 полевого транзистора, отказался от заднего хода и упростил разработку платы.

Была разработана, разведена и изготовлена лата управления, состоящая из самодельной ардуины на Atmega328P, радио модуля NRf24L01, драйвера полевого транзистора, нескольких стабилизаторов напряжения. Также плата была протестирована:

Осталось проверить плату с «большим» мотором, и установить в плату, установить сервопривод с обвесом, продумать герметизацию крышки катера и можно будет испытывать на воде.

И конечно делюсь выкройками катеров, с различными габаритами, для желающих собрать:

Катер_v3.1_450х173х85

Катер_v3.1_590х227х112

Катер_v3.1_750х288х142

Автор: jeka_tm

Источник

www.pvsm.ru

Подключение текстового экрана к Arduino [Амперка / Вики]

Существует большое количесвто разновидностей текстовых, или как их ещё называют знакосинтезирующих, жидкокристаллических экранов. Наиболее распространены дисплеи на базе чипов HD44780 от Hitachi, KS0066 от Samsung или совместимых с ними. Для работы с такими экранами существует стандартная Arduino-библиотека Liquid Crystal.

К таким дисплеям относятся в частности текстовые экраны от Мэлт. В этой статье детально описывается схема подключения этого экрана, однако она подойдёт и для множества других текстовых дисплеев.

Статья описывает общие принципы. Вы можете перейти к подробному описанию вашего дисплея:

Необходимые компоненты

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

Подключение

Закрепите экран на breadboard'е и подведите к рельсам питания breaboard'а питание +5 В и землю с Arduino.

Питание и земля понадобятся не один раз, поэтому удобнее пробросить их именно на рельсы.

Включение подсветки

Фоновая подсветка дисплея — это отдельный контур, не связанный с остальным. Включить её можно подав +5 В на 15-й контакт дисплея и подключив 16-й контакт к земле. Соединив эти два контакта с соответствующими рельсами, можно включить Arduino и увидеть, что дисплей засветился.

Обратите внимание, что на некоторых моделях нумерация контактов идёт не просто справа-налево от первого до шестнадцатого, а несколько более хитро. Так, например, на экране 16×2 от Мэлт первый контакт физически находится на 14-й позиций, второй на 13-й и так далее справа-налево вплоть до 14-го на первой позиции, а 15-й и 16-й расположены справа. Нумерация около контактов дисплея поможет не запутаться.

Включение питания знакосинтезатора

Далее необходимо подключить цепь, отвечающую за отображение символов. Для этого предназначены контакты 1, 2 и 3 на дисплее. Перед подключением отключите Arduino от питания.

  • Первый — это земля. Соедините его с рельсой земли.

  • Второй — питание. Соедините его с рельсой +5 В.

  • Третий — контрастность. Для получение максимально контрастного изображения соедините его с рельсой земли. Вы можете подать на этот контакт произвольное напряжение от 0 до 5 В, чем оно выше, тем тусклее будет изображение, но вместе с этим снизится энергопотребление. Для возможности плавной регулировки контрастности можете подать на этот контакт выходной сигнал потенциометра.

После подключения, если включить Arduino, вы можете увидеть прямоугольные знакоместа. В зависимости от комбинации цветов текста и подсветки они могут быть как яркими и хорошо заметными, так и едва заметными. Это нормально: в любом случае, текст будет смотреться отлично.

Подключение шины данных

Для коммуникации между Arduino и экраном необходимо использовать несколько линий взаимодействия:

Таким образом занятыми окажутся от 6-ти до 11-ти контактов от обоих устройств. Если вам не требуется считывать с дисплея, что подходит под большинство сценариев использования, для команд понадобится 2 линии.

Если скорость обновления данных так же не является проблемой, для передачи данных достаточно 4-х линий.

Итак, для подключения дисплея достаточно истпользовать 6 линий, 6 контактов на Arduino. Рассмотрим именно этот сценарий.

Как упоминалось, нам не за чем считывать с дисплея, мы будем в него только писать. Поэтому соединим 5-й контакт дисплея, который отвечает за выбор чтение/запись с рельсой земли. Это означает «всегда писать».

Затем, соединяем Arduino и экран нашими 6-ю линиями коммуникации. Какие именно контакты будут выбраны на Arduino не имеет значения: мы зададим их в программе, но для примера была выбрана такая конфигурация:

  • 4-й контакт дисплея — 4-й контакт Arduino. Это линия адресного сигнала. Известная как A0 или RS. В зависимости от того, 0 она или 1, дисплей понимает имеем ли мы на линии данных команду вроде «передвинуть курсор» или код символа для отображения.

  • 6-й контакт дисплея — 5-й контакт Arduino. Это линия разрешения доступа к данным. Известная, как E или Enable. Когда эта линия становится единицей, дисплей исполняет команду или выводит символ с линии данных.

  • 11-й, 12-й, 13-й, 14-й контакт дисплея — 10-й, 11-й, 12-й, 13-й контакт Arduino соответственно. Это линии данных. Известные как DB4, DB5, DB6, DB7.

Экран подключен и готов к приёму данных. Осталось написать программу для Arduino.

Программирование

Для вывода текста с Arduino удобнее всего воспользоваться встроенной библиотекой Liquid Crystal. Для вывода приветствия и таймера, воспользуйтесь кодом вроде этого:

Hello.pde // Подключаем стандартную библиотеку LiquidCrystal #include <LiquidCrystal.h>   // Инициализируем объект-экран, передаём использованные // для подключения контакты на Arduino в порядке: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13);   void setup() { // устанавливаем размер (количество столбцов и строк) экрана lcd.begin(16, 2); // печатаем первую строку lcd.print("Hello world!"); // устанавливаем курсор в колонку 0, строку 1. То есть на // самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(0, 1); // печатаем вторую строку lcd.print("foo bar baz"); }   void loop() { }

Всё довольно просто и должно быть понятно из комментариев.

Кириллица

Информация в этом разделе относится именно к дисплеям от Мэлт. Китайские и Европейские аналоги вряд ли имеют в своём наборе символов кириллицу, обратитесь к документации на дисплей, чтобы узнать об этом подробнее.

Вывод русских букв не совсем тривиален: вы не можете просто написать lcd.print("Вася"). Это связано с понятием кодировок. Вы знаете, что каждому символу соответствует код и при компиляции программы, если строка содержит кириллицу, она будет сконвертирована в коды по таблице utf-8, cp-1251 или какой-то другой в зависимости от настроек компилятора. Экран в свою очередь, ожидает увидеть данные в собственной кодировке.

Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

lcd.print("\xB1ndex");

Можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x, он считывает за ним все символы, которые могут являться разрядами шестнадцатиричной системы даже если их больше двух. Из-за этого вы не можете просто использовать символы из диапазона 0-9, a-f следом за двузначным кодом символа: это вызовет ошибку компиляции. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются. Так, если вы хотите написать «Яeee»:

lcd.print("\xB1eee"); // ошибка lcd.print("\xB1""eee"); // правильно

Например, чтобы написать «Привет от Амперки», использовался код:

cyrillic.pde #include <LiquidCrystal.h>   LiquidCrystal lcd(4, 5, 10, 11, 12, 13);   void setup() { lcd.begin(16, 2); lcd.print(" \xA8p\xB8\xB3""e\xBF"); lcd.setCursor(0, 1); lcd.print(" o\xBF A\xBC\xBE""ep\xBA\xB8"); }   void loop() { }

Переключение страниц знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения страницы используйте метод command(0x101010), а обратно — command(0x101000).

Дисплей не может одновременно отображать символы с разных страниц.

Рассмотрим на примере, в котором одна и та же строка будет изменяться в зависимости от выбранной страницы.

change_page.ino // Подключаем стандартную библиотеку LiquidCrystal #include <LiquidCrystal.h>   // Инициализируем объект-экран, передаём использованные // для подключения контакты на Arduino в порядке: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13);   void setup() { // устанавливаем размер (количество столбцов и строк) экрана lcd.begin(16, 2); }   void loop() { // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) lcd.command(0b101000); // печатаем первую строку lcd.print(" \x9b\x9c\x9d\x9e\x9f"); // ждём 1 секунду delay(1000); // устанавливаем 1 станицу знакогенератора lcd.command(0b101010); // ждём 1 секунду delay(1000); // очищаем дисплей lcd.clear(); }

Полную таблицу символов с кодами можно найти в документации к экрану.

wiki.amperka.ru